Множества имеют весьма компактное машинное представление: 1 — элемент расходует 1 бит. Поэтому для хранения 256 элементов достаточно 32 байт (для меньшего диапазона значений множеств цифра будет еще меньше).
Переменная, описанная как множество, подчиняется специальному синтаксису. Элементы множества должны заключаться в квадратные скобки:
SByte := [1, 2, 3, 4, 10, 20, 30, 40];
SChar := ['а', 'б','в'];
SChar := ['г'];
SVideo = [ CGA, AGA, MCGA];
SDiap := [1..4]; {то же, что [1, 2, 3, 4]}
SComp := [1..4, 5, 7, 10..20];
SCharS := ['а..п', 'р..я']; Empty := [];
Пустое множество записывается как [].
- 144 -
Порядок следования элементов внутри скобок не имеет значения так же, как не имеет значения число повторений. Например, многократное включение элемента в множество
SetVar := ['а', 'б', 'а', 'а'];
эквивалентно однократному его упоминанию.
В качестве элементов множеств в квадратные скобки могут включаться константы и переменные соответствующих базовых типов. Более того, можно вместо элементов подставлять выражения, если тип их результата совпадает с базовым типом множества:
VAR
X : Byte; S : Set of Byte;
...
X := 3;
S := [ 1, 2, X ];
S := S + [ X+1 ]; {и т.п. }
Операции, применимые к множествам, сведены в табл. 7.2.
Таблица 7.2
| Название | Форма | Комментарий |
= | Проверка на равенство | S1=S2 | Результатом будет логическое равенство значение, равное True, если S1 и S2 состоят из одинаковых элементов независимо от порядка следования, и False в противном случае |
<> | Проверка на неравенство | S1<>S2 | Результатом будет логическое неравенство значение, равное True, если S1 и S2 отличаются хотя бы одним элементом, False в противном случае |
<= | Проверка на подмножество | S1<=S2 | Результатом будет логическое подмножество значение, равное True, если все элементы S1 содержатся и в S2 независимо от их порядка следования, и равное False в противном случае |
>= | Проверка на надмножество | S1>=S2 | Результатом будет логическое надмножество значение, равное True, если все элементы S2 содержатся в S1 , и False в противном случае |
- 145 -
in | Проверка вхождения элемента в множество | E in [...] E in S1 | Результатом будет логическое значение True, если значение E принадлежит базовому типу множества и входит в множество [ ... ] (S1). Если множество не содержит в себе значения E, то результатом будет False |
+ | Объединение множеств | S1+S2 | Результатом объединения будет множеств множество, полученное слиянием элементов этих множеств и исключением дублированных элементов |
- | Разность множеств | S1-S2 | Результатом операции взятия разности S1-S2 будет множество, составленное из элементов, входящих в S1, но не входящих в S2 |