Переменные типа ARRAY относятся к так называемым структурированным типам данных. В языке Паскаль имеются и другие структурированные типы данных, к которым принадлежит и тип данных ARRAY. Математическое понятие множества подразумевает совокупность элементов. В отличие от массива (одномерного), множество состоит из элементов, где порядок их следования не играет роли:
{1, 3, 5}, {5, 3, 1}, {1, 5, 3} – одно и то же множество.
В математике для обозначения множеств используются скобки {,}. В Паскале вместо фигурных скобок для представления множеств используются квадратные скобки: [1, 3, 5].
Подобно массивам, переменная типа ARRAY имеет тип компонент. Каждый элемент, входящий в множество, имеет значение, которое должно принадлежать к типу компонент. Тип SET определяется синтаксической диаграммой, представленной на рис. 36, и общей формой записи.
Рис. 36. Синтаксическая диаграмма типа SET
Общая форма записи
TYPE <имя типа>: SET OF <тип компонент>;
VAR <имя переменной>: <имя типа>;
или
VAR <имя переменной>: SET OF <тип компонент>;
П р и м е р ы :
var LETTERS : set of 'A'..'Z';
DAYS : set of 1..31;
MNOGCHAR : set of char.
Итак, в описании типа ARRAY есть общее с описанием типа массив, но есть и существенные отличия:
– нет типа индекса (элементы множества не индексируются);
– есть, как в массиве, тип компонент.
Тип компонент множества, однако, в отличие от типа компонент массива, должен быть порядковым (ординальным): INTEGER, CHAR, BOOLEAN, перечислимый, интервальный (на базе INTEGER и CHAR). Невозможно, например, образовать множество, элементами которого являются данные типов REAL, STRING, ARRAY и пр., например:
type DAYSOFWEEK = (SUN, MON, TUE, WED, THU, FRI, SAT);
var WEEKDAYS, WEEKEND : set of DAYSOFWEEK.
Теперь этим описанным переменным можно присваивать различные значения, которые суть множества, состоящие из элементов перечислимого типа – названий дней недели:
a) WEEKDAYS := [MON, TUE, WED, THU, FRI];
б) WEEKEND := [SAT, SUN],
причем в случае а) можно поступить иначе: WEEKDAYS := [MON..FRI].
Заметим также, что указанные множества из элементов перечислимого типа нельзя сформировать с помощью оператора READ (в силу специфики этого типа).
Аналогом нуля в типе ARRAY есть пустое множество: [].