WS 97/98: Algorithmen und Programmierung III - Übungsblatt 1


Abgabe bis 21.10., 16 Uhr


Aufgabe 1.1 (7 Punkte)

Bei einer Doppelkopfschlange (double-ended queue, dequeue) können Elemente an beiden Enden angehängt oder entfernt werden. Gesucht ist für einen vorgegebenen Basistyp T(z.B. importiert mittels FROM Tmanagement IMPORT T)

a) ein Definitionsmodul Dequeue,

b) ein Implementierungsmodul Dequeue, das die Schlange als Geflecht implementiert.

c) Drohen bei Deiner Doppelkopfschlange Überlauf oder Unterlauf? Wenn ja, wie werden sie behandelt?

d) Dequeue soll mit einem Hauptmodul A11 geeignet getestet werden.


Aufgabe 1.2(8 Punkte)

Für Programme, die reelle Zahlen und Matrizen ausgeben, werde ein Modul Matrizenausgabe mit folgender Schnittstelle bereitgestellt:

DEFINITION MODULE Matrizenausgabe; (* für Ausgabe auf gewissem Ausgabemedium *)
TYPE Index = [1..100];
TYPE Vektor = ARRAY Index OF REAL;
PROCEDURE ausgeben(matrix: ARRAY OF Vektor; breite: Index); (* gibt matrix aus *)
PROCEDURE fehlermelden(meldung: ARRAY OF CHAR) (* gibt Fehlermeldung aus *);
END Matrizenausgabe.


Die einzelnen Zahlen sollen in einem Format ausgegeben werden, das nicht in die Matrizenausgabe eingebaut ist, sondern Geheimnis eines anderen Moduls mit folgender Schnittstelle ist:

DEFINITION MODULE Formatierung;
PROCEDURE formatieren(unformatiert: REAL; VAR formatiert: ARRAY OF CHAR);
(* verwandelt unformatiert in formatiert *)
PROCEDURE formateinrichten(...); (* ändert das Format *)
END Formatierung.


Dieses Modul soll sich im Fehlerfall (z.B. gewünschte Formatangabe ungültig, Formatierung nicht möglich) der Prozedur fehlermelden bedienen und sich ansonsten "möglichst sinnvoll" verhalten.

a) Verfasse ein IMPLEMENTATION MODULE Matrizenausgabe!

b) Konkretisiere Formatierung und verfasse ein IMPLEMENTATION MODULE Formatierung!

c) Beachte, daß die beiden Module sich wechselseitig aufeinander beziehen! Kann dadurch etwas schiefgehen?

[wahlweise d] Teste die Module mit einem geeigneten Testmodul!



14.10.1997