MINT üben

Automaten implementieren

Zahlen in der Tabellenkalkulation, Preise an der Kiosk-Kasse — hier werden die Automaten zu Java-Klassen.

Dein Fortschritt:
0 / 0 Aufgaben
1

Die Zahleneingabe

14 BEAFB I–II

Eine Tabellenkalkulation prüft Eingaben in Zellen, die nur ganze Zahlen enthalten dürfen: optional ein Vorzeichen + oder -, danach mindestens eine Ziffer, ohne führende Nullen. Die Zahl 0 selbst ist erlaubt, -0 und +0 nicht. Die Abbildung zeigt den zugehörigen DEA.

DEA für ganze Zahlen
z0z1z2z3+, −01–91–90–9
Nicht eingezeichnete Übergänge führen in den Fehlerzustand zF.
  1. Stellen Sie die Verarbeitung der Eingaben -120 und +05 jeweils in einer Tracetabelle dar, die nach jedem Zeichen den Wert des Zustands angibt. (4 BE)
  2. Implementieren Sie eine Klasse GanzeZahl in einer objektorientierten Programmiersprache. Sie soll den aktuellen Zustand in einem Attribut speichern, eine Methode uebergang besitzen, die für ein übergebenes Zeichen genau einen Zustandswechsel ausführt, und eine Methode akzeptiert, die für ein übergebenes Wort zurückgibt, ob es akzeptiert wird. (7 BE)
  3. Erklären Sie, warum z1 kein Endzustand ist und warum im Zustand z2 jedes weitere Zeichen in den Fehlerzustand führt. (3 BE)

Hinweise

Hinweis zu Aufgabe a)
Eine Spalte je gelesenem Zeichen, die erste Spalte ist der Startzustand. Ist zF erreicht, bleibt der Automat dort.
Hinweis zu Aufgabe b)
Kodieren Sie die Zustände als Zahlen (z. B. zF = 4). Nutzen Sie switch über den Zustand; eine Ziffer erkennt man an c >= '0' && c <= '9'. Vergessen Sie nicht, den Startzustand in akzeptiert zu setzen.
Hinweis zu Aufgabe c)
Welche Eingabe endet in z1? Welche Eingaben beginnen mit 0 und haben weitere Zeichen?