Referenz - WHILE ... WEND
Syntax:
WHILE Bedingung
' [...Programmcode...]
WEND
Typ: Anweisung
Kategorie: Programmablauf
Die WHILE-Schleife wiederholt einen Anweisungsblock, solange eine Bedingung erfüllt ist. 'Bedingung' ist ein numerischer Ausdruck, der entweder wahr/erfüllt (ungleich null) oder falsch/nicht erfüllt (gleich null) sein kann.
Der Code innerhalb der Schleife wird nur dann ausgeführt, wenn schon vor Beginn der Schleife die Bedingung erfüllt wurde; andernfalls wird der WHILE...WEND-Block übersprungen. Die Schleife arbeitet damit exakt genauso wie
DO WHILE Bedingung
' [...Programmcode...]
LOOP
In oben stehendem Code dient WHILE als Schlüsselwort für die DO-Schleifen, um den Typ der Bedingung festzulegen. Bringen Sie die zusammengehörigen Schlüsselworter DO...LOOP bzw. WHILE...WEND nicht durcheinander!
Wie in allen Schleifen können auch die Kontrollanweisungen CONTINUE und EXIT verwendet werden.
CONTINUE WHILE bewirkt, dass der Rest des Schleifen-Codes nicht weiter ausgeführt wird; FreeBASIC springt bei der Ausführung einer solchen Zeile zurück zur WHILE-Anweisung, prüft, ob die Bedingung noch immer erfüllt ist, und führt, wenn dies der Fall ist, die Schleife weiter normal aus.
Mit EXIT WHILE kann die Schleife 'außerplanmäßig' verlassen werden; FreeBASIC fährt dann mit der Codeausführung nach der WEND-Zeile fort.
WHILE...WEND-Blöcke können beliebig oft ineinander und mit anderen Schleifen verschachtelt werden.
Als Block-Anweisung initialisiert WHILE...WEND einen SCOPE-Block, der mit der WEND-Zeile endet. Variablen, die innerhalb einer solchen Schleife deklariert werden, existieren außerhalb nicht mehr.
Achtung: Eine innerhalb der WHILE-Schleife deklarierte Variable kann auch nicht in 'Bedingung' zur Überprüfung des Schleifenendes verwendet werden, da sie an dieser Stelle bereits nicht mehr existiert!
Beispiel:
In diesem Beispiel wird eine WHILE-Schleife eingesetzt, um einen String umzukehren. Benutzt wird dazu die String-Indizierung. Die Schleife stoppt, wenn der Index kleiner als 0 ist, da 0 der Index des ersten Zeichens eines Strings ist.
Dim As String satz, ztas
Dim As Integer index
satz = "The quick brown fox jumps over the lazy dog."
index = Len(satz) - 1
While index >= 0
ztas &= Chr(satz[index])
index -= 1
Wend
Print "original: """ ; satz ; """"
Print "umgedreht: """ ; ztas ; """"
SLEEP
Unterschiede zu QB:
In QB dürfen innerhalb einer Schleife keine Variablen definiert werden.
Unterschiede zu früheren Versionen von FreeBASIC:
Seit FreeBASIC v0.16 wirkt eine WHILE-Schleife wie ein SCOPE-Block.
Unterschiede unter den FB-Dialektformen:
In den Dialektformen -lang qb und -lang fblite erzeugt WHILE...WEND keinen eigenen Scope-Block, sondern arbeitet wie in QB.
Siehe auch:
DO ... LOOP, FOR ... NEXT, EXIT, CONTINUE, SCOPE, Schleifen, Bedingungsstrukturen
Zusätzliche Informationen und Funktionen | ||||
---|---|---|---|---|
|