Gedächtnisprotokoll SE-3FP09-1
Softwareentwicklung III - Funktionale Programmierung, Klausur 1 WS08/09
Bearbeitungszeit: 120 Minuten
Insgesamt 70 Punkte, für jede Aufgabe insgesamt 10
Aufgabe 1
Wandeln Sie die folgenden Ausdrücke in Präfixnotation um:
1 * 3 + 2 * 3
...
Was sind Vor- und Nachteile der Infix- bzw. Präfixnotation?
Zu welchen Werten evaluieren die folgenden Ausdrücke?
...
(map car '((1 . 1) (1 . 2) (1 . 3)))
... und Dinge auf ähnlichem Niveau - was man schon so aus den Vorbereitungsaufgaben kannte.
Aufgabe 2
Aufgabe 3
Definieren Sie Funktionen, die die Länge einer Liste einmal allgemein rekursiv und einmal endrekursiv berechnen. Was sind die Unterschiede und warum macht man das?
... noch mehr glaub ich.
Aufgabe 4
Definieren Sie eine Datenstruktur für Geldbeträge, so dass jeder Geldbetrag eine zweielementige Liste aus Betrag (Zahl) und Währung (Symbol) ist.
Man sollte eine make-Funktion definieren.
Schreiben sie eine Funktion, die einen Geldbetrag mit einem gegebenen Faktor multipliziert...
... dann noch addieren, mittels assoc-Tabelle in Euro umrechnen usw., alles sehr ähnlich wie bei den Längenangaben in den Klausurvorbereitsungsaufgaben.
Aufgabe 5
Funktionen höherer Ordnung - hier sollte man wo möglich apply, reduce, map, filter etc. pp. benutzen. Alles unter Zuhilfenahme der Funktionen, die man in der Aufgabe 4 geschrieben hat.
Schreiben sie eine Funktion, die alle Geldbeträge einer Liste in Euro umrechnet.
... dann noch viele Beträge zusammenrechnen und ähnliche Späße...
Aufgabe 6
CLOS
Definieren Sie eine Klasse für Messgeräte, und eine dazugehörige generische Funktion messwert-auslesen. Definieren Sie weiterhin Klassen für:
- Thermometer, die die Temperatur messen
- Barometer, die den Luiftdruck messen
- Regenmesser, die die Regenmenge messen
- eine Wetterstation, die alles drei misst
Begründen Sie ihre Klassenhierarchie.
Beschreiben Sie das Konzept der Methodenpräzedenzlisten und begründen Sie, warum diese in CLOS nötig sind.
Beschreiben Sie die möglichen Methodenkombinationen, auch anhand des vorliegenden Beispiels (Messgeräte).
Aufgabe 7
Prolog-in-Scheme
Gegeben ein paar Relationen, etwa wie folgt:
(kamera id name hersteller zoom nochirgendwas) (anbieter id name foo bar lieferzeit garantiedauer) (angebot kamera-id anbieter-id preis)
Mit ein paar Beispieltupeln.
Stellen Sie geeignete Anfragen:
- Preis einer Kamera mit 18-fachem Zoom
- Alle Kameras, die in max. einem Tag geliefert werden
- ...
Was muss man beachten, wenn man funktionale Sprachelemente in Prolog-Programmen verwendet?