Programmiersprachen
LVA 185.208, VU, 3 Ects, 2012 S

3. Übungsaufgabe

Entwickeln Sie in einer stark typisierten funktionalen Sprache (zum Beispiel ML oder Haskell) ein Programm zur Anmeldung von StudentInnen zu Lehrveranstaltungen, Abgabegesprächen, Prüfungen und so weiter. Man soll jederzeit neue Lehrveranstaltungen anlegen können. Zu Lehrveranstaltungen können jederzeit neue Anmeldearten (z.B. Anmeldung zur Prüfung am 22.6.) hinzugefügt werden, wobei entsprechende Anmeldezeiträume (von, bis) und möglicherweise leere Listen von Einschränkungen festgelegt werden. Eine Einschränkung bezieht sich darauf, dass sich nur Personen anmelden können, die entsprechend einer von mehreren möglichen anderen Anmeldearten angemeldet bzw. nicht angemeldet sind. Beispielsweise kann man sich nur zu einem Abgabegesprächstermin anmelden, wenn man auch zur Lehrveranstaltung angemeldet ist. Zu einem Prüfungstermin kann man sich nur anmelden, wenn man bereits zu einem von mehreren möglichen Abgabegesprächsterminen angemeldet ist. Zu einem Prüfungstermin kann man sich aber nicht anmelden, wenn man schon zu einem anderen Prüfungstermin angemeldet ist. Zur Vereinfachung werden alle StudentInnen nur durch einen String repräsentiert. Neben Funktionen zur Anmeldung von Studierenden werden auch Abfragemöglichkeiten benötigt, die auf einfache Weise feststellen lassen, wer wofür angemeldet oder nicht angemeldet ist.

Die Daten sollen beim absichtlichen Beenden des Programms nicht verloren gehen, sondern in einer Datei gespeichert werden. Die Datenmengen bleiben klein. Es ist daher problemlos möglich, alle Daten beim Programmstart einzulesen und vor Beendigung neu zu schreiben.

Bei dieser Aufgabe kommt es darauf an, Daten zu verwalten. Dies scheint in Widerspruch zu modernen funktionalen Sprachen zu stehen. Bei genauerer Betrachtung ergeben sich aber viele Lösungsmöglichkeiten.

ML:

Zur Programmierung in ML verwenden Sie am besten Objective Caml. Dieses System erweitert ML unter Anderem um objektorientierte Konzepte, die einen eher imperativen Programmierstil erlauben würden. Schränken Sie sich bitte auf die Verwendung funktionaler Konzepte der Sprache ein. Verzichten Sie auf die objektorientierten Erweiterungen.

Haskell:

Informationen zu Haskell (beispielsweise die Sprachdefinition) finden Sie auf der Haskell-Seite. Sie haben die Wahl zwischen GHC und Hugs. GHC ist ein eher umfangreiches und effizientes System bestehend aus einem Compiler (ghc) und Interpreter (ghci) und eignet sich auch für größere Anwendungen, bringt aber vielleicht einen etwas höheren Einlernaufwand mit sich. Sie können gleich eine einigermaßen vollständige Entwicklungsumgebung mit mehreren Werkzeugen installieren. Hugs ist ein einfacheres auf einem Interpreter basierendes System, das für die Lösung dieser Aufgabe vollkommen ausreicht.
Complang
Puntigam
   Kontakt
   Research
   Lehre
      OOP
      Typsysteme
      EP2
      FOOP
      Prog.spr.
      frühere Lehre
         LVAs 2017 W
         LVAs 2017 S
         LVAs 2016 W
         LVAs 2016 S
         LVAs 2015 W
         LVAs 2015 S
         LVAs 2014 W
         LVAs 2014 S
         LVAs 2013 W
         LVAs 2013 S
         LVAs 2012 W
         LVAs 2012 S
            PK
            FOOP
            Prog.spr.
               1. Aufgabe
               2. Aufgabe
               3. Aufgabe
         LVAs 2011 W
         LVAs 2011 S
         LVAs 2010 W
         LVAs 2010 S
         LVAs 2009 W
         LVAs 2009 S
         LVAs 2008 W
         LVAs 2008 S
         LVAs 2007 W
         LVAs 2007 S
         LVAs 2006 W
         LVAs 2006 S
         LVAs 2005 W
         LVAs 2005 S
         LVAs 2004 W
         LVAs 2004 S
         LVAs 2003 W
   Links
Sitemap
Kontakt
Schnellzugriff:
vorige Aufgabe
Links:
Objective Caml
Haskell
GHC
Hugs
Fakultät für Informatik
Technische Universität Wien
Anfang | HTML 4.01 | Datenschutzerklärung | letzte Änderung: 2012-06-21 (Puntigam)