-- -- package ArrayTypen -- Aufgabe: -- Beispiele fuer die Definition/ Nutzung von Array-Typen -- -- Arrays sind zusammengesetzte Typen, deren Elemente alle vom -- gleichem Subtyp sind. Ein Array ist charakterisiert durch -- die Anzahl der Indizes, Typ und Position jedes Indexes, untere -- und obere Grenze jedes Indexes und dem Subtype der Komponenten. -- Es gibt constrained und unconstrained Arraydefinitionen. -- -- Dieses Package deklariert jeweils eine Variable von jedem -- Typ, so dass es in eigene Programme eingebunden -- und mit den Typen/Variablen experimentiert werden kann --e-------------------------------------------------------------- -- damit wir vordefinierte Typen nutzen koennen: with diskrettypen; use diskrettypen;with realtypen; use realtypen; package ArrayTypen is -- Unconstrained Arraydefinitionen: -- 1-dim. ArrayTYP von Realwerten, die mittels Integer indiziert werden type Vector is array(Integer range <>) of Real; -- 2-dim. ArrayTYP von Realwerten, die mittels Paaren von Integer -- indiziert werden type Matrix is array(Integer range <>, Integer range <>) of Real; -- Constrained Arraydefinitionen: -- 1-dim. ArrayTYP von 10 Integerwerten, die mittels (ganzer) Zahlen -- zwischen 1 und 10 indiziert werden type Table is array(1 .. 10) of Integer; -- Arraytyp, der mit einem Aufzaehlungstyp indiziert wird type Schedule is array(Day) of Boolean; Max_Line_Size : Integer := 100; -- fuer die naechste Def.: type Line is array(1 .. Max_Line_Size) of Character; -- Objektdeklarationen mit Arraytypdefinitionen: -- Objekt vom Typ 2-dim. Array, mit 80 "Zeilen", 100 "Spalten" -- und Elementen vom Typ Boolean Grid : array(1 .. 80, 1 .. 100) of Boolean; -- Objekt, dessen Elemente durch einen Auschnitt aus einem -- Aufzaehlungstyp indiziert werden koennen Mix : array(Color range Red .. Green) of Boolean; -- Objekt Page ist ein Array. Die Indizierung erfolgt ueber positive -- Zahlen. Die Werte sind vom Type Linie. Das Array ist constrained, -- da es vorinitialisiert ist mit den Werten 1..50. Bei der -- Vorinitialisierung wird bei der 1. und 50. Linie "(1 | 50..)" -- gesetzt ("=>") auf den Wert: 1. und letztes ("Line'Last") -- Linienelement auf "+", restliche auf "-", bei der 2. - 49. Linie -- das 1. und letzte Linienelement auf "|" und restliche " " gesetzt. -- der Effekt ist eine Umrahmung einer Seite. --? Page : array(Positive range <>) of Line := -- Array of Arrays --? (1 | 50 => Line'(1 | Line'Last => '+', others => '-'), --? 2 .. 49 => Line'(1 | Line'Last => '|', others => ' ') --? ); end ArrayTypen;