i

Erkundung - Die Argo trifft Entscheidungen

Mission 1: Wenn, sonst!

Nicht immer sind die Missionen so eindeutig wie vorherigen Kapitel. So kann es durchaus sein, dass die Argo auf einer Mission in eine Situation gerät, in welcher sie, je nachdem welche Welt sie vorfindet, unterschiedliche Entscheidungen treffen muss.

Um ein Gefühl für die Problematik zu erhalten, schauen wir uns zunächst ein einfaches Beispiel an. Direkt im Sektor vor ihr befindet sich ein Power-up. Dieses soll sie aufheben und danach einen Sektor weiterfliegen.

Einstieg Fallunterscheidung Einstieg Fallunterscheidung

Der nachfolgende Code löst diese einfache Aufgabe.

argo.move()
argo.removePow()
argo.move()

Würde der Code aber auch funktionieren, wenn sich kein Power-up direkt vor der Argo befindet?

Mission 2: Ein Lösungsverfahren in Python formulieren

Sicherlich ist dir aufgefallen, dass der obige Code den Sonderfall nicht lösen kann. Die Argo explodiert sofort, wenn sie ein nicht vorhandenes Power-up aufheben soll. Daher muss die Argo selbst in der Lage sein zu erkennen, ob in dem Sektor, in dem sich die Argo gerade befindet, ein Power-up liegt oder nicht.
Erst WENN die BEDINGUNG Ist Power-up in Sektor? zutrifft, dann soll die Argo das Power-up aufheben und SONST einfach direkt in den nächsten Sektor weiter fliegen.
Übertrage den folgenden Code in den Editor und teste den Code je für die Ausgangssituationen mit und ohne Power-up. Achte beim Übertragen auf die neuen Kontrollstrukturen if und else und setze am Ende beider Zeilen einen Doppelpunkt. Die Zeilen 3 und 5 sind genau vier Leerzeichen nach rechts eingerückt.
1  argo.move()
2  if argo.onPow():          
3     argo.removePow()      
4  else:                     
5     argo.move()  

Mission 3: Captain, unexpected indentation ahead!

Durch das Einrücken der Anweisungen (d.h. der Code ist nach rechts verschoben) wird deutlich, welche Anweisungen im Fall WENN auf einem Power-up: bzw. SONST: ausgeführt werden sollen.

Tipp! Die Einrückung kannst du übrigens auch durch einmaliges Drücken der Tabulator - Taste erreichen.

Bevor du die nächsten Versuche mit der neuen Kontrollstruktur machst, aktiviere den Debugmodus in den Einstellungen im Editorfenster.

Debugger Modus

Speichere die Datei 6.4.2.1_Mission3.spbugmit Rechtsklick > Link speichern unter... auf deinem Rechner. Öffne sie danach direkt in Spacbug unter dem Menüpunkt Datei > Öffnen... im Editorfenster.

  1. Lies dir den Code durch. Wie verhält sich das Programm in der gegebenen Situation? Überlege zunächst, ohne das Programm auszuführen.
  2. Da du den Debugmodus aktiviert hast, kannst du dich zeilenweise durch den Code klicken. Mit jedem erneuten Mausklick (oder Taste N bzw. Scollrad) wird die im Editor grün hervorgehobene Zeile ausgeführt. Starte das Programm und überprüfe deine Vermutung.
  3. Wie musst du die Welt verändern, dass der Code im else:-Block ausgeführt wird?
  4. Was passiert, wenn du Zeile 6 argo.putPow() um vier Leerzeichen nach links verschiebst? Überlege zunächst für beide Situation (mit bzw. ohne Asteroid), wie sich das Programm verhält. Überprüfe deine Vermutung erneut mit aktiviertem Debugmodus.

Suche

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

Rückmeldung geben