Schleifen

Was sind Schleifen?

In einem Programmablauf kommt es öfters vor, dass eine bestimmte Befehlsfolge mehrmals hintereinander ausgeführt werden soll. So etwas nennt man „Schleife“. Von ihnen gibt es unterschiedliche Arten: Sie unterscheiden sich darin, ob die Abbruchbedingung vor dem ersten Durchlauf geprüft werden soll oder erst danach und ob bereits feststeht, wie viele Male eine Schleife durchlaufen wird.


for-Schleife

Die for-Schleife hat folgenden Aufbau:

linenums
for i := 1 to 10 do
begin
 ... // Befehlsfolge, die mehrfach ausgeführt werden soll
end;

Die Beispielschleife wird von 1 bis 10, also zehnmal durchlaufen. Nach jeder „Runde“ wird die sog. Schleifenvariable automatisch um 1 erhöht. Die Schleifenvariable heißt im Beispiel i, das muss nicht so sein. Auf jeden Fall ist es aber ein Ordinalwert. Die Grenzen (1 bis 10) sind hier direkt als Zahlen vorgegeben, es können jedoch auch Integer-Variablen, Aufzählungen oder Chars sein. Es sind alle Typen erlaubt, bei denen es eine feste Reihenfolge gibt.

Schleifenvariablen dürfen grundsätzlich innerhalb der Schleife nicht verändert werden. Ist die Obergrenze kleiner als die Untergrenze, wird die Schleife nicht durchlaufen (z. B. for i:=1 to 0); sind die Grenzen identisch, wird sie einmal durchlaufen. Alternativ zum Hochzählen der Schleifenvariable ist auch Folgendes möglich:

linenums
 for i := 10 downto 1 do 
 ...


while-Schleife

Im Gegensatz zur for-Schleife verwendet die while-Schleife keine Schleifenvariable, die automatisch hochgezählt wird. Hier wird vor jedem Durchlauf geprüft, ob eine bestimmte Bedingung erfüllt ist. Trifft diese nicht mehr zu, wird die Schleife nicht mehr durchlaufen und der Programmablauf danach fortgesetzt. Trifft die Bedingung bereits am Anfang nicht zu, wird die Schleife überhaupt nicht betreten. Man spricht hier von einer kopfgesteuerten Schleife.

Die while-Schleife hat folgende Struktur:

linenums
while x <> y do
begin
 ... // Befehlsfolge, die öfters ausgeführt werden soll
end;

Solange also x ungleich y ist, wird die Schleife durchlaufen. Es ist also ratsam, x und/oder y innerhalb der Schleife zu verändern; andernfalls wäre das Durchlaufkriterium immer erfüllt, die Schleife würde nie zu einem Ende kommen. Der erfahrene Programmierer spricht hier von einer Endlosschleife, die ältere Betriebssysteme komplett in die Knie zwingen kann. Ist x bereits zu Beginn gleich y wird die Schleife überhaupt nicht durchlaufen.

Die Bedingung hinter while kann ein beliebiger Ausdruck sein, der einen Wahrheitswert (Boolean = True oder False) ergibt.


repeat-until-Schleife

War bei der while-Schleife das Durchlaufkriterium anzugeben, ist es bei der repeat-until-Schleife das Abbruchkriterium. Außerdem wird dieses erst am Ende eines Schleifendurchlaufs geprüft. Ein Durchlauf findet also auf jeden Fall statt. Man spricht hier von einer fußgesteuerten Schleife.

linenums
repeat
 ...  // Befehlsfolge, die öfters ausgeführt werden soll
until x = y;

Die Beispielschleife wird solange durchlaufen, bis x gleich y ist. Auch hier ist wieder darauf zu achten, dass keine Endlosschleife entsteht. Auch wenn x schon zu Beginn gleich y ist, wird die Schleife dennoch einmal durchlaufen.


for-in-Schleife

In Delphi 2005 ist die for-in-Schleife neu hinzugekommen. Dies erleichtert besonders Schleifen über Arrays, wenn kein Indexwert benötigt wird. Die allgemeine Syntax lautet:

for element in collection do statement;

Beispiel:

linenums
var
 stringArr : Array of String;
 s : String;
begin
 for s in stringArr do 
 begin
   ShowMessage(s);
 end;
end.


Schleifen abbrechen

Schleifen lassen sich natürlich auch vor dem regulären Ende verlassen. Dazu gibt es die Prozedur break. Break kann nur innerhalb von Schleifen verwendet werden und setzt den Programmablauf mit der ersten Anweisung nach der Schleife fort.

Außerdem gibt es Situationen, in denen man schon zu Beginn eines Schleifendurchlaufs weiß, dass man gleich mit dem nächsten Durchlauf fortfahren kann. Hier kann man continue verwenden. Dadurch wird die Durchführung eines Schleifendurchlaufs abgebrochen und mit dem nächsten Durchlauf begonnen. Bei for-Schleifen wird der Index erhöht.



Start - FAQ - Programm - Impressum

 
cockpit-xp/addon/schleifen/schleifen.txt · Zuletzt geändert: 2020/11/28 12:16 (Externe Bearbeitung)