Ubungen zu ” Grundlagen der Programm- und

Werbung
Technische Universität München
Institut für Informatik
Prof. Manfred Broy
Dr. K. Spies and A. Fleischmann
Dr. M. Spichkova and D. Ratiu
WS 2007/08
16. Januar 2008
Übungsblatt 10
Übungen zu
Grundlagen der Programm- und Systementwicklung“
”
Den Schein über die erfolgreiche Teilnahme an der Vorlesung und den Übungen erhalten
Sie mit dem Bestehen der Semestralklausur.
Der Klausurtermin ist Mittwoch, 6. Februar 2008,
von 14:00 - 15:30 Uhr im Raum 01.11.018 Konrad Zuse“.
”
Bitte melden Sie sich verbindlich zu der Klausur durch eine Mail
(mit Vorname, Name und Matrikelnummer; Betreff: “Anmeldung: Grupsy Klausur“ )
an [email protected] und [email protected] an.
An die bereits angemeldeten Teilnehmer wurde eine Bestätigung verschickt. Wer sich
angemeldet, aber keine Bestätigung erhalten hat, soll sich noch einmal anmelden.
Aufgabe 1 Funktionen höherer Stufe und Unterspezifikation
Schreiben Sie eine Sortierfunktion für eine Liste mit folgenden Eigenschaften:
Der Typ der Listenelemente ist unterspezifiziert.
Die Eigenschaft, nach der die Liste sortiert sein soll, ist unterspezifiziert.
Aufgabe 2 Rekursive Funktionen auf unendlichen Sequenzen
Gegeben sei eine unendliche Sequenz von natürlichen Zahlen, dargestellt als eine Funktion
Nat → Nat. (Diese Funktion bildet die Position in der Sequenz auf den Eintrag ab.) Wir
definieren die Funktion search, die das erste Vorkommen einer gegebener Zahl in der
Sequenz findet:
fct search = (x : Nat, seq: Nat -> Nat) Nat:
search_from_index (x, seq, 0);
fct search_from_index (x : Nat, seq: Nat -> Nat, start : Nat) Nat:
if (seq(start)=x) then start
else search_from_index (x, seq, start+1)
fi;
1
(a) Stellen Sie die Funktionen search from index0 , search from index1 ,
search from index2 , . . . auf, die die Funktion search from index approximieren.
(b) Stellen Sie eine Hypothese auf, wie der Grenzwert search from index∞ aussieht.
(c) Beweisen Sie, dass dieser Grenzwert tatsächlich der kleinste Fixpunkt ist.
(d) Für welche Werte der Eingabeparameter terminiert die Funktion? Stellen Sie für diese Werte eine Abstiegsfunktion auf und beweisen Sie, dass es sich dabei tatsächlich
um eine Abstiegsfunktion handelt.
Aufgabe 3 Funktionen höherer Stufe
Seien die Funktionen f , g und add gegeben:
f : ((N at → N at), N at → Bool), Bool → (N at → N at)
g : (N at → Bool), (N at → N at → Bool) → Seq α → Bool
add : (N at → N at) → N at
(a) Welche Stufen haben diese funktionalen Sorten?
(b) Besprechen Sie die Anwendungen der curry-Funktion zu den Funktionen f , g und
add. Auf welche der Funktionen kann die curry-Funktion angewandt werden bzw.
wann macht eine solche Anwendung überhaupt Sinn?
2
Herunterladen