i

Erkundung - Argo lernt neue Befehle

Missonsanalyse Teil 2

Nachdem in der letzten Mission die Argo nur knapp vor einem Energiemangel bewahrt wurde, wird das Protokoll der Mission nochmals genauer untersucht, um zukünftig besser in einer solchen Situation handeln zu können.

while not argo.onPow():
    if argo.rockFront():
        argo.turnLeft()
        argo.move()
        argo.turnRight()
        argo.move()
        while argo.rockRight(): 
            argo.move()
        argo.turnRight()
        argo.move()
        argo.turnLeft()
    else:
        argo.move()
argo.removePow()

Da die Mission nun aber schon eine Weile zurückliegt, ist nicht mehr ganz klar, welche Aufgabe die Anweisungssequenz hat, die ausgeführt wird, wenn Argos Sensoren einen Asteroiden direkt vor sich orten.

Einer der Offiziere erinnert sich, dass mit dieser Sequenz ein Asteroid oder eine Reihe von Asteroiden umflogen werden kann. Er schlägt daher vor, das Protokoll anzupassen.

while not argo.onPow():
    if argo.rockFront():
        asteroidenAusweichen()
    else:
        argo.move()
argo.removePow()

Der unbekannte Befehl: asteroidenAusweichen()

Die Crew ist sich einig, dass das neue Protokoll einfacher zu lesen ist. Allerdings wendet eine der technischen Offizierinnen ein, dass die Argo den Befehl asteroidenAusweichen() nicht kennt und daher nicht ausführen kann. Allerdings hat sie eine Möglichkeit gefunden Argo den Befehl beizubringen.

# Unterprogramm (Funktion)
def asteroidenAusweichen():
    argo.turnLeft()
    argo.move()
    argo.turnRight()
    argo.move()
    while argo.rockRight(): 
        argo.move()
    argo.turnRight()
    argo.move()
    argo.turnLeft()

# Hauptprogramm
while not argo.onPow():
    if argo.rockFront():
        asteroidenAusweichen()
    else:
        argo.move()
argo.removePow()

Mission 1

Die Erkenntnisse der Missionsanalyse sollen jetzt nochmals überprüft werden. Übertrage dazu das Programm in den Editor und teste, ob es nach wie vor die bekannte Mission erfüllt.
Wichtiger Hinweis: Natürlich kannst du das Programm auch einfach per Cope & Paste in den Editor kopieren. Da die Einrückungsebenen - gerade in Python - aber sehr wichtig sind, solltest du das Programm zu Übungszwecken aber besser abtippen, um dir zu verdeutlichen, wie weit die entsprechenden Anweisungen im Unterprogramm bzw. im Hauptprogramm eingerückt werden müssen.
Unterprogramme

Suche

v
6.4.5.1
dev.inf-schule.de/imperative-programmierung/spacebug/unterprogramme/erkundung_unterprogramm
dev.inf-schule.de/6.4.5.1
dev.inf-schule.de/@/page/Qb5yr3eN0c6mmK2T

Rückmeldung geben