Dies ist eine alte Version des Dokuments!
Inhaltsverzeichnis
Weitere Aufgaben zu Zustandsdiagrammen
Aufgabe 1:
Wasser kann drei Aggregatszustände annehmen. Zeichne ein Zustandsdiagramm!
Aufgabe 2:
Eine Lampe besitzt einen Stecker zum Einstecken in die Steckdose sowie einen Taster zum Ein- und Ausschalten. Erstelle ein Zustandsdiagramm!
Aufgabe 3:
(Rechenschaftsablage)
Aufgabe 4:
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.
Erkläre, bei welchen Wörtern die Lampe grün leuchtet!
Aufgabe 5:
Zeichne das Zustandsdiagramm einer Maschine wie bei Aufgabe 4, deren Licht genau dann grün leuchtet, wenn das Wort mit einer geraden Anzahl von a‘s endet.
Programmiere eine Klasse mit den Methoden aEingeben() und bEingeben(), die nach jedem Methodenaufruf ausgibt, in welchem Zustand sie sich befindet und ob das bis dahin eingegebene Wort mit einer geraden Anzahl von „a“-s endet.
// Nur zum Testen: ZweiAErkenner zae = new ZweiAErkenner(); zae.aEingeben(); zae.aEingeben(); zae.bEingeben(); zae.aEingeben(); zae.aEingeben(); zae.aEingeben(); zae.aEingeben(); zae.bEingeben(); // Hier die Klasse: class ZweiAErkenner { int zustand = 1; public void aEingeben() { if(zustand == 3) { zustand = 2; } else { zustand++; } ausgabe(); } public void bEingeben() { zustand = 1; ausgabe(); } public void ausgabe() { println("Zustand: " + zustand); println("Wort endet mit gerader Anzahl von a's: " + (zustand == 3)); } }
Aufgabe 6:
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.
Bem.: Ist noch nichts eingegeben, so ist dies als 0 zu werten und damit auch durch 3 teilbar.
Erklärung der Lösung:
Eine Zahl ist genau dann durch drei teilbar, wenn ihre Quersumme durch 3 teilbar ist. Im Zustand „durch drei teilbar“ ist die Quersumme durch drei teilbar, lässt also beim Teilen durch 3 den Rest 0. Im Zustand QR1 lässt die Quersumme beim Teilen durch 3 den Rest 1, im Zustand QR2 lässt die Quersumme beim Teilen durch 3 den Rest 2.
Programmiere eine Klasse mit den Methoden einsEingeben() und zweiEingeben(), die nach jedem Methodenaufruf die Nummer des Zustands ausgibt und zudem jeweils schreibt, ob die bisher insgesamt eingegebene Dezimalzahl durch drei teilbar ist!