- •Доп. Материалы к лекциям по Информатикен и программированию
- •Встроенные функции и процедуры.
- •Тема 6. Сложные или структурированные типы данных.
- •1. Массивы и работа с ними.
- •Действия над массивами.
- •Константы-массивы.
- •2. Множества и выражения над ними.
- •Константы – множества.
- •Выражения над множествами.
2. Множества и выражения над ними.
Множество – это совокупность связанных между собой
однотипных объектов (элементов множества),
рассматриваемых как единое целое.
При задании множества необходимо определить имя множественного типа, допустимую совокупность элементов и тип этих элементов.
Объявление типа:
имя
TYPE < множественного > =SET OF <простой тип>;
Типа
Указываемый в описании «простой тип» иначе называют базовым, и ему должны принадлежать элементы множества. Обычно это интервальный или перечисляемый типы.
В отличии от математики, количество элементов в «паскалевском» множестве ограничено и может колебаться от 0 до 255.
Пример:
TYPE GRUP=(EIS_111, EIS_112, EIS_211, EIS_212, EIS_311,
EIS_312, EIS_411, EIS_412, EIS_511, EIS_512);
GR=SET OF GRUP; {тип множества групп
специальности }
VAR SPEC, KRS1, KRS2, KRS3, KRS13, KRS4, KRS5, KRS45: GR;
{здесь значением каждой переменной может
быть произвольная совокупность названий
групп}
EIS: GRUP; {здесь описана простая переменная
перечисляемого типа, значением которой может
быть только одно из приведенных в GRUP
название группы}
ALF1, ALF2, ALF3, ALF4: SET OF ’A’..’Z’; {другой вариант
объявления переменных множественного типа}
FL: BOOLEN;
CHIS: SET OF INTEGER;
Можно без TYPE:
VAR EIS: SET OF (EIS_111, EIS_112, EIS_211, EIS_212, EIS_311,
EIS_312, EIS_411, EIS_412, EIS_511, EIS_512);
Согласно сделанным объявлениям, допустимы следующие операторы присваивания:
KRS1:=[ EIS_111, EIS_112];
KRS2:=[ EIS_211, EIS_212];
ALF1:=[ ’A’..’F’];
ALF2:=[ ’I’,’J’,’K’, ’X’,’Y’,’Z’];
ALF3:=[’D’..’F’, ’P’..’Z’];
KRS13:=[ EIS_111, EIS_112, EIS_211, EIS_212, EIS_311, EIS_312];
KRS45:=[ EIS_411, EIS_412, EIS_511, EIS_512];
CHIS:=[222,333,444];
После знака операции присваивания приводится т.н. конструктор множества, в котором определяется список спецификаций элементов.
Отметим, что во всех примерах совокупность присваиваемых значений элементов задается из числа объявленных в описаниях множеств.
В отличии от этого:
EIS:= EIS_111; { значение получила простая переменная
перечисляемого типа. Оно может быть только
одно!}
Константы – множества.
Константа–множество – это один или последовательность
элементов через запятую, заключенные в квадратные
скобки.
Элементами таких констант могут быть:
- константы того же типа, что и базовый;
- константы интервального типа (диапазона);
- выражения, если их результаты будут элементами базового типа множества;
- пустой список значений;
- имя переменной с типом, совместимым с базовым.
TYPE ALF=SET OF ’A’..’Z’;
MES=SET OF 1..12;
CONST INDX: ALF=[’I’,’J’,’K’,’L’,’M’];
GLASN: ALF=[’A’,’E’,’I’,’O’,’U’,’Y’];
OTREZ: ALF=[’A’..’E’,’O’..’Z’];
LETO: MES=[6..8];
OTPUSK: MES=[];
Можно без TYPE:
CONST INDX: SET OF CHAR=[’I’..’M’];
Замечание: в множествах порядок перечисления элементов
несущественен. Оно лишь фиксирует наличие или
отсутствие элемента. Поэтому допустимо:
OTREZ: ALF=[’O’..’Z’, ’A’..’E’];
Константы–множества имеют постоянные, неизменные совокупности значений до конца выполнения программы, в которой они определены.