Programmiersprache Pascal

Zählschleife ( FOR )

Struktogramm

Eine Laufvariable nimmt nacheinander eine vorgegebene Anzahl von Werten an, die bestimmt werden durch einen Anfangswert, eine Schrittweite und einen Endwert.
Der Datentyp der Laufvariable und entsprechend der Typ von Anfangswert, Endwert und Schrittweite unterliegt häufig Beschränkungen. Zulässig sind in der Regel ordinale Datentypen wie Integer.
Der Wert der Laufvariablen darf innerhalb des Aktionsteils nicht verändert werden !

Die Zählschleife ist ein Spezialfall der Iteration:

Zählschleifen werden im allgemeinen als Abweisschleifen realisiert, d.h. der Aktionsteil muß nicht notwendig durchlaufen werden.
Bemerkung: Die Realisierung als Abweisschleife ist in modernen Sprach(version)en im allgemeinen die Regel, nicht immer jedoch in älteren Sprachversionen, z.B. in FORTRAN 66.

Pseudocode

  FOR laufvariable:=anfangswert TO endwert STEP schrittweite DO
    anweisungsfolge
  END DO
Die Zählschleife ist ein Spezialfall des verallgemeinerten Zyklus:
  laufvariable := anfangswert
  LOOP
    WHEN laufvariable > endwert THEN EXIT
    anweisungsfolge
    laufvariable := laufvariable + schrittweite
  END LOOP
Standard Pascal

Pascal läßt als Schrittweite nur 1 bzw. -1 zu.
Werden größere Schrittweiten gebraucht, so muß dies der Programmierer selbst organisieren.

{ anfangswert <= endwert, schrittweite = 1 }
  FOR laufvariable:=anfangswert TO endwert DO   
    anweisung;             { einzelne Anweisung  oder  Verbundanweisung }

{ anfangswert >= endwert, schrittweite = -1 }
  FOR laufvariable:=anfangswert DOWNTO endwert DO  
    anweisung;             { einzelne Anweisung  oder  Verbundanweisung }
In Abhängigkeit davon, ob der Endwert größer oder kleiner als der Endwert ist, muß TO oder DOWNTO verwendet werden. Als Schrittweite wird 1 bzw. -1 verwendet.

Sowohl Standard als auch Extended Pascal treffen in Bezug auf die Laufvariable folgende Restriktion:
Die Laufvariable muß lokal zu dem Block deklariert sein, in dessen Anweisungsteil die FOR-Anweisung steht.

Beispiel:

  VAR produkt = ARRAY[1..100] OF ...;
      i, n : INTEGER;

  FOR i := 1 TO n DO                { i = 1, 2, ..., n-1, n }
    kaufe(produkt[i]);

  FOR i := n DOWNTO 1 DO            { i = n, n-1, ..., 2, 1 }
    count_down(i);

Extended Pascal

Extended Pascal gestattet eine weitere Variante der FOR-Anweisung:

  FOR laufvariable IN mengen_ausdruck DO
    anweisung;             { einzelne Anweisung  oder  Verbundanweisung }
laufvariable muß einen ordinalen Datentyp besitzen und mengen_ausdruck muß ein Ausdruck sein, der einen Wert mit Mengendatentyp liefert.
Der Typ von laufvariable muß kompatibel zum Basisdatentyp des Mengentyps sein.

Beispiel:

  TYPE color = (rot, gelb, gruen);
  VAR farbe : color;
  
  FOR farbe IN [rot, gelb] DO ...;
Diese Form der Iteration (set-member-iteration) ist in Pascal++ verfügbar, jedoch zur Zeit nicht in Gnu Pascal.



P. Böhme, 14.08.1996