Prof. Dr. Manfred Schmidt-Schauß Künstliche Intelligenz/Softwaretechnologie Fachbereich Informatik und Mathematik/ Institut für Informatik Goethe-Universität Frankfurt am Main Grundlagen der Programmierung 2 Sommersemester 2016 Allgemeine Hinweise Webseite zur Veranstaltung Die Webseite zur Veranstaltung ist http://www.informatik.uni-frankfurt.de/~prg2 Anmeldung zur Übung Für die Teilnahme an der Übung ist eine Anmeldung erforderlich. Melden Sie sich bis Donnerstag, den 14. April, 23:55h online für die Übungen an. Die Anmeldeseite ist http://anmeldung.sd.uni-frankfurt.de/auge Zur Anmeldung benötigen Sie Ihren HRZ-Account, den Sie mit der Einschreibung an der GoetheUniversität erhalten haben. Abgabe der Übungen • Gruppenabgaben sind nicht erlaubt. Arbeit in Lerngruppen ist jedoch erwünscht und angeraten, lediglich das Aufschreiben der Lösung sowie das Kommentieren und Testen der Programme sollte individuell geschehen. • Bitte notieren Sie auf Ihrer Abgabe Ihren Namen, Ihre Matrikelnummer den Namen Ihrer Tutorin/Ihres Tutors. • Legen Sie die Abgabe bitte mittwochs vor der Vorlesung in den entsprechenden Kasten Ihrer Tutorin bzw. Ihres Tutors (im Hörsaal VI). Alternativ (falls Sie nicht (pünktlich) zur Vorlesung erscheinen können) können Sie Ihre Abgabe bis Mittwoch 09:00h (z.B. schon am Dienstag) auch in den weißen Briefkasten neben Zimmer 216 (2.Stock, Robert-Mayer-Str. 11-15) einwerfen. • Zu implementierende Programme sind stets auch zu dokumentieren und zu testen. Testaufrufe mit geeigneten Werten sind der Lösung beizufügen! • Bitte beachten Sie, dass zu Ihrer Lösung zugehöriger Quellcode sowohl gedruckt abgegeben als auch per E-Mail (als E-Mail-Anhang in Form einer .hs-Datei) an Ihren Tutor gesendet werden muss! Der Quellcode ist bis mittwochs bis 9.15h an den Tutor bzw. die Tutorin zu schicken. Die E-Mail-Adressen der Tutorinnen und Tutoren sind: 1 Tutor/in Chutipong Bruhns E-Mail-Adresse [email protected] Maria Enterlein [email protected] Luke Ewig [email protected] Axel Hanczak [email protected] Patrick Hoff [email protected] Noah Hummel [email protected] Aleksey Koshovy [email protected] Jia-Ming Lao [email protected] Patrick Pech [email protected] Sascha Rauh [email protected] Julian Stobbe [email protected] Tung Le Trong [email protected] Prüfung (Klausur) Die Modulabschlussprüfung findet als 120-minütige Klausur statt. Die Klausurtermine sind: • Ersttermin: Montag, 25. Juli um 9h • Zweittermin: Freitag, 07. Oktober um 9h Die Klausur hat einen Umfang von 100 Klausurpunkten (KP). Die Klausur ist bestanden, wenn 50 KP erreicht wurden. Durch Übungen können bis zu 20 KP als Bonuspunkte erreicht werden. Die Note der Prüfung ergibt sich anhand der folgenden Tabelle, wobei Punkte hier die Summe der in der Klausur erreichten Punkte und der Bonuspunkte meint: ab ab ab ab ab 50 54 58 62 66 Punkte: Punkte: Punkte: Punkte: Punkte: 4,0 3,7 3,3 3,0 2,7 ab ab ab ab ab 70 74 78 82 86 Punkte: Punkte: Punkte: Punkte: Punkte: 2,3 2,0 1,7 1,3 1,0 Regeln zur Vergabe der Bonuspunkte: • Es gibt sieben Aufgabenblätter zu Teil 1 im Gesamtumfang von 640 Übungspunkten (ÜP) (Blatt 1: 40 ÜP, Blatt 2–7: je 100 ÜP) • Es gibt fünf Aufgabenblätter zu Teil 2 im Gesamtumfang von 500 Übungspunkten (Blatt 8–12: je 100 ÜP) • Voraussetzung für die Anrechnung: In jedem der beiden Teile, muss eine Lösung zu einer Aufgabe in der Übungsgruppe vorgestellt (vorgerechnet) werden. • Formel für die Anrechnung: Seien ÜP1 die erzielten Übungspunkte in Teil 1 und ÜP2 die erzielten Übungspunkte in Teil 2, und es wurde zweimal vorgerechnet, dann ergeben sich die BonusKlausurpunkte durch die Formel min(ÜP2 , 375) min(ÜP1 , 480) + 8, 5 · 480 375 D.h. um den vollen Bonus zu erhalten, genügt es in beiden Teilen jeweils einmal vorzurechnen und jeweils 75 % der Übungspunkte zu erreichen. 11, 5 · 2 Hinweise zum Haskell-Interpreter und Editoren • Zum Interpretieren der Haskell-Programme verwenden wir den GHCi (Interpreter des Glasgow Haskell Compiler). Auf den Rechner der RBI ist dieser über das Kommando ghci startbar. Für die Installation auf dem eigenen Rechner ist die Installation der Haskell-Platform empfohlen, die auch den GHCi enthält. Die Haskell-Platform ist über http://hackage.haskell.org/platform/ für viele Betriebssysteme verfügbar. • Quelltexte in Haskell müssen in Dateien mit der Endung .hs gespeichert werden1 . Zum Bearbeiten der Quelltexte benötigen Sie einen Texteditor. Verwenden Sie kein Textverarbeitungsprogramm wie MS Word oder OpenOffice! Unter Linux stehen z.B. die Editoren kate, gedit, vim und emacs zur Verfügung. Für MS Windows sind z.B. Notepad++ (http://notepad-plus-plus.org/) oder vim (http:// www.vim.org/download.php) empfehlenswert. Für Mac OS sei TextWrangler (http://www.barebones.com/products/textwrangler) empfohlen. • Für alle Editoren empfiehlt es sich die folgende Einstellung vorzunehmen, die Ihnen das Programmieren sehr erleichtern wird: Haskell berücksichtigt die Einrückung beim Verarbeiten des Quelltexts. Dadurch kann man viele Klammerungen und Trennungen durch Semikolons weglassen. Haskell zählt dabei für einmaliges Drücken der Tab-Taste 8 Leerzeichen, viele Editoren zeigen jedoch weniger Leerzeichen an. Daher sollte entweder die Tabulatorbreite im Editor auf 8 gesetzt werden, oder noch besser: Tabulatoren sollten automatisch vom Editor durch Leerzeichen ersetzt werden. • Nachdem Sie die Haskell-Platform installiert haben und die Benutzung des Editors geübt haben, sollten Sie die Benutzung des GHCi üben. Interpreter-Kommandos beginnen mit einem Doppelpunkt, einige wesentliche Kommandos sind: – mit :quit können Sie den Interpreter verlassen. – mit :load Dateiname können Sie Quelltext laden – mit :reload können Sie die zuletzt geladene Datei neu laden (z.B. wenn Sie sie im Editor verändert und gespeichert haben) – mit :help erhalten Sie eine Übersicht über die GHCi-Kommandos Man kann die Interpreter-Kommandos auch verkürzt eingeben, d.h. z.B. :l statt :load, :r statt :reload, :q statt :quit. • Im Interpeter können Sie Ausdrücke direkt auswerten lassen (indem Sie eben gerade keinen Doppelpunkt am Anfang verwenden). Das letzte berechnete Ergebnis ist dabei über den Namen it (für “es”) verfügbar, was beim Testen oft hilfreich ist. Einige Beispiele dafür sind: Prelude> 10+5*3 25 Prelude> it 25 Prelude> it*it 625 Prelude> it + 5 630 • Schließlich empfielt es sich, im GHCi die Pfeil-oben / Pfeil-unten Tasten auszuprobieren: Damit können Sie zu zuvor eingegebenen Aufrufen springen, ohne diese erneut einzutippen. 1 Als Variante kann auch Literate Haskell (siehe http://www.haskell.org/haskellwiki/Literate_programming) verwendet werden, wobei in diesem Fall die Dateiendung .lhs lautet. 3