Программирование в среде Турбо Паскаль (Поляков, Круглов) - страница 94

Множества имеют весьма компактное машинное представление: 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