Helmichs Informatik-Lexikon

while-Schleifen

Beispiel

Hier zunächst einmal ein typisches Anwendungsbeispiel für eine while-Schleife:

1   while (strecke < 50)
2   {
3      otto.fahren(1); 
4      otto.anzeigen();
5      strecke++;
6   } 

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

Programmfluss

Hier das Flussdiagramm, passend zur while-Schleife im obigen Beispiel. Dieses Bild entstammt der Folge 4.2 des Java-Kurses. Dort ist der Programmfluss auch ausführlich erklärt worden.

Syntax

Kommen wir nun zur Syntax einer while-Schleife. Eigentlich wurde die Syntax ja schon weiter oben beschrieben: "Auf das Schlüsselwort while folgt eine logische Bedingung…" und so weiter. Aber ein Syntaxdiagramm ist noch übersichtlicher:

Syntaxdiagramm einer while-Schleife

Die Syntax einer Anweisungsliste sieht so aus:

Syntaxdiagramm einer Anweisungsliste

Eine Anweisungsliste ist entweder eine einzelne Anweisung oder eine Liste von Anweisungen, die durch geschweifte Klammern zusammengehalten wird. Die einzelnen Anweisungen werden durch Strichpunkte (Semikola) getrennt.

Verschachtelte while-Schleifen

Eine Anweisung wiederum kann eine einfache Zuweisung wie

x = 20;

sein, aber auch eine if-else-Anweisung oder eine weitere while-Schleife. Aus diesem Grund kann man auch mehrere while-Schleifen ineinander verschachteln, ähnlich wie man ja auch mehrere if-else-Anweisungen ineinander verschachteln kann. Damit kann man ganz schön komplizierte Konstrukte bauen, die man irgendwann selbst nicht mehr versteht. Also Vorsicht!

		while (x < 10)
		{
			while (y < 10)
			{
			   while (z < 10)
				{
					z++;
					System.out.println("z erhöht auf "+z);
				}
				y++;
				System.out.println("y erhöht auf " +y);
			}
		   x++;
			System.out.println("x erhöht auf "+x);
		}

Hier haben wir eine dreifach gestaffelte, allerdings völlig sinnfreie while-Schleife, die insgesamt 1000 mal durchlaufen wird.

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.