12.8.5 Операторы действий над множествами

Вверх  Предыдущий  Следующий

Над множествами могут быть выполнены следующие операции: объединение, разность, симметричная разность, включение и пересечение. Элементы могут быть добавлены или удалены в/из множества операторами Include или Exclude. Операторы действий с множествами, перечислены в таблице (12.6).


Таблица 12.6: Операторы действий над множествами

Оператор

Действие

+

Объединение

-

Разность

*

Пересечение

><

Симметричная разность

<=

Содержит

include

Включает элемент в множество

exclude

Исключает элемент из множества

in

Проверить множество на наличие элемента


Тип множеств, участвующих в операциях над множествами должен быть одинаковым, иначе будет сгенерирован ошибка компилятора.

Следующая программа показывает примеры некоторых операций над множествами:

Type

Day = (mon,tue,wed,thu,fri,sat,sun);

Days = set of Day;

 

Procedure PrintDays(W : Days);

Const

DayNames : array [Day] of String[3] = (’mon’,’tue’,’wed’,’thu’,’fri’,’sat’,’sun’);

Var

D : Day;

S : String;

begin

S:=’’;

For D:=Mon to Sun do

  if D in W then

    begin

    If (S<>’’) then S:=S+’,’;

    S:=S+DayNames[D];

    end;

Writeln(’[’,S,’]’);

end;

 

Var

W : Days;

begin

  W:=[mon,tue]+[wed,thu,fri];     // результат операции [mon,tue,wed,thu,fri]

  PrintDays(W);

  W:=[mon,tue,wed]-[wed];         // результат операции [mon,tue]

  PrintDays(W);

  W:=[mon,tue,wed]-[wed,thu];     // результат операции [mon,tue]

  PrintDays(W);

  W:=[mon,tue,wed]*[wed,thu,fri]; // результат операции [wed]

  PrintDays(W);

  W:=[mon,tue,wed]><[wed,thu,fri]; // результат операции [mon,tue,thu,fri]

  PrintDays(W);

end.

Как можно заметить, объединение эквивалентна бинарному ИЛИ, пересечение эквивалентна бинарному И, симметричная разность эквивалентна операции XOR.

Операции Include и Exclude эквивалентны + (объединение) или - (разность) с множеством из одного элемента. Таким образом,

Include(W,wed);

эквивалентно

W:=W+[wed];

и

Exclude(W,wed);

эквивалентно

W:=W-[wed];

Операция In как результат возвратит True, если левый операнд (элемент), входит во множество указанное как правый операнд, иначе будет False.