Array von Arrays
Die Deklaration eines “Array von Arrays” ist eine alternative Schreibweise für multidimensionale Arrays. Eine Sammlung von Elementen wird dabei verschachtelt, statt die Elemente zu dimensionieren. Die Schachteltiefe kann beliebig sein.
Syntax
<variable name> : ARRAY[<first>] ( OF ARRAY[<next>] )+ OF <data type> ( := <initialization> )? ;
<first> : <first lower index bound>..<first upper index bound>
<next> : <lower index bound>..<upper index bound> // one or more arrays
<data type> : elementary data types | user defined data types | function block types
// (...)+ : One or more further arrays
// (...)? : Optional
Syntax
Deklaration:
<variable name> : ARRAY[<dimension>] OF ARRAY[<dimension>] OF <data type> := [<initialization>];
| Name des Arrays Beispiel: |
| Dimension (untere bis obere Indexgrenze) Beispiel: Eine Dimension kann beliebig viele indizierte Elemente haben, bestimmt durch die untere und die obere Indexgrenze. Die Indexgrenzen sind ganzzahlige Zahlen, maximal des Datentyps DINT. |
ARRAY[<dimension>] OF ARRAY[<dimension>] OF ARRAY[<dimension>] OF | Dreifach verschachteltes Array Beispiel: |
| Datentyp eines Elements:
|
| Initialwerte des Arrays (optional) |
Datenzugriff:
<variable name>[<index of first array>][<index of next array>][…]
| Name des Arrays Beispiel: |
| Index der ersten (äußeren) Arrays |
| Index des nächsten (inneren) Arrays |
Beispiel
Die Variablen aPoints und a2Boxes sammeln die gleichen Datenelemente, aber die Schreibweisen bei der Deklaration und beim Datenzugriff unterscheiden sich.
PROGRAM MAIN
VAR
aPoints : ARRAY[1..2,1..3] OF INT := [1,2,3,4,5,6];
a2Boxes : ARRAY[1..2] OF ARRAY[1..3] OF INT := [ [1, 2, 3], [ 4, 5, 6]];
a3Boxes : ARRAY[1..2] OF ARRAY[1..3] OF ARRAY[1..4] OF INT := [ [ [1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12] ], [ [13, 14, 15, 16], [ 17, 18, 19, 20], [21, 22, 23, 24] ] ];
a4Boxes : ARRAY[1..2] OF ARRAY[1..3] OF ARRAY[1..4] OF ARRAY[1..5] OF INT;
END_VAR
aPoints[1, 2] := 1200;
a2Boxes[1][2] := 1200;
