Ausblick
Andere Darstellungen und Begriffe
Statt von konkreten Ereignissen und Effekten geht man manchmal auch nur von abstrakten Symbolen wie A
/B
/C
und X
/Y
/Z
aus.
Dann spricht man meistens von Eingaben statt Ereignissen und Ausgaben statt Effekten.
In unserer Darstellung von Zustandsdiagrammen hat ein Effekt bzw. eine Ausgabe außerdem immer zu einem Zustandsübergang gehört (linkes Bild). Manchmal werden Zustandsdiagramme anders dargestellt: Effekte/Ausgaben können stattdessen auch als Teil eines Zustands gesehen werden (rechtes Bild). Sie werden in dieser alternativen Form immer ausgelöst, wenn das System in den entsprechenden Zustand übergeht.
Bei dieser Darstellung spricht man in der Fachwissenschaft von Moore-Maschinen oder Moore-Automaten. Die Form, die wir kennengelernt haben, nennt man Mealy-Maschinen oder Mealy-Automaten.
Anwendungen in anderen Bereichen der Informatik
Zustandsbasierte Modelle haben in der Informatik viele Anwendungen. Hier ein kleiner Überblick.
Theoretische Informatik: Reguläre Ausdrücke und formale Sprachen
Das obige Zustandsmodell ist genau dann im Zustand 2, wenn du nach dem Start einmal den Knopf A und dann einmal/dreimal/fünfmal/… den Knopf B drückst (genauer: mit einer ungeraden Anzahl).
Solche Muster kann man mit sogenannten regulären Ausdrücken beschreiben. Das sieht hier zum Beispiel so aus: AB(BB)*
(erst A
, dann B
und dann beliebig oft zweimal B
).
In manchen Programmen kann man damit auch in Texten nach Mustern wie "Großbuchstaben in Klammern" suchen (mehr dazu im Abschnitt Sprachbeschreibung mit regulären Ausdrücken).
Allgemein hängen reguläre Ausdrücke eng mit zustandsbasierten Modellen zusammen, wenn man die Effekte weglässt und Zustände als Endzustände mit einem Doppelkreis markiert, falls sie zum Muster passen.
Mehr dazu lernst du im Abschnitt Spracherkennung mit Automaten. Darin lernst du mit Kellerautomaten und Turingmaschinen auch noch weitere zustandsbasierte Konstrukte kennen.
Technische Informatik: Zustandsbasierte Schaltwerke
Im Kapitel Digitaltechnik lernst du, dass man auf Basis zustandsbasierter Modelle auch Daten in elektronischen Schaltungen speichern kann. Auf dieser Grundlage kann man zustandsbasierte Systeme mit einfacher Hardware umsetzen. Entscheidend zur Entwicklung von Schaltungen mit Speichern ist es, Zustandsübergänge in einer Schalttabelle darzustellen.
Praktische Informatik: Programmieren mit Zuständen
Bei der Programmierung können zustandsbasierte Modelle dir bei der Strukturierung deines Codes helfen. Du kannst zum Beispiel ein Textabenteuer in Python programmieren und dich dabei an einem Zustandsdiagramm orientieren:
zustand = "WARTE_AUF_LOS"
print("Auf Los geht's los!")
while True:
eingabe = input()
if zustand == "WARTE_AUF_LOS":
if eingabe == "Los":
print("Vor dir steht ein furchteinflößendes Monster. Was machst du?")
print("A: Du rennst weg.")
print("B: Du machst dich für einen Kampf bereit.")
zustand = "ENTSCHEIDUNG"
if zustand == "ENTSCHEIDUNG":
if eingabe == "A":
print("Das Monster rennt dir hinterher.")
# ...
zustand = "VERFOLGUNGSJAGD"
if eingabe == "B":
print("Das blaue Monster bietet dir Kekse an.")
# ...
zustand = "KEKSE"
# if zustand == "VERFOLGUNGSJAGD":
# ...
# if zustand == "KEKSE":
# ...
Eine ähnliche Vorgehensweise steckt auch hinter den eingebetteten Simulationen in diesem Kapitel. Wenn du Lust dazu hast, kannst du versuchen, selbst ein zustandsbasiertes Modell am Mikrocontroller zu implementieren.