Zurück zur Einstiegsseite

Wiederholung mit Anfangsbedingung

Karol soll eine Steinreihe legen, die so lang ist, dass sie bis zur nächsten Wand reicht. Man könnte also zählen, wie weit dieser Weg ist und dann das Problem unter Verwendung einer Wiederholungsanweisung mit fester Anzahl lösen.
Aber was ist, wenn sich Karol in einer unbekannten Welt befindet?
Zum Glück hat Karol Sensoren eingebaut, die ihm sagen, ob er vor einer Wand, vor einem Ziegel oder auf einem markierten Feld steht. Um diese Sensoren auszulesen, hat die Klasse Karol die Methoden IstWand(), IstZiegel() und IstMarke(). Diese geben einen Wert vom Typ boolean zurück, also entweder true oder false.

Bedingung: Jeder logischer Vergleich, dessen Ergebnis true oder false ist und jeder Methode, die als Rückgabewert true oder false liefert, kann in Java als Bedingung verwendet werden.

Beispiel für die Lösung des obigen Problems:
  public void legeBisWand()
  {
    while (!karol.IstWand())
    {
      karol.Hinlegen();
      karol.Schritt();
    }
  }

Arbeitsauftrag 1

Welche Bedeutung hat das Ausrufezeichen vor dem Methodenaufruf?

Lösung

Arbeitsauftrag 2

Legen Sie die obige Methode in Ihrer Robotersteuerung an. Ändern Sie im Konstruktor die Größe der Welt und überprüfen Sie, ob sich die Methode dann immer noch korrekt verhält.

Sie haben sicher bereits verstanden, was die while-Anweisung bewirkt.

Wiederholung mit Anfangsbedingung: Bei einer Wiederholung mit Anfangsbedingung wird eine Sequenz solange wiederholt, wie die Bedingung true liefert. Die Bedingung wird jeweils vor dem Abarbeiten der Sequenz überprüft.

Markieren Sie zu diesem Thema den Kasten auf Ihrem Java-Überblick. Versuchen Sie, das abgedruckte Beispiel zu verstehen und prägen Sie sich wie immer die Java-Schreibweise („Java-Syntax“) ein.

Hinweis: Es gibt auch eine Wiederholung mit Endbedingung. Dabei wird die Bedingung erst am Ende des Durchlaufes der zu wiederholenden Sequenz überprüft. Damit findet also auf alle Fälle ein Durchlauf statt. Ansonsten sind Wiederholung mit Anfangsbedingung und Wiederholung mit Endbedingung aber gleichwertig.

Arbeitsauftrag 3

Karol soll wie unten abgebildet einen Rahmen um seine Welt legen. Die Idee kommt ihm aber beim Spazierengehen (entsprechende Methode spazieren() ist vorgegeben). Er muss den Rahmen also von einer beliebigen Position, an der er sich gerade befindet, aus legen können. Wir gehen schrittweise vor:

Teilschritt 3a:

Zunächst muss er zu einer Wand gehen. Programmieren Sie eine Methode zurWandGehen(), die Karol bis zur Wand vor ihm gehen lässt.

Lösung

Teilschritt 3b:

Jetzt braucht er einen Ausgangspunkt für seine Ziegelreihe. Sehen Sie eine Methode zurEckeGehen() vor, die ihn in die Ecke links vor ihm schickt.

Tipp         Lösung

Teilschritt 3c:

Vervollständigen Sie die Methode rahmenMachen(), die nacheinander folgendes bewirkt:
• die Methode spazieren() aufrufen
• zur Ecke gehen
• einen Rahmen aus Steinen um die Welt legen

Lösung

Zusatzaufgabe (bearbeiten Sie diese nur, wenn Sie gut in der Zeit liegen)

Karol soll zunächst wieder spazierengehen und dann von der Stelle aus, an der er steht, eine Treppe bis zur Wand bauen. Entwickeln Sie eine entsprechende Methode treppeBauen().

Hinweis: Möchte Karol mehr  Ziegel aufeinander legen, als die Welt hoch ist, bricht das Programm mit einem Fehler ab.
Sie müssen also beim Erzeugen der Welt, deren Höhe entsprechend anpassen (3. Parameter des Konstruktors der Klasse WELT).

Tipp       Lösung


Zurück zur Einstiegsseite