Skip to main content

Die while-Schleife

Wir haben gesehen, dass wir mittels Rekursion Sequenzen von Anweisungen beliebig wiederholen können. Typischer Code sieht dabei wie folgt aus:

void loop(int i) {

if (i > 5) {
return;
} else {
// Folge von Anweisungen
loop(i + 1);
}
}

Wir erkennen folgende, wichtige Elemente:

  • Eine Variable, hier i, die bei jedem Aufruf den Wert ändert.
  • Ein boolscher Ausdruck (hier i > 5) welcher je nach Wert von i entscheidet, ob die Anweisungsfolge ein weiteres Mal ausgeführt wird.
  • Eine Anweisungsfolge, die insbesondere auch die in der Verzweigung überprüfte Variable verändert.

Die while-Schleife in Java nimmt diese Elemente auf. Der Syntax um solche Wiederholungen auszudrücken wird jedoch schöner. Wir schreiben:

int i = 0; 
while (i < 5) {
// Folge von Anweisungen
i = i + 1;
}

Die Anweisung ist wie folgt zu lesen:

Solange der boolsche Ausdruck in der Schleifenbedingung (hier i < 5) true ergibt, führe die Anweisungen im Schleifenrumpf aus. Die Schleife ist fertig abgearbeitet, wenn die Schleifenbedingung false ergibt.

Als Schleifenrumpf werden hier die Anweisungen innerhalb der geschweiften Klammern bezeichnet. Hier können beliebige Anweisungen stehen. Damit die Schleife aber irgendwann abbricht, muss irgendwo in dieser Anweisungsfolge die Variable, die überprüft wird, verändert werden.

Der Aufbau der Schleife wird in folgender Grafik nochmals verdeutlicht:

while-schema

Am besten Sie experimentieren gleich selbst mit dieser Anweisung

Experimente:

  • Was passiert, wenn die Schleifenbedingung immer false ergibt?
  • Können Sie eine Schleife programmieren, die nach unten statt nach oben zählt?
  • Können Sie zwei Schleifen ineinander verschachteln?

Variation: Die do-while Schleife

Java kennt auch eine kleine Variation der While-Schleife. Diese ist als do-while-Schleife bekannt. Das folgende Beispiel illustriert, wie diese eingesetzt wird:

int i = 0
do {
// Folge von Anweisungen
i = i + 1;
} while(i < 5);

Wenn wir dies mit der normalen while-Schleife vergleichen, sehen wir, dass hier die Bedingung am Ende und nicht am Anfang der Schleife steht. Der einzige wichtige Unterschied zu einer *while-*Schleife ist auch genau dies. Die Bedingung wird erst am Ende der Schleife geprüft. Das heisst, im Gegensatz zur while-Schleife werden die Anweisungen mindestens einmal ausgeführt. Ansonsten funktioniert alles genau wie immer.

Experimentieren Sie doch auch mit dieser Schleifenart.


Haben Sie Fragen oder Bemerkungen? Schreiben Sie diese doch ins Forum.