Ein frei kopier- und anpassbares Lehrmittel von eduskript.org

Woche 1: Neustart

Notstrom. Im Frachtraum der ESA Whatelse bootet ein kleiner Wartungsroboter: MOP-7. Die Gänge sind leer, niemand antwortet. Nur die Schiffs-KI AURORA ist noch da. Und sie redet gern.

Survival-Kit mit Befehlen

move() · turn_left() · turn_right() · press_switch() · read_log() · print(...)

Level 1: Aufwachen

Bringen Sie MOP-7 zum Ausgang. Schreiben Sie die Befehle untereinander, einen pro Zeile, und drücken Sie Run. Im Step-Player darunter können Sie danach Schritt für Schritt nachschauen, was MOP-7 gemacht hat. Für den dritten Stern: kein Schritt und keine Drehung zu viel.

PythonLoading editor…
print("Wartungsauftrag 0001: aufwachen.")
move()

Level 2: Licht an

Der Ausgang liegt hinter einer verschlossenen Tür. Die Tür öffnet sich mit press_switch(), dafür muss MOP-7 auf dem Schalter mit dem gelben Kreis stehen. Hinter der Tür steht ein Terminal. Lesen Sie es mit read_log(): MOP-7 muss direkt davor stehen und es anschauen.

PythonLoading editor…
move()

Eigene Befehle: Funktionen

MOP-7 kennt nur ein paar Befehle. Aber Sie können ihm neue beibringen. Ein eigener Befehl heisst in Python Funktion: ein kleines Unterprogramm, das eine bestimmte Aufgabe erledigt und das Sie immer wieder verwenden können.

Funktionen definieren
  • Eine Funktion wird mit dem Schlüsselwort def definiert.
  • Danach folgen der Name (hier umdrehen), runde Klammern () und ein Doppelpunkt :.
  • Der Inhalt der Funktion ist ein kleines Unterprogramm mit Befehlen. Die Befehle sind eingerückt: Sie beginnen nicht links am Rand, sondern ein Stück weiter rechts. So sieht Python, welche Zeilen zur Funktion gehören.
  • Die Definition einer Funktion tut noch nichts. Erst ein Aufruf später im Programm umdrehen() führt die Funktion dann aus. Und Sie können eine Funktion natürlich mehrmals ausführen!

Wie rückt man ein?

Drücken Sie am Anfang der Zeile einmal die Tabulator-Taste. Zurück an den linken Rand kommen Sie mit Shift + Tabulator oder mit der Löschtaste ⌫.
Der Editor rückt nach dem Doppelpunkt meist selbst ein. Dann einfach weiterschreiben.

Ab jetzt reicht umdrehen(). Wie die Funktion das macht, müssen Sie nicht mehr jedes Mal überlegen: Das ist Abstraktion.

Level 3: Die Brücke

Auf der Brücke stehen drei Terminals nebeneinander. MOP-7 soll alle drei lesen. Das Programm für das erste Terminal steht schon im Editor. Probieren Sie es aus.

Für alle drei Terminals reicht der Speicher aber nicht, wenn Sie die fünf Zeilen einfach kopieren: MOP-7 hat Platz für 12 Anweisungen. Machen Sie deshalb aus den fünf Zeilen eine Funktion terminal_lesen() und rufen Sie sie dreimal auf. Am Platz der Kapitänin liegt noch etwas: Nehmen Sie es mit zum Ausgang.

PythonLoading editor…
move()
turn_left()
read_log()
turn_right()
move()

Level 4: Treppenhaus

Von der Brücke führt eine Treppe hinunter zu den Kabinen der Crew. Jede Stufe ist gleich. Ergänzen Sie die Funktion stufe(), bis ein Aufruf MOP-7 genau eine Stufe hinunterbringt. Testen Sie zuerst eine Stufe, dann die ganze Treppe. Unten neben dem Ausgang steht ein Terminal: Lesen Sie es. MOP-7 hat Speicher für 15 Anweisungen.

PythonLoading editor…
def stufe():
    move()
    # ... wie geht die Stufe weiter?

stufe()

Level 5: Der Gang zur Messe

Der Gang zur Messe ist mit Kisten verstellt. An der Tür hängt ein Zettel: Holen Sie ihn und fahren Sie zum Ausgang. Diesmal gibt es keine Vorlage. Schauen Sie sich den Weg genau an: Ein Stück davon wiederholt sich. Machen Sie aus diesem Stück eine Funktion. MOP-7 hat Speicher für 16 Anweisungen.

PythonLoading editor…
# Ihr Programm (höchstens 16 Anweisungen)

Bonus 1: Der Frachtraum

Für Schnelle. Eine Funktion darf andere Funktionen aufrufen. Bauen Sie aus drei_vor() eine Funktion zacke(), die eine ganze Zacke des Zickzackwegs fährt. Speicher: 14 Anweisungen. Für den dritten Stern darf MOP-7 höchstens 23 Energie verbrauchen.

PythonLoading editor…
def drei_vor():
    move()
    move()
    move()
Tipp zum dritten Stern (erst nach zwei Sternen öffnen)

Der Weg hat sechs gerade Stücke. Dazwischen braucht es nur fünf Drehungen. Wie viele Drehungen macht Ihr Programm, wenn es dreimal zacke() aufruft? Eine Aktion zu viel am Ende heisst in der Informatik Zaunpfahlfehler.

Bonus 2: Pavels Teppich (sehr hart)

Für alle, die Bonus 1 mit drei Sternen geschafft haben. Der freie Weg durch Pavels Kabine ist ein Karo: vier gleiche Treppen, jede um eine Vierteldrehung gedreht. Holen Sie den Chip ganz rechts und fahren Sie zum Ausgang. Speicher: 16 Anweisungen, Energie: 54.

PythonLoading editor…
# Ihr Programm (höchstens 16 Anweisungen)
Tipp 1: Eine Stufe

Schreiben Sie zuerst eine Funktion für eine Stufe der Treppe oben rechts. Am Ende soll MOP-7 wieder in dieselbe Richtung schauen wie am Anfang. Dann passt dieselbe Funktion auch für die anderen drei Treppen.

Tipp 2: Die Ecken

Eine Treppe hat drei Stufen, an jeder Ecke dreht MOP-7 nach rechts. Wenn die Drehung am Ende Ihrer Treppen-Funktion steht, dreht er nach der letzten Treppe einmal zu viel. Was passiert, wenn sie am Anfang steht? Schauen Sie, wohin MOP-7 am Start blickt.

Fall der Woche

Die Crew ist verschwunden. Ihre letzte Spur: eine Party. Wo ist die Crew?

Fallwand

0 of 9 clues found · 0 levels solved
?
Not found yet
in Level 2: Licht an
?
Not found yet
in Level 3: Die Brücke
?
Not found yet
in Level 3: Die Brücke
?
Not found yet
in Level 3: Die Brücke
?
Not found yet
in Level 3: Die Brücke
?
Not found yet
in Level 4: Treppenhaus
?
Not found yet
in Level 5: Der Gang zur Messe
?
Not found yet
in Bonus 1: Der Frachtraum
?
Not found yet
in Bonus 2: Pavels Teppich (sehr hart)

Ermitteln heisst: trennen, was belegt ist und was Sie nur vermuten. Die Beweisstücke aus Level 2 bis 5 reichen dafür.

379708a