|
- // Eine Klasse, die das Programm einer
- // Turingmaschine realisiert.
- // Zustaende sind vom Typ int
- // Bandalphabet ist der Typ char
- // Anfangszustand ist Zustand in der ersten Zeile
- // Endzustand ist Zustand in der letzten Zeile
- class Programm {
- public:
- // Symbole fuer links/rechts
- enum R {links,rechts};
-
- // Erzeuge leeres Programm
- Programm ();
-
- // definiere Zustandsuebergaenge
- // Mit Angabe des Endzustandes ist die
- // Programmierphase beendet
- void zeile (int q_ein, char s_ein,
- char s_aus, R richt, int q_aus);
- void zeile (int endzustand);
-
- // lese Zustandsuebergang in Abhaengigkeit
- // von akt. Zustand und gelesenem Symbol
- char Ausgabe (int zustand, char symbol);
- R Richtung (int zustand, char symbol);
- int Folgezustand (int zustand, char symbol);
-
- // Welcher Zustand ist Anfangszustand
- int Anfangszustand ();
-
- // Welcher Zustand ist Endzustand
- int Endzustand ();
-
- private:
- // Finde die Zeile zu geg. Zustand/Symbol
- // Liefere true, falls so eine Zeile gefunden
- // wird, sonst false
- bool FindeZeile(int zustand, char symbol);
-
- enum {N=1000}; // maximale Anzahl Uebergaenge
- int zeilen; // Anzahl Zeilen in Tabelle
- bool fertig; // Programmierphase beendet
- int Qaktuell[N]; // Eingabezustand
- char eingabe[N]; // Eingabesymbol
- char ausgabe[N]; // Ausgabesymbol
- R richtung[N]; // Ausgaberichtung
- int Qfolge[N]; // Folgezustand
- int letztesQ; // Merke Eingabe und Zeilen-
- int letzteEingabe;// nummer des letzten Zu-
- int letzteZeile; // griffes.
- } ;
|