Statt einen Befehl mehrere Male hintereinander hinzuschreiben, können wir eine Anweisung oder eine ganze Sequenz auch mit einer Schleife wiederholen. Die untenstehende Schleife lässt Kara solange (Englisch: while) vorwärts laufen, als sie nicht vor einem Pilz steht.
Dafür können wir Kara fragen, ob auf dem Platz vor ihr ein Pilz ist, mit kara.mushroomFront()
. Da Kara solange weiterlaufen wollen, als kein Pilz vor ihr ist, müssen wir Karas Antwort gerade umdrehen, das geschieht mit dem Ausrufezeichen vor kara
.
Beachte:
while
muss in runden Klammern stehen.{}
eingeschlossen.
Schau dir die untenstehende Kara-Welt gut an. Kannst du ein Kara-Programm schreiben, das mit zwei Schleifen zum Pilz kommt? Dafür kannst du mit kara.treeFront()
herausfinden, ob vor Kara ein Baum steht.
Schreibe ein Kara-Programm, das mit zwei Schleifen zum Pilz gelangt! Funktioniert das Programm auch, wenn Kara zu Beginn in eine andere Richtung schaut?
Probier deine Lösung ohne Änderung in dieser Welt aus:
Eine while
-Schleife lässt sich auch innerhalb einer anderen Schleife verschachteln.
Löse diese Aufgabe zu zweit oder in der Gruppe, falls du gerade in der Klasse bist!
Betrachte den folgenden Code! Wie wird sich Kara bewegen?
Kara geht geradeaus, solange kein Pilz vor ihr steht. Wenn sie dabei auf einen Baum trifft, wendet sie nach links, bis der Weg frei ist. Funktioniert das bereits immer? Kannst du ein Labyrinth entwerfen, aus dem Kara nicht hinausfindet?
Gratuliere, du hast deine ersten Kara-Schleifen geschrieben!
Um wirklich ein Programm schreiben zu können, das aus vielen oder sogar allen Labyrinthen findet, möchten wir etwas von der folgenden Form haben:
while (!kara.mushroomFront()) { // Wahl zwischen turnLeft, turnRight oder move, je nach Situation. }
Wir könnten das vielleicht mit mehreren verschachtelten Schleifen erreichen, aber Kara hat noch mehr auf Lager!
Weiter gehts mit Verzweigungen.