Операции над множествами
Записи с вариантами.
При определении комбинированного типа в него можно включать вариантную часть, что означает: разные переменные, относящиеся к одному типу, могут иметь различные структуры.
С помощью записей с вариантами можно одновременно сохранять различные структуры данных, которые имеют большую общую часть, одинаковую во всех структурах, и небольшие части, отличающиеся в различных структурах.
Вариантная часть записи начинается оператором CASE и следует за общей частью записи. После вариантной части в записи не могут быть описаны никакие другие поля, поэтому оператор CASE не закрывается служебным словом END.
Все варианты описываются внутри оператора CASE, каждый из которых характеризуется задаваемым в скобках списком описаний присущих ему компонентов.
TYPE
PERSON = RECORD
SURNAME, NAME, ADDRESS, CITY: STRING[20];
INDEX: LONGINT;
PHONE: STRING[12];
CASE HOBBY: (COMPUTER, MUSIC) OF
COMPUTER: (TYPECOMP: STRING[20];
MEMORY: BYTE);
MUSIC : (INSTRUM: ARRAY[1..3] OF STRING[10]);
END;
Дополнительное поле HOBBY определяет интересы персоны и, в зависимости от них, может иметь разную структуру: увлечение компьютерами – структура HOBBY имеет два поля, которые предназначены для хранения информации о типе компьютера TYPECOMP и об объеме его памяти MEMORY.
Особенностью вариантной части является то, что каждому из вариантов выделяется одна и та же область памяти из расчета на тот вариант, который имеет наибольшие поля (для представленного примера под запись в статической памяти будет выделено 134 байта).
1.8. Статическая структура – множество.
Множество – структурированный тип, подобно массивам и записям, но используется реже, хотя его применение в некоторых случаях является вполне оправданным; как массивы, объединяют однотипные элементы, поэтому в описании множества обязательно должен быть указан тип его элементов, но в отличие от массивов и записей, во множествах отсутствует возможность индексирования отдельных элементов.
Множественный тип данных строится на основе некоторого базового типа, в качестве которого используется любой ограниченный тип, кроме неограниченного целого и вещественного типов.
Структура объявления множественного типа:
TYPE
<имя_множественного_типа>=SET OF <базовый_тип>;
базовый_тип определяет конечное множество значений множественного типа; любые подмножества базового множества могут являться значениями переменных множественного типа.
TYPE
CITY=(MOSCOW, PETERSBURG, PARIS);
MNCITY=SET OF CITY;
VAR
P1, P2: MNCITY;
P3: SET OF ‘A’..’F’;
P4, P5: SET OF 0..9;
Переменные P1 и P2 множественного типа MNCITY могут принимать 23=8 различных значений:
[MOSCOW], [PETERSBURG], [PARIS],
[MOSCOW, PARIS], [MOSCOW, PETERSBURG], [PETERSBURG, PARIS],
[MOSCOW, PETERSBURG, PARIS], []
Переменной P3 присвоится одно и то же множественное значение в результате работы следующих операторов присвоения:
P3:=[‘A’,’B’,’C’,’D’,’E’,’F’];
P3:=[‘A’..’C’..’F’];
P3:=[‘A’,’B’,’C’..’F’];
Тип множество соответствует математическому понятию множества в смысле операций, которые допускаются над структурами такого типа.
1. Объединение множеств: +
2. Пересечение множеств: *
3. Разность множеств: -
4. Операции отношения: =, <>, <=, >=, IN – проверка принадлежности (бинарная операция, где первый элемент – выражение, второй – множество того же типа; возвращает TRUE, если выражение имеет значение, принадлежащее множеству).