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();
}
} |
 |
Welche Bedeutung hat das Ausrufezeichen vor dem
Methodenaufruf?
Lösung
|
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:

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
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
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
|
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
|
|