Fachkonzept - Wiederholungen
Abläufe mit Wiederholungen
Bei der automatisierten Verarbeitung von Daten kommt es sehr oft vor, dass dieselben Anweisungen in einer Art Schleife wiederholt ausgeführt werden. Das folgende Flussdiagramm zeigt eine solche Verarbeitung mit Wiederholung.
Der Aufbau einer solchen Anweisung lässt sich gut mit einem Struktogramm verdeutlichen.
Eine Solange-Wiederholung besteht aus einer Bedingung und einer Anweisungssequenz.
Bei der Ausführung einer Solange-Wiederholung wird vor jedem Wiederholungsdurchgang überprüft, ob die Bedingung erfüllt ist. Ist das der Fall, so werden die Anweisungen der Anweisungssequenz ausgeführt und der nächste Wiederholungsdurchgang kann beginnen. Andernfalls wird die Ausführung der Wiederholungsanweisung beendet.
Zwei Sonderfälle sind hier zu beachten. Ist die Bedingung gleich zu Beginn nicht erfüllt, so wird die Schleife überhaupt nicht durchlaufen. Die Solange-Wiederholung bewirkt dann gar nichts. Ist die Bedingung vor jedem Schleifendurchlauf erfüllt, so wird die Schleife (theoretisch) unendlich oft durchlaufen. Man spricht dann auch von einer Endlosschleife. In der Praxis muss man in einem solchen Fall die Ausführung abbrechen.
Implementierung einer Solange-Anweisung in Java
Zur Implementierung einer Solange-Wiederholung stellt Java die while
-Anweisung
zur Verfügung:
while(Bedingung)
{
... Anweisungsblock ...
}
Besteht der Anweisungsblock aus nur einer Anweisung, kann man diesen - wie auch bei if-Anweisungen - weglassen.
Ein Beispiel, das so lange würfelt bis eine 6 kommt und die Zahl der Versuche mitzählt, sieht so aus:
Random zufallsGenerator = new Random(); // setzt import java.util.*; am Anfang der Datei voraus
int zaehler = 0;
int wurf = zufallsGenerator.nextInt(6) + 1;
while(wurf != 6)
{
zaehler = zaehler + 1;
wurf = zufallsGenerator.nextInt(6) + 1;
}
Zählschleifen
Bei einer Zählschleife durchläuft der Wert einer Zählvariablen einen Zahlenbereich von einem Anfangswert bis zu einem Endwert. Für jeden Wert der Zählvariablen wird die angegebene Anweisungssequenz einmal ausgeführt. Jede Zählschleife lässt sich durch eine Solange-Wiederholungsanweisung ausdrücken:
Ein Beispiel, das 10 Hunde erzeugt und bellen lässt:
int i = 0;
while(i < 10)
{
Hund h = new Hund();
h.bellen();
i = i + 1; // kann man auch abkürzen mit i++
}
for-Schleifen
for-Schleifen stellen eine etwas kompaktere Form für Zählschleifen dar. Hier wird die Initialisierung der Zählvariable, die Bedingung und die Veränderung der Zählvariablen zusammengefasst:
for(Initialisierung; Bedingung; Veränderung der Zählvariablen)
{
... Anweisungsblock ...
}
Angewandt auf das obige Beispiel:
for(int i = 0; i < 10; i++) // i++ ist eine Abkürzung für i=i+1
{
Hund h = new Hund();
h.bellen();
}
Man kann dann das Struktogramm auch kompakter halten:
Beachtenswert ist, dass die Zählvariable lokal innerhalb der for-Schleife ist. Man kann also auch innerhalb einer Methode mehrfach die gleiche Zählvariable benutzen:
for(int i = 0; i < 10; i++)
tuWas();
for(int i = 0; i < 10; i++)
tuNochWas();