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;
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]).
Johann Blieberger