i

Erkundung - Die Argo trifft Entscheidungen

Die Mission: Ein Power-up suchen

Die Argo steht vor einem Asteroidenfeld und möchte das Power-up, das sich irgendwo im Asteroidenfeld befindet, nach draußen befördern. Aufgrund einer interstellaren Wolkeaus Staub und Gas ist die Sicht allerdings so stark beeinträchtigt, dass die Argo nicht weiß, wo genau sich das Power-up befindet. Die Argo muss also in das Asteroidenfeld fliegen und je nach vorgefundener Situation entscheiden, wie sie weiterfliegen soll. Dabei helfen der Argo ihre Kurzstreckensensoren, mit denen sie überprüfen kann, ob sie sich bereits über einem Power-up befindet.

Vorher:

argo und seine Welt - vorher

Nachher:

argo und seine Welt - nachher

Mission 1: Ein Lösungsverfahren entwickeln

Hier ist ein Lösungsverfahren mit Fallunterscheidungen vorskizziert. Ergänze die fehlenden Teile.

Sektor weiterfliegen
WENN auf einem Power-up:
    Power-up aufheben
    rechts drehen
    rechts drehen
    Sektor weiterfliegen
SONST:
    Sektor weiterfliegen
    WENN auf einem Power-up:
        ...
    SONST:
        ...
Power-up hinlegen

Achte darauf, dass einige Anweisungen eingerückt (d.h. nach rechts verschoben) sind. Damit wird deutlich, welche Anweisungen im Fall WENN auf einem Power-up: bzw. SONST: ausgeführt werden sollen. Die Einrückung kannst du über viermaliges Drücken der Leertaste oder einmaliges Drücken der Tabulator - Taste erreichen.

Mission 2: Ein Lösungsverfahren in Python formulieren

Das Lösungsverfahren soll jetzt in Python formuliert werden. Dafür benötigst du die folgende Kontrollstrukturen:
  if argo.onPow():          # Doppelpunkt schließt if - Zeile ab.
      ...                   # Anweisungen um vier Leerzeichen einrücken.
  else:                     # Doppelpunkt schließt else - Zeile ab.
      ...                   # Anweisungen um vier Leerzeichen einrücken.
if und das dazugehörige else haben immer die selbe Einrückebene (d.h. beide Kontrollstrukturen sind in Bezug auf den linken Rand des Editors gleichweit nach rechts eingerückt). Die dazgehörigen Anweisungen sind dann aber erneut um vier Leerzeichen (Tabulator - Taste) weiter nach rechts eingerückt.

Schreibe nun das Programm im Editor und teste es mit einer der gegebenen Welten (siehe Screenshots oben). Hast du ein Programm für eine der Welten geschrieben, so teste es auch mit den jeweils anderen Welten. Was macht dein Programm eigentlich, wenn kein Power-up vorhanden ist?

Du kommst nicht weiter?
argo.move()
if argo.onPow():          # Doppelpunkt schließt if - Zeile ab.
    argo.removePow()      # Zeile um vier Leerzeichen einrücken.
    ...
else:                     # Doppelpunkt schließt else - Zeile ab.
    argo.move()
    if argo.onPow():
        argo.removePow()  # Anweisungen um acht Leerzeichen einrücken, da die vorige
        ...               # Zeile bereits um vier Leerzeichen eingrückt ist.
    else:
        argo.move()
        ...
argo.putPow()             # Diese Anweisungen wird unabhängig von den obigen Fällen
                          # immer ausgeführt, da die Zeile nicht eingerückt ist.

Mission 3: Ein Lösungsverfahren überprüfen

Löst das folgende Lösungsverfahren auch die Mission? Teste das Programm, indem du es selbst (z.B. auf dem Papier oder in Gedanken) ausführst.

Sektor weiterfliegen
WENN auf einem Power-up:
    Power-up aufheben
    rechts drehen
    rechts drehen
SONST:
    Sektor weiterfliegen
    WENN auf einem Power-up:
        Power-up aufheben
        rechts drehen
        rechts drehen
    SONST
        Sektor weiterfliegen
        Power-up aufheben
        rechts drehen
        rechts drehen
        Sektor weiterfliegen
    Sektor weiterfliegen
Sektor weiterfliegen
Power-up hinlegen

Suche

v
6.4.2.1
dev.inf-schule.de/imperative-programmierung/spacebug/fallunterscheidungen/erkundung_entscheidungen
dev.inf-schule.de/6.4.2.1
dev.inf-schule.de/@/page/vY5lKiWeCzpCh9nM

Rückmeldung geben