Programmiersprachen
LVA 185.208, VL 2.0, 2008 S

2. Übungsaufgabe

Entwickeln Sie in ML oder Haskell (oder einer anderen stark typisierten funktionalen Programmiersprache) ein Programm zur Verwaltung von Software jeder Art (z.B. Texte, Filme, Musikstücke, Computerspiele, etc.) auf unterschiedlichen Datenträgern. Datenträger können physisch sein (wie Buch, CD, DVD, Festplatte und Speicherkarte) oder abstrakt (wie Web-Adresse oder Adresse innerhalb eines anderen Datenträgers). Von jeder Software kann es mehrere Versionen geben, und jede Version kann auf mehreren Datenträgern gespeichert sein. Daten wie Titel, Autoren und Entstehungszeit sollten für jede Software (sofern bekannt) angegeben sein, weitere Kommentare können dazugegeben werden. Implementieren Sie geeignete Suchmöglichkeiten nach Software. Jeder physische Datenträger hat einen eindeutigen Eigentümer und kann verborgt sein. Es soll möglich sein, Datenträger zu kaufen bzw. zu verkaufen (also den Eigentümer zu ändern) und auszuborgen bzw. an andere zu verborgen wobei entsprechende Daten erfasst werden sollen. Die Daten sollen beim absichtlichen Beenden des Programms nicht verloren gehen, sondern persistent (in einer Datei) gespeichert werden. Die Datenmengen werden klein bleiben. 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.

Umfangreiche Informationen zu Objective Caml (z.B. ein Manual und Interpreter bzw. Compiler zum Herunterladen) finden Sie unter http://caml.inria.fr/. Falls Sie Ihr Programm in Objective Caml schreiben, schränken Sie sich bitte auf die funktionalen Konzepte der Sprache ein. Verzichten Sie auf die Verwendung der objektorientierten Erweiterungen, die einen Programmierstil ähnlich dem von Java erlauben würden.

Informationen zu Haskell (beispielsweise die Sprachdefinition) finden Sie unter http://www.haskell.org/. Sie haben die Wahl zwischen GHC und Hugs. GHC (http://www.haskell.org/ghc/) is ein eher umfangreiches 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. Der GHC-Compiler produziert relativ effizienten Code. Hugs (http://www.haskell.org/hugs/) ist ein im Vergleich zu GHC 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
         LVAs 2011 W
         LVAs 2011 S
         LVAs 2010 W
         LVAs 2010 S
         LVAs 2009 W
         LVAs 2009 S
         LVAs 2008 W
         LVAs 2008 S
            Prog.spr.
               1. Aufgabe
               2. Aufgabe
               3. Aufgabe
            FOOP
         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
nächste Aufgabe
Links:
Objective Caml
Haskell
Hugs
GHC
Fakultät für Informatik
Technische Universität Wien
Anfang | HTML 4.01 | Datenschutzerklärung | letzte Änderung: 2008-04-08 (Puntigam)