Schleifen

Pascal stellt für das Programmierung von Schleifen verschiedene Konstrukte zur Verfügung, von denen wir zwei schon kennensgelernt haben. Die erste Möglichkeit ist die for-Schleife. Die Schleifenvariable muß dabei allerdings eine abzählbare (ordinale) Größe sein wie z.B.. eine Ganzzahl oder aber auch ein Character

procedure schleife1;
var x,y : integer;
begin
   for x:= 1 to 20 do y := x*x + 1;
end;

Eine analoge Prozedur  lässt sich z.B. auch für die Ausgabe aller Kleinbuchstaben von 'a' bis 'z' benutzen.

procedure schleife2;
var b : char;
begin
   for b:= 'a' to 'z' do ausgabe(b);
end;

Man kann für die Grenzen der Laufvariablen durchaus auch selber variable Werte benutzen, die z.B. von anderen Teilen des Programm gesetzt werden.

procedure schleife3;
var x : integer;
begin
   for x:= xmin to xmax do y := x*x + 1;
end;

Die Schleife wird nicht durchlaufen, wenn  xmax < xmin ist. Für den Fall xmax = xmin wird die Schleife genau einmal durchgeführt und zwar mit dem gemeinsamen Wert xmax = xmin. Ist xmax > xmin, so wird die Schleife (xmax-xmin+1)-mal durchlaufen

Das zweite Schleifenkonstrukt haben wir in Form der while (Bedingung = true) do... bereits kennengelernt:

procedure schleife4;
var y,x : real;
begin
x := 0.5;
while x < 2.5 do begin
  y := 2*x*x+3*x-7;
  ausgabe(y);
  x := x+0.5;
end;
end;

Typisch für die while-Schleife ist die Abfrage der Abbruch-Bedingung (ist x immer noch kleiner als 2.5 ? ) zu Beginn eines jeden Schleifendurchlaufs. Typisch ist auch die Initialisierung des Schleifenparameters vor dem Eintritt in die Schleife. Eine Sache, die man allzu gerne vergisst, ist die Veränderung des Schleifenparameter bei jedem Schleifendurchgang. Dadurch bleibt die Bedingung x < 2.5 für alle Zeiten erfüllt und man hat eine sog. Endlosschleife.

Für manche Schleifen möchte man gerne eine Abfrage der Abbruch-Bedingung am Ende jedes Schleifendurchgangs. In PASCAL benutzt man dazu die repeat -until-Schleife.

procedure schleife5;
var y,x : real;
begin
x := 0.5;
repeat 
  y := 2*x*x+3*x-7;
  ausgabe(y);
  x := x+0.5;
until x >= 2.5;
end;

Die Schleife wird abgebrochen sobald x nicht mehr kleiner als 2,5 ist.

 

Zurück zu Delphi

© Dietrich Praclik