Files
uni/ws2019/ipi/uebungen/cpp_headers/Programm.hh
T

52 lines
1.5 KiB
C++

// 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.
} ;