Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Teoria 158783 .doc
Скачиваний:
6
Добавлен:
25.09.2019
Размер:
1.72 Mб
Скачать

Записи с вариантами

Записи, содержащие только общую часть, имеют строго определенную структуру.

Записи с вариантами позволяют объединить описания записей, которые похожи, но не идентичны по форме.

Они состоят из необязательной общей части и вариантной части. Общая часть записи описывает поля, которые присутствуют в каждой переменной определяемого типа.

Вариантная часть начинается зарезервированным словом 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: ( )

Объем памяти, необходимый для записи с вариантами, складывается из объемов полей общей части и максимальной по объему суммы длин полей вариантной части.

Поля записи размещаются в памяти последовательно, в соответствии с объявлением.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]