Beispiel - Simulation einer Ampel
Ampelzyklus
Bei einer Ampel werden zyklisch immer wieder die folgenden Ampelzustände durchlaufen.
Ziel ist es, ein Programm zu entwickeln, mit dem man das Verhalten einer Ampel simulieren kann.
Ablaufmodell
Zur Simulation einer Ampel wurde das folgende Ablaufmodell erstellt. Hier gibt der Benutzer die Anzahl der Ampeltakte vor. In jedem Ampeltakt soll die Ampel in den nächsten Ampelzustand gehen. Nach dem Durchlaufen aller Takte soll abschließend der erreichte Ampelzustand ausgegeben werden.
Aufgabe 1
Welche Ausgabe soll das dargestellte Verfahren erzeugen, wenn der Benutzer die Zahl 2 (bzw. 4 bzw. 27) eingibt?
Implementierung
Hier eine Implementierung zum gezeigten Struktogramm:
Wenn man das Programm ausführt, dann ergeben sich merkwürdige Ergebnisse:
>>>
Anzahl der Takte: 5
an-aus-aus
Aufgabe 2
Teste selbst das Programm mit verschiedenen Eingabewerten. Stimmen die Ergebnisse immer mit deinen Erwartungen überein?
Fehlersuche
Das Programm liefert bei jeder Eingabe dieselbe Ausgabe. Irgend etwas stimmt hier nicht. Python liefert erst einmal keine Hinweise, wo sich der Fehler befinden könnte.
In solchen Fällen hat es sich bewährt, in das Programm zusätzliche Ausgabeanweisungen einzubauen, so dass man die Werte der Variablen während der Verarbeitungsschritte mitverfolgen kann.
Aufgabe 3
Analysiere mit Hilfe der Ausgaben den tatsächlichen Ablauf. Dann sollte dir auch klar werden, was hier die fehlerhaften Ausgaben verursacht. Korrigiere den Fehler und teste das Programm erneut.
Aufgabe 4
Wenn das Programm nicht zu umfangreich ist, ist es günstig, das Programm Schritt für Schritt abzuarbeiten. Mit dem Python Tutor lässt sich das leicht realisieren.
Das Schritt-Für-Schritt-Durchlaufen eines Programms lässt sich auch in Entwicklungsumgebungen mit einem Debugger realisieren.
Recherchiere selbst, wie das in der Entwicklungsumgebung Thonny geht.