Übungen - Kunstautomat - Python
Endliche Automaten steuern Geräte
In vielen modernen Verkaufsautomaten befindet sich ein kleiner Computer, der den Verkaufsautomaten steuert. Natürlich haben diese Computer keine Tastatur, keine Maus und oft auch keinen Bildschirm. Man kann kann jedoch mit Hilfe von Tasten mit ihnen interagieren.
Bei der Programmierung eines endlichen Automaten kann man sich an einem endlichen Automaten orientieren. Deshalb untersuchen wir auf dieser Seite, wie man einen endlichen Automaten in Python programmieren kann. Wir verwenden dazu folgenden endlichen Automaten:
Im Simulator wird das Verhalten des endlichen Automaten mit Hilfe eines Zustandsdiagrammes beschrieben. Mann kann das Verhalten eines endlichen Automaten auch beschreiben, indem man die Überführungsfunktion und die Ausgabefunktion angibt.
Aufgabe 1: Überführungsfunktion
- Die folgende Tabelle stellt (unvollständig!) die Überführungsfunktion des untenstehenden endlichen Automaten dar. Gib mindestens 3 weitere Zeilen der Tabelle an.
Zustand | Eingabe | Folgezustand |
---|---|---|
0 | 1€ | 1 |
... | ... | ... |
- Implementiere die Überführungsfunktion des endlichen Automaten in Python. Beginne mit dem folgenden Code:
def ueberfuehrungsfunktion(aktuellerZustand, eingabe):
if aktuellerZustand == "0" and eingabe == "1€":
folgezustand = "1"
if aktuellerZustand == "0" and eingabe == "Ware":
folgezustand = "0"
# ...
return folgezustand
- Teste deine Überführungsfunktion in einem Python-Dialog:
>>> ueberfuehrungsfunktion("0", "1€")
'1'
>>> ueberfuehrungsfunktion("0", "Geld")
'0'
>>> ueberfuehrungsfunktion("1", "1€")
'2'
>>> ueberfuehrungsfunktion("2", "Ware")
'0'
...
Aufgabe 2: Ausgabefunktion
- Die folgende Tabelle stellt (unvollständig!) die Ausgabefunktion des untenstehenden endlichen Automaten dar. Gib mindestens 3 weitere Zeilen der Tabelle an.
Zustand | Eingabe | Ausgabe |
---|---|---|
0 | 1€ | nichts |
... | ... | ... |
- Implementiere die Ausgabefunktion des endlichen Automaten in Python. Beginne mit dem folgenden Code:
def ausgabefunktion(aktuellerZustand, eingabe):
if aktuellerZustand == "0" and eingabe == "1€":
ausgabe = "nichts"
if aktuellerZustand == "0" and eingabe == "Ware":
ausgabe = "nichts"
# ...
return ausgabe
- Teste deine Ausgabefunktion in einem Python-Dialog:
>>> ausgabefunktion("0", "1€")
'nichts'
>>> ausgabefunktion("0", "Geld")
'nichts'
>>> ausgabefunktion("2", "1€")
'1€'
>>> ausgabefunktion("2", "Ware")
'Ware'
...