Möglichkeiten für die Handhabung der Arrays:
Statische Zuweisung von Werten:
Beispiel: b:=[3,4,6,9];
Direkte Zuordnung (a und b sind Arrays):
Beispiel: a:=b;
Test auf Gleichheit (a und b sind Arrays):
Beispiel: wenn (a=b) dann...
Arrays (und auch Datensätze) können auch in den Funktionen als Rückgabetyp verwendet werden.
In Funktionsaufrufen können Arrays "by value" übergeben werden. Dann wird ein Kopie des Arrays auf den Stack gelegt.
Arrays können auch "by reference" (Schlüsselwort var benutzen) weitergeleitet werden.
Beispiel:
procedure modify (var s_arr: array[13..17] of integer);
begin
s_arr[15]:= 151515;
end;
procedure try_modify (s_arr: array[13..17] of integer);
begin
s_arr[15]:= 151515;
end;
procedure PrintSA (s_arr: array[13..17] of integer);
var k:integer;
begin
print ("Integer array of length ", length (s_arr), ": ");
for k := 13 to 17 do
print (k,":", s_arr[k], ", ");
print ("\n");
end;
var s_arr: array [13..17] of integer;
begin
s_arr[13] := 13;
s_arr[14] :=-14;
s_arr[15] := 15;
s_arr[16] :=-16;
s_arr[17] := 17;
try_modify (s_arr);
PrintSA (s_arr);
modify (s_arr);
PrintSA (s_arr);
end.
Es gibt drei Typen von Arrays:
Statische Arrays
Beispiel: array[1..10] of integer;
Dynamische Array (Größe zur Laufzeit veränderbar)
Beispiel: array of integer;
Offene Arrays (als Parameter in Funktionsaufrufen)
Beispiel: array * of integer;
Für statische Arrays gibt es diese Funktionen:
Name |
Zweck |
Arguments |
Return value |
Example |
high |
liefert den Index des letzten Array-Elements, wenn das Array mehrdimensional ist, der erste Index wird verwendet |
1: array |
INTEGER |
i:=high (array);
|
length |
liefert die Länge des Arrays |
1: array |
INTEGER |
but length(a[1])==length(b[1])==4 |
low |
liefert den Index des ersten Array-Elements, |
1: array |
INTEGER |
i:=low (array); |
Für dynamische Arrays gibt es diese Funktionen:
Name |
Zweck |
Argumente |
Rückgabe- |
Beispiel |
append |
hängt ein Array an ein anderes an |
1: array of: Ziel=dyn. array |
kein |
|
copy |
kopiert ein Array auf ein anderes |
1: array: Quelle |
array of: Ziel |
|
high |
liefert den Index des letzten Array-Elements |
1: array of |
INTEGER |
i:=high (arObjects); |
insert |
setzt ein Array an einer bestimmten Position in ein anderes ein, |
1: array of: Ziel=dyn. array |
kein |
|
length |
liefert die Länge des Arrays |
1: array of |
INTEGER |
|
low |
liefert den Index des ersten Array-Elements |
1: array of |
INTEGER |
i:=low (arObjects); |
remove |
entfernt bestimmte Elemente aus einem Array |
1: array of: dyn. array |
kein |
|
setLength |
setzt die Länge des Arrays auf einen neuen Wert |
1: array of: dyn. array |
kein |
var dyn_arr: array of real; |
reserve |
erlaubt Mindest-Speicherreservierung für gegebene Anzahl von Elementen in einem Array (Achtung: es werden keine Elemente angelegt oder gelöscht, sondern nur der dafür notwendige Speicher reserviert, |
1: dyn. array 2: INTEGER: Anzahl der zu reservierende Elemente |
|
var arr: array of string; begin println("finished"); |
capacity |
gibt die maximale Anzahl Elemente zurück, die das Array enthalten kann, ohne automatisch neuen Speicher anzulegen |
1: dyn. array |
|
Siehe reserve |
Für offene Arrays gibt es folgende Funktionen:
Name |
Zweck |
Argumente |
Rückgabe- |
Beispiel |
setLow |
setzt den Index des ersten Elements |
1: array * of |
array * of |
procedure PrintCA (a: array * of char); var dyn_c: array of char; PrintCA (dyn_c); |
sliceLeft |
liefert die n ersten Elemente eines Arrays |
1: array |
array * of |
|
sliceMid |
liefert die n Elemente eines Arrays ab einer bestimmten Position |
1: array |
array * of |
|
sliceRight |
liefert die n letzten Elemente eines Arrays |
1: array |
array * of |