Структурированные данные – множественные типы
Множество – это некоторый ограниченный неупорядоченный набор различных элементов одинакового типа. Можно говорить, например, о множест¬ве фигур на плоскости (прямоугольник, круг, ромб, квадрат), о множестве радиодеталей, транспортных средств, станков и т. д.
В Турбо Паскале существует множественный тип для ввода множеств и организации операций над множествами. Множественный тип представляет собой некоторую совокупность элементов, которая является подмножеством допустимых значений определенного порядкового типа, именуемого базовым. Множественный тип описывает наборы однотипных логически связанных друг с другом объектов. Характер связей между объектами лишь подразумевается программистом и никак не контролируется Турбо Паскалем. Количество элементов, входящих в множество, может меняться в пределах от 0 до 256. Множество, не содержащее элементов, называется пустым. Именно непостоянством количества своих элементов множества отличаются от массивов и записей.
Множества должны быть объявлены либо в разделе переменных var, либо с использованием раздела типов type. Описание типа множества имеет вид: <имя типа> = set of <базовый тип>
Здесь <имя типа> – правильный идентификатор; set, of – зарезервирован¬ные слова (множество, из); <базовый тип> – базовый тип элементов множества, в качестве которого может использоваться любой порядковый тип, кроме word, integer, longint.
Синтаксическая диаграмма:
Пример:
var
year : set of 198..200;
c : set of char;
Year – множество, которое может состоять из элементов диапазона 198 … 200, с – множество всех символов.
Конструкторы множеств
Множественное значение можно задать с помощью конструктора множества, в котором содержатся описания элементов множества, отделенные друг от друга запятыми и заключенные в квадратные скобки.
Описанием элемента могут быть константы или выражения базового типа, а также – тип–диапазон того же базового типа вида min..max, где значения выражений min и max представляют собой нижнюю и верхнюю границы группы элементов. Если нижняя граница больше верхней границы (т. е. min > max), то никакой элемент не описывается, то есть описывается пустое множество.
Все выражения должны относиться к одному порядковому типу, представляющему собой базовый тип для множественного типа данного конструктора. Конструктор множества [ ] обозначает пустое множество для любого множественного типа (рис. 21).
Примеры конструкторов множеств:
[13]
[ i + j , i – j ]
[ ‘0’..’9']
Операции над множествами
Если Х – переменная–множество, а Е – множественное выражение, то присваивание:
Х := Е
допустимо только в том случае, если все элементы Е относятся к базовому типу Х.
К любым объектам со структурой множества применимы операции: объединение, пересечение, разность. Если предположить, что А и В – выражения одного типа, то:
А + В – множество из элементов А и В (объединение);
А * В – множество общих для А и В элементов (пересечение);
А – В – множество элементов А, не входящих в В (разность).
К множественным операндам применимы пять операций отношения. Предположим, А и В – множественные выражения одного типа, а е – порядковое выражение базового типа.
е in A – вхождение в множество; результат true, если е элемент А, иначе – false;
А = В – равенство множеств;
А <>В – неравенство множеств;
А <= В – включение; результат true, если А подмножество В;
А >= В – включение; результат true, если В подмножество А.
Два множества считаются эквивалентными тогда и только тогда, когда все их элементы одинаковы, причем порядок следования элементов в множестве безразличен. Если все элементы одного множества входят также и в другое, говорят о включении первого множества во второе. Пустое множество включается в любое другое.