Операции над множествами в Delphi

Пусть первое множество 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 элемента.

 

Приоритет выполнения операций

Операции над множествами в Delphi

Сначала выполняется операция пересечения множеств, затем - объедине­ния и разности, и так далее.

 

Порядок выполнения операций можно изменить с помощью круглых ско­бок.

������� ������ ��� dle ������� ��������� ������

Помоги проекту! Расскажи друзьям об этом сайте: