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.
Aufgabe
Nicht nur laufen
Im Rumpf darf alles stehen, was Kara kann — auch mehrere Anweisungen.
Aufgabe
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.
Aufgabe
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.
Aufgabe
Noch mehr üben
Aufgabe
Aufgabe