In den meisten Programmiersprachen gibt es die While-Schleife als Kontrollstruktur. Sie dient dazu, eine Abfolge von Anweisungen mehrfach auszuführen, solange eine Bedingung erfüllt ist. Diese Bedingung wird geprüft, bevor die Anweisungsfolge abgearbeitet wird. Es kann also auch sein, dass die Abfolge gar nicht ausgeführt wird. Wenn die Bedingung ständig erfüllt ist, dann wird die Schleife zur Endlosschleife. Wenn deutsche Befehlsworte gewählt werden, dann heißt die While-Schleife meist Solange-Schleife.
Neben der gebräuchlicheren anfangsprüfenden gibt es in vielen Sprachen auch die endprüfende While-Schleife (Do-while-Schleife). Mit dieser lässt sich die mindestens einmalige Ausführung des eingeschlossenen Code-Blocks erzwingen.
Die While-Schleife verwendet man normalerweise bei dynamischen Abbruchbedingungen, die For-Schleife meistens, wenn man vorher definiert wie viele Durchläufe die Schleife hat. Zum Beispiel würde man für die Berechnung der Fakultät einer Zahl vorzugsweise die For-Schleife anwenden. Analog zu anderen Schleifenkonstrukten bieten viele Sprachen die Möglichkeit, eine While-Schleife per explizitem Befehl, d. h. ohne weitere Prüfung, zu verlassen (Break-Befehl).
While-Schleifen spielen auch in der theoretischen Informatik im Teilgebiet der Berechenbarkeitstheorie eine Rolle, siehe WHILE-Programm.
Inhaltsverzeichnis |
' < dieses Symbol leitet einen auskommentierten Text ein (z.B. für eine Beschreibung einer Zeile)
Dim Fakultaet As Long 'Variable mit dem Namen 'Fakultaet' und dem Typus 'Long' erzeugen
Dim Zaehler As Long 'Variable mit dem Namen 'Zaehler' und dem Typus 'Long' erzeugen
Fakultaet = 1 'Startwert für diese Variable festlegen
Zaehler = 5 'Startwert für diese Variable festlegen
Do While Zaehler > 0 'Schleifenparameter festlegen. Do ... Loop Schleife, mit Randbedingung: Die 'Zaehler' Variable muss über 0 sein, sonnst muss die Schleife verlassen werden
Fakultaet = Fakultaet * Zaehler 'Den Wert der Variable 'Fakultaet' mit dem Wert der Variable 'Zaehler' Multiplizieren und in 'Fakultaet' schreiben
Zaehler = Zaehler - 1 'Der Variable 'Zaehler' einen Wert 1 abziehen.
Loop 'Zurück zum Schleifenbeginn
Msgbox Fakultaet 'gib den Wert der Variable 'Fakultaet' in einer Dialogbox aus.
i = 1 zaehler = 5 while zaehler > 0 do i = i*zaehler zaehler = zaehler-1 end
do-while gibt es in LUA nicht, dafür repeat-until
Program Fakultas; var Zaehler : Integer; // Laufvariable 2..Fakultaet; Fakultaet: LongInt; // Ergebnisvariable begin Fakultaet := 1; // Startwert setzen Zaehler := 5; While Zaehler > 1 do // Durchläuft 5, 4, 3, 2 Begin Fakultaet := Fakultaet * Zaehler; // multipliziere Fakultät mit Zaehler, 4, .., 2 Zaehler := Zaehler - 1; End; writeln(Fakultaet); // Ausgabe der berechneten Fakultät end.
#include <stdio.h> int main(void) { int zaehler=5, fakultaet=1; while(zaehler > 1) { fakultaet *= zaehler--; } printf("%d\n", fakultaet); return 0; }
set zaehler 5 set fakultaet 1 while {$zaehler > 0} { set fakultaet [expr $fakultaet * $zaehler ] incr zaehler -1 } puts $fakultaet
$zaehler=5; $fakultaet=1; while ($zaehler > 1) { $fakultaet*=$zaehler; $zaehler--; } echo $fakultaet;
$zaehler=5; $fakultaet=1; while ($zaehler > 1) { $fakultaet*=$zaehler; $zaehler--; } print $fakultaet;
zaehler = 5 fakultaet = 1 while zaehler > 1: fakultaet *= zaehler zaehler -= 1 print fakultaet
var zaehler=5; var fakultaet=1; while (zaehler > 1) { fakultaet*=zaehler; zaehler--; } window.alert(fakultaet);
public int fakultaet(int zaehler) { int fakultaet=1; while (zaehler > 1) { fakultaet*=zaehler; zaehler--; } return fakultaet;} }
var %fakultaet = 1, %zaehler 5 while (%fakultaet <= %zaehler) { echo -a %fakultaet inc %fakultaet }
PROCEDURE name IS fakultaet NUMBER := 1; zaehler NUMBER := 5; BEGIN WHILE zaehler > 1 LOOP fakultaet := fakultaet * zaehler; zaehler := zaehler - 1; END LOOP; DBMS_OUTPUT.put_line(fakultaet); END name;
DATA DEB TYPE I.
WHILE DEB = 0.
...
ENDWHILE.