states:examples:start
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
— | states:examples:start [2024/08/31 12:03] (aktuell) – angelegt - Externe Bearbeitung 127.0.0.1 | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | ====== Zustandsübergangsdiagramme - weitere Beispiele ====== | ||
+ | ===== 1a. Geheimnisvoller Automat ===== | ||
+ | Eine Maschine besitzt zwei Tasten a und b, mit denen man Wörter eingeben kann, sowie eine Lampe, die rot, blau, gelb oder grün leuchtet. Unten siehst Du das Zustandsdiagramm der Maschine. Da alle auslösenden Ereignisse gleichartig sind (Drücken einer Taste) schreiben wir statt "Taste a drücken" | ||
+ | \\ \\ | ||
+ | **Aufgabe: | ||
+ | \\ \\ | ||
+ | **Beispiele: | ||
+ | * aabaa => Nach Eingabe des Wortes leuchtet die Lampe blau | ||
+ | * abaab => Nach Eingabe des Wortes leuchtet die Lampe gelb | ||
+ | * abb => Nach Eingabe des Wortes leuchtet die Lampe rot | ||
+ | * aabb => Nach Eingabe des Wortes leuchtet die Lampe rot | ||
+ | * aababa => Nach Eingabe des Wortes leuchtet die Lampe grün | ||
+ | * usw. | ||
+ | |||
+ | |||
+ | {{ : | ||
+ | |||
+ | [[.automat1: | ||
+ | |||
+ | ===== 1b) Umsetzung als Java-Programm ===== | ||
+ | {{ youtube> | ||
+ | < | ||
+ | |||
+ | <div class=" | ||
+ | |||
+ | <script type=" | ||
+ | Automat1 a1 = new Automat1(); | ||
+ | String wort = Input.readString(" | ||
+ | a1.verarbeiteWort(wort); | ||
+ | |||
+ | class Automat1 { | ||
+ | |||
+ | | ||
+ | |||
+ | void tasteADrücken() { | ||
+ | if(zustand == " | ||
+ | | ||
+ | } else { | ||
+ | | ||
+ | } | ||
+ | } | ||
+ | |||
+ | void tasteBDrücken() { | ||
+ | if(zustand == " | ||
+ | | ||
+ | } else { | ||
+ | | ||
+ | } | ||
+ | } | ||
+ | |||
+ | void verarbeiteWort(String wort) { | ||
+ | zustand = " | ||
+ | | ||
+ | // i zählt von 0 bis zur Länge des Wortes - 1 | ||
+ | for(int i = 0; i < wort.length(); | ||
+ | |||
+ | | ||
+ | | ||
+ | | ||
+ | tasteADrücken(); | ||
+ | } else if(buchstabe == " | ||
+ | tasteBDrücken(); | ||
+ | } | ||
+ | } | ||
+ | |||
+ | println(" | ||
+ | } | ||
+ | |||
+ | } | ||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | ===== 1c) Zustandsübergangstabelle ===== | ||
+ | Erstelle die Zustandsübergangstabelle! \\ \\ | ||
+ | [[.automat1: | ||
+ | |||
+ | ===== 2a. Baue selbst einen Automaten! ===== | ||
+ | Zeichne das Zustandsdiagramm einer Maschine wie bei Aufgabe 1, deren Licht genau dann grün leuchtet, wenn das Wort mit einer geraden Anzahl von a‘s endet. | ||
+ | Ein Wort, das mit 0 a‘s endet, soll nicht zum Aufleuchten des grünen Lichts führen. | ||
+ | |||
+ | [[.automat2: | ||
+ | |||
+ | |||
+ | ===== 2b. Umsetzung als Java-Programm ===== | ||
+ | Setze den in Aufgabe 2 gebauten Automaten in ein Java-Programm um. Gerne kannst Du dafür eine Kopie des Programms aus Aufgabe 1a als Grundlage verwenden! | ||
+ | |||
+ | [[.automat2a: | ||
+ | |||
+ | ===== 2c. Zustandsübergangstabelle ===== | ||
+ | Erstelle die Zustandsübergangstabelle! | ||
+ | |||
+ | [[.automat2b: | ||
+ | |||
+ | |||
+ | ===== 3. " | ||
+ | Zeichne das Zustandsdiagramm einer Maschine mit zwei Tasten 1 und 2, mit Hilfe derer man beliebige Dezimalzahlen eingeben kann, die nur die Ziffern 1 und 2 besitzen. Die Maschine soll einen Zustand „teilbar durch 3“ besitzen, der genau dann erreicht wird, wenn die entstandene Dezimalzahl durch 3 teilbar ist. \\ \\ | ||
+ | **Bemerkung: | ||
+ | |||
+ | [[.automat3: | ||