- •Кафедра прикладной математики лекция № 16. Тема: «структурированные типы данных»
- •1. Пользовательские типы.
- •1.1. Перечисляемый тип.
- •1.2. Интервальный тип (диапозон).
- •2. Структурированные типы данных.
- •3. Тождественность и совместимость типов.
- •4. Массивы.
- •4.1. Объявление массива.
- •4.2. Действия над массивами.
- •4.3. Действия над элементами массива.
- •4.4. Многомерные массивы.
- •5. Строковый тип данных.
- •5.1. Строковые выражения.
- •5.2. Строковые процедуры и функции.
- •6. Множественный тип данных.
- •6.1. Операции над множествами.
- •Пример 3.
- •7. Запись.
- •7.1. Оператор with.
- •7.2. Записи с вариантами.
- •Контрольные вопросы
- •Задачи для самостоятельной работы
- •Лекция № 16 по курсу «информатика»
7.1. Оператор with.
Данный оператор позволяет использовать в тексте программы имена полей без указания имени переменной-записи.
Формат:
with <имя записи> do
begin
{операторы, содержащие имена элементов записи}
end;
Один раз указав переменную типа запись в операторе with, можно работать с именами полей как с обычными переменными, т.е. без указания перед идентификатором поля имени переменной, определяющей запись.
Например:
with M do
begin
Number:=2347;
Marka:=’Газ-24’;
FIO:=’Петров В.И.’;
Address:=’ул. Гоголя,19’
end;
7.2. Записи с вариантами.
Записи, рассмотренные ранее, имеют строго определенную структуру. В некоторых случаях это резко ограничивает возможности их применения. Поэтому в языке Pascal имеется возможность задать тип записи, содержащий произвольное число вариантов структуры. Такие записи называются записями с вариантами. Записи с вариантами обеспечивают средства объединения записей, которые похожи, но не идентичны по форме. Они состоят из фиксированной и вариантной частей.
Использование фиксированной части не отличается от рассмотренного ранее. Вариантная часть формируется с помощью оператора case. Он задает особое поле записи – поле признака, которое определяет, какой из вариантов в данный момент выполнения программы будет активизирован. Значением признака в каждый текущий момент выполнения программы должна быть одна из расположенных далее констант. Константа, служащая признаком, задает вариант записи и называется константой выбора. Формат:
type rec = record
case <поле признака> : <имя типа> of
<константа выбора1> : (поле, … : тип);
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
<константа выбораN> : (поле, … : тип)
end;
Компоненты каждого варианта (идентификаторы полей и их типы) заключаются в круглые скобки. У части case нет отдельного end, как следовало бы ожидать по аналогии с оператором case. Одно слово end заканчивает всю конструкцию записи с вариантами. Необходимо отметить, что количество полей каждого из вариантов не ограничено.
Объем памяти, необходимый для записи с вариантами, складывается из объемов полей фиксированной части и максимального по объему поля переменной части.
Например:
type rec = record
Number : integer;
Code : integer;
case FLG : boolean of
true : (Prl1 : integer);
false : (Prl2 : real)
end;
var prec :rec;
При использовании записей с вариантами необходимо придерживаться следующих правил:
все имена полей должны отличаться друг от друга по крайней мере одним символом, даже если они встречаются в разных вариантах;
запись может иметь только одну вариантную часть, причем вариантная часть должна размещаться в конце записи;
если поле, соответствующее какой-либо метке, является пустым, то оно записывается следующим образом - <метка>: ( );