Home > Informatik > Begriffe und Konzepte > While-Schleife

While-Schleife

Die while-Schleife ist eine Kontrollstruktur, die eine Anweisung oder einen Anweisungsblock so lange wiederholt, wie eine logische Bedingung erfüllt ist. While-Schleifen gehören zu den sogenannten kopfgesteuerten Schleifen, d. h., die Bedingung wird vor jeder Iteration überprüft.

while (bedingung)
{
   // Schleifenrumpf
}
Syntaxdiagramm
Syntaxdiagramm einer while-Schleife

Wie bei einer for-Schleife oder einer if-else-Bedingung ist eine Anweisungsliste entweder eine einfache Anweisung oder ein Anweisungsblock, also eine Liste von einfachen Anweisungen, die durch geschweifte Klammern zusammengehalten wird.

Beispiel
1.  int strecke = 0;
2   while (strecke < 50)
3   {
4      auto.fahren(1); 
5      auto.anzeigen();
6      strecke++;
7   }

Zeile 2 enthält den Schleifenkopf. Auf das Schlüsselwort while folgt eine logische Bedingung in runden Klammern, die Schleifenbedingung. In den Zeilen 3 bis 7 sehen wir eine Anweisungsliste, die als Schleifenrumpf oder Schleifenkörper bezeichnet wird.

Programmfluss

Hier das Flussdiagramm, passend zur while-Schleife im obigen Beispiel.

Typische Anwendungsfälle für while-Schleifen
  • Wiederholungen, bei denen nicht von vornherein feststeht, wie oft sie durchlaufen werden sollen.
  • Wiederholungen, die auf bestimmte Ereignisse oder Benutzereingaben warten.
Geschachtelte while-Schleifen

Als typisches Beispiel für eine zweifach geschachtelte while-Schleife wird oft die Erzeugung einer Multiplikationstabelle angesehen:

int i = 1;
while (i <= 5) 
{
   int j = 1;
   while (j <= 5)
   {
        System.out.print((i * j) + "\t");
        j++;
   }
   System.out.println();
   i++;
}

Dieses Beispiel ist aber nicht besonders überzeugend. Da die Anzahl der Iterationen von vornherein feststeht, wäre hier eine zweifach geschachtelte for-Schleife sinnvoller gewesen:

for (int i = 1; i <= 5; i++) {
   for (int j = 1; j <= 5; j++)
     System.out.print((i * j) + "\t");
   System.out.println();
}

Ein sinnvolleres Beispiel wäre ein Programm zur Eingabe von Noten.

Die äußere while-Schleife geht von Klasse zu Klasse, bis der Benutzer sie durch Eingabe eines Befehls abbricht. Die innere Schleife geht von Schüler(in) zu Schüler(in), bis sie abgebrochen wird. Eine for-Schleife wäre hier nicht sinnvoll, da sich die Zahl der S. von Klasse zu Klasse unterscheidet.

Man könnte hier sogar eine dreifach geschachtelte while-Schleife einsetzen, weil für einen S. vielleicht 7 Noten, für eine andere S. 8 oder 9 Noten eingetragen werden müssen.

Zum Programm zur Eingabe von Noten - generiert von ChatGPT nach den obigen Vorgaben.

while-Schleifen sind vorprüfend. Die Schleifenbedingung wird vor dem jeweiligen Schleifendurchlauf überprüft. Daher kann es passieren, dass eine while-Schleife auch gar nicht durchlaufen wird.

Quellen:

  1. Lahres et al.: Objektorientierte Programmierung, Rheinwerk Computing 2021.
  2. Barnes, Kölling: Java lernen mit BlueJ - Objects first. Pearson-Verlag 2019.
  3. Ullenboom: Java ist auch eine Insel, Rheinwerk Computing 2023.