Buchempfehlung
Windows System Programming
Windows System Programming
Das Kompendium liefert viele interessante Informationen zur Windows-Programmierung auf Englisch. [Mehr Infos...]
FreeBASIC-Chat
Es sind Benutzer im FreeBASIC-Chat online.
(Stand:  )
FreeBASIC bei Twitter
Twitter FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!

Referenz - Schleifen

Referenz-Navigation

 

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: BefehlsreferenzeintragWHILE ... 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: BefehlsreferenzeintragDO ... 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 BefehlsreferenzeintragWHILE (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 BefehlsreferenzeintragUNTIL (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: BefehlsreferenzeintragFOR ... 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: BefehlsreferenzeintragCONTINUE
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: BefehlsreferenzeintragEXIT
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 BefehlsreferenzeintragSCOPE-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 BefehlsreferenzeintragReferenzartikel.


Zusätzliche Informationen und Funktionen
  • Der Referenzeintrag wurde am 05.08.2007 von AdministratorSebastian angelegt.
  • Die aktuellste Version wurde am 01.01.2013 von Redakteurnemored gespeichert.
  Versionen Versionen