Praktische Informatik 1 Aufgabenblatt Nr. 3 Aufgabe 1

Werbung
Prof. Dr. Manfred Schmidt-Schauß
Künstliche Intelligenz/Softwaretechnologie
Fachbereich Biologie und Informatik/ Institut für Informatik
Johann Wolfgang Goethe-Universität Frankfurt am Main
Praktische Informatik 1
Wintersemester 2004/2005
Aufgabenblatt Nr. 3
Abgabe: Mittwoch 17. November 2004 vor! der Vorlesung
Aufgabe 1 (40 Punkte)
Gegeben seien folgende Definitionen:
f a
= g a 0
g x y = if x == 1 then y else g (x ‘div‘ 2) (y+1)
Der eingebaute Operator div liefert den ganzzahligen Anteil einer Division mit Rest, d.h. wenn
a ÷ b = c Rest d, dann ergibt div a b den Wert c. In der Definition von g wurde zusätzlich div
als Infix-Operator verwendet, dafür muss er in rückwärtige Hochkommata gesetzt werden.
Geben Sie für die folgenden Teilaufgaben jeweils sämtliche Reduktionsschritte sowie die jeweils
verwendete Regel an.
a) Werten Sie den Ausdruck f 4 in normaler Reihenfolge aus.
(8 Punkte)
b) Werten Sie den Ausdruck f 4 in applikativer Reihenfolge aus.
(8 Punkte)
c) Werten Sie den Ausdruck f 4 in verzögerter Reihenfolge aus.
(8 Punkte)
d) Werten Sie den Ausdruck f 4 in einer Reihenfolge aus, die weder der normalen, der
verzögerten noch der applikativen Reihenfolge entspricht.
(8 Punkte)
e) Leiten Sie anhand der vorhergehenden Teilaufgaben her, welche Funktionalität durch f
implementiert wird?
(8 Punkte)
1
Aufgabe 2 (25 Punkte)
Es seien folgende Definitionen in Haskell gegeben:
m1 a b c = if b == 1 then c else
if (c+a) == (b-1) then m1 a (c+a) (c+a) else m1 a (b-1) (c+a)
m2 a b c = if b == 1 then a else a + m2 a (b-1) c
m3 a b c = if b==1 then c else
if even b then (m3 a (b ‘div‘ 2) c) + (m3 a (b ‘div‘2) c)
else (m3 a ((b ‘div‘ 2)+1) c) + (m3 a (b ‘div‘2) c)
m4 a b c = if b == 1 then c else m4 a (b-1) (c+a)
a) Seien a und b natürliche Zahlen. Erklären Sie, welcher Wert durch Aufruf von mX a b a,
für X ∈ {1, 2, 3, 4}, jeweils berechnet wird?
(9 Punkte)
b) Begründen Sie, ob die durch Aufruf von mX a b a, für X ∈ {1, 2, 3, 4}, erzeugten Auswertungsprozesse bei verzögerter Auswertungsreihenfolge linear rekursiv, endrekursiv, iterativ
oder Baum-rekursiv sind.
(16 Punkte)
Aufgabe 3 (35 Punkte)
Implementieren Sie in Haskell Funktionen sfl a und sfl b,die die Summe aller Flächen der
abgebildeten regelmäßigen Figuren (a) und (b) in Abhängigkeit der Parameter x, y und r bzw.
a, b und c berechnen.
Hinweis: In Haskell kann man mit sqrt die Wurzel einer Zahl berechnen.
a
r
a
b
y
90°
x
b
x
90°
c
(a)
(b)
Testen Sie die implementierten Funktionen mit geeigneten Werten.
2
Herunterladen