Computerwissenschaften

Grundlegendes zu und Implementieren von Array-Datentypen in Delphi

Mit Arrays können wir auf eine Reihe von Variablen mit demselben Namen verweisen und eine Zahl (einen Index) verwenden, um einzelne Elemente in dieser Reihe aufzurufen. Arrays haben sowohl obere als auch untere Grenzen, und die Elemente des Arrays sind innerhalb dieser Grenzen zusammenhängend.

Elemente des Arrays sind Werte, die alle vom gleichen Typ sind (Zeichenfolge, Ganzzahl, Datensatz, benutzerdefiniertes Objekt).

In Delphi gibt es zwei Arten von Arrays: ein Array mit fester Größe, das immer dieselbe Größe hat – ein statisches Array – und ein dynamisches Array, dessen Größe sich zur Laufzeit ändern kann.

 

Statische Arrays

Angenommen, wir schreiben ein Programm, mit dem ein Benutzer zu Beginn eines jeden Tages einige Werte (z. B. die Anzahl der Termine) eingeben kann. Wir würden uns dafür entscheiden, die Informationen in einer Liste zu speichern. Wir könnten diese Liste Termine nennen , und jede Nummer könnte als Termine [1], Termine [2] usw. gespeichert werden.

Um die Liste zu verwenden, müssen wir sie zuerst deklarieren. Zum Beispiel:

var Termine: Array [0..6] von Integer; 

deklariert eine Variable namens Termine, die ein eindimensionales Array (Vektor) mit 7 ganzzahligen Werten enthält. In Anbetracht dieser Erklärung bezeichnet Termine [3] den vierten ganzzahligen Wert in Terminen. Die Zahl in Klammern wird als Index bezeichnet.

Wenn wir ein statisches Array erstellen, aber nicht allen Elementen Werte zuweisen, enthalten die nicht verwendeten Elemente zufällige Daten. Sie sind wie nicht initialisierte Variablen. Der folgende Code kann verwendet werden, um alle Elemente im Appointments-Array auf 0 zu setzen.

für k:=0 bis 6 Termine machen [k]:=0; 

Manchmal müssen wir verwandte Informationen in einem Array verfolgen. Um beispielsweise jedes Pixel auf Ihrem Computerbildschirm zu verfolgen, müssen Sie seine X- und Y-Koordinaten mithilfe eines mehrdimensionalen Arrays zum Speichern der Werte referenzieren .

Mit Delphi können wir Arrays mit mehreren Dimensionen deklarieren. Die folgende Anweisung deklariert beispielsweise ein zweidimensionales 7 x 24-Array:

var DayHour: Array [1..7, 1..24] von Real; 

Um die Anzahl der Elemente in einem mehrdimensionalen Array zu berechnen, multiplizieren Sie die Anzahl der Elemente in jedem Index. Die oben deklarierte DayHour-Variable legt 168 (7 * 24) Elemente in 7 Zeilen und 24 Spalten beiseite. Um den Wert aus der Zelle in der dritten Zeile und siebten Spalte abzurufen, verwenden wir: DayHour [3,7] oder DayHour [3] [7]. Mit dem folgenden Code können alle Elemente im DayHour-Array auf 0 gesetzt werden.

für i:=1 bis 7 do 

für j:=1 bis 24 do 

DayHour [i, j]:=0;

 

Dynamische Arrays

Möglicherweise wissen Sie nicht genau, wie groß ein Array sein soll. Möglicherweise möchten Sie die Möglichkeit haben , die Größe des Arrays zur Laufzeit zu ändern . Ein dynamisches Array deklariert seinen Typ, aber nicht seine Größe. Die tatsächliche Größe eines dynamischen Arrays kann zur Laufzeit mithilfe der SetLength- Prozedur geändert werden.

var Students: Array von Zeichenfolgen; 

Erstellt ein eindimensionales dynamisches Array von Zeichenfolgen. Die Deklaration reserviert keinen Speicher für Studenten. Um das Array im Speicher zu erstellen, rufen wir die SetLength-Prozedur auf. Zum Beispiel angesichts der obigen Erklärung,

SetLength (Studenten, 14); 

Ordnet ein Array mit 14 Zeichenfolgen zu, die mit 0 bis 13 indiziert sind. Dynamische Arrays sind immer ganzzahlig indiziert und beginnen immer von 0 bis eins, die kleiner als ihre Größe in Elementen sind.

Verwenden Sie den folgenden Code, um ein zweidimensionales dynamisches Array zu erstellen:

var Matrix: Array von Array von Double; 
begin 

SetLength (Matrix, 10, 20) 

end;

Hiermit wird Platz für ein zweidimensionales 10-mal-20-Array von doppelten Gleitkommawerten zugewiesen.

Um den Speicherplatz eines dynamischen Arrays zu entfernen, weisen Sie der Arrayvariablen null zu, z.

Matrix:=null; 

Sehr oft weiß Ihr Programm zur Kompilierungszeit nicht, wie viele Elemente benötigt werden. Diese Nummer wird erst zur Laufzeit bekannt. Mit dynamischen Arrays können Sie nur so viel Speicher zuweisen, wie zu einem bestimmten Zeitpunkt erforderlich ist. Mit anderen Worten, die Größe dynamischer Arrays kann zur Laufzeit geändert werden. Dies ist einer der Hauptvorteile dynamischer Arrays.

Im nächsten Beispiel wird ein Array mit ganzzahligen Werten erstellt und anschließend die Kopierfunktion aufgerufen, um die Größe des Arrays zu ändern.

var 

Vector: Array von Integer; 


k: ganze Zahl; 
 
begin 

SetLength (Vector, 10); 

für k:=Niedrig (Vektor) bis Hoch (Vektor) mache 

Vektor [k]:=i * 10; 

... 

// jetzt brauchen wir mehr Platz 

SetLength (Vector, 20); 

// hier kann das Vektorarray bis zu 20 Elemente enthalten // (es hat bereits 10 davon) end;

Die SetLength-Funktion erstellt ein größeres (oder kleineres) Array und kopiert die vorhandenen Werte in das neue Array. Die Funktionen „Niedrig“ und „Hoch“ stellen sicher, dass Sie auf jedes Array-Element zugreifen können, ohne in Ihrem Code nach den korrekten Werten für den unteren und oberen Index zu suchen.

Similar Posts

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.