Algorithmen und Programmierung WS 15/16

Werbung
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?
Herunterladen