#10 Freifahrt mit WENN, DANN

In dieser Aufgabe wollen wir dem mBot erlauben sich etwas freier im Raum zu bewegen, greifen dabei auf den Ultraschallsensor zurück und arbeiten mit bedingten Anweisungen und Verzweigungen:

Dein Grundgerüst aus der vorherigen Aufgabe kannst du hier wieder verwenden, aber du musst einige Änderungen machen und zusätzlich WENN …, DANN Blöcke aus der STEUERUNG verwenden.

Bisher hat dein mBot klar vorgegebene Aufgaben erledigt – geradeaus oder im Quadrat fahren, sich drehen, oder Informationen anzeigen. Das Ende war bekannt. In der Realität müssen Programme aber überprüfen, WANN oder WARUM sie das Programm beenden oder zur nächsten Aufgabe springen sollen. Dafür gibt es in jeder Programmiersprache bedingte Anweisungen und Verzweigungen, die über die Schlüsselwörter WENN, DANN und SONST aufgerufen werden. Der neue Block, den du für diese Aufgabe brauchst, sieht so aus:

Setze ihn ein, um deinem mBot mehr Freiheiten zu geben. Hier hast du einige Fragen, die du dir zur Lösung der Aufgaben stellen kannst – die Lösung selbst findest du weiter unten:

Wie beende ich die Fahrt des Roboters?

Wann frage ich ab, ob der Roboter weniger als 10 cm zum Hindernis entfernt ist?

In welche Richtung soll er sich drehen sobald er auf ein Hindernis stößt?

Möchte ich eine zusätzliche bestimmte Aktion ausführen, wenn der Roboter wendet?

Starte mit deiner Lösung aus der vorherigen Aufgabe:

Mit diesem Code stoppt der mBot sein Programm, sobald er die vorgegebene Entfernung erreicht hat. Diese Bedingung müssen wir verändern, damit die Fahrt trotz Erreichen eines Hindernisses fortgesetzt wird. Ein einfacher Weg wäre es wieder eine Taste zu drücken:

Tausche diesen Block mit der Abfrage des Abstandes aus, heb den anderen Block aber auf! Die Anzeige der Beschriftung und die Vorwärtsbewegung können wir auch dort lassen wo sie sind. Um die bedingte Anweisung zum Abbiegen abzufragen, setzen wir den WENN, … DANN Block VOR der Vorwärtsbewegung IN der WIEDERHOLE Schleife ein:

In die diamantförmige Öffnung ziehst du den Operator, der den Vergleich KLEINER ALS 10 CM durchführt:

Durch diesen Code bewegt sich dein mBot vorwärts und überprüft vor jedem Schritt, ob der Abstand zum Hindernis mittlerweile zu gering ist. Der Codeblock in der bedingten Anweisung wird nur ausgelöst, wenn die Bedingung erfüllt ist. In diesem Fall ist der bedingte Codeblock das Drehen in eine bestimmte Richtung:

Durch diese Änderungen ist dein mBot startklar für seine erste Freifahrt durch einen Raum. Sei kreativ und überlege dir, was passiert, wenn er auf ein Hindernis stößt. In der Beispiellösung spielt der Roboter zum Beispiel einen traurigen Ton ab:

Bedingte Anweisungen werden dir in deiner Karriere als Coder*in immer wieder helfen deine Ziele zu erreichen – behalte sie für spätere Aufgaben gut in Erinnerung!

Hier findest du nochmal einen Überblick der Blöcke, die du für diese Aufgabe verwenden konntest: