Referenz - Schleifen
Schleifen sind Programmteile, die (vielfach) wiederholt werden; die Anzahl der Wiederholungen ist in der Regel an Bedingungen geknüpft (z. B. "Wiederhole, bis a den Wert 10 hat"), sogenannte Endlosschleifen sind aber ebenso möglich.
Verschiedene Schleifentypen:
Einfache Bedingungsschleife: WHILE ... WEND
Der Codeblock zwischen WHILE und WEND wird so lange wiederholt, wie die Bedingung hinter WHILE erfüllt ist. Wenn die Bedingung beim Start eines neuen Schleifendurchlaufs nicht mehr erfüllt ist, wird die Schleife verlassen.
WHILE bedingung
anweisungen
WEND
Die Bedingung wird vor dem Schleifendurchlauf geprüft. Ist die Bedingung schon vor dem ersten Schleifendurchlauf nicht erfüllt, dann wird die Schleife gar nicht erst betreten.
Erweiterte Bedingungsschleife: DO ... LOOP
Ähnlich wie bei WHILE...WEND wird bei jedem Schleifendurchlauf überprüft, ob die Bedingung erfüllt ist und ob die Schleife ein weiteres Mal durchlaufen werden soll. Die Bedingung kann am Beginn oder am Ende der Schleife überprüft werden:
DO {WHILE | UNTIL} bedingung
anweisungen
LOOP
oder
DO
anweisungen
LOOP {WHILE | UNTIL} bedingung
Im ersten Fall ist es möglich, dass die Schleife gar nicht betreten wird, im zweiten Fall wird sie auf jeden Fall mindestens einmal durchlaufen.
Das Schlüsselwort WHILE (zu deutsch "während") gibt an, dass die Schleife so lange durchlaufen wird, wie die Bedingung erfüllt ist. Damit funktioniert DO WHILE bedingung ... LOOP exakt genauso wie WHILE bedingung ... WEND.
Wird stattdessen UNTIL (zu deutsch "bis") verwendet, dann wird die Schleife so lange ausgeführt, bis die Bedingung erfüllt ist. Da es sich bei beiden Varianten genau um die Gegenereignisse handelt, können sie problemlos gegeneinander ausgetauscht werden. Welche Variante bevorzugt wird, hängt weitgehend vom persönlichen Geschmack ab und davon, welche Variante in der aktuellen Situation besser lesbar erscheint.
Ebenso ist es möglich, überhaupt keine Bedingung zu prüfen, und somit eine Endlosschleife zu erzeugen:
DO
staendig_wiederholter_Programmcode
LOOP
Endlosschleifen sollten unbedingt eine andere Möglichkeit zum Verlassen besitzen (s. u.: "Kontrollanweisungen"), da der Benutzer das Programm sonst nicht auf normalem Weg beenden kann.
Zählschleife: FOR ... NEXT
FOR...NEXT wiederholt den Codeblock zwischen FOR und NEXT und erhöht einen Zähler bei jedem Durchlauf des Codeblocks. Die Schleife wird verlassen, sobald der Zähler einen Zielwert erreicht oder überschritten hat.
FOR zaehler [AS datentyp] = startwert TO endwert [STEP schrittweite]
anweisungen
NEXT
Zu Beginn der Schleife wird der Zähler auf den Startwert gesetzt. Sobald der Befehl NEXT erreicht wird, wird der Zähler um die angegebene Schrittweite erhöht - wurde keine Schrittweite angegeben, dann erhöht sich der Zähler um 1. Anschließend wird der Zähler mit dem Endwert verglichen und die Schleife gegebenenfalls verlassen.
Kontrollanweisungen
Für den Fall, dass eine Schleife nicht regulär von Anfang bis Ende durchlaufen werden soll, stehen zwei Kontrollanweisungen zur Verfügung:
In der Schleife fortfahren: CONTINUE
CONTINUE {WHILE | DO | FOR} überspringt den Rest des Schleifeninhalts und springt direkt an das Ende der Schleife. Dort wird wie gewohnt die Überprüfung der Schleifenbedingung vorgenommen. In einer FOR-Schleife wird nach einem CONTINUE FOR auch der Zähler erhöht.
Die Schleife verlassen: EXIT
EXIT {WHILE | DO | FOR} verlässt die Schleife und fährt mit dem nächsten Befehl nach dem Schleifenende fort.
Gültigkeit von Variablen
Schleifen erzeugen eigene SCOPE-Blöcke, d. h. es ist möglich, innerhalb einer Schleife Variablen zu definieren, die dann nur innerhalb dieser Schleife gültig sind. Beachten Sie, dass diese Variablen auch nicht als Schleifenbedingung abgefragt werden können, da sie an dieser Stelle bereits nicht mehr definiert sind (eine Ausnahme bildet der Zähler der FOR-Schleife).
Näheres zu SCOPE-Blöcken und zu den Gültigkeitsbereichen von Variablen finden Sie im zugehörigen Referenzartikel.
Zusätzliche Informationen und Funktionen | ||||
---|---|---|---|---|
|