Написание программы на языке Паскаль с использованием записей с вариантами
Цель работы: формирование знаний и умений по работе с записями с вариантами. Приобретение навыков работы с вариантными полями.
Краткие теоретические сведения
Записи, рассмотренные в предыдущей лабораторной работе, имеют строго определенную структуру. В некоторых случаях это резко ограничивает возможности их применения. Поэтому в языке Паскаль имеется возможность задать тип записи, содержащий произвольное число вариантов структуры. Такие записи называются записями с вариантами. Записи с вариантами обеспечивают средства объединения записей, которые похожи, но не идентичны по форме. Они состоят из фиксированной и вариантной частей.
Вариантная часть формируется с помощью оператора Case. Он задает особое поле записи-поле признака, которое определяет, какой из вариантов в данный момент будет активизирован. Значением признака в каждый текущий момент выполнения программы должна быть одна из расположенных далее констант. Константа, служащая признаком, задает вариант записи и называется константой выбора.
Формат:
Type
<имя типа> = Record
Case <поле признака>: <имя типа> of
<константа выбора 1>: (поле, …: тип);
…
<константа выбора n>: (поле, …: тип);
End;
Компоненты каждого варианта (идентификаторы полей и их типы) заключаются в круглые скобки. У части Case нет отдельного end. Одно слово end заканчивает всю конструкцию записи с вариантами. Количество полей каждого из вариантов не ограничено. Объем памяти, необходимый для записи с вариантами, складывается из объемов полей фиксированной части и максимального по объему поля переменной части.
Пример:
Type
Rec= Record
Number:Byte;
Code:Integer;
Case Flag:Boolean of
True:(Proce1:Integer);
False:(Price2:Real);
End;
Var
PRec: Rec;
В данном примере была объявлена запись с именем Rec, у которой поля Number и Code расположены в фиксированной части записи, они доступны в программе в любой текущий момент независимо от значения поля признака. Поле Price 1 может использоваться только в том случае, если значение поля признака Flag равно True. Поле Price 2 доступно в противоположном случае, т.е. если значение Flag равно False.
При использовании записей с вариантами необходимо придерживаться следующих правил:
3 все имена полей должны отличаться друг от друга, по крайней мере, одним символом, даже если они встречаются в разных вариантах
3 запись может иметь только одну вариантную часть, причем вариантная часть должна размещаться в конце записи
3 если поле, соответствующее какой-либо метке, является пустым, то оно записывается следующим образом: < метка>: ();