Programmiersprache Pascal

Aufzählungsdatentypen

Aufzählungsdatentypen (enumeration types) bieten eine interessante Alternative zur Deklaration von symbolischen Konstanten.
Sie werden vor allem in Situationen eingesetzt, in denen der konkrete Wert einer symbolischen Konstante keinen eigentliche Bedeutung hat, da er nur einen Sachverhalt, eine Eigenschaft codiert. Eine Menge alternativer Eigenschaften wie z.B. kann mit Hilfe eines Aufzählungsdatentyps modelliert werden.

Ein Aufzählungsdatentyp wird wie folgt deklariert:

  TYPE name = (wert_1, ..., wert_n);
wert_1, ..., wert_n sind die Bezeichner der Werte, die für den Datentyp zulässig sind.
Die Bezeichner müssen voneinander verschieden sein.
Weiterhin müssen sie innerhalb des Deklarationsteils des Blocks, in dem der Aufzählungsdatentyp deklariert wird, eindeutig sein, d.h. zwei parallel definierte Aufzählungsdatentypen dürfen keine gemeinsamen Werte (Wertbezeichner) haben.
Für die Wahl der Bezeichner gelten die Pascal üblichen Regeln zur Bildung von Namen.

In der Typdeklaration werden alle Werte, die zum Wertebereich des Datentyps gehören, explizit aufgezählt.
Implementationsspezifisch existiert in einem Pascal-System eine obere Grenze für die Anzahl der zulässigen Werte. Diese Grenze sollte mit dem Wertebereich von INTEGER in Zusammenhang stehen und so groß sein, daß sie für die praktische Arbeit ohne Bedeutung ist.

Rechnerintern werden die Werte als ganze Zahlen realisiert.
Aufzählungsdatentypen gelten deshalb als eingeschränkte Datentypen.

Aufzählungsdatentypen sind ordinale Datentypen.
Es gilt:

  wert_1  <  wert_2  < ...  <  wert_n

  Ord(wert_1) = 0
  Ord(wert_2) = 1
  ...
  Ord(wert_n) = n-1
Operatoren

Anwendbar sind alle Vergleichsoperatoren:

  <  <=  >  >=  =  <>
Arithmetische Operationen sind nicht möglich !
Arithmetik kann nur indirekt über die Ordinalwerte betrieben werden.

Standardfunktionen

Anwendbar sind folgende Funktionen

  Ord(x)     Ordinalwert von x
  Pred(x)    Vorgänger von x
  Succ(x)    Nachfolger von x
Pred(wert_1) und Succ(wert_n) sind nicht definiert.

Einschränkung bei der Verwendung von Aufzählungsdatentypen

Variablen mit Aufzählungsdatentyp können weder in Eingabe- noch in Ausgabeanweisungen explizit auftreten !
Die Werte eines Aufzählungsdatentyps dienen nur zur Verbesserung der Lesbarkeit des Quelltextes !

Für die Eingabe- und Ausgabe der Werte von Aufzählungsdatentypen muß entweder auf die Ordinalwerte oder auf speziell zu erstellende Unterprogramme zurückgegriffen werden.

Beispiel:

  TYPE farbe = (rot, gruen, blau);

  Ord(rot) = 0
  Ord(gruen) = 1
  Ord(blau) = 2

  Succ(rot) = gruen
  Pred(gruen) = rot
Beispiel:
  TYPE farbe = (rot, gelb, gruen);
       aktion = (warten, schalten, fahren);
       zustand = ARRAY[farbe] OF aktion;

  VAR z : zustand;

  z[rot] = warten;
  z[gelb] = schalten;
  z[gruen] = fahren;
Hinweis:
Der Programmierer sollte nicht darauf vertrauen, daß ein Pascal-System zur Laufzeit Verletzungen des Wertebereichs signalisiert !
Aus Effektivitätsgründen wird das Verlassen des Wertebereichs oft nicht oder nur nach Setzen spezieller Compiler-Optionen angezeigt.



P. Böhme, 15.07.1996