### Einfache Verzweigungen/Alternative ###

Wie kann Peetie die Felsen umfahren? Und wo liegen die Raketen?

Mit deiner Hilfe hat Peetie den kosmischen Sturm überlebt! Allerdings hat er einige heftige Kratzer abbekommen. Um die dringend nötigen Wartungsarbeiten durchführen zu können, muss Peeties Ladung über 10 liegen. Sobald diese Ladung erreicht wurde, soll er sich bei der Erde melden:

Wie prüft man so etwas?

Es gibt nur zwei Möglichkeiten: Entweder die Ladung liegt über 10. Oder sie liegt nicht darüber. Eine solche Unterscheidung nennt man Verzweigung oder Alternative. Das sieht in Scratch so aus:

Damit können wir unser Programm so verändern:

»Stoppe alles« sorgt dafür, dass das Programm aufhört zu arbeiten. Wenn unsere Ladung > 10 ist, muss Peetie ja auch nicht weiterfahren.

Verzweigung/Alternative im Struktogramm

Wenn man sich erstmal den Algorithmus (also den Lösungsweg) aufschreiben will, gibt es für die Verzweigung ein eigenes Symbol. Das obige Beispiel sieht dann so aus:

Ist klar: Das Programm verzweigt sich - entweder in den Ja-Zweig (»Ja! Peeties Ladung ist > 10!«) oder in den Nein-Zweig (»Nein! Peeties Ladung ist nicht > 10!«).

Also, let's try it:

Mission 40: Volle Ladung melden

Verändere das Programm so, dass PEETIE eine Meldung an die Erde schickt, sobald seine Ladung über 10 liegt! Außerdem soll das Programm nach der Meldung beendet werden (Block Steuerung -> »stoppe alles«).

Vergleichsoperatoren wie <, >, = finden wir im Bereich »Operatoren«:

Du kannst Größer- und Kleinerzeichen nicht unterscheiden? Male einen senkrechten Strich vornedran. Wenn es aussieht, wie ein K, dann ist es ein Kleinerzeichen: |< (anders funktioniert das nicht: |>)

Los geht's! [Scratch-Szenario in neuem Fenster öffnen]

Lösungsvorschlag (kommt im Jahr 2037)

Mission 41: Fels voraus!

Peetie wurde repariert und sieht aus wie neu! Jetzt muss Peetie nur noch ein paar weitere Energiezellen einsammeln und kann sich dann daran machen, den Mars zu verlassen (wie immer das funktionieren soll). Das Problem ist jetzt, dass Peetie in ziemlich felsiges Gelände vorgedrungen ist - er muss die Felsen umfahren. Zum Glück hat Peetie von der Erde ein Software-Update bekommen:

  • Peetie kann mit dem Unterprogramm checkRockVoraus prüfen, ob ein Fels voraus ist.
  • Falls ein Fels voraus ist, wird der Variablen rockVoraus der Wert true zugewiesen. Falls kein Fels voraus ist, wird der Variablen rockVoraus der Wert false zugewiesen.
  • Mit dem Unterprogramm aussenrumGehen kann Peetie ein Objekt umrunden!

Variablen, die nur den Wert true oder false annehmen, nennt man boolean.

Ganz schön kompliziert … Aber zum Glück hat Andy White das Ganze schon mal durchdacht:

Implementiere den im Struktogramm vorgegebenen Algorithmus und teste das Programm.

Los geht's! [Scratch-Szenario in neuem Fenster öffnen]

Lösungsvorschlag (kommt im Jahr 2037)

Mission 42: Bereit zur Sprengung

Die Felsen nerven wirklich - Peetie kommt nicht wirklich voran. An Bord von Peeties Raumschiff waren einige Raketen, falls für die Mission Felssprengungen nötig sein sollten. Zum Glück sind die Raketen beim Absturz nicht explodiert. Dafür sind sie aber jetzt in der Landschaft verteilt. Ein Aushilfsprogrammierer hat schon ein Programm geschrieben, mit dem Peetie die Raketen einsammeln kann:

Dabei hat der Programmierer aber vergessen, in einer Variablen zu speichern, wie viele Raketen Peetie eingesammelt hat. Du musst also eine Variable anzahlRaketen erstellen und in der Variablen immer die aktuelle Zahl der Raketen speichern! Das kannst du ja schon.

Im Bereich "Fühlen" kannst du abfragen, wen oder was Akkusativ-Peetie berührt:

Vor allem musst du dir überlegen, an welcher Stelle im Programm du prüfst, ob eine Rocket berührt wird.

Deklariere und initialisiere eine Variable anzahlRaketen und sorge dafür, dass dort immer die aktuelle Anzahl der eingesammelten Raketen gespeichert ist.

Sie haben sicher festgestellt, dass Sie für eine korrekte Funktionalität an zwei Stellen prüfen müssen, ob eine Rakete berührt wird. Sie können die Sache WESENTLICH einfacher machen. Denken Sie mal daran, wie das mit dem Batterienzählen lief (Mission 21, Tipp 1). Also, go for it!

Los geht's! [Scratch-Szenario in neuem Fenster öffnen]

Lösungsvorschlag (kommt im Jahr 2037)

----

Episode 4: Alle Missionen als PDF (ältere Version - wird vielleicht irgendwann aktualisiert)