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