TU Ilmenau, Fakultät IA FG Telematik/Rechnernetze Prof. Dr.-Ing. G. Schäfer http://www.tu-ilmenau.de/telematik/aup Algorithmen und Programmierung WS 15/16 Übungsblatt 1 Abgabe der Lösungen am 28.10.2015 in der Vorlesung Aufgabe 1 (Terme) 5 Punkte Geben Sie den Wert der folgenden Terme an und notieren Sie mindestens 4 Zwischenschritte während der Auflösung. (a) 2 + if ¬((7 − 3) < (4 + 2)) ∨ ¬true then 21 else 4 · (11 − 1) fi (b) if false ∨ ((2 · 3) < (4 + 1)) then abs(11 · 2) else 11 · 2 fi + if sign(3 · −3) < 1 then −20 else 10 · 2 fi Aufgabe 2 (Backus-Naur-Form) 2 + 8 Punkte Beschreiben Sie mittels der Backus-Naur-Form die Syntax der folgenden Konzepte: (a) eine eMail-Adresse, (b) einen Term des Typs int wie Sie ihn in der Vorlesung kennengelernt haben. Aufgabe 3 (Reguläre Ausdrücke) 3 + 2 + 2 + 3 Punkte Geben Sie je einen regulären Ausdruck in der Notation der Vorlesung an, welcher (a) alle rationalen Zahlen (dargestellt als Bruch oder Dezimalzahl) (b) alle gültigen Uhrzeiten der Form hh:mm:ss (z.B. 23 : 05 : 42) (c) alle gültigen Uhrzeiten nach US Standard (12 statt 24 Stunden gefolgt von AM oder PM ) (d) alle gültigen Datumsangaben der Form TT.MM.JJJJ (zur Vereinfachung dürfen Sie davon ausgehen, dass der Februar immer 28 Tage hat) matcht. Bitte wenden! 2 Algorithmen und Programmierung WS 15/16 Aufgabe 4 (Türme von Hanoi) Übungsblatt 1 3 Punkte In der Vorlesung wurde Ihnen der rekursive Lösungsalgorithmus für das Türme-vonHanoi-Problem vorgestellt. (a) Wie viele Bewegungen müssen Sie durchführen, um einen Turm aus fünf Scheiben vom Start zum Ziel zu bringen? (b) Schlussfolgern Sie aus der Anzahl an Bewegungen für fünf Scheiben auf die Anzahl an Bewegungen für sechs Scheiben. (c) Versuchen Sie, eine allgemeine Formel für die Anzahl an Bewegungen für beliebig hohe Türme anzugeben. Aufgabe 5 (Rekursion) 2 + 4 + 2 Punkte Ein beschränktes Maschinenmodell unterstütze als einzige Rechenoperation auf Ganzzahlen die Addition add(x,y) (x, y ∈ Z). (a) Definieren Sie in Pseudocode eine Methode mult(x,y) zur Multiplikation zweier natürlicher Zahlen x, y ∈ unter Verwendung der Additionsfunktion. Geben Sie sowohl eine rekursive als auch eine nicht-rekursive Variante an. N (b) Nutzen Sie mult(x,y) um die Funktion fact(n) zur Berechnung der Fakultät von n ∈ rekursiv zu definieren. N (c) Wie oft wird die Addition bei der Berechnung von fact(5) ausgeführt, falls mult(x,y) rekursiv definiert ist?