### Schleifen: Zählerschleifen ###

geheGeradeaus, geheGeradeaus, geheGeradeaus - und die Zeit wird knapp. Wenn man doch nur etwas effizienter programmieren könnte ...

Peeties Energie-Probleme scheinen gelöst zu sein - eine Menge Batterien liegen wunderbar in einer Reihe vor ihm. Peetie muss also nichts weiter tun, als einfach geradeaus zu laufen. Das ist einfach zu programmieren:

Mission 30: Batterien abgrasen

Lass Peetie alle Batteriezellen aufsammeln, auch wenn es natürlich nervt, 1000 geheGeradeaus-Blöcke einzubauen.

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

Lösungsvorschlag (kommt im Jahr 2037)

Ist das wirklich eine gute Lösung?

General A. Spirin, Leiter der A.S.S., wird langsam nervös - das dauert alles viel zu lang, und die Rechner laufen heiß. Klar: So zu programmieren ist ja auch extrem umständlich. Das artet richtig in Arbeit aus, falls mal 200 Energie-Zellen auf dem Boden liegen.

Die Zählerschleife

Die Programmierer sollen Peeties Programmierung deshalb mit einem Update versorgen und dazu Schleifen verwenden. Damit kann man PEETIE sagen, dass er eine Aktion mehrmals wiederholen soll. So etwas nennt man eine Zählerschleife. Mit einer solchen Schleife kann man das Programm so verändern:

Eine solche Schleife besteht im Wesentlichen aus drei Aspekten:

  1. Laufvariable i
  2. Abbruchbedingung (wenn i > 8 …)
  3. Hochzählen ("inkrementieren") der Laufvariablen.

Nähere Erläuterungen hierzu:

i (die sogenannte »Laufvariable«) steht für index und wird häufig verwendet, um die Schleifendurchläufe zu zählen. Statt i könnte man aber z.B. auch zaehler oder counter o.ä. schreiben.

i wird also von 1 bis 8 gezählt - damit läuft die Schleife 8 Mal (i nimmt nacheinander die Werte 1, 2, 3, 4, 5, 6, 7, 8 an) und Peetie geht 8 Mal geradeaus.
Merkhilfe: Wenn du 32 Schritte machen sollst, dann zählst du innerlich auch mit. Das ist deine Laufvariable.

Wir wiederholen den Anweisungsblock mehrmals, aber irgendwann muss Schluss sein. Im Beispiel hören wir dann damit auf, wenn i den Wert 8 überschritten hat - wenn die Schleife also 8 Mal gelaufen ist.
Merkhilfe: Du sollst 8 Schritte machen. Du beginnst, zählst mit, und bevor du den 9. Schritt machst, hörst du auf.

Nach jedem Durchlauf des Anweisungsblockst erhöhst du die Laufvariable um 1.
Merkhilfe: Nach jedem Schritt, den du gemacht hast, zählst du eins hoch.

Das folgende Beispiel zeigt, welche Werte i annimmt und wann die Schleife abbricht (hier müssen Sie nichts programmieren, nur zuschauen!):

Scratch-Szenario in neuem Fenster öffnen

Zählerschleife im Struktogramm

Programmierer skizzieren häufig den Lösungsweg für ein Problem und entscheiden erst später, mit welcher Programmiersprache das Problem am besten gelöst werden kann. Das kennen wir ja schon von Dr. Andy White - der notiert seine Lösungswege (= Algorithmen) häufig im Struktogramm, bevor er mit dem Programmieren anfängt.

Das Struktogramm der Zählerschleife sieht für unser Beispiel so aus:

Gute Frage! Tatsächlich ist die "wiederhole x mal"-Schleife in Scratch vielfach einfacher zu programmieren:

Wenn wir jedoch mit dem wiederhole-x-mal-Block arbeiten, verstehen wir nicht, wie die Laufvariable funktioniert. Denn die ist im wiederhole-x-mal-Block zwar vorhanden, aber vor uns versteckt.
Deshalb machen wir es erst mal wie im Beispiel links - auch wenn es aufwändiger ist.

Mission 31: Batterien mit Schleife abgrasen

Wir werden nicht 8 Mal geheGeradeaus schreiben - nein, nein!

Peetie soll 8 Schritte vorwärts machen - diesmal allerdings durch eine Schleife gesteuert!

Ganz einfach:

  1. Zuerst musst du eine Laufvariable deklarieren. Ob die i heißt oder anzahlSchritte oder sonstwie, bleibt dir überlassen.
  2. Diese Laufvariable musst du zuerst noch initialisieren (= ihr einen Startwert zuweisen).
  3. Dann legst du eine wiederhole-bis-Schleife an und gehst vor, wie oben beschrieben.
  4. Teste das Programm. Lass Peetie auch mal weniger Schritte gehen und zähle mit, ob alles stimmt!

Das holst du dir im grünen Bereich "Operatoren":

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

Lösungsvorschlag (kommt im Jahr 2037)

Mission 32: Batterien SMART abgrasen

Peetie im Batterien-Paradies!

Schicke Peetie ein Programm, mit dem alle Energiezellen aufgesammelt werden. Wer das kürzeste Programm schreibt, kriegt vom Chef-Programmierer einen Schokoriegel geschenkt.

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

Lösungsvorschlag (kommt im Jahr 2037)

Mission 33: Peeties Botschaft

Dr. White kommt hereingestürzt. Die Worte stürzen unkontrolliert aus seinem Mund: »Peetie - Peetie hat selbst ein Programm geschrieben und uns geschickt! Pflügt er da einen Buchstaben in den Marsstaub? Ich glaube, er will uns etwas mitteilen!!«

Finde heraus, was Peetie da ausheckt, indem du das folgende Programm umsetzt.

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

Lösungsvorschlag (kommt im Jahr 2037)

----

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