Goethe-Center for Scientific Computing (G-CSC) Goethe-Universität Frankfurt am Main Grundlagen der Programmierung 1 (PRG-1) (Übung, Wintersemester 2014/2015) S. Reiter, M. Rupp, Dr. A. Vogel, Dr. K. Xylouris, Prof. Dr. G. Wittum Aufgabenblatt 1 (Abgabe: Mo., 3.11., 12h) Aufgabe 1 (5+5 Punkte, LEO ist abzählbar) a) Skizzieren Sie die schematische Darstellung eines Ableitungsbaums, der alle Wörter der Sprache LEO enthält. Beschreiben Sie in Worten, wie der Baum konstruiert wird. b) Geben Sie in Worten einen Algorithmus an, der jedem Wort aus dem LEO-System in eineindeutiger Weise eine natürliche Zahl zuordnet. Dabei bedeutet eineindeutig, dass Ihr Verfahren jedem Wort genau eine natürliche Zahl und jeder natürlichen Zahl genau ein Wort zuordnen soll. (Tipp: Sie können den Ableitungsbaum als bekannt voraussetzen.) Aufgabe 2 (10 Punkte, Addition mit Turingmaschine) Eine Turingmaschine mit einseitig unendlichem Band besteht aus einem unendlich langen Speicherband, bei dem in jedem Speicherfeld eine Eins oder eine Null stehen kann. Zudem besitzt die Maschine einen Lese-/Schreibkopf, der das aktuelle Feld lesen und beschreiben kann. Die Maschine befindet sich immer in einem definierten Zustand. Jeder Schritt der Turingmaschine führt folgende Anweisungen im aktuellen Zustand aus: (1) Es wird das Zeichen an der aktuellen Position gelesen. (2) Es wird ein Zeichen auf die aktuelle Position geschrieben. (3) Der Lesekopf wird nach Links oder Rechts bewegt. (4) Die Maschine geht in einen Zustand über (kann auch der aktuelle sein). Die Schritte (2)-(4) hängen dabei davon ab, in welchem Zustand sich die Maschine aktuell befindet und welches Zeichen gelesen wird. Die Maschine befinde sich am Anfang in Zustand 1 und der Endzustand sei durch E bezeichnet. Der Zustandsablauf kann somit durch eine Tabelle von Zustandsanweisungen beschrieben werden: Zustand Eingabe 1 0 1 2 ... Operation 1, r 1, l .. Folgezustand 1 2 E Die Eingabe für die Turingmaschine bestehe aus einer Kette von n ≥ 1 und m ≥ 0 Einsen, die von einer Null getrennt sind. Die Einserketten sollen natürliche Zahlen darstellen. |1|1|1|....|1| 0 |1|1|1|....|1| 0|0|... | {z } | {z } n m Geben Sie die obige Zustandstabelle an, die die beiden Zahlen auf dem Eingabeband addiert (d.h. es soll die Folge von n + m Einsen auf dem Band stehen). Bei Programmende soll der Lese-/Schreibkopf wieder ganz links auf dem Band stehen. Aufgabe 3 (10 Punkte, das PG-System) Es sei Σ = {−, p, g} ein Alphabet. Wir betrachten nun das sogenannte PGSystem von Worten aus Σ∗ . Beispiele für Wörter im PG-System sind: −p−g−− − −p − −g − − − − − − − p − − − − − g − − − − − − − −. Im allgemeinen haben die Worte des PG-Systems die Gestalt −... − p − ... − g − ...−, wobei die Anzahl der − Zeichen nach dem g die Summe der − Zeichen vor dem p und zwischen dem p und g ist. Sie können also p als “plus“ und g als “gleich“ interpretieren und die Ketten aus “−“-Zeichen kodieren die natürlichen Zahlen. Entwerfen Sie, analog zum LEO-System aus der Vorlesung, einen Satz von (möglichst wenigen) Regeln, die die Worte des PG-Systems erzeugen. Hinweis: Die Abgabe der schriftlichen Übungszettel erfolgt vor der Vorlesung. Bitte schreiben Sie auf die Lösung Ihren Namen und die Übungsgruppe. Heften Sie gegebenenfalls mehrere Zettel zusammen.