Schleifen/Wiederholungen
In vielen Programmen müssen bestimmte Sequenzen wiederholt werden. Dazu verwendet man eine Schleife, die auch Wiederholung bzw. im Englischen loop genannt wird. In Java gibt es drei verschiedene Möglichkeiten dazu:
- for-Schleife:
for(int i = 1; i <= 10; i++) {
System.out.println("Ich darf meine Hausaufgaben nicht vergessen.");
} - while-Schleife:
int i = 1;
while (i <= 10) {
System.out.println("Ich darf meine Hausaufgaben nicht vergessen.");
i++;
} - do-while-Schleife:
int i = 1;
do {
System.out.println("Ich darf meine Hausaufgaben nicht vergessen.");
i++;
}while (i <= 10)
Alle drei Beispiele geben 10-mal auf dem Bildschirm aus, dass man seine Hausaufgaben nicht vergessen darf.
Die for-Schleife verwendet man, wenn man vorher weiß wie oft etwas wiederholt werden soll. Zuerst wird die Zählvariable i
deklariert (der Name und der Datentyp werden festgelegt) und mit 1 initialisiert (Zuweisung), dann folgt die Bedingung (i <= 10
). Solange diese erfüllt ist, wird die Schleife wiederholt. Anschließend wird die Zählvariable i
bei jedem Durchlauf um eins erhöht (i++
). In dem Anweisungsblock, der mit geschweiften Klammern { }
eingeschlossen ist, können mehrere Anweisungen stehen, die dann wiederholt werden. Hier steht nur eine Anweisung, nämlich, dass auf dem Bildschirm ausgegeben werden soll, dass man seine Hausaufgaben nicht vergessen darf.
Die while-Schleife ist komplizierter als die for-Schleife und benötigt mehr Programmzeilen, ist jedoch auch flexibler bei der Anwendung. Stellen wir uns einmal ein Computerspiel vor, bei dem eine Figur über den Bildschirm laufen soll, bis ein Hindernis auftaucht. Hier ist nicht im Vorhinein klar, wie oft die Vorwärtsbewegung wiederholt werden muss. Also scheidet eine for-Schleife aus. Stattdessen nimmt man eine while-Schleife und als Bedingung "ist vor dir frei?". Hier in dem Beispiel wurde aus Vereinfachungsgründen die gleiche Ausgabe wie zuvor mit der while-Schleife programmiert. Zuerst erfolgt die Deklaration und Initialisierung der Zählvariablen i
außerhalb der Schleife. Dann wird der Anweisungsblock in den geschweiften Klammern {...}
ausgeführt, solange die Bedingung (i <= 10
) erfüllt ist. Ist die Bedingung nicht oder nicht mehr erfüllt, dann wird der Anweisungsblock nicht ausgeführt. Es kann also sein, dass der Anweisungsblock gar nicht ausgeführt wird. Genau darin steckt der Unterschied zur do-while-Schleife. Hier wird der Anweisungsblock auf jeden Fall einmal ausgeführt, da die Bedingung erst danach überprüft wird.
Die while-Schleife ist also eine kopfgesteuerte Schleife, da die Bedingung zuerst überprüft wird, und die do-while-Schleife eine fußgesteuerte Schleife, da die Bedingung erst nach einem Durchlauf überprüft wird.
Weitere Erklärungen/Ergänzungen und Übungsaufgaben findet man zum Beispiel hier: https://learnj.de/doku.php?id=einstieg:schleifen