“Gemeinsam” an Tafel:
Finde einen Algorithmus zum Zeichnen der folgenden “Spirale” und gib diesen durch ein Flussdiagramm an.
Bemerkung: Wir sind nicht an der naiven Lösung interessiert, bei der alle Linien einzeln gezeichnet werden, sondern wollen eine Wiederholung (repeat
-Struktur) und mindestens eine Variable verwenden.
Einzelarbeit, ca. 10 Minuten.
Verwandle unser Flussdiagramm in ein Python-Programm zum Zeichnen der obigen Spirale; dabei soll repeat 16:
verwendet werden. Am Ende soll mit print(…)
die Gesamtlänge der Spirale ausgegeben werden.
Wie immer: Speichere dein Programm ab. Später werden wir es verwenden, um den Roboter eine Spirale abfahren zu lassen.
Einzelarbeit, ca. 15 Minuten.
Erweitere den Programmcode
from gturtle import * makeTurtle() # hideTurtle() n = input("Wie viele Quadrate?") s = 70 d = 10 # Hier ist dein Code zu ergaenzen.
so, dass ineinanderliegende Quadrate gezeichnet werden, wie in der Skizze unten angedeutet. Dabei soll gelten:
n
ist die Anzahl der Quadrate.s = 70
Pixeln.d = 10
Pixel.s
und d
im Programm ändert, ändert sich die Zeichnung entsprechend.Gerne darf zuvor ein Flussdiagramm erstellt werden, wenn das hilft.
Schreibe ein Programm, das vom Benutzer eine Zahl n
erfragt und dann entsprechend viele konzentrisch ineinanderliegende Quadrate zeichnet, so dass das kleinste Quadrat Seitenlänge s = 10
Pixel hat und sich die Seitenlängen benachbarter Quadrate jeweils um differenz = 20
Pixel unterscheiden. Wenn man s
und differenz
verändert, muss die Zeichnung entsprechend anders aussehen. Die Seiten des Quadrats sollen horizontal bzw. vertikal liegen (und nicht irgendwie schräg auf dem Monitor).
Du darfst kreativ sein und Farbe und Stiftdicke beliebig wählen und auch von Quadrat zu Quadrat variieren. Du darfst auch konzentrische e
-Ecke oder Sterne mit e
Zacken oder ähnliches statt Quadraten zeichnen.
Für n = 8
soll die Ausgabe so aussehen:
Abgabe bis spätestens Sonntagabend 23:59 Uhr vor der nächsten Doppellektion über den folgenden Link:
Turtle- und Roboterprogrammierung unterscheiden sich! Finde die Unterschiede in den beiden folgenden Programmen und versuche sie zu erklären!
from mbrobot import * forward() delay(2000) right() delay(500) stop()
from gturtle import * makeTurtle() forward(200) right(130)
Wir arbeiten mit dem Maqueen-Roboter (DF Robot) - der Mechanik - und der micro:bit-Steckkarte - dem Gehirn. Der Roboter hat zwei Motoren, mehrer LEDs, Abstandssensor und Infrarotsensoren. Die micro:bit-Steckkarte kann man auch separat programmieren. Sie besitzt ein quadratisches Feld von 25 LEDs, zwei Druckknöpfe (und einen Start-Button), Kompass, Beschleunigungssensor (Accelerometer), diverse Pins (etwa zum Datenaustausch mit dem Roboter) und eine BLE-Antenne (Bluetooth).
Je zwei Leute bekommen einen Roboter. Bitte sorgsam behandeln!
Es gibt zwei Ausführungsarten:
Im Robotermodus wird das Programm auf den Mikropprozessor hochgeladen und sofort ausgeführt (falls der Mikroprozessor eingesteckt ist und der Roboter angeschaltet ist). Eventuell wird man noch aufgefordert, das Programm abzuspeichern bzw. den Roboter einzuschalten.
Der Roboter kann dann auch ausgesteckt werden und das Programm kann mit dem Knopf neben der USB-Buchse am micro:bit gestartet werden.
Partnerarbeit
Kopiere das folgende Python-Programm in Tigerjython und führe es zuerst im Simulationsmodus und dann im Realmodus aus.
Lerne deinen Roboter durch Experimentieren kennen! Für welche Werte der beiden Variablen
Seid nicht zu idealistisch. Auf dem Fussboden können die Werte anders sein als auf dem Tisch …
Schreibe das Programm mit Hilfe einer repeat 4:
-Schleife so um, dass der Roboter ein Quadrat der Seitenlänge 10 cm abfährt.
from mbrobot import * zeitVorwaerts = 4000 zeitRechtsdrehung = 2000 delay(1000) # Damit der Roboter nach Kopfdruck nicht sofort losfährt. forward() delay(zeitVorwaerts) right() delay(zeitRechtsdrehung) stop()
Partnerarbeit
Programmiere den Roboter so, dass er eine “quadratische” Spirale abfährt (zuerst 10 cm vorwärts, dann nach jedem rechtwinkligen Abbiegen 10 cm weiter fahren als zuvor).
Verwende dazu die Erkenntnisse aus der vorigen Aufgabe und dein Turtle-Programm für die quadratische Spirale (du musst dort nur ein paar Änderungen vornehmen).
Wenn du es zu Hause in Einzelarbeit ohne Roboter machst: Verwende den Simulationsmodus.
Abgabe bis spätestens Sonntagabend 23:59 Uhr vor der nächsten Doppellektion über den folgenden Link:
… falls am Ende genug Zeit ist …
(1) Halte deine Hand in unterschiedlichen Abständen vor den Roboter, während das folgende Programm läuft, um zu verstehen, wie du die Werte des Abstandssensors bekommst.
Damit print(d)
funktioniert, muss der Roboter per USB-Kabel mit dem Computer verbunden sein.
from mbrobot import * # Die folgende Zeile ist dasselbe wie "repeat unendlich oft:" while True: d = getDistance() print(d) delay(100)
(2) Verstehe das folgende Programm durch Ausprobieren:
x = input("Gib eine Zahl ein!") if x < 0: print("Deine Zahl ist negativ.")
(3) Programmiere den Roboter nun so, dass er sich wie ein Rasenmäh-Roboter verhält: Er läuft solange vorwärts, bis er sich nahe genug vor einer “Wand” befindet. Dann soll er ein Stück zurück fahren, sich um etwa $90^\circ$ nach links drehen und das Spiel von vorne beginnen.
Bitte einfach am Anfang des Programms oder der eingereichten Datei die Frage aufschreiben (mit oder ohne Hashtag #
als Kommentareinleitungszeichen am Zeilenanfang).
Lösungen zu den Aufgaben 4 und 6 sind auf der Seite der nächsten Doppellektion unten.