Aufgabenblatt 1 - Technische Fakultät

Werbung
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
Herunterladen