Bisher wurden Algorithmen rezeptartig als feste Handlungsabfolgen beschrieben, die nacheinander durchlaufen werden und dabei ggf. einfache Fallunterscheidungen berücksichtigen. In der Automatentheorie steht weniger das Befolgen eines Rezeptes im Mittelpunkt als das Einnehmen verschiedener Zustände, zwischen denen unter festgelegten Bedingungen Übergänge stattfinden. Dies macht die Algorithmen flexibler im Umgang mit Eingaben aus der Umwelt, wodurch sie zudem leichter zu erweitern sind.
Ziel: Durch eine zustandsbasierte Modellierung sollen Algorithmen flexibler werden und einfacher zu erweitern.
Ein einfaches Beispiel für einen Automaten mit zwei Zuständen ist eine LED, die über einen Taster an- und wieder ausgeschaltet werden kann. Das folgende Diagramm stellt dies übersichtlich dar.
wenn Taste T gedrückt
programmiert werden kann, sondern zusätzliche Strukturen benötigt.Per Konvention erhalten Variablen, deren Wert nicht mehr geändert werden soll, eine Bezeichnung, die nur aus Großbuchstaben besteht wie z. B. AN
oder AUS
.
Unten ist ein sogenanntes Zustandsdiagramm einer Ampel zu sehen. Erläutere, wie es aufgebaut ist und ordne ihnen die vier Ampelzustände zu.
Unten ist abgebildet, wie ein Programm aussehen könnte, das das Zustandsdiagramm modelliert. Vervollständige das Programm zur Modellierung einer einfachen Ampel und baue die Ampel auf.
Tipp: Stelle zuerst den ersten Zustand wie abgebildet fertig. Mit einem Rechtsklick auf den wenn
-Block kannst du dann alle Blöcke kopieren und musst nur noch die Werte anpassen.
Erweiterung: Programmiere jeden Ampelzustand als eigene Funktion, sodass das Programm lesbarer wird.
Idee: Materialien zum Kerncurriculum Informatik im Sekundarbereich I, Niedersächsisches Kultusministerium
Bei einer klassischen Programmierung mit warte
-Blöcken wäre eine Erweiterung um eine Fußgängerampel, die zu jedem beliebigen Zeitpunkt aktiviert werden kann, unmöglich, da das Programm während des Wartens das Drücken der Fußgängerampel gar nicht mitbekommen würde. Durch die zustandsbasierte Modellierung mithilfe einer Stoppuhr lässt sich die Fußgängerampel jedoch integrieren.
Eine Fußgängerampel ist zunächst aus oder deaktiviert. Sie kann jederzeit durch einen Taster aktiviert werden, das heißt, sie zeigt rot. Sie bleibt solange rot, bis die normale Ampel ebenfalls rot zeigt und eine gewisse Mindestdauer vergangen ist. Die normale Ampel bleibt nun rot, während die Fußgängerampel auf grün springt. Nach einer gewissen Zeit schaltet die Fußgängerampel wieder auf rot. Nach ein paar Sekunden Rotphase für die letzten Fußgänger, die ihren Weg über die Straße noch beenden müssen, ist die Fußgängerampel wieder aus und die normale Ampel springt in die Rot-Gelb-Phase, mit der sie ihren normalen Rhythmus fortsetzt.
Entnimm der obigen Beschreibung die vier Zustände einer Fußgängerampel und die Bedingungen, unter denen vom einen Zustand in den nächsten gewechselt wird. Entwickle daraus ein Zustandsdiagramm für die Fußgängerampel. Ergänze die Übergänge von der Rotphase der normalen Ampel zur Rotphase der Fußgängerampel und von der (wieder) deaktivierten Fußgängerampel zur Rot-Gelb-Phase der normalen Ampel.
Achtung: Hier liegen zwei Automaten vor, nämlich die normale Ampel und die Fußgängerampel, daher gibt es auch zwei Startzustände.
Ergänze die Fußgängerampel inkl. Taster auf dem Steckbrett und ergänze das Programm der Ampel (siehe oben) um die Zustände der Fußgängerampel.
Tipp: Da der Taster jederzeit gedrückt werden kann, benötigt man eine Wahrheitswert-Variable tasterGedrueckt
, die auf wahr
gesetzt wird, wenn der Taster gedrückt wurde, damit sich das Drücken speichern lässt, bis es relevant wird. Die Abfrage wenn Taster gedrückt
kann in jedem Zustand einzeln integriert werden oder nur einmal in der wiederhole fortlaufend
-Schleife.
Rücklink (öffnet in neuem Tab): Taster
Idee: Materialien zum Kerncurriculum Informatik im Sekundarbereich I, Niedersächsisches Kultusministerium
Ein Automat (auch: abstrakte Maschine) ist in der Informatik ein Modell zur Beschreibung einer Datenverarbeitung. Er befindet sich anfangs in seinem Startzustand. Abhängig von der nächsten Eingabe (z. B. das Ablaufen einer Zeit oder das Drücken eines Tasters) und des aktuellen Zustands erfolgt der Übergang in einen Folgezustand. Auch zu diesem gibt es wiederum einen Folgezustand, der abhängig von der nächsten Eingabe und dem aktuellen Zustand erreicht wird. Es kann einen oder mehrere Endzustände geben, die keinen Folgezustand haben, wenn der Ablauf des Automaten vollständig ausgeführt wurde. Wenn der Automat endlich viele Zustände hat, spricht man von einem endlichen Automaten (auch: Zustandsmaschine, Zustandsautomat, engl. finite state machine).
Ein Zustandsdiagramm veranschaulicht das Verhalten eines endlichen Automaten. Die Zustände werden mit einem Kreis oder abgerundeten Rechteck dargestellt. Die Übergänge werden mit Pfeilen dargestellt, an denen die Bedingung für den Übergang steht. Der Startzustand wird mit einem zusätzlichen Pfeil markiert, an den manchmal zusätzlich start
geschrieben wird. Der ggf. vorhandene Endzustand wird durch einen doppelten Rahmen markiert.
Eine Stoppuhr besteht aus zwei Tastern und einem Display. Mit dem einen Taster kann die Zeitmessung gestartet bzw. fortgeführt und gestoppt bzw. pausiert werden. Mit dem anderen Taster wird die Zeit wieder auf null zurückgesetzt.
Zeichne ein Zustandsdiagramm für die Stoppuhr. Implementiere dann dein Modell.
Tipp: Lege eine Variable für die Zeit an. Nutze die Zeitgeber-Blöcke, um diese Variable um 1 hochzuzählen, wenn (mehr als) 1000 Millisekunden vergangen sind.
Rücklinks (öffnen in neuem Tab): Taster, OLED-Display, LC-Display
Entwickle ein Automatenmodell für einen Timer. Gehe dazu von einer Startzeit von 15 Sekunden aus.
Zusatz: Ergänze eine Möglichkeit, um die Startzeit vom Anwender festlegen zu lassen.
Auf einen Parkplatz kommt man häufig erst, wenn man einen Parkschein gezogen hat. Danach öffnet sich die Schranke und man kann auf den Parkplatz fahren. Die Schranke schließt sich automatisch wieder, nachdem das Auto hindurchgefahren ist. Beim Verlassen des Parkplatzes muss man wiederum zuerst den bezahlten Parkschein einlesen lassen, bevor sich die Schranke öffnet und automatisch wieder schließt, nachdem ein Auto hindurchgefahren ist.
Das Verhalten der Parkplatzschranke soll auf dem Steckbrett simuliert werden. Dazu wird aus Pappe ein “Auto” geschnitten, das durch die mittlere Spalte des Steckbretts “fährt”.
Rücklinks (öffnen in neuem Tab): Taster, LDR, Servo
Idee: Materialien zum Kerncurriculum Informatik im Sekundarbereich I, Niedersächsisches Kultusministerium