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