- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Контрольні питання
- •Контрольні питання
- •Контрольні питання
- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Тема 1.2: основні конструкції мови.
- •План заняття
- •Контрольні питання
- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Тема 1.2: основні конструкції мови.
- •План заняття
- •Контрольні питання
- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Тема 1.2: основні конструкції мови.
- •План заняття
- •Контрольні питання
- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Тема 1.2: основні конструкції мови
- •План заняття
- •Контрольні питання
- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Тема 1.2: основні конструкції мови
- •План заняття
- •Контрольні питання
- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Тема 1.3: галуження і цикли
- •План заняття
- •Контрольні питання
- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Тема 1.3: галуження і цикли
- •План заняття
- •Контрольні питання
- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Тема 1.3: галуження і цикли
- •План заняття
- •Контрольні питання
- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Тема 1.3: галуження і цикли
- •План заняття
- •Контрольні питання
- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Тема 1.4: елементи інтерфейсу
- •План заняття
- •Контрольні питання
- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Тема 1.3: галуження і цикли
- •План заняття
- •Контрольні питання
- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Тема 1.4: елементи інтерфейсу
- •План заняття
- •Контрольні питання
- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Тема 1.4: елементи інтерфейсу
- •План заняття
- •Контрольні питання
- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Тема 1.4: елементи інтерфейсу
- •План заняття
- •Контрольні питання
- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Тема 1.4: елементи інтерфейсу
- •План заняття
- •Контрольні питання
- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Тема 1.4: елементи інтерфейсу
- •План заняття
- •Контрольні питання
- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Тема 1.4: елементи інтерфейсу
- •План заняття
- •Контрольні питання
- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Тема 1.4: елементи інтерфейсу
- •План заняття
- •Контрольні питання
- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Тема 1.4: елементи інтерфейсу
- •План заняття
- •Контрольні питання
- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Тема 1.5: основи створення прикладних застосувань
- •План заняття
- •Контрольні питання
- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Тема 1.5: основи створення прикладних застосувань
- •План заняття
- •Контрольні питання
- •Контрольні питання:
- •Необхідні теоретичні відомості для практичної роботи:
- •Контрольні питання:
- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Тема 1.5: основи створення прикладних застосувань
- •План заняття
- •Проект Delphi
- •Модулей в проект.
- •Контрольні питання
- •Змістовий модуль 2: процедурно-орієнтоване програмування. Програмування графіки
- •Тема 2.1: основи мови object pascal
- •План заняття
- •Контрольні питання
- •Контрольні питання
- •Контрольні питання
- •Змістовий модуль 2: процедурно-орієнтоване програмування. Програмування графіки
- •Тема 2.1: основи мови object pascal
- •План заняття
- •Контрольні питання
- •Змістовий модуль 2: процедурно-орієнтоване програмування. Програмування графіки
- •Тема 2.1: основи мови object pascal
- •План заняття
- •Контрольні питання
- •Контрольні питання
- •Функции преобразования в числовой формат и обратно
- •Контрольні питання
- •Змістовий модуль 2: процедурно-орієнтоване програмування. Програмування графіки
- •Тема 2.1: основи мови object pascal
- •План заняття
- •7.1. Простые типы
- •Контрольні питання
- •Контрольні питання
- •Змістовий модуль 2: процедурно-орієнтоване програмування. Програмування графіки
- •Тема 2.2: графіка, мультимедія та друк
- •План заняття
- •Контрольні питання
- •Контрольні питання
- •Змістовий модуль 2: процедурно-орієнтоване програмування. Програмування графіки
- •Тема 2.2: графіка, мультимедія та друк
- •План заняття
- •Контрольні питання
- •Змістовий модуль 2: процедурно-орієнтоване програмування. Програмування графіки
- •Тема 2.2: графіка, мультимедія та друк
- •План заняття
- •Контрольні питання
- •Контрольні питання
- •Змістовий модуль 2: процедурно-орієнтоване програмування. Програмування графіки
- •Тема 2.2: графіка, мультимедія та друк
- •План заняття
- •Контрольні питання
- •Печать с помощью объекта Printer
- •Подготовка и печать отчетов с помощью QuickReport — компоненты QuickRep, qrSubDetail, qrLabel, qrExpr, qrSysData, qrMemo, qrRichText, qrShape, qrImage
- •Контрольні питання
- •Змістовий модуль 3: масиви. Записи та множини
- •Тема 3.1: масиви
- •План заняття
- •Листинг 1. Инициализация и вывод массива
- •Ввод массива
- •Использование компонента StringGrid
- •Листинг 2. Ввод и обработка массива целых чисел
- •Листинг 3. Процедура обработки события OnKeyPress
- •Листинг 4. Ввод и обработка массива дробных чисел
- •Контрольні питання
- •Объявление записи
- •Инструкция with
- •Ввод и вывод записей в файл
- •Вывод записи в файл
- •Листинг 25. Добавление записей в файл
- •Чтение записи из файла
- •Листинг 26. Чтение записей из файла
- •Контрольні питання
- •Змістовий модуль 3: масиви. Записи та множини
- •Тема 3.3: множини
- •План заняття
- •Контрольні питання
- •Необхідні теоретичні відомості для практичної роботи:
- •Контрольні питання:
- •Змістовий модуль 3: масиви. Записи та множини
- •Тема 3.4: множини обовязкова контрольна робота №28
- •Змістовий модуль 4: файлові структури даних. Динамічні структури даних
- •Тема 4.1: робота з файлами
- •План заняття
- •Объявление файла
- •Назначение файла
- •Вывод в файл
- •Открытие файла для вывода
- •Листинг 20. Создание нового или замещение существующего файла
- •Листинг 21. Добавление в существующий файл
- •Ошибки открытия файла
- •Закрытие файла
- •Пример программы
- •Листинг 22. Простая база данных (запись в файл)
- •Ввод из файла
- •Открытие файла
- •Листинг 23. Обработка ошибки открытия файла (фрагмент программы)
- •Чтение данных из файла
- •Чтение чисел
- •Чтение строк
- •Конец файла
- •Листинг 24.. Чтение из файла
- •Контрольні питання
- •Змістовий модуль 4: файлові структури даних. Динамічні структури даних
- •Тема 4.1: файлові структури даних. Динамічні структури даних
- •План заняття
- •Контрольні питання
- •Указатели
- •Динамические переменные
- •Листинг 27. Создание, использование и уничтожение динамических переменных
- •Листинг 28. Добавление элемента в начало динамического списка
- •Упорядоченный список
- •Добавление элемента в список
- •Листинг 29. Добавление элементов в упорядоченный список
- •Удаление элемента из списка
- •Листинг 30. Удаление узла из списка
- •Контрольні питання
- •Необхідні теоретичні відомості для практичної роботи:
- •Контрольні питання:
- •Необхідні теоретичні відомості для практичної роботи:
- •Контрольні питання:
- •Змістовий модуль 4: файлові структури даних. Динамічні структури даних
- •Тема 4.2: динамічні структури
- •План заняття
- •Вариантные переменные
- •Контрольні питання
- •Const-параметры
- •Контрольні питання
- •Змістовий модуль 4: файлові структури даних. Динамічні структури даних
- •Тема 4.2: динамічні структури
- •План заняття
- •Способы вызова подпрограмм
- •Контрольні питання
- •Этапы разработки программы
- •Спецификация
- •Создание установочного диска
- •Алгоритм и программа
- •Контрольні питання
- •Этапы разработки программы
- •Спецификация
- •Создание установочного диска
- •Алгоритм и программа
- •Контрольні питання
- •Контрольні питання
- •Необхідні теоретичні відомості для практичної роботи:
- •Контрольні питання:
- •Змістовий модуль 6: програмування з графами. Візуальні компоненти. Бази даних
- •Тема 6.2: Візуальні компоненти
- •План заняття
- •Контрольні питання
- •Распознавание источника события, нажатых кнопок и клавиш, координат курсора
- •События клавиатуры
- •Распознавание нажатых клавиш
- •Контрольні питання
- •Создание нового IntraWeb приложения
- •Редактирование главной формы
- •Написание обработчика события для кнопки
- •Запуск созданного приложения
- •Контрольні питання
- •Управляющие кнопки Button и BitBtn
- •Кнопка с фиксацией SpeedButton
- •Группы радиокнопок — компоненты RadioGroup, RadioButton и GroupBox
- •Контрольні питання
- •Листинг 28. Добавление элемента в начало динамического списка
- •Упорядоченный список
- •Добавление элемента в список
- •Листинг 29. Добавление элементов в упорядоченный список
- •Удаление элемента из списка
- •Листинг 30. Удаление узла из списка
- •Змістовий модуль 6: програмування з графами. Візуальні компоненти. Бази даних
- •Упражнения. Совершенствование проекта
- •Контрольні питання:
- •Контрольні питання
- •Упражнения
- •Контрольні питання:
- •Змістовий модуль 6: програмування з графами. Вызуальны компоненти. Бази даних.
- •Тема 6.2: візуальні компоненти
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами. Візуальні компоненти. Бази даних
- •Тема 6.3: форми та меню
- •План заняття
- •Контрольні питання
- •Контекстное всплывающее меню — компонент PopupMenu
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами. Візуальні компоненти. Бази даних
- •Тема 6.4: обробка виключних ситуацій
- •План заняття
- •Конрольні питання
- •Упражнения. Совершенствование проекта.
- •Контрольні питання:
- •Змістовий модуль 6: програмування з графами
- •Тема 6.4: обробка виключних ситуацій
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами. Візуальні компоненти. Бази даних
- •Тема 6.5: організація прикладних застосувань
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами. Візуальні компоненти. Бази даних
- •Тема 6.5: організація прикладних застосувань
- •План заняття
- •Контрольні питанна
- •Змістовий модуль 6: програмування з графами
- •Тема 6.5: організація прикладних застосувань
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами
- •Тема 6.5: організація прикладних застосувань
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами
- •Тема 6.5: організація прикладних застосувань
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами
- •Тема 6.5: організація прикладних застосувань
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами
- •Тема 6.5: організація прикладних застосувань
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами
- •Тема 6.5: організація прикладних застосувань
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами. Візуальні компоненти. Бази даних
- •Тема 6.6: основи баз даних
- •План заняття
- •Классификация баз данных
- •Локальная база данных
- •Удаленная база данных
- •Структура базы данных
- •Контрольні питання
- •Контрольні питання
- •Упражнения
- •Контрольні питання:
- •Змістовий модуль 6: програмування з графами
- •Тема 6.6: основи баз даних
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами
- •Тема 6.6: основи баз даних
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами
- •Тема 6.6: основи баз даних
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами
- •Тема 6.6: основи баз даних
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами
- •Тема 6.6: основи баз даних
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами
- •Тема 6.6: основи баз даних
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами. Візуальні компоненти. Бази даних
- •Тема 6.7: навігація по набору даних. Мова sql. Створення довідкової системи
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами
- •Тема 6.7: навігація по набору даних. Мова sql. Створення довідкової системи
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами
- •Тема 6.7: навігація по набору даних. Мова sql. Створення довідкової системи
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами
- •Тема 6.7: навігація по набору даних. Мова sql. Створення довідкової системи
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами
- •Тема 6.7: навігація по набору даних. Мова sql. Створення довідкової системи
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами
- •Тема 6.7: навігація по набору даних. Мова sql. Створення довідкової системи
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами
- •Тема 6.7: навігація по набору даних. Мова sql. Створення довідкової системи
- •План заняття
- •Insert into Имя таблицы
- •Insert into Имя_таблицы
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами
- •Тема 6.7: навігація по набору даних. Мова sql. Створення довідкової системи
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами
- •Тема 6.7: навігація по набору даних. Мова sql. Створення довідкової системи
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами
- •Тема 6.7: навігація по набору даних. Мова sql. Створення довідкової системи
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами
- •Тема 6.7: навігація по набору даних. Мова sql. Створення довідкової системи
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами
- •Тема 6.7: навігація по набору даних. Мова sql. Створення довідкової системи
- •План заняття
- •Рисование круга
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами. Візуальні компоненти. Бази даних
- •Тема 6.7: навігація по набору даних. Мова sql. Створення довідкової системи обов’язкова контрольна робота №63
- •Змістовий модуль 6: програмування з графами. Візуальні компоненти. Бази даних
- •Тема 6.7: навігація по набору даних. Мова sql. Створення довідкової системи
- •План заняття
Контрольні питання
Надати характеристику поняттю оператор
Розглянути прості оператори
Навести характеристику міток Object Pascal
Охарактеризувати правила використання міток
АУДИТОРНЕ ЗАНЯТТЯ
Змістовий модуль 2: процедурно-орієнтоване програмування. Програмування графіки
Тема 2.1: основи мови object pascal
Лекція №21 – Структуровані оператори
План заняття
Характеристика поняття структурований оператор
Огляд поняття составний оператор
Характеристика та формат запису оператора if
Характеристика та формат запису оператора case
Структурированные операторы включают в себя последовательность из нескольких других (простых и структурированных) операторов. К структурированным операторам относятся:
составной оператор;
условный оператор if;
условный оператор case;
оператор цикла repeat;
оператор цикла while;
оператор цикла for;
оператор над записями with.
Составной оператор представляет собой последовательность операторов, заключенных между двумя зарезервированными словами begin и end. Эти ключевые слова называются операторными скобками. Между последним оператором и словом end разрешается не ставить точку с запятой. Однако ее необходимо ставить послеend. Из описанных выше простых операторов можно составить составной оператор, например:
Составной оператор обычно используется в том случае, если синтаксис языка требует в определенной ситуации применения только одного оператора. В таком случае этим единственным оператором и будет составной оператор. По сути дела, тело программы или процедуры тоже являются составными операторами, так как они заключены в операторные скобки begin и end.
Условный оператор if предназначен для выбора к выполнению одного из двух действий, в зависимости от некоторого условия. Структура условного оператора имеет вид:
Условием выбора является логическое выражение (как правило, использующее операторы сравнения). Алгоритм работы оператора if имеет следующий вид. Сначала вычисляется выражение условие. Результат вычисления должен иметь логический тип. Если результат True (истина), то выполняется действие1, а действие2 пропускается. В противном случае, если результат False (ложь), то выполняется действие2, а действие! игнорируется. Ниже приведен пример условного оператора if.
Следует отметить тот факт, что одно из действий условного оператора может быть пустым (отсутствовать). Как правило, таким является действие, находящееся после слова else. В подобной ситуации управление немедленно передается оператору, следующему за условным Еще одним важным моментом, на который нужно обратить внимание, является то, что перед словом else никогда не ставится точка с запятой.
Если в операторе необходимо предусмотреть несколько условий, то они объединяются путем организации вложения условных операторов либо при помощи использования логических операций and, or, xor, not.
Так как приоритет у логических операций выше, чем у операций сравнения, то отдельные части сложного логического выражения следует заключають в скобки:
Запись без скобок будет некорректной. Если предыдущий оператор записать в таком виде:
то результат будет заметно отличаться от ожидаемого, поскольку компилятор выполнит ее следующим образом.
Операторы действие! и действие2 могут быть любого типа, в частности, являться условными. В свою очередь, каждый из вложенных может содержать в себе еще условные операторы if. Довольно часто возникает ситуация, когда не все вложенные условные операторы имеют часть else действие!. Это означает, что возникает двусмысленность трактовки else соответствующему if. Такая неоднозначность в Object Pascal решается очень просто - зарезервированное слово else всегда ассоциируется с ближайшим к нему (сверху по тексту) зарезервированным словом if, которое еще не связано с else:
В комментарии написано, к какому if относится else. К написанию вложенных друг в друга условных операторов следует подходить с особой тщательностью.
Условный оператор case позволяет осуществлять выбор из любого количества вариантов. В этом и заключается его главное отличие от оператора if. Структура оператора case в Object Pascal имеет вид:
case ключ_выбора of
константа_выбора : оператор;
константа_выбора : оператор;
константа_выбора : оператор; else
операторы end;
Здесь case, of, else и end - зарезервированные слова;
ключ_выбора - выражение любого простого или строкового типа;
константа_выбора - набор констант того же типа, что и выражение ключ_выбора, оператор - любые операторы.
Условный оператор case работает следующим образом. Вначале вычисляется выражение ключ__выбора. Затем просматривается последовательность констант выбора, с которыми сравнивается полученное значение. Если находится константа, равная выражению ключ_выбора, то выполняется оператор, находящийся за этой константой. После этого оператор case завершает свою работу. Если же значение выражения ключ_выбора не совпадает ни с одной из констант, то выполняется оператор, расположенный после else. Ветвь оператора else является необязательной. При отсутствии оператора else, когда ключу выбора нет соответствия, оператор case просто завершает свою работу и выполняется следующий за ним оператор.
Если для нескольких констант необходимо выполнять один и тот же оператор, то эти константы можно перечислить через запятую, а также можно задавать диапазон. В следующем примере используется условный оператор case. В строке ввода задается номер этажа. Затем, в зависимости от введенного номера, либо выдается соответствующее сообщение, либо (если значение равно нулю) по оператору безусловного перехода производится выход из оператора case.
В практике программирования важную роль играют циклы. Циклы обеспечивают возможность многократного выполнения группы одних и тех же простых или составных операторов. В Object Pascal существует три стандартных оператора цикла.
Оператор цикла repeat организует выполнение цикла, состоящего из любого числа операторов, с неизвестным заранее числом повторений. Выход из цикла осуществляется при выполнении заданного условия. Такой цикл называют еще циклом с постусловием, поскольку условие выхода из цикла проверяется в его конце и он гарантированно выполняется хотя бы один раз. Однократное выполнение цикла часто называется итерацией. Структура этого оператора выглядит следующим образом:
Точку с запятой перед until ставить необязательно, так как слова repeat и until подобны операторным скобкам. Выход из цикла происходит в случае, если выражение логического типа -условие, является истинным.
Следующая процедура заполняет массив типа Integer значениями от 1 до 10 с использованием цикла repeat. В теле цикла содержатся операторы, обеспечивающие заполнение массива, вывод в текстовый редактор значений из массива и инкремент (последовательное наращивание) индекса массива. Условие окончания цикла - проверка выхода значения индекса за границы массива: i = 11.
В результате выполнения данной программы в многострочном редакторе отобразится цепочка чисел от 1 до 10.
Оператор цикла while организует выполнение цикла с предусловием. Другими словами, сначала проверяется условие, и лишь после подтверждения его истинности выполняется тело цикла. Цикл прекращает работу, если условие ложно. А это означает, что при определенном стечении обстоятельств тело цикла может ни разу не выполниться. Оператор цикла while записывается так:
Цикл выполняется, пока условие не примет значение False. Решить предыдущий пример (т.е. заполнить массив числами от 1 до 10) с помощью цикла while можно следующим образом.
Оператор цикла for организует выполнение оператора строго заданное количество раз. Существует два варианта оператора for:
Следует отметить тот факт, что начальное и конечное значения должны быть того же типа, что и параметр цикла. Действует цикл for следующим образом. Сначала вычисляются и запоминаются начальное и конечное значения. Затем параметру цикла присваивается начальное значение, после чего параметр цикла сравнивается с конечным значением. Далее, пока параметр цикла меньше или равен конечному значению (при использовании первого варианта) либо больше или равен (во втором варианте), последовательно выполняются итерации цикла. Как только параметр выходит за пределы, установленные конечным значением, цикл завершается. Итерация включает в себя выполнение оператора, расположенного за словом do, и увеличение (в первом варианте) или уменьшение (во втором варианте) параметра цикла на единицу. Изменение параметра цикла происходит автоматически при каждой итерации.
Необходимо иметь в виду, что при применении цикла со словом to начальное значение не должно превышать конечное. Аналогично при использовании слова downto начальное значение не должно быть меньше конечного. Если эти условия не являются истинными, то цикл ни разу не выполнится.
Процедура заполнения двух массивов числами от 1 до 10 и от 10 до 1 соответственно с помощью цикла for будет выглядеть так:
Массив a [i] заполнится числами от 1 до 10, а массив b [i] -от 10 до 1.
В Object Pascal существуют две стандартные процедуры -break и continue, предназначенные специально для использования в операторах цикла. Процедура break позволяет досрочно выйти из цикла, даже если не выполнилось условие выхода. Если, например, в любой из циклов заполнения массивов, рассмотренных в примерах, добавить условный оператор следующего вида:
то это приведет к выходу из цикла при достижении параметром значения i = 7.
В свою очередь, применение процедуры continue позволит начать новую итерацию цикла, даже если не завершена предыдущая.
Оператор над записями with был рассмотрен выше при описании типа запись.