Wiederholungsanweisungen - auch Schleifenanweisungen genannt - dienen dazu, bestimmte Anweisungen mehrmals ausführen zu lassen, solange eine bestimmte Bedingung erfüllt wird.
Die while-Anweisung ist eine zusammengesetzte Anweisung . Nach dem Schlüsselwort while steht in runden Klammern ein boolescher Ausdruck , die so genannte Schleifenbedingung . Anschließend folgt die Anweisung, die evtl. mehrfach ausgeführt werden soll. Sie wird auch Iterationsanweisung genannt. Hierbei handelt es sich im Allgemeinen um eine Blockanweisung .
Bei der Ausführung einer while-Anweisung wird zunächst überprüft, ob die Schleifenbedingung erfüllt ist, d.h. ob der boolesche Ausdruck den Wert true liefert. Falls dies nicht der Fall ist, ist die while-Anweisung unmittelbar beendet. Falls die Bedingung erfüllt ist, wird die Iterationsanweisung einmal ausgeführt. Anschließend wird die Schleifenbedingung erneut ausgewertet. Falls sie immer noch erfüllt ist, wird die Iterationsanweisung ein weiteres Mal ausgeführt. Dieser Prozess (Überprüfung der Schleifenbedingung und falls diese erfüllt ist, Ausführung der Iterationsanweisung) wiederholt sich so lange, bis (hoffentlich) irgendwann einmal die Bedingung nicht mehr erfüllt ist.
Bei Ausführung der while-Anweisung kann es vorkommen, dass die Iterationsanweisung kein einziges Mal ausgeführt wird; nämlich genau dann, wenn die Schleifenbedingung direkt beim ersten Test nicht erfüllt ist. Für solche Fälle, bei denen die Iterationsanweisung auf jeden Fall mindestens einmal ausgeführt werden soll, existiert die do-Anweisung - auch do-Schleife genannt.
Dem Schlüsselwort do , von dem die Anweisung ihren Namen hat, folgt die Iterationsanweisung . Hinter der Iterationsanweisung muss das Schlüsselwort while stehen. Anschließend folgt in runden Klammern ein boolescher Ausdruck - die Schleifenbedingung . Abgeschlossen wird die do-Anweisung durch ein Semikolon.
Bei der Ausführung einer do-Anweisung wird zunächst einmal die Iterationsanweisung ausgeführt. Anschließend wird die Schleifenbedingung überprüft. Ist sie nicht erfüllt, d.h. liefert der boolesche Ausdruck den Wert false, dann endet die do-Anweisung. Ist die Bedingung erfüllt, wird die Iterationsanweisung ein zweites Mal ausgeführt und danach erneut die Schleifenbedingung ausgewertet. Dieser Prozess wiederholt sich so lange, bis irgendwann einmal die Schleifenbedingung nicht mehr erfüllt ist.
Der Hamster steht - wie in den Beispielen in Abbildung 2.4 skizziert - vor einem regelmäßigen Berg unbekannter Höhe. Er soll den Gipfel erklimmen und dort anhalten.
void main() {
laufeZumBerg();
erklimmeGipfel();
}
void laufeZumBerg() {
while (vornFrei()) { // while-Schleife
vor();
}
}
void erklimmeGipfel() {
do { // do-Schleife
erklimmeEineStufe();
} while (!vornFrei());
}
void erklimmeEineStufe() {
linksUm(); vor();
rechtsUm(); vor();
}
void rechtsUm() {
kehrt();
linksUm();
}
void kehrt() {
linksUm();
linksUm();
}