Aufgabenblatt 2 (Parkplatz, Ausdrücke, maybemap, Musik)

Werbung
Technische Fakultät
AG Praktische Informatik
Universität Bielefeld
Übung zu den Vorlesungen Algorithmen &
Datenstrukturen
Programmieren in Haskell
Wintersemester 2013/2014
Aufgabe 2.1 (2 Punkte): Schreiben Sie ein Haskell -Modul mit 2 Funktionen, die die
Anzahl der Autos bzw. der Motorräder auf einem Parkplatz berechnen. Die Eingabe
ist jeweils die Anzahl der Fahrzeuge und die Anzahl der Räder. Wie in der Vorlesung
besprochen, sollen die Funktionen die Anforderungen an die Eingabe überprüfen und im
Fehlerfall die Verletzung melden.
Aufgabe 2.2 (6 Punkte):
Angenommen, es gäbe keine Regel ”Punkt- vor Strichrechnung”. Auf wie viele Arten
kann die Formel 1 + 2 · 3 · 4 + 5 · 7 aufgefasst und ausgerechnet werden? Einige Beispiele:
((1 + 2) · (3 · ((4 + 5) · 7)) = 567
(1)
(1 + ((((2 · 3) · 4) + 5) · 7) = 204
(2)
(1 + ((2 · ((3 · 4) + 5)) · 7)) = 239
(3)
Die verschiedenen Klammerungen als Bäume dargestellt:
+
·
·
1
·
+
+
+
4 5
= 567
·
7
·
5
4
·
7
+
·
1 2 3
·
1
7
+
2
·
5
3 4
2 3
= 204
= 239
Skizzieren Sie Ihren Lösungsweg (es ist nicht notwendig alle Klammerungen aufzuzählen)!
Aufgabe 2.3 (2 Punkte): Implementieren Sie die Haskell Funktion maybemap, die –
analog zu der Funktion map – eine Funktion f :: a -> b auf eine Liste des Datentyps
Maybe a anwendet und eine Liste von Maybe b ausgibt:
maybemap :: (a -> b) -> [Maybe a] -> [Maybe b].
1
Universität Bielefeld
Technische Fakultät
AG Praktische Informatik
Aufgabe 2.4 (4 Punkte): Übersetzen Sie die folgende Musikzeile in unsere Formelsprache für Musik. Es handelt sich um ein (stark vereinfachtes) Element aus einem Klassiker
der Blues-Rock-Geschichte. Von daher wäre E-Gitarre das geeignete Instrument.
Alle notwendigen Informationen zum Notensatz können Sie http://www.clavio.de/
wissen/noten-lernen/ entnehmen.
Für Tüftler: Natürlich können Sie Ihr in Haskell verfasstes Stück auch abspielen.
Wie das funktioniert, können Sie in dem HowTo “Musik mit Haskell” auf http://www.
techfak.uni-bielefeld.de/ags/pi/lehre/AuDIWS13/#haskell erlesen.
Abgabe: Mittwoch, 6.11.2013, 16:00 Uhr. Bearbeitung in 2er Gruppen (alle Namen und
Tutor auf die Abgabe schreiben).
2
Herunterladen