HTWK Leipzig, Fakultät IMN Prof. Dr. Sibylle Schwarz sibylle

Werbung
HTWK Leipzig, Fakultät IMN
Prof. Dr. Sibylle Schwarz
[email protected]
2.Übung zur Vorlesung Deklarative Programmierung“
”
Sommersemester 2015
gestellt am 28. April 2015
Aufgabe 2.1 (Rekursion)
Definieren und implementieren Sie die folgenden rekursiven Funktionen in Haskell:

falls n = 0
 0
1
falls n = 1
a. Fibonacci-Zahlen: fib(n) =

fib(n − 2) + fib(n − 1) sonst

0
falls n = 0



1
falls n = 1
b. Stern-Brocot-Folge: sb(n) =
sb(m)
falls
∃n ∈ : n = 2m



sb(m) + sb(m + 1) falls ∃n ∈ : n = 2m + 1
N
N
c. Funktion n01, die bei Eingabe n ∈
N die Liste [0,| 1, 0, 1,{z. . . , 0, 1}] zurückgibt
n−mal 0,1
d. Funktion fromPeano :: Nat -> Int zur Umrechnung von Peano-Zahlen in die
übliche Dezimaldarstellung der natürlichen Zahlen
(den Typ Nat der Peanozahlen müssen Sie dazu erst definieren),
e. Umkehrfunktion toPeano :: Int -> Nat
Aufgabe 2.2 (Peano-Zahlen)
a. (autotool) Definieren und implementieren Sie die Addition plus, Multiplikation
times, und die Potenzierung power auf Peano-Zahlen.
Überprüfen Sie Ihre Implementierungen mit Hilfe der Konvertierungen toPeano und
fromPeano aus der ersten Aufgabe.
b. Bestimmen Sie durch schrittweise Reduktion die Normalformen der Ausdrücke:
(a) (autotool) add ( S ( S ( S Z ) ) ) ( S ( S Z ) )
(b) mult ( S Z ) ( S ( S Z ) )
(c) pot ( S ( S ( S Z ) ) ) (S ( S Z ) )
Aufgabe 2.3 (Strukturelle Induktion)
Zeigen Sie durch strukturelle Induktion, dass
a. die Addition der Peanozahlen assoziativ ist,
b. die Addition der Peanozahlen kommutativ ist,
c. für jede Peanozahl x gilt: mult x ( S Z ) = x
d. für jede Peanozahl x gilt: mult ( S Z ) x = x
e. für jede Peanozahl x gilt: pot ( S Z ) x = S Z
Übungsaufgaben, Folien und weitere Hinweise zur Vorlesung finden Sie online unter
www.imn.htwk-leipzig.de/~schwarz/lehre/ss15/dp.
Herunterladen