i

Anleitung - Algorithmisches Problemlösen

Zusammenfassung

Es ist manchmal gar nicht so einfach, einen Algorithmus zur Lösung eines Problems zu entwickeln - insbesondere dann, wenn das Problem komplizierter ist. Am bekannten Beispiel Power-up suchen sollen die wesentlichen Sektore noch einmal kurz zusammengestellt werden.

Schritt 1 - Ideen suchen

Algorithmen bzw. Programme kann man oft nicht gleich hinschreiben. Zunächst muss man nach geeigneten Ideen suchen.

Eine Möglichkeit besteht darin mögliche Aktionsfolgen der Argo durchzuspielen.

Wenn man Ideen zur Lösung des Problems gefunden hat, dann sollte man sie direkt aufschreiben. Das macht man am besten in der normalen Umgangssprache. Eventuell kann man hierbei schon erste Strukturierungsbegriffe (wie z.B. SOLANGE) benutzen und sie besonders hervorheben.

Power-up suchen:
SOLANGE man nicht auf einem Power-up steht, macht man Folgendes:
    WENN man vor einem Asteroid steht, dann
        muss man den Asteroid / die Asteroidreihe umfliegen
    SONST
        kann man einen Sektor weiterfliegen
zuletzt muss man das Power-up aufheben

Diese erste Version muss noch verfeinert werden. In der vorliegenden Beschreibung ist noch nicht genau festgelegt, wie man einen Asteroid / eine Asteroidreihe umfliegt.

Asteroidreihe umlaufen:
links drehen
Sektor weiterfliegen
rechts drehen
Sektor weiterfliegen
SOLANGE man rechts einen Asteroid ertastet, macht man Folgendes:
    Sektor weiterfliegen
rechts drehen
Sektor weiterfliegen
links drehen

Schritt 2 (optional)- Algorithmus entwickeln und formulieren

Bei der Entwicklung eines Algorithmus ist es günstig, auf vorgegebene Bausteine zurückzugreifen. Insbesondere hat es sich bewährt, Struktogramm-Bausteine zur präzisen Darstellung von Algorithmen zu verwenden.

Passend zur informellen Ideenbeschreibung kann man so das folgende, schon bekannte, Struktogramm entwickeln.

Struktogramm Power-up suchen

Schritt 3 - Algorithmus implementieren

Der letzte Sektor zur Entwicklung einer lauffähigen Problemlösung besteht darin, den Algorithmus in eine vom Ausführsystem vorgegebene Sprache zu übersetzen. In unserem System ist das die Programmiersprache Python.

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()

Hierbei muss man dann natürlich die Besonderheiten der vorgegebenen Sprache beachten.

Suche

v
16.5.4..4 Anleitung - Algorithmisches Problemlösen
Kopieren durch Anklicken

Rückmeldung geben