Eine Schleife dient dazu, ein Programmstück mehrfach zu wiederholen. Das Programmstück, der Schleifenkörper, wird solange wiederholt, wie eine bestimmte Bedingung, die Schleifenbedingung, erfüllt ist.
Die While-Schleife hat die allgemeine Form
while (bedingung) |
{ |
anweisung1; |
anweisungn; |
} |
Hier ist bedingung die Schleifenbedingung. Es muss sich um einen Ausdruck handeln, der einen Wert vom Typ boolean, also true oder false ergibt. Die Schleifenbedingung steht in runden Klammern hinter dem Wort while (engl.: while – solange).
Danach folgt in geschweiften Klammern der Schleifenkörper, also das Programmstück, das wiederholt werden soll, hier dargestellt durch die Anweisungen anweisung1, ..., anweisungn. Jede Anweisung wird mit einem Semikolon abgeschlossen.
Bei Ausführung der While-Schleife wird zunächst geprüft, ob die Schleifenbedingung erfüllt ist, d.h. ob sie den Wert true ergibt. Ist dies der Fall, so werden die Anweisungen des Schleifenkörpers ausgeführt. Wenn der Schleifenkörper fertig ausgeführt ist, springt das Programm wieder an den Anfang der While-Schleife und prüft erneut die Schleifenbedingung. Ist diese immer noch erfüllt, wird der Schleifenkörper erneut ausgeführt usw. – solange, bis die Schleifenbedingung irgendwann einmal nicht mehr erfüllt ist. Dann wird der Schleifenkörper nicht mehr ausgeführt, sondern es wird mit den hinter dem Schleifenkörper folgenden Anweisungen fortgefahren.
Beispiel: Die folgende While-Schleife gibt die Zahlen von 1 bis 10 auf dem Bildschirm aus.
Hier ist die Schleifenbedingung der Ausdruck i<=10, und der Schleifenkörper besteht aus den zwei Anweisungen System.out.println(i) und i=i+1, jeweils abgeschlossen durch ein Semikolon.
Damit die Schleifenbedingung ausgewertet werden kann, wird vor Beginn der While-Schleife die Variable i mit einem Wert belegt.
In diesem Beispiel ist die Schleifenbedingung zu Anfang erfüllt, denn i hat den Wert 1, und es gilt 1 ≤ 10. Somit wird mit System.out.println(i) der Wert von i, also die 1, auf dem Bildschirm ausgegeben, gefolgt von einem Zeilenvorschub. Mit der Anweisung i=i+1 wird anschließend der Wert von i um 1 erhöht, also auf 2 gesetzt.
Damit ist der Schleifenkörper fertig ausgeführt. Das Programm springt wieder an den Anfang der While-Schleife und prüft erneut die Schleifenbedingung. Diese ist immer noch erfüllt, denn es ist 2 ≤ 10, also wird der Schleifenkörper erneut ausgeführt usw. – solange bis i den Wert 11 erreicht hat, dann wird der Schleifenkörper nicht mehr ausgeführt.
Der Programmablauf einer While-Schleife lässt sich wiederum mit Hilfe eines Flussdiagramms veranschaulichen. Das Flussdiagramm für das obige Beispielprogramm ist in Bild 1 dargestellt.
Bild 1: Flussdiagramm des Beispielprogramms (While-Schleife)
Häufig dienen Schleifen dazu, Anweisungen eine bestimmte Anzahl von Malen zu wiederholen. Im vorigen Beispiel etwa wird zehnmal etwas ausgegeben. Wie wir gesehen haben, lässt sich dies mit einer While-Schleife realisieren. Ein kompakterer Programmcode ergibt sich jedoch bei Benutzung der For-Schleife:
Bei der For-Schleife werden die Initialisierung der Variablen (i=1), die Schleifenbedingung (i<=10), sowie die Aktion, die am Ende des Schleifenkörpers stattfinden soll (i=i+1), zusammengefasst.
Die For-Schleife hat die allgemeine Form
for (initialisierung; bedingung; aktion) |
{ |
anweisung1; |
anweisungn; |
} |
Welche Initialisierung vorgenommen wird, wie die Bedingung aussieht, und welche Art von Aktion stattfindet, ist hierbei dem Programmierer überlassen – alle drei Teile können sogar leer sein. Es ist jedoch guter Programmierstil, die For-Schleife tatsächlich nur so wie in obigem Beispiel zu benutzen, nämlich als Zählschleife. Bei einer Zählschleife erhält eine Laufvariable einen Anfangswert und "läuft" dann bis zu einem Endwert. In Beispiel etwa läuft die Laufvariable i von 1 bis 10.
Für Schleifen, die keine Zählschleifen sind, sollte die For-Schleife nicht verwendet werden.
Zum Durchlaufen von Datenstrukturen wie etwa Arrays eignet sich auch die For-Each-Schleife.
Weiter mit: [Entwurf von Programmschleifen] [Literatur] oder [up]