Aussehen
Bedingungsschleife
Die Zählschleife hat einen Haken: Du musst vorher wissen, wie oft. Bei „lauf bis zur Blaubeere" weißt du das nur, wenn du die Wiese vorher abzählst — und dann funktioniert dein Programm auch nur auf genau dieser Wiese.
Dafür gibt es while:
python
while not onBerry():
move()Gelesen: „Solange Kara nicht auf einer Blaubeere sitzt, mach einen Schritt." Wie weit die Beere weg ist, muss niemand wissen. Kara hört von selbst auf.
Bedingungsschleife
Eine Bedingungsschleife wiederholt einen Block, solange eine Bedingung wahr ist. Vor jedem Durchlauf wird neu geprüft — ist die Bedingung schon am Anfang falsch, passiert gar nichts.
Das not ist hier kein Zufall. Die meisten Sensoren melden, dass etwas da ist, und meistens willst du laufen, solange es das nicht ist. while not onBerry(), while not treeFront() — diese beiden Zeilen wirst du in diesem Kapitel oft schreiben.
Kara sucht ihre Blaubeeren
Kara sucht ihre Blaubeeren. Schreibe eine Wiederholung, sodass sie unabhängig von der Entfernung immer auf einer Blaubeere sitzen bleibt.
Zwei Wiesen, zwei Entfernungen, ein Programm.
Nicht nur laufen
Im Rumpf darf alles stehen, was Kara kann — auch mehrere Anweisungen.
Kara sät aus
Kara läuft bis zum Baum und lässt dabei auf jedem Feld eine Blaubeere fallen.
Auch Drehen ist Wiederholen
Eine Schleife muss Kara nicht von der Stelle bewegen. Sie kann sich genauso gut so lange drehen, bis sie sieht, was sie sucht:
python
while not treeFront():
turnLeft()Höchstens drei Drehungen, dann hat sie jede Richtung einmal geprüft. Steht überhaupt kein Baum herum, dreht sie sich für immer — das ist eine Endlosschleife, und sie ist der häufigste Grund, warum ein Programm nicht mehr aufhört.
Achtung
Läuft dein Programm nicht mehr an, prüfe zuerst: Ändert sich im Rumpf überhaupt etwas, das die Bedingung betrifft? Eine Schleife, die nichts an ihrer eigenen Bedingung ändert, hört nie auf.
Kara schaut sich um
Kara soll sich so lange nach links drehen, bis sie einen netten Baum anschaut.
Abbrechen mitten drin
Manchmal steht die Bedingung nicht am Anfang, sondern in der Mitte: Kara soll erst laufen und dann schauen. Dafür gibt es while True — eine Schleife, die nie von selbst aufhört — zusammen mit break, das sie sofort verlässt:
python
while True:
move()
if treeFront():
breakDas ist ein anderer Ablauf als while not treeFront(): move(). Hier wird erst gelaufen, dann geprüft. Ob das einen Unterschied macht, findest du am besten heraus, indem du beides ausprobierst.
Eine heitere Wanderung
Kara begibt sich auf eine Wanderung, die immer geradeaus führt. Schau dir das Programm an und mutmaße, ob Kara gegen den Baum knallen wird.
Führe es erst danach aus und prüfe deine Vermutung.
Noch mehr üben
Bis zum Waldrand
Lass Kara so lange laufen, bis links von ihr ein Baum auftaucht.
Bis die Bahn frei ist
Kara ist eingekeilt. Sie soll sich so lange drehen, bis vor ihr kein Baum mehr steht.