Java – Station6 - RoRo

Werbung
Java – Station6:
Automatisch rechnen
St
ah
tür l-
Fall
tür
Geheimtü
r
Eic
h
g
an
rh
Vo
ent
ür
Diese Station verschafft Ihnen einen kleinen Einblick in die Automatentheorie.
Haus
1. Das Verlies
tür
Nebenstehende Figur soll die Zimmer einer Burg charakterisieren, wie sie ein
Hof
Anwender Ihres Programms am Ende durchlaufen kann. Man sagt die Zimmer sind
Gang
„Zustände“ (states) und die Türen sind „Übergänge“ (transitions). Eine solche Situation
tritt in der Informatik immer wieder auf, z.B. beim Einlesen von Realzahlen, beim
Verwenden von Dateinamen, beim Übersetzen von Java – Quelltext, Interpretieren von
Java – Bytecode oder beim Suchen von Worten in MS-Word.
KaminDer Name „Automatentheorie“ (state-machines) kommt daher, dass auch
zimmer
Treppe
Fahrkartenautomaten mit dieser Theorie beschrieben werden können.
Betrachten Sie sich das Verlies nochmals in einer Tabelle bei der die Zustände in
Zeilen, die Übergänge in Spalten aufgetragen sind. Beide Formen der Darstellung
Schiebe
-regal
werden zu Beschreibung von Automaten eingesetzt:
Katakomben
Keller
Haustür
Gang
Hof
-
Hof
Gang
Kaminzimmer
Treppe
Keller
Katakomben
Eichentür
Kaminzimmer
Gang
-
Vorhang
Treppe
Gang
-
Stahltür
Keller
Treppe
-
Falltür
Katakomben
-
2.
MyStateMachine
Zustand
Wiederhole
Hof
Gang
Kaminzimmer
Ausgabe:
"Vor dem Haus:
-> Haustür
-> Spielende"
Ausgabe:
"Im Gang:
-> Eichentür
-> Vorhang"
Ausgabe:
"Im Kaminzimmer:
-> Falltür
-> Eichentür"
Lies Übergang
Lies Übergang
Lies Übergang
Übergang
Übergang
Übergang
Haustür
Spielende
Eichentür
Vorhang
Falltür
Eichentür
Zustand=
Gang
Zustand=
Ende
Zustand=
Kaminzi.
Zustand=
Treppe
Zustand=
Katakom.
Zustand=
Gang
Schieberegal
Katakomben
Keller
Geheimtür
Hof
Algorithmus
Neben der Theorie der Automaten ( über die noch
vieles mehr gesagt werden könnte ) gibt es auch
Verfahren, wie sie programmiert werden können; und
ein Algorithmus wird Ihnen nun hier vorgestellt:
Der Trick ist eine verschachtelte Mehrfachauswahl
innerhalb einer Schleife. Die erste Mehrfachauswahl
betrifft den Zustand, die zweite die im Zustand
möglichen Übergänge. Dieser Vorgang wird solange
wiederholt, bis der „Ende“ – Zustand erreicht ist.
bis Zustand = Ende
import java.io.*;
import PascalReader.*;
import java.lang.*;
class Dungeon {
public static void main (String args[]) throws IOException {
int state = 0; int transition;
PascalReader in = new PascalReader( new InputStreamReader( System.in ) );
while ( state != -1 ) {
switch (state) {
case 0 : {
System.out.println( "Du befindest Dich vor einem Haus" );
System.out.println( "0: Spiel beenden; 1: hineingehen" );
transition = in.readInt();
switch (transition) {
case 0 : { state = -1; break; }
case 1 : { state = 1; break; }
}
break;
}
case 1 : {
System.out.println( "Du befindest Dich im Haus!" );
System.out.println( "Ab hier wird noch programmiert!" );
state = -1;
break;
}
}
}
System.out.println( "Ende" );
in.readLine();
}
Herunterladen