- •Курс «основы алгоритмизации и программирования»
- •Тема: «структурированные типы данных»
- •Классификация типов данных, используемых в программах на языке паскаль
- •1. Строковый тип данных
- •1.1. Базовый тип
- •1.2. Объявление строкового типа
- •1.3. Операции над строками
- •1.4. Стандартные процедуры и функции обработки строк
- •1.5. Ввод-вывод строк
- •1.6. Asciiz-строки
- •2. Комбинированные типы данных
- •2.1. Описание записи
- •Организация записи stud
- •2.2. Селектор записи
- •2.3. Оператор присоединения
- •2.4. Вложенные записи
- •2.5. Записи с вариантами
- •3. Индивидуальные задания.
- •Тема: «структурированные типы данных»
- •- Страница 18 -
2.5. Записи с вариантами
Во многих задачах структура записи может меняться в зависимости от некоторых условий, поэтому часто целесообразно при проектировании программ обработки таких данных использовать записи с вариантами. Синтаксис записи с вариантами может быть представлен так:
type <имя_записи>=record
<имя_компонета>:<тип>;
<имя_компонета>:<тип>;
. . .
<имя_компонета>:<тип>;
case <переменная>:<тип> of
C1:(<имя_компонета>:<тип>; …);
C2:(<имя_компонета>:<тип>; …);
. . .
CM:(<имя_компонета>:<тип>; …)
end;
Запись с вариантами содержит общую часть и вариантную часть, начинающуюся от зарезервированного слова case. Послеcaseстоит конструкция <переменная>:<тип>, которая носит названиеселекторазаписи. Последний принимает значенияC1, C2, …, CM, которые называютсяконстантами выбораи определяют, какая составляющая вариантной части будет активизирована при обработке. Констант выбора может быть несколько. Они разделяются запятыми, представляют собой объекты перечислимого типа и играют роль меток, но не являются ими. Обращение к компоненту записи осуществляется по составному имени, как и в случае записи без вариантов.
Общая часть может отсутствовать, но обязательно, если она есть, должна предшествовать вариантной части. Имена компонентов в данной записи не должны повторяться. Следует помнить, что запись можно передавать в качестве параметра процедуре или функции, но значением функции запись быть не может. Записи с вариантами могут быть вложенными. При обработке полей записи с вариантами можно использовать оператор with.
Рассмотрим условныйпример описания записи с вариантами, содержащей информацию о геометрических объектах: точке, прямой линии и окружности. Эта запись имеет вид:
type coordinates=record
absciss, ordinat:real
end;
from=(point, line, circle);
figure= record
name:string[10];
case flag: from of
point:(pologenie:coordinates);
line:(coefficient, sdvig:real);
circle:(centre:coordinates; radius:real)
end;
Следует отметить, что конструкция вариантной части списка полей похожа на оператор варианта. Отличается она от него тем, что является описательной конструкцией и сама по себе никакого действия не производит. В конструкции вариантной части описаны возможные варианты полей, которые могут быть включены в конкретную запись, определенную в разделе переменных.