Пусть первое множество M:= [Red, Orange], второе N:= [Orange, Yellow], а результат выполнения операции - множество S.
+ оператор объединения множеств. В результате операции получается новое множество, которое содержит по одному разу все элементы исходных множеств:
S := M + N; S = [Red, Orange, Yellow].
- оператор разности множеств (относительное дополнение). В результате операции получается новое множество, которое содержит элементы первого множества, не принадлежащие второму множеству:
S := M - N; ^ S = [Red].
* оператор пересечения множеств. В результате операции получается новое множество, которое содержит элементы, принадлежащие обоим множествам:
S := M * N; S = [Orange].
Операторы отношения
Операции отношения применяются к двум множествам, результате операции - логическое значение FALSE или TRUE.
- = оператор эквивалентности. Результат сравнения равен TRUE, если множества содержат одни и те же элементы, и FALSE в противном случае.
- <> оператор неэквивалентности. Результат сравнения равен TRUE, если множества отличаются хотя бы одним элементом, и FALSE - если множества содержат одни и те же элементы (то есть равны).
- <= оператор подмножества. Результат операции равен TRUE, если все элементы первого множества принадлежат и второму множеству.
- >= оператор включающего множества. Результат операции равен TRUE, если все элементы второго множества принадлежат и первому множеству.
- in - оператор, с помощью которого можно проверить, входит ли какой- либо элемент в множество. Если входит, то результат равен TRUE, если не входит - FALSE.
Конструкция с оператором in записывается так: слева указывается элемент, затем оператор in и, наконец, множество. Например,
Orange in M
Поскольку элемент Orange принадлежит множеству N, то результат операции равен TRUE.
А эта проверка закончится неудачно:
Yellow in M,
так как элемент Yellow принадлежит множеству N, но не M.
Эта операция очень часто используется для сокращения записи длинных условий в логических условиях. Пусть нам нужно проверить, что некоторое число от 1 до 10 является простым. Мы можем записать так:
If (i=2) or (i=3) or (i=5) or (i=7) then . . . // число простое
Но с оператором in эта проверка гораздо понятнее:
If i in [2, 3, 5, 7] then . . . // число простое
Сколько элементов в множестве?
Иногда требуется узнать, сколько элементов содержит то или иное множество. Конечно, можно после каждой операции с множеством корректировать это число, но значительно проще написать пару строк кода и подсчитывать число элементов в нужном месте программы.
Type
TColor = (Red, Orange, Yellow, Green, Cyan, Blue, Violet); color= set of TColor;
var
i: integer; clr2: color; cs: Tcolor;
clr2:= []; //не обязательно clr2:= [Red, Orange, Yellow];
i:=0;
for cs:= Red to Violet do if cs in clr2 then inc(i);
Как и следовало ожидать, i примет значение три, то есть в множестве содержится 3 элемента.
Сначала выполняется операция пересечения множеств, затем - объединения и разности, и так далее.
Порядок выполнения операций можно изменить с помощью круглых скобок.