Exkurs - Fehlersuche
Fehler im Ablaufmodell
Die Modellierung von Abläufen ist eine anspruchsvolle Tätigkeit. Bei komplexeren Abläufen kommt es daher recht oft vor, dass man Fehler macht und nicht alles richtig bedenkt.
Das folgende Ablaufmodell zur Simulation einer Ampel enthält einen solchen Modellierungsfehler.
Die Fallunterscheidung in der Wiederholungsanweisung ist nicht als Mehrfachfallunterscheidung angelegt. Alle Fallunterscheidungen werden der Reihe nach durchlaufen. Änderungen in einer Fallunterscheidung wirken sich dann bei den folgenden Fallunterscheidungen sofort aus.
Fehler im Ablaufmodell lassen sich natürlich vor einer Implementierung finden. Mit Hilfe einer Trace-Tabelle kann man sich den Ablauf Schritt für Schritt klar machen.
Fehlersuche im Programm
Oft zeigen sich Fehler im Ablaufmodell erst bei der Implementierung. Man hat ein Programm passend zum Ablaufmodell erstellt - nur, es leistet nicht das, was es soll. Was tun?
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.
# Eingabe
anzahlTakte = int(input('Anzahl der Takte: '))
# Verarbeitung
zustand = 'rot'
print(zustand)
zaehlerTakte = 0
while zaehlerTakte < anzahlTakte:
if zustand == 'rot':
zustand = 'rot-gelb'
print(zustand)
if zustand == 'rot-gelb':
zustand = 'gruen'
print(zustand)
if zustand == 'gruen':
zustand = 'gelb'
print(zustand)
if zustand == 'gelb':
zustand = 'rot'
print(zustand)
zaehlerTakte = zaehlerTakte + 1
# Ausgabe
if zustand == 'rot':
print('an-aus-aus')
if zustand == 'rot-gelb':
print('an-an-aus')
if zustand == 'gruen':
print('aus-aus-an')
if zustand == 'gelb':
print('aus-an-aus')