Universität Bielefeld Technische Fakultät AG Praktische Informatik Übung zu den Vorlesungen Algorithmen & Datenstrukturen Programmieren in Haskell Wintersemester 2014/2015 • Die Homepage zu den Vorlesungen und der Übung: http://www.techfak.uni-bielefeld.de/ags/pi/lehre/AuDIWS14/ Dort gibt es die Folien, Übungszettel, das Skript und weitere Informationen. • Veranstalter sind: – Algorithmen & Datenstrukturen: Dr. Alexander Sczyrba – Programmieren in Haskell: Dr. Stefan Janssen • Ansprechpartner zur Organisiation der Übungen: Stefan Janssen [email protected], M3-114 • Die Übungen beginnen ab dem 13.10.2014. Es gibt 16 Übungsgruppen: http://www.techfak.uni-bielefeld.de/ags/pi/lehre/AuDIWS14/tutorien.html • Die Übungszettel werden jeden Mittwoch online bereitgestellt und in der Vorlesung verteilt. Abgabe ist die folgende Woche in der Pause der Mittwochsvorlesung. • Die praktischen Programmieraufgaben können in dem Grundstudiums-Zentrum Informatik (GZI, V2-221 bis V2-240) bearbeitet werden. Neben den Übungen haben die Tutoren Sprechstunden im GZI (V2-228) in denen sie Fragen zu der Bearbeitung der Aufgaben und dem Rechnersystem beantworten können. Aufgabe 1.1 (4 Punkte): Finden Sie heraus, ob es sich bei den hier aufgelisteten Personen um “Informatiker” handelt. Falls ja, beschreiben Sie kurz ihre Errungenschaften 1. Charles Babbage 2. John Backus 3. George Boole 4. Noam Chomsky 5. Alonzo Church 6. Marie Curie 7. Haskell Brooks Curry 8. Ernest G. Fortran 1 Universität Bielefeld Technische Fakultät AG Praktische Informatik Aufgabe 1.2 (1 Punkt): Entwickeln Sie in Haskell eine Funktion zahlWort :: Int -> String, die eine Zahl x als Argument entgegen nimmt. Gilt x == 1 soll das Ergebnis der Funktion "eins" lauten. Analog dazu für x == 2 "zwei", für x == 3 "drei" und für alle anderen Zahlen "viele". Aufgabe 1.3 (1 Punkt): Entwickeln Sie in Haskell eine Funktion isABC :: Char -> Bool, die einen Buchstaben als Argument entgegen nimmt und püft, ob dieser Buchstabe größer oder gleich ’a’ und kleiner ’d’ ist. Aufgabe 1.4 (2 Punkte): Das Spielfeld von “Schiffe versenken” besteht aus 10x10 Feldern. Die Reihen sind von 1 bis 10 durchnummeriert. Die Zeilen sind mit ’A’ bis ’J’ gekennzeichnet. Somit kann jedes Feld eindeutig mit einem Tupel (Char, Int) identifiziert werden. Schreiben Sie in Haskell eine Funktion listNamen :: [(Char, Int)], die alle 100 Feldnamen in Form von Tupeln ausgibt. Aufgabe 1.5 (2 Punkte): In Haskell werden Funktionsanwendungen in Präfix-Schreibweise notiert. Von dieser Festlegung kann man abweichen, indem man alphanumerische Bezeichner in Backquotes einschließt. So wird z.B. f a b zu a ‘f‘ b. Ermitteln Sie, welche Assoziativität und welche Bindungsstärke diesen Operatoren standardmäßig zugewiesen werden. Hinweise finden Sie beispielsweise im Haskell -Report http://www.haskell. org/onlinereport/. Wie sieht die explizite Klammerung folgender Funktion aus: fkt = [ 5 + 9 ‘div ‘ 3 .. ] !! 1 : [ 2 .. 6 ] Abgabe: Mittwoch, 22.10.2014, 16:00 Uhr. Bearbeitung in 2er Gruppen (alle Namen und Tutor auf die Abgabe schreiben). 2