Variablen

Aus ComeniusWiki
Version vom 19. September 2015, 09:43 Uhr von B.Schiller (Diskussion | Beiträge)

(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

Was sind Variablen?

Eine Variable ist bildlich gesehen eine Art Gefäß, in dem Daten aufbewahrt werden. Im Computer ist es konkret ein Speicherplatz für Daten, der einen bestimmten Namen hat. Wollen wir beispielsweise die Position eines Objekts in einem Koordinatensystem bestimmen, benötigen wir zwei Werte, die jeweils den Wert einer Variable darstellen (z.B. x=5; y=8). Auch wenn sich die Werte während der Laufzeit eines Programms verändern, können wir uns mit dem Namen der Variable immer auf deren aktuellen Wert beziehen.
Auch in Scratch können wir Variablen einführen (deklarieren) und anschließend mit einem Anfangswert versehen (initialisieren). Zu diesem Zweck gehen wir auf den Code Block Daten und wählen eine "Neue Variable", der wir einen Namen geben. In Scratch sind aber auch bereits einige Variablen vordefiniert (z.B. x-Position und y-Postion), die wir für den Programmablauf häufig benötigen.

Scratch variablen.JPG


Daraufhin stehen uns dann die verschiedenen Möglichkeiten für den Umgang mit Variablen zur Verfügung. Ist das Häkchen neben dem Variablennamen gesetzt, erscheint der Wert auch auf der Bühne.


Scratch variablen2.JPG


Datentypen

Viele höhere Programmiersprachen erfordern bei der Definition von Variablen die Angabe des sogenannten Datentyps, d.h. man muss festlegen, ob es sich um eine Zahl, eine Zeichenkette etc. handelt. Scratch macht es uns hier relativ einfach, da es mit den Datentypen sehr selbständig umgeht. Im Prinzip gibt es in Scratch drei Datentypen: Boolean, Number und String:

  • Eine Variable vom Typ Boolean kann nur zwei Werte annehmen: wahr oder falsch. Wir kennen diesen Typ bereits vom Programmieren mit Robot Karol. Immer wenn wir Bedingungen genutzt haben (z.B. istWand, nichtIstZiegel etc.), haben wir eine Variable vom Typ Boolean verwendet. Oft ist es auch notwendig den Wert verschiedener Variablen miteinander zu vergleichen und den weiteren Ablauf des Programms von einem bestimmten Wert einer Variable abhängig zu machen. Zu diesem Zweck stehen die Operatoren zur Verfügung. Der erzeugte Block für die Variable wird dazu per drag-and-drop an die entsprechende Stelle gezogen.
Scratch variablen3.JPG
  • Der Typ Number unterscheidet nicht wie viele andere Programmiersprachen zwischen ganzen Zahlen und Dezimalzahlen, sondern arbeitet intern mit dem jeweils richtigen Typ.
  • Bei Typ String handelt es sich um Zeichenketten, die sowohl Buchstaben und Zahlen als auch Sonderzeichen enthalten können.

Bei Scratch können wir anhand der Form des Platzhalters für die Parameterwerte in Codeblöcken feststellen, welche Datentypen verwendet werden dürfen. Das Einfügen eines unerlaubten Datentyps ist nicht möglich.

Scratch datentypen.JPG


Cloud - Variablen

Variablenwerte werden nur lokal gespeichert, d.h. sobald ein Spiel beendet ist, werden die Werte der Variablen (z.B. Spielstände) wieder gelöscht. Deshalb ist zumindest bei einem lokal gespeicherten Spiel das Abspeichern eines Highscore nicht möglich. Ab Version 2.0. bietet Scratch allerdings die Möglichkeit, Variablenwerte in einer Cloud abzuspeichern. Zu diesem Zweck muss mann die Anwendung aber in der Online-Version erstellen und bei Scratch angemeldet sein. Bei Aufruf der Variablendefinition steht dann auch die Option cloud variable zur Verfügung.

Scratch cloudvariable.JPG

Benutzereingaben

Für viele Anwendungen benötigen wir die Möglichkeit einer Benutzereingabe. Dazu bietet Scratch das folgende Blockpaar:

Scratch benutzereingabe.JPG

Auf diese Weise kann der Nutzer zu einer Eingabe aufgefordert werden und seine in die Eingabezeile eingegebene Antwort als Wert einer Variable weiterverarbeitet werden.


Der Timer

Bei vielen Spielen wollen wir mit einer Stoppuhr oder einem Countdown arbeiten. Die Umsetzung erfordert die Anwendung von Variablen. Da die Stoppuhr in Scratch etwas eingeschränkt in ihren Möglichkeiten ist, was den Umgang mit bestimmten Werten der Uhr anbelangt, überträgt man die abgelaufenen Sekunden auf eine zweite Variable, die als die eigentliche Stoppuhr fungiert.


Scratch timer.JPG


Aufgaben

Aufgabe 4-1

Die Aufgabe 3-1 ("Labyrinth") soll so erweitert werden, dass die Anzahl der Versuche gezählt wird, die notwendig sind um einen Ausgang zu finden. Zudem steht für das Absolvieren der Aufgabe nur eine bestimmte Zeit zur Verfügung. Dazu soll ausgehend vom obigen Code eines Timers ein Countdown von z.B 60 Sekunden eingeführt werden. Wird in dieser Zeit das Ziel nicht erreicht, ist das Spiel verloren.

Lösungsvorschlag


Aufgabe 4-2 ("Whac-A-Mole")

Bei Whac-A-Mole handelt es sich um ein Spiel aus den frühen 70iger Jahren. Es geht dabei darum, einem armen Maulwurf, der aus einem seiner Löcher herausschaut, eins überzubraten. Dabei kann sich der Maulwurf nur auf seine Schnelligkeit verlassen. Er erscheint nämlich ständig an einem anderen Loch, an dem ihn sein Jäger zu erwischen versucht.


Scratch aufgabe-4-2.JPG


Wir brauchen dafür einen Hintergrund mit 5 Löchern, einen Maulwurf (Sprite mouse1 aus der Bibliothek) und ein Schlaggerät, das wir uns selbst erstellen. Der Maulwurf bekommt ein Skript bei dem ständig eine Zufallszahl zwischen 1 und 5 erzeugt wird (Block Operatoren) und je nach Zahl der Maulwurf für etwa 0.6 sec in dem entsprechenden Loch zu sehen ist.
Der eigentliche Akteur ist das Schlaggerät. Dieses nimmt ständig die Position der Maus ein, d.h. man kann den Maulwurf mit der Maus verfolgen. Klickt man nun die Maus und der Abstand zum Zentrum des Maulwurfs ist kleiner als 50, dann wir der Klang pop (siehe Klangbibliothek) gespielt und die Trefferzahl (eigene Variable!) wird um 1 erhöht. Um zu vermeiden, dass der Versuch mehrfach gezählt wird, wird eine kurze Pause von 0.5 sec eingefügt. Schließlich benötigen wir noch einen Timer, der nach 60 sec das Spiel beendet.
Hinweis: Beim Malen des Schlaggeräts ist darauf zu achten, dass der Drehpunkt (Kreuz auf der Malfläche) sich im Kopf des Geräts befindet!

Lösungsvorschlag


Aufgabe 4-3 ("Highway To Hell")

Karlchen Crasher hat einen Traum – er will Stuntman werden. Deshalb will er auf dem Highway wie seine Vorbilder über Kühlerhauben hechten. Allerdings ist seine Mama (zurecht) sehr dagegen, weil sich ihr Bubi ja dabei verletzen könnte. Wir wollen ihm nun aus seiner Frustration heraushelfen und ihm zumindest eine Simulation für seine Trainingsidee programmieren:

Scratch aufgabe 4-3.JPG

Folgende Schritte sind bei der Programmierung abzuarbeiten:

  • Erstellen des Hintergrundes
  • Einfügen der Objekte. Dabei sollte man sich auf zwei verschiedene Fahrzeuge beschränken und sie mittels Spiegelung für die andere Fahrtrichtung erstellen. Die Farbe spielt anschließend für die Umsetzung von Zusammenstößen eine Rolle
  • Jedes der Fahrzeuge bekommt sein eigenes Skript, das die Geschwindigkeit steuert. Hinweis: Ein Auto taucht, nachdem es auf einer Seite verschwunden ist, auf der anderen Seite wieder auf. Die Fahrzeuge haben auch unterschiedliche Geschwindigkeiten.

Für Karlchen wird das eigentliche Skript für die Simulation geschrieben.

  • Zuerst sorgen wir für die Steuerung über die Pfeiltasten (nach oben / nach unten).
  • Baut Karlchen einen Unfall, stößt er einen kurzen Schmerzensschrei aus und wird auf die Seite zurückgesetzt, von der er gerade gekommen ist. Dabei spielen die gelbe und die blaue Linie auf dem Hintergrund eine wichtige Rolle.
  • Natürlich wollen wir auch Punkte zählen. Für jede vollständige Überquerung bekomt er 10 Punkte. Achte dabei auf die Platzierung der Variablen.
  • Er hat dabei 60 Sekunden Zeit um möglichst viele Punkte zu sammeln. Dazu müssen wir die Stoppuhr etwas verändern.

Lösungsvorschlag