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