Операции над множествами

Записи с вариантами.

При определении комбинированного типа в него можно включать вариантную часть, что означает: разные переменные, относящиеся к одному типу, могут иметь различные структуры.

С помощью записей с вариантами можно одновременно сохранять различные структуры данных, которые имеют большую общую часть, одинаковую во всех структурах, и небольшие части, отличающиеся в различных структурах.

Вариантная часть записи начинается оператором 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, если выражение имеет значение, принадлежащее множеству).