Programmiersprachen
LVA 185.208, VL 2.0, 2006 S
2. Übungsaufgabe
Entwickeln Sie in ML oder Haskell (das sind funktionale Programmiersprachen)
ein Programm zur Verwaltung vereinfachter Bankkonten. Jedes Konto soll eine
eindeutige Kontonummer, den Namen des Kontoinhabers, und die Summe des sich am
Konto befindenden Euro-Betrags (positiv oder negativ) enthalten. Weiters wird
eine Liste aller getätigten Transaktionen benötigt. Folgende Arten
von Transaktionen sollen unterstützt werden:
- Eröffnen eines Kontos
- Einzahlen auf und Abheben von einem Konto
- Überweisung von einem Konto auf ein anderes
- Änderung des Namens eines Kontoinhabers
- Ausgabe aller Daten zu einem Konto zusammen mit allen dieses Konto
betreffenden Transaktionen (in richtiger Reihenfolge) seit der letzten
solchen Ausgabe bzw. seit Kontoeröffnung
- Ausgabe aller Transaktionen (in richtiger Reihenfolge); die ausgegebenen
Transaktionen sollen auch nach (beliebigen Kombinationen) folgender Kriterien
einschränkbar sein:
- nur Transaktionen, die ein bestimmtes Konto betreffen
- oder nur Transaktionen, die einen bestimmten Kontoinhaber (der
möglicherweise mehrere Konten besitzt) betreffen; bei
Namensänderungen auch alle Konten mit anderen Namen derselben Person
- nur bestimmte Arten (auch mehrere Arten gleichzeitig) von Transaktionen
- nur die letzten n Transaktionen, die den Auswahlkriterien entsprechen
- Schließen eines leeren (= 0 Euro) Kontos; danach sind keie
Namensänderungen, Einzahlungen, Abhebungen und Überweisungen mehr
möglich, wohl aber Ausgaben entsprechender Transaktionen
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 auf
den ersten Blick in Widerspruch zu modernen funktionalen Sprachen wie ML und
Haskell zu stehen, bei genauerer Betrachtung ergeben sich aber zahlreiche
Lösungsmöglichkeiten.
Auf dem Übungsrechner (b3) sind Objective Caml als ML-Interpreter bzw.
Compiler und Hugs als Haskell-Interpreter installiert. 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 Standard-ML ein.
Verzichten Sie auf die Verwendung der objektorientierten Erweiterungen.
Informationen zu Haskell (beispielsweise die Sprachdefinition) finden Sie unter
http://www.haskell.org/,
weitere Informationen zu Hugs (Dokumentation und Download) unter
http://www.haskell.org/hugs/.