- •Содержание
- •Раздел 1.Подпрограммы Общие сведения
- •Процедуры Описание процедур
- •Вызов процедур
- •Процедуры без параметров
- •Процедуры с параметрами
- •Параметры-значения
- •Параметры-переменные
- •Параметры-константы
- •Параметры-переменные без типа
- •Параметры процедурного типа
- •Использование производных типов в качестве параметров подпрограмм
- •Принцип локализации имен
- •Функции Описание функций
- •Вызов функции
- •Рекурсивные подпрограммы
- •Директивы
- •Библиотечные модули пользователя Общие сведения
- •Структура модуля Unit
- •Особенности работы с модулями
- •Подключение к программе внешнего файла
- •Раздел 2.Простейший ввод-вывод Процедуры ввода из стандартного текстового файла Input
- •248 15 4 70 Значения 1-й строки
- •11 Значения 2-й строки
- •Процедуры вывода в стандартный текстовый файл Output
- •Раздел 3.Записи Структура записи
- •Записи без вариантной части
- •Записи с вариантами
- •Оператор присоединения With
- •Константа-запись
- •Раздел 4.Множества Общие сведения
- •Конструктор множества
- •Задание множественного типа
- •Операции над множествами
- •Ввод / вывод значения множественной переменной
- •Типизованные константы-множества
- •Раздел 5.Файлы Общие сведения
- •Процедура Assign
- •Файлы с типом
- •Процедура Assign
- •Процедура Rewrite (f)
- •Процедура Write (f, v1 [, v2, … , vn])
- •Процедура Reset (f)
- •Процедура Read (f, V [, v2, …, vn])
- •Функция Eof(f)
- •Процедура Seek (f, n)
- •Функция Filepos (f)
- •Функция Filesize(f)
- •Процедура Close (f)
- •Текстовые файлы
- •Процедура Assign (f, Name)
- •Процедура AssignСrt(f)
- •Процедура Append (f)
- •Процедура Rewrite (f)
- •Процедура Reset (f)
- •Процедура Read ([f,] v1 [, v2, …, vn])
- •Процедура Readln [([f] [,] [v1, v2, …, vn])]
- •Процедура Write ([f,] e1 [, e2, …, en])
- •Процедура Writeln([f,][e1,e2, …,en])
- •Процедура Close(f)
- •Процедура SetTextBuf (f, Buf [, Size])
- •Процедура Flush (f)
- •Сравнительная характеристика представления информации в файлах с типом и текстовых файлах
- •I. Представление числовой информации.
- •II. Представление текстовой информации.
- •Файлы без типа
- •Процедуры Reset и Rewrite
- •Процедура Blockread
- •Процедура Blockwrite
- •Проверка операций ввода-вывода
- •Раздел 6.Ссылочный тип (тип указатель) Общие сведения
- •Методы работы с динамическими переменными
- •Процедуры New и Dispose
- •Процедуры Getmem и Freemem
- •Процедуры Mark и Release
- •Раздел 7.Динамические структуры данных Динамические цепочки Структура динамической цепочки
- •Формирование цепочки
- •Поиск элемента в цепочке
- •Удаление элемента из цепочки
- •Вставка элемента в цепочку
- •Линейный однонаправленный список
- •Двунаправленные списки
- •Вставка элемента
- •Создание двунаправленного кольцевого списка с заглавным звеном
- •Удаление элемента
- •Поиск элемента
- •Очереди и стеки
- •Очередь lifo
- •Очередь fifo
- •Общие сведения
- •Способы организации таблиц
- •Однонаправленный список.
- •Однонаправленный список с упорядоченными записями.
- •Однонаправленный список с отдельным хранением текста записи.
- •Представление в виде массива.
- •Двоичное дерево.
- •Двоичные деревья Структура двоичного дерева
- •Построение дерева
- •Поиск записи в дереве
- •Включение записи в дерево
- •Удаление записи из дерева
- •Раздел 8.Оверлеи Общие сведения
- •Правила оформления оверлейных программ
- •Инициализация работы оверлеев
- •Включение администратора оверлеев
- •Обработка ошибок администратора
- •Размещение оверлейного файла в ems-памяти
- •Управление оверлейным буфером
- •Литература Основная и дополнительная литература
- •Перечень наглядных пособий, методических указаний, методических материалов и используемых в учебном процессе технических средств
Записи с вариантами
Записи, содержащие только общую часть, имеют строго определенную структуру.
Записи с вариантами позволяют объединить описания записей, которые похожи, но не идентичны по форме.
Они состоят из необязательной общей части и вариантной части. Общая часть записи описывает поля, которые присутствуют в каждой переменной определяемого типа.
Вариантная часть начинается зарезервированным словом Case и описывает несколько вариантов структуры записи. Синтаксис вариантной части представляет Рисунок 3 .25.
Рисунок 3.25 – Синтаксическая диаграмма вариантной части записи
Диапазон (см. Рисунок 3 .25) имеет формат, который иллюстрирует Рисунок 3 .26.
Рисунок 3.26 – Синтаксическая диаграмма диапазона
В каждый момент выполнения программы один из вариантов структуры является активным в зависимости от значения признака варианта.
Признак варианта описывается непосредственно после зарезервированного слова Case. Признак является самостоятельным полем общей части записи.
Поле признака может отсутствовать. В этом случае в Case указывается только идентификатор типа, и программист обязан сам следить за тем, какой вариант записи является активным.
Список полей каждого варианта заключается в скобки.
Например, пусть вриантная часть записи имеет вид:
а) Case I: Integer Of ...
Здесь идентификатор I определяет поле признака, которое является самостоятельным полем общей части записи.
б) Case Integer Of ...
Здесь поле признака отсутствует. Варианты определяются целыми значениями в списке вариантов.
Пример 3.4.
Запись с вариантной частью без поля признака.
Var
Z: Record
Case Integer Of
1: (I1: 1..10);
2: (J1: Char);
3: (K1: Boolean)
End;
В данном примере вариантная часть содержит три варианта. Будет активен вариант, соответствующий имени поля. Например, если в программе имеется обращение к полю Z.I1, то вариантная часть воспримется как поле типа 1..10. При обращении к вариантной части по имени Z.J1 она воспримется как поле типа Char.
У части Case нет отдельного служебного слова End. Одно слово End заканчивает всю конструкцию записи с вариантами.
Пример 3.5.
Объявление записи с вариантами, содержащей поле признака.
Type
Anketa1 = Record
{Общая часть}
Fio: Record
Fam: String[20];
Im: String[10];
Ot: String[20];
End;
{Вариантная часть}
Case Pol: (Men, Women) Of
Men: (Vozr1: 20..30);
Women: (Vozr2: 18..25)
End;
В вариантной части все имена полей должны быть уникальны, даже если они встречаются в разных вариантах.
Запись может иметь только одну вариантную часть, она должна размещаться в конце записи.
Но вариантная часть может быть вложенной в другую вариантную часть.
Если вариантная часть, соответствующая какому-либо значению признака, является пустой, то она записывается следующим образом:
<Диапазон>: ( )
Например, если в предыдущем примере отсутствуют поля при значении признака, равном Women, то этот вариант запишется так:
Women: ( )
Объем памяти, необходимый для записи с вариантами, складывается из объемов полей общей части и максимальной по объему суммы длин полей вариантной части.
Поля записи размещаются в памяти последовательно, в соответствии с объявлением.