Wiederholungen (Schleifen)


Die Sequenz    Die Auswahl    Die Wiederholung


bis zur Wand laufen
Kara soll von seiner aktuellen
Position bis zur Wand laufen.
Lauf als Sequenz
/** Kara soll zur
    nächsten Wand laufen
*/
public void myProgram()
 {
  kara.move();
  kara.move();
  kara.move();
  kara.move();
 }
      

Diese Aufgabenstellung birgt gleich mehrere Probleme:

Die kopfgesteuerte Wiederholung

Struktogramm

kopfgesteuerte Wiederholung
/*Umsetzung der kopf-
   gesteuerten Wieder-
   holung in Java
*/

  while (Bedingung erfüllt){
     Anweisungen;
  }
      
/*Kara kann von einer
   beliebigen Position zur
   Wand laufen
*/

  while (!kara.treeFront()){
     kara.move();
  }
      

Erläuterung

Zunächst wird geprüft, ob eine Bedingung für den Eintritt in die Wiederholung erfüllt ist. Nur dann werden die folgenden Anweisungen ausgeführt. Ist deren Ausführung beendet, wird die Eintrittsbedingung erneut geprüft. Dieser Vorgang wiederholt sich so lange, bis die Eintrittsbedingung nicht mehr erfüllt ist.

Da die Bedingung vor Eintritt in die Wiederholung geprüft wird, kann es passieren, dass die Wiederholungsanweisungen gar nicht ausgeführt werden.

Im konkreten Beispiel wird als Eintrittsbedingung eine Methode benutzt, die angibt, ob vor Kara ein Baum steht (!kara.treeFront(), das ! negiert das Ergebnis, was der Frage entspricht, ob kein Baum vor Kara steht).
Das Prüfen dieser Bedingung vor Eintritt in die Wiederholung ist sehr wichtig. Falls Kara nämlich direkt vor einem Baum stehen sollte, würde er sich schon mit dem ersten Schritt den Kopf einrennen.

Die fußgesteuerte Wiederholung

Es kann bei Wiederholungen gefordert sein, dass zunächst Anweisungen auszuführen sind, aus denen sich ergibt, ob eine Bedingung erfüllt ist. Ein Beispiel hierfür ist eine Passworteingabe. Man muss erst ein Passwort eingeben, bevor man dessen Richtigkeit überprüfen kann. Bei fehlerhaftem Passwort wird die Eingabe wiederholt.

Struktogramm

fußgesteuerte Wiederholung
/*Umsetzung der fuß-
   gesteuerten Wieder-
   holung in Java
*/

  do {
     Anweisungen;
  } while (Bedingung erfüllt);
      
/*Kara kann von einer
   beliebigen Position zur
   Wand laufen
*/

  do {
    kara.move();
  } while (!kara.treeFront());
      

Im Unterschied zur kopfgesteuerten Wiederholung gibt es hier eine Austrittsbedingung. Die Schleife kann erst verlassen werden, wenn die Bedingung nicht mehr erfüllt ist. Da die Bedingung erst am Ende der Wiederholung geprüft wird, ergibt sich, dass die Anweisungen der fußgesteuerten Wiederholung mindestens einmal durchlaufen werden.

Im konkreten Beispiel ist die Wahl der fußgesteuerten Wiederholung ungünstig. Steht Kara beim Start bereits vor einem Baum, macht er erst einen Schritt, bevor er seine Lage überprüft. Eine Verletzung ist vorprogrammiert.

Die gezählte Wiederholung

Der Vollständigkeit halber sei hier noch die gezählte Wiederholung oder Zählschleife genannt (der Fachmann spricht von einer definiten Wiederholung). Sie wird meist dort eingesetzt, wo die Anzahl der Wiederholungen im Vorfeld bereits bekannt ist.

Struktogramm

gezählte Wiederholung
/*Umsetzung der gezählten
   Wiederholung in Java
*/

  for(Startwert;Gültigkeitsbedingung;Rechenregel) {
     Anweisungen;
  }
     
/*Kara soll
  genau 4 Schritte machen
*/

  int i;

  for(i=1;i<=4;i=i+1) {
     kara.move();
  }
     

Eine Variable i wird mit dem Startwert 1 belegt. Es wird geprüft, ob i kleiner oder gleich 4 ist. Da die Gültigkeitsbedingung erfüllt ist, gelangt man in den Anweisungsteil und Kara läuft einen Schritt.
Sind alle Anweisungen abgearbeitet, wird die Rechenregel angewendet. Hier wird i um 1 erhöht. Nun wird erneut die Gültigkeitsbedingung geprüft.
Die Wiederholung läuft 4 mal. Die Varialble i hat nach der 4. Runde den Wert 4. Durch die Rechenregel wird der Wert von i auf 5 erhöht. Nun ist die Gültigkeitsbedingung nicht mehr erfüllt. Die Abarbeitung der Zählschleife wird beendet.

Merke

Im Unterschied zu anderen Programmiersprachen werden in Java alle Wiederholungen abgearbeitet, solange die Bedingung erfüllt ist.

zurück zur Informatikhauptseite