#11 Buchstabensalat

In der vorletzten Aufgabe verbindest du Konzepte, die du in den vorherigen Übungen bereits gemeistert hast: Schleifen, Bewegung, LEDs und den Einsatz des Bildschirmes. Gleichzeitig lernst du einen neuen Operator zum Verbinden von Werten kennen:

Sieh dir zuerst die möglichen Buchstaben an und suche dir einen aus:

Versuche jeden Schritt der Aufgabe – Buchstaben nachfahren, LEDs einschalten, Ausgabe des Buchstabens am Bildschirm und rückwärts fahren – Stück für Stück zu erledigen und teste zwischendurch, ob dein mBot auch das tut was er soll.

Die Lösung findest du wie immer weiter unten.

In dieser Musterlösung werden wir den Buchstaben C nachfahren. Dazu verwenden wir einen Ausdruck im A4 Format und werden die Maße verwenden. Das musst du aber nicht machen!

Der einfachste Weg wäre natürlich jede Bewegung vollständig als Codeblock einzufügen:

Es gibt aber einen Trick: Anstatt die Bewegungen in VORWÄRTS und RÜCKWÄRTS aufzuteilen, können wir die Rückwärtsfahrt auch mit einer Vorzeichenänderung über Operatoren durchführen – bei einer positiven Zahl (z.B. +23) fährt der mBot 23 cm vorwärts, bei einer negativen Zahl (z.B. -23) fährt der mBot 23 cm rückwärts. Das funktioniert auch mit unseren Winkeln!

Auf diesem Weg kann der Code mit einer Schleife verkürzt werden. Wir müssen dazu nicht mehr machen, als nach der ersten Schleife die Werte auf negative Zahlen zu ändern. Dazu verwenden wir eine VARIABLE “vorzeichen” und den OPERATOR VERBINDE … MIT … :

Was passiert in diesem Code?

Für die Vorwärtsfahrt setzen wir das Vorzeichen zuerst auf ‘+’. In der Schleife wird es durch den Operator mit der Entfernung oder dem Winkel verbunden. Nachdem die Schleife einmal durchgeführt und der Buchstabe nachgefahren wurde, setzen wir das Vorzeichen am Ende nur auf ‘-‘ und beim nächsten Durchgang fährt der mBot so die selbe Strecke, nur rückwärts.

Bei anderen Buchstaben kannst du zusätzliche Schleifen verwenden – wie beim E, in dem sich ein Muster erkennen lässt – um den Code übersichtlicher und kürzer zu halten.

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

#9 10 cm bis zum Hindernis

Es ist Zeit für eine Aufgabe, in der du zeigst, was du schon alles kannst – Bewegungen, Schleifen, Abstandsmessung und LEDs. Ergänzen werden wir deine bisherigen Skills mit Operatoren – so wirst du langsam ein Coding-Genie:

Dein Grundgerüst aus der vorherigen Aufgabe kannst du hier wieder verwenden, aber du musst kleine Änderungen machen und zusätzlich OPERATOREN verwenden. Operatoren sind wichtige Elemente in der Programmierung, mit denen du rechnen, vergleichen und Befehle verknüpfen kannst. Ein paar Beispiele für den mBot wären:

Sieh dir die Aufgabe nochmal an: “Wenn die Entfernung KLEINER ALS 10 CM ist” kannst du mit den Operatoren auch als Code ausdrücken. Suche dazu einen, der dieses KLEINER ALS beschreibt und baue ihn mit der Bewegung, Abstandsmessung und Lichtanzeige zu einem vollständigen Programm zusammen. Die Lösung findest du wie immer weiter unten.

Erinnere dich an dein Grundprogramm aus der letzten Aufgabe. Auch diesmal wollen wir den Code mit der Taste A starten und ausführen bis eine bestimmte Situation eintrifft:

Diese bestimmte Situation “Wenn die Entfernung kleiner als 10 cm ist” können wir durch den Operatoren KLEINER ALS ausdrücken:

Was vergleichen wir jetzt mit diesen 10 cm? Hier kommt unser Ultraschallsensor aus der letzten Aufgabe ins Spiel – während der mBot fährt wird immer wieder verglichen, ob er noch über 10 cm vom Hindernis entfernt ist:

In der Schleife zeigst du wieder den aktuellen Abstand als Beschriftung an und lässt den Roboter vorwärts fahren:

Die Schleife wird beendet, sobald der Abstand kleiner als 10 cm ist – sobald diese Bedingung eintritt schaltest du die LEDs ein und stoppst den Roboter. Diesen Code fügst du NACH der Schleife ein:

Dein fertiger Code könnte so aussehen:

Lass deinen Roboter fahren und beobachte, ob er wirklich vor dem Hindernis stehen bleibt. Du kannst den Code auch erweitern und den mBot einen Tanz aufführen lassen, sobald er sein Ziel erreicht hat!

Die nächste Aufgabe baut wieder auf deinem neu gewonnenen Wissen auf und ermöglicht deinem mBot seine erste Freifahrt!

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

#4 Dreh dich!

Den mBot geradeaus fahren zu lassen ist schön und gut, aber sollte ein Roboter nicht auch in der Lage sein sich zu drehen? Diese Aufgabe zeigt dir wie das geht!

Auch hier kennst du bereits einen Teil der Aufgabe. Jetzt soll der Roboter aber am Ende der Bewegung nach rechts schauen. Die Aufgabe sagt dabei etwas von 90 ° (Grad) – warum brauchen wir plötzlich Mathematik, um den Roboter zu steuern? Ganz einfach, die Angabe des Winkels ermöglicht es uns, den mBot genau auszurichten. Stell dir vor er soll nicht komplett nach links oder nach rechts fahren, sondern benötigt feine Korrekturen, um einer Linie zu folgen – dafür benötigen wir den Winkel. Das Diagramm hilft dir zu verstehen, wie du den mBot über Winkel ausrichten kannst:

Den Block den du dazu brauchst findest du – wie auch den Befehl zum geradeaus fahren – unter MBOT2 CHASSIS:

Du siehst, dass du hier die Richtung und den Winkel einstellen kannst. Füge den Block an der richtigen Stelle ein – dein Programm sollte so aussehen:

Probiere den Code aus und teste auch andere Winkel – vielleicht kannst du den Roboter jetzt schon ein wenig zum Tanzen bringen? Dieser Block ist ein wichtiger Schritt für weitere Bewegungen mit dem mBot 2! Merke ihn dir gut und nutze die Grafik, wenn du dich nicht mehr an die richtigen Winkel erinnern kannst!

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

Informatische Prinzipien in Scratch

Gerhard Brandhofer (PH Niederösterreich) und Wolf Hilzensauer (PH Salzburg)

1) Sequenz

Eine Sequenz ist eine Folge nacheinander auszuführender Anweisungen. Bevor Schritt 1 nicht fertig ist, kann Schritt 2 nicht beginnen.

Aus dem Alltag
Backe einen Kuchen!

Für den Schneekuchen aus dem Eiklar sehr steifen Schnee schlagen und den Zucker unterrühren. Zerlassene Schokolade etwas auskühlen lassen und nach und nach mit den restlichen Zutaten vorsichtig unter den Schnee mischen. Die Masse in eine befettete und bemehlte Kuchenform füllen und im vorgeheizten Backrohr bei 160 °C ca. 50 Minuten backen.  

Quelle: https://www.ichkoche.at/schneekuchen-rezept-230358

In Scratch
Spiele eine Melodie!
http://eis.ph-noe.ac.at/scratch4/

2) Schleife

Bei einer Schleife werden bestimmte Schritte mehrmals wiederholt. Es gibt Schleifen mit einer bestimmten Anzahl von Wiederholungen, endlose Schleifen und solche aus denen man rausspringen kann.

Aus dem Alltag
Pflanze ein Blumenbeet!
Wiederhole sooft, bis das Beet voll ist:   Messe einen Abstand von 10cm (entweder zum Rand oder zu den anderen Pflanzen Mache ein passendes Loch. Gib den Setzling hinein. Gleiche die Erde an.   Wenn Du mit allem fertig bist, Gieße das gesamte Beet mit Wasser
In Scratch

Ein Tiergehege

http://eis.ph-noe.ac.at/scratch3/

3) Verzweigung

Welcher Schritt als nächstes gemacht wird, hängt von einer bestimmten Bedingung ab.

Aus dem Alltag
Das Wetter
Wenn es regnet, dann nehme ich morgens einen Regenschirm mit, bei Sonnenschein nicht.
In Scratch

Ein Chatbot

  http://eis.ph-noe.ac.at/scratch12/

4) Kommunikation

2 Entitäten unterhalten sich miteinander.

Aus dem Alltag
Spiel: Feuer – Wasser – Luft
Wenn die Schüler/innen ein entsprechendes Kommando/Nachricht von der Lehrperson empfangen, verhalten sie sich so, wie die jeweilige Regel es verlangt.   Wenn ein/e Schüler/in gerade nichts empfängt (weil er/sie z.B. gerade aussetzen muss), können Kommandos/Nachrichten auch ignoriert werden.
In Scratch

Katz und Maus

Maus:

Katze:

http://eis.ph-noe.ac.at/scratch7/

 

5) Variable

Eine Variable ist ein Platzhalter für eine Zahl. Man verwendet sie in mathematischen Ausdrücken und in der informatik in Form von Buchstaben oder Symbolen. Mit ihnen kann man Zusammenhänge für Berechnungen allgemein darstellen.

Aus dem Alltag
Der Preis eines Grundstücks
Der Gesamtpreis eines Grundstücks berechnet sich aus der „Quadratmeteranzahl” und dem „Quadratmeterpreis”. Quadratmeterpreis kann je nach Lage des Grundstücks variieren, die Formel für den Gesamtpreis des Grundstücks ist aber unabhängig davon IMMER “Quadratmeterpreis mal Quadratmeteranzahl“.
In Scratch
Punktezähler bei der Geisterjagd
http://eis.ph-noe.ac.at/scratch5/

 

Download: Informatische Prinzipien in Scratch als pdf