The following operations on sets can be performed with operators: Union, difference, symmetric difference, inclusion and intersection. Elements can be aded or removed from the set with the Include or Exclude operators. The operators needed for this are listed in table (9.6).
|
The set type of the operands must be the same, or an error will be generated by the compiler.
The following program gives some valid examples of set operations:
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]; // equals [mon,tue,wed,thu,fri] PrintDays(W); W:=[mon,tue,wed]-[wed]; // equals [mon,tue] PrintDays(W); W:=[mon,tue,wed]-[wed,thu]; // also equals [mon,tue] PrintDays(W); W:=[mon,tue,wed]*[wed,thu,fri]; // equals [wed] PrintDays(W); W:=[mon,tue,wed]><[wed,thu,fri]; // equals [mon,tue,thu,fri] PrintDays(W); end. |
As can be seen, the union is equivalent to a binary OR, while the intersection is equivalent to a binary AND, and the summetric difference equals a XOR operation.
The Include and Exclude operations are equivalent to a union or a difference with a set of 1 element. Thus,
Include(W,wed);
|
is equivalent to
W:=W+[wed];
|
and
Exclude(W,wed);
|
is equivalent to
W:=W-[wed];
|