12.8.5 Операторы действий над множествами |
Вверх Предыдущий Следующий |
Над множествами могут быть выполнены следующие операции: объединение, разность, симметричная разность, включение и пересечение. Элементы могут быть добавлены или удалены в/из множества операторами Include или Exclude. Операторы действий с множествами, перечислены в таблице (12.6). Таблица 12.6: Операторы действий над множествами
Тип множеств, участвующих в операциях над множествами должен быть одинаковым, иначе будет сгенерирован ошибка компилятора. Следующая программа показывает примеры некоторых операций над множествами: 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. |