Programmiersprache Pascal

Variablen mit einem Array-Typ

Ein Array-Typ ist ein aggregierter Datentyp.
Er schließt verschiedene Komponenten ein, die alle in ihrem Datentyp (skalar oder aggregiert) übereinstimmen.
Die Komponenten werden über einen Index (eindimensionales Array) oder über eine Menge von Indizes (mehrdimensionales Array) identifiziert.
Ein Array kann problemlos sehr viele Komponenten besitzen.

Arrays werden im Deutschen zuweilen auch als Felder bezeichnet. Beim Lesen von Pascal-Literatur ist jedoch Vorsicht geboten: Als Felder werden hier oft die Komponenten eines Records bezeichnet.

Deklaration eines eindimensionalen Arrays:

  VAR name = ARRAY [ indextyp ] OF typ; 
indextyp muß ein ordinaler Datentyp sein.
Ein ordinaler Datentyp besitzt eindeutig bestimmte Werte imin und imax:
imin: Wert mit der kleinsten Ordinalzahl
imax: Wert mit der größten Ordinalzahl
imax - imin + 1 ist die Länge des Arrays, d.h. die Anzahl seiner Komponenten.

Häufig wird indextyp als INTEGER-Teilbereichstyp angegeben, d.h. in der Form

  imin..imax
In Pascal wird meist imin = 1 gewählt.

Beispiel:

  VAR nr : ARRAY[1..10000] OF INTEGER;
      koord = ARRAY[1..3] OF REAL;

  TYPE monate = [1..12];
  VAR  abrechnung = ARRAY[monate] OF REAL;

  TYPE farbe = (rot, gruen, blau);
  VAR  rgb = ARRAY[farbe] OF INTEGER;
Die Zuweisung von Werten an ein Array muß komponentenweise erfolgen.
Beispiel:
  VAR a : ARRAY[1..10] OF INTEGER;
      i : INTEGER;

  FOR i:= 1 TO 10 DO 
    a[i] := i*i;
Einem Array kann der Wert eines anderen Arrays zugewiesen werden, wenn beide den gleichen Typ besitzen.
Beispiel:
  VAR a, b : ARRAY[1..10] OF INTEGER;

  a := b;
  a := b + 1;          { nicht zulaessig }
  a := b * b;          { nicht zulaessig }
Anfangswertzuweisung an Arrays

Standard Pascal

Nicht möglich.

Extended Pascal

Bei der Variablendeklaration kann für jede Komponente eines Arrays ein Anfangswert angegeben werden:

  ... VALUE [index_1: wert_1; ...; index_n: wert_n];
Soll für eine größere Anzahl von Komponenten der gleiche Anfangswert zugewiesen werden, so kann die Aufzählung ersetzt werden durch
  ... VALUE [ ...; OTHERWISE wert ];
Beispiel:
  CONST n = 5;
  TYPE arr = ARRAY[1..n] OF INTEGER;
  VAR a : arr;                         { nicht initialisiert }
      b : arr VALUE [1: 1; 2: -1; 3: -1; 4: 4; 5: -1];
      c : arr VALUE [1: 1; 4: 4; OTHERWISE -1];
      d : arr VALUE [OTHERWISE 1];
      e : arr VALUE 1                  { !! nicht zulaessig !! }
Indirekt wird auch in dem folgenden Beispiel eine Anfangswertbelegung des Arrays erreicht:
  TYPE int1 = INTEGER VALUE 1;
  VAR  a = ARRAY[1..5] OF int1;
Alle Elemente des Arrays a besitzen den Anfangswert 1.

Turbo Pascal

Bei der Deklaration als "typisierte Konstante" kann für jede Komponente eines Arrays ein Anfangswert angegeben werden:

  CONST name : array_typ = ( wert_1, ..., wert_n );
name ist eine (statische) Variable !

Beispiel:

  TYPE arr = ARRAY[1..5] OF INTEGER;
  CONST b : arr = (1, -1, -1, 4, -1);
        c : arr = (1);                      { !! Syntaxfehler !! }
        d : arr = (1, 1, 1, 1, 1);


P. Böhme, 07.09.1996