Anwendungen

Mit Variablen werden häufig Zahlen gespeichert, die Eigenschaften eines Sprites beschreiben. Mit Variablen kann man rechnen und sie werden verwendet, um Wahrheitswerte zu bestimmen.

Bevor wird Variablen bei unserem Mähroboter einsetzen, programmieren wir zwei ganz einfache Beispiele zur Verwendung von Variablen

Stoppuhr und Timer


Bild von Csaba Nagy auf Pixabay

Du hast sicherlich schon einmal eine Stoppuhr bzw. eine Timer, also eine Uhr die rückwärts läuft, verwendet. Wir wollen diese beiden Uhren nun programmieren.

Beginnen wir mit der Stoppuhr für Sekunden. Beim Drücken der Taste a wird die Uhr auf Null zurückgesetzt. Eine Variable soll anschließend jede Sekunde um 1 erhöht werden, bis die Taste b gedrückt wird.

Implementiere mit Hilfe der gegebenen Blöcke die beschriebene Stoppuhr. Deklariere zunächst eine Variable sekunden.

Als Zweites programmieren wir den Timer. Dazu soll zunächst nach Drücken der Taste t gefragt werden, wie viele Sekunden der Timer herunterzählen soll. Für die Tastatureingabe verwenden wir den Block . Dieser erzeugt beim Sprite eine Sprechblase mit dem angegebenen Text. Im unteren Bereich des Grafikfensters erscheint eine Eingabezeile. Der eingebebene Wert kann anschließend in dem Block ausgelesen und weiterverarbeitet werden.

Implementiere mit Hilfe der gegebenen Blöcke den Timer, so dass nach Eingabe der gewünschten Sekunden der Timer startet und am Ende ein Klingeln ertönt.

Ladestand des Mähroboters

Bisher konnte unser Mähroboter beliebig lange Wege zurücklegen. In der Realität besitzt ein solches Gerät aber einen Akku mit beschränkter Kapazität. Wir erweitern unseren Mähroboter um eine Variable akku, die einen Wert zwischen 0 und 100 annehmen soll. Zu Beginn ist der Akku vollständig geladen. Bei jeder Vorwärtsbewegung soll die Akkuladung um einen geringen Wert, z. B. 0.02 abnehmen.

Erstelle im folgenden Programmfenster die Variable akku, initialisiere sie beim Start des Programms mit einem geeigneten Wert. Sorge dafür, dass bei jeder Vorwärtsbewegung der Akku um 0.02 entladen wird. Ergänze das Skript, dass sich der Mähroboter bei leerem Akku nicht mehr nach vorne bewegt, sondern stehen bleibt.
Mögliche Erweiterung:
Erstelle ein neues Sprite und zeichen als Kostüm ein Rechteck, das einen Ladebalken darstellt. Programmiere für dieses Sprite ein Skript, das mit startet und abhängig von der Variable akku, die Größe des Ladebalkens verändert.

Bei realen Mährobotern gibt es eine Ladestation, die der Mähroboter bei niedrigem Akkustand selbstständig anfährt, um seinen Akku wieder aufzuladen.


Bild von fesehe auf Pixabay

Wir stellen die Ladestation als schmalen Balken durch ein neues Sprite dar. Damit der Mähroboter alleine zur Ladestation kommt, verwenden wir den Block , der dafür sorgt dass sich der Mähroboter in die Richtung der Ladestation dreht.

Die folgende Animation zeigt die Wirkung des Blocks.

Erstelle ein Sprite mit dem Namen Ladestation und zeichne als Kostüm eine waagrechte Linie.
Ergänze das Programm für den Mähroboter, so dass er bei einem Akkustand unter 5 selbstständig auf direktem Wege zur Ladestation fährt, um dort den Akku wieder aufzuladen.
Dazu soll der Wert der Variable akku so lange schrittweise um 0.1 erhöht werden, bis er den Wert 20 erreicht.
Anschließend kann der Mähroboter wieder seine Arbeit aufnehmen.

Für Profis: Suche nach der Ladestation in schwierigem Gelände

Das letzte Programm funktioniert zum Anfahren der Ladestation funktioniert nur, wenn der Mähroboter sich direkt auf diese zubewegen kann. Das folgende Fenster zeigt eine Situation, in der dies nicht möglich ist.
Eine Lösung könnte dabei sein, den Mähroboter versuchen zu lassen, zur Ladestation zu fahren. Trifft er dabei auf die Begrenzung könnte er versuchen, z. B. fünfmal wieder zu einer Begrenzung zu fahren und sich dort zufällig zu drehen. Damit könnte er sich nun in einer Position befinden, die ein direktes Anfahren der Ladesation ermöglicht.

Versuche ein Programm zu erstellen, so dass der Mähroboter auch in verwinkelten Bereichen (mit Umwegen) die Ladestation erreicht, ohne über die Begrenzungslinie zu fahren.

Die For-Wiederholung

Zum Abschluss der Anwendungen von Variabelen sollst du noch eine Variation einer Kontrollstruktur zur Wiederholung kennenlernen. Im leztten Kapitel hast du gelernt, wie man eine Wiederholung mit einer festen Anzahl erreicht.
Zum Beispiel:

Häufig möchte man innerhalb der wiederholten Anweisungen wissen, die wie vielte Wiederholung das gerade ist. Dazu kann man eine Variable und die Kontrollstruktur einer bedingen Wiederholung verwenden.

Zunächst muss dabei eine globale Variable oder wie hier eine Skriptvariable deklariert und initialisiert werden. Für die bedingte Wiederholung benötigt man eine geeignete Abbruchbedingung und im Wiederholungsteil muss die Zählvariable a immer um eins erhöht werden.

Für diese Art von Wiederholungen bieten viele Programmiersprachen und auch Snap! einen eigene Kontrollstruktur an, die dies etwas vereinfacht: Die for-Wiederholung (auch: for-Schleife oder engl. for-loop).

Dieser Block beinhaltet bereits eine Zählvariable, die häufig mit i benannt ist. Nach dem Gleichheitszeichen steht der Wert, den die Variable zu Beginn haben soll und der Endwert. Nach jeder Wiederholung wird der Wert der Zählvariable automatisch um 1 verändert. Wenn er Startwert kleiner als der Endwert ist, wird i um eins vergrößert, andernfalls um eins verkleinert wie im folgenden Beispiel.
Für Wiederholung, bei der man eine Zählvariable benötigt, eignet sich die for-Wiederholung. Nach jeder Wiederholung wird dabei die Zählvariable um 1 erhöht bzw. erniedrigt wird.

Die for-Wiederholung kann auch mit Hilfe einer bedingten Wiederholung unter Verwendung einer eigenen Variable umgesetzt werden.

for-Schleifen werden bei der Programmierung auch häufig ineinander geschachtelt.

Analysiere die drei folgenden Skripte.