next up previous contents index
Weiter: 2.1.3 Reelle Zahlen Hinauf: 2.1 Skalare Typen Zurück: 2.1.1 Ganze Zahlen

Aufzählungen

  

Aufzählungen (Enumerations) können ebenfalls als Typen definiert werden, z.B.

type Tag is (Montag, Dienstag, Mittwoch, Donnerstag, Freitag, Samstag, Sonntag);

Vordefinierte Aufzählungstypen sind boolean  und character . Der Typ boolean umfaßt die beiden Werte false und true. Die Werte des Typs character sind die 256 Zeichen des Latin-1-Zeichensatzes von ISO 10646. Dabei können alle nicht graphisch darstellbaren Zeichen über einen vordefinierten Namen angesprochen werden. Näheres findet man in Anhang A.1.

Ada legt fest, daß erst dann, wenn der Typ von Objekten definiert ist, Variablen angelegt werden können, die solche Objekte bezeichnen. Variablen eines bestimmten Typs können etwa wie folgt deklariert werden:

s,t: small_int;
Wochentag: Tag;

Darüberhinaus ist es in Ada möglich, bei der Deklaration einer Variablen einen Anfangswert mitzugeben, z.B.:

Wochentag: Tag := Montag;
i,j: index := 1;

Fügt man bei der Deklaration einer ,,Variablen``vor dem Typ-Indikator das Schlüsselwort constant ein, so kann der Wert der ,,Variablen``nicht mehr geändert werden, sie verhält sich eben wie eine Konstante . Selbstverständlich muß man in diesem Fall eine explizite Initialisierung vornehmen. Folgendes Beispiel ist eine korrekte Konstanten-Deklarationen im Sinne von Ada:

Anzahl_der_Wochentage: constant integer := 7;

Typen, die Aufzählungen und ganze Zahlen darstellen, werden auch diskrete Typen   genannt. Ada gestattet auch Informationen über Typen zu ,,erfragen``. Dies wird mit sogenannten Attributen  durchgeführt. Die wichtigsten Attribute für diskrete Typen sind:

T'FIRST die untere Schranke des Typs T.
T'LAST die obere Schranke des Typs T.
T'POS(X) gibt die Position des Wertes X im Typ T als integer zurück, z.B.: Tag'POS(Dienstag) = 2.
T'VAL(X) gibt den Wert des Typs T zurück, der an der Position X steht, z.B.: Tag'VAL(3) = Mittwoch.
T'SUCC(X) der Nachfolger von X, falls X nicht gleich der oberen Schranke von T ist, sonst erfolgt eine Fehlermeldung (constraint_error).
T'PRED(X) der Vorgänger von X, falls X nicht gleich der unteren Schranke von T ist, sonst erfolgt eine Fehlermeldung (constraint_error).
T'IMAGE(X) gibt einen String zurück, der den momentanen Wert von X enthält, z.B.: Tag'IMAGE(Montag) ergibt "MONTAG" oder small_index'IMAGE(10) ergibt "10".
T'VALUE(X) wandelt den String X in den entsprechenden Wert des Typs T um, z.B.: Tag'VALUE("FREITAG") ergibt Freitag und small_index'VALUE("9") ergibt 9. Falls die Aufzählung einen entsprechenden Wert nicht enthält, die Syntax im Falle einer ganzen Zahl nicht korrekt ist oder der entsprechende Wert nicht im für den Typ spezifizierten Bereich liegt, wird constraint_error ausgelöst.

An dieser Stelle soll angemerkt werden, daß es auch möglich ist, bestimmte Attribute für selbst-definierte Typen zu implementieren. Näheres findet sich im Reference Manual ([Ada95]).



next up previous contents index
Weiter: 2.1.3 Reelle Zahlen Hinauf: 2.1 Skalare Typen Zurück: 2.1.1 Ganze Zahlen

Johann Blieberger
Wed Feb 11 09:58:52 MET 1998