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.

Programmablaufplan - Solange-Schleife

Der Aufbau einer solchen Anweisung lässt sich gut mit einem Struktogramm verdeutlichen.

Struktogramm

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:

Struktogramm

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:

Struktogramm

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();
X

Fehler melden

X

Suche