5. Sprachelemente / Operatoren
 
zurück
5.1.3 Aggregate


Ein Aggregat (aggretate <BNF>)ist die Verknüpfung mehrerer Komponenten zu einem Wert. Aggregate werden zur Initialisierung von Reihungen und Verbunden verwendet. Die Werte einer Reihung oder eines Verbundes müssen nicht mehr einzeln zugewiesen werden. Die einzelnen Werte eines Aggregats werden durch Komma getrennt und in runde Klammern gesetzt.

-- Deklaration
A : array(1..4) of INTEGER;
-- statt vier Einzelzuweisungen
A(1) := 5;
A(2) := 10;
A(3) := 8;
A(4) := 4;
-- ein Zuweisung mit einem Aggregat
A := (5,10,8,4);


Ein Aggregat kann einer Reihung oder einem Verbund des gleichen Typs zugewiesen werden, wobei die Zuordnung zu den einzelnen Komponenten nach Namen und nach Position erfolgen kann.
Bei der Zuordnung nach der Position muß die Reihenfolge im Aggregat der Reihenfolge in der Typdefinition entsprechen.
Bei der Zuordnung nach Namen wird jeder Wert für eine KOmponente zusammen mit dem Namen der Komponente angegeben. die Reihenfolge ist dabei irrelevant. Die Mischung beider Zuordnungsarten ist erlaubt , mit der Einschränkung, das nach einer namentlichen Zuordnung keine positionelle mehr möglich ist.


Wenn einigen Komponenten der gleiche Wert zugeordnet werden soll, werden die einzelnen Namen der Komponenten durch das Zeichen "|" getrennt.

Eine weitere Möglichkeit besteht darin, einigen Komponenten Werte zuzuweisen und dann allen anderen Komponenten den gleichen Wert. Diese Zuweisung erfolgt mit dem Schlüsselwort "Others".

Somit kann auf einfache Art eine große Menge von Komponenten initialisiert werden.

type Verbund_Typ is record
   A, B, C, D, E, F : Integer;
end record;
Mein_Verbund : Verbund_Typ;
...
Mein_Verbund := (A => 1, B|C => 2, Others => 3);
-- A wird der Wert 1 zugewiesen, B und C der Wert 2, allen anderen der Wert 3


Wenn mehrere Typen mit dem gleichen Aufbau vorhanden sind, dann muß der Übersetzer beim Übersetzen des Programms vergleichen, von welchem Typ das Aggregat ist.

Durch die Qualifizierung eines Aggregats kann dem Übersetzer diese Arbeit abgenommen werden. Gleichzeitig wird durch die Qualifizierung immer deutlich, um welchen Typ es sich handelt.

Mein_Verbund := Verbund_Typ'(A => 1, B|C => 2, Others => 3);

Bemerkung:

Bei Aggregaten mit nur einer Komponente muß eine Zuordnung über den Namen verwendet werden, da ein einzelner in Klammern eingeschlossener Wert nicht als Aggregat erkannt wird.

Beispiel:

type Reihungs_Typ is array (1..1) of integer;
Meine_Reihung : Reihungs_Typ;

-- Meine_Reihung := (10); -- nicht erlaubt

-- erlaubt
-- ein Aggregat mit Zuweisung nach Namen
Meine_Reihung := (1..1 => 10);
-- oder
-- selektierte Komponenten
Meine_Reihung (1) := 10;



 
zurück
 Index   Ada Tour - Dokumentation  
© 2003 Förderverein Ada Deutschland e.V.