
Ein Mengendatentyp wird wie folgt deklariert:
TYPE set_typ = SET OF basisdatentyp;Die Werte von set_typ sind Elemente der Potenzmenge von basisdatentyp, d.h. jede beliebige Menge, die aus Werten des Basisdatentyps gebildet werden kann, ist als Wert von set_typ zulässig.
Der Basisdatentyp muß ordinal sein.
Die Kardinalität des Basisdatentyps muß kleiner oder gleich sein als
die Wortlänge des verwendeten Rechners bzw. als ein geringfüges
Vielfaches der Wortlänge.
Beschränkungen können z.B. bei 16, 32 oder 256 liegen.
Mengenwerte werden wie folgt angegeben:
[ wert_x, ..., wert_y ]wert_x und wert_y müssen dabei Werte des Basisdatentyps sein.
Beispiel:
TYPE farbmenge = SET OF (rot, gruen, blau);
VAR fm1, fm2, fm3 : farbmenge;
fm1 := [];
fm2 := [gruen];
fm3 := [rot .. blau]; { entspricht fm3 := [rot, gruen, blau]; }
OperatorenFolgende Operatoren sind für Mengendatentypen definiert:
Mengenoperatoren
binäre Operatoren, Operanden und Resultat sind Mengen
* Durchschnitt + Vereinigung - MengendifferenzExtended Pascal sieht einen weiteren Operator vor:
>< symmetrische DifferenzVergleichsoperatoren
= Identität <> Nichtidentität <= Teilmenge (subset) >= Obermenge (superset)binärer Operator, linker Operand ist Wert aus Basisdatentyp, rechter Operand ist Menge, Ergebnis ist vom Typ BOOLEAN:
IN Einschließung (inclusion)Variablen eines Mengendatentyps können weder eingegeben noch ausgegeben werden.
Beispiel:
TYPE farbmenge = SET OF (rot, gruen, blau);
VAR fm1, fm2, fm3, fm4 : farbmenge;
fv1, fv2, fv3 : farbmenge;
b1, b2, b3, b4, b5, b6 : BOOLEAN;
fm1 := [];
fm2 := [gruen];
fm3 := [rot, blau];
fm4 := [rot .. blau];
fv1 := fm2 * fm3; { [] }
fv2 := fm2 + fm3; { [rot, gruen, blau] }
fv3 := fm4 - fm3; { [gruen] }
b1 := fm3 <= fm4; { TRUE }
b2 := fm3 >= fm4; { FALSE }
b3 := fm1 = fm2*fm3; { TRUE }
b4 := fm3 <> fm4; { TRUE }
b5 := rot IN fm3; { TRUE }
b6 := 12 IN [0 .. 255]; { liefert in Turbo Pascal TRUE }
b6 := 12 IN [0 .. 256]; { liefert in Turbo Pascal Syntaxfehler
0..256 ist "zu groß" }
Extended Pascal stellt eine Funktion zur Verfügung, um die
Kardinalität einer Menge zu bestimmen, d.h. die Anzahl der Elemente,
die zur Menge gehören:
anzahl := Card(menge);
P. Böhme, 08.09.1996