Dr. Andreas Borchert Sektion Angewandte Informationsverarbeitung
Ingo Melzer Blatt 7


[c]



Allgemeine Informatik II (SS 1999)


Abgabetermin 24. Juni 1999

8. Recycling (10 Punkte)

Beim letzten Blatt wurde eine simple Liste implementiert, die allerdings nicht für jedes Problem, das Listen benötigt, einfach wieder genutzt werden kann. Verallgemeinern Sie daher bitte Ihre Lösung1 vom letzten Blatt, damit dieses Manko beseitigt wird.

Jedes Listenelement sollte eine Variable vom Typ Objects.Object aufnehmen können. Eine brauchbare Datenstruktur kann wieder auf Seite 112 im Skript als Grundlage gefunden werden, wobei es sich empfiehlt, ListRec als Erweiterung von Objects.ObjectRec zu definieren. Werfen Sie hierfür auch einen Blick auf Seite 165 im Skript.

Beachten Sie, daß dieses Modul für sich alleine noch nichts tut. Schreiben Sie daher ein Modul TestIntLists, das Ihr eben geschriebenes Listenmodul verwendet und lösen Sie damit die Aufgaben des letzten Blattes. Die Prozedur Merge ist im Modul TestIntLists zu implementieren. Sie dürfen gerne den Rumpf nutzen, den Sie auf dem FTP-Server finden. Bereichern Sie zusätzlich noch Ihre Listen um die Prozedur InsertN, die ein Element an der N-ten Position einfügt. Diese wird Ihnen bei der nächsten Aufgabe unter Umständen sehr nützlich sein, da dadurch präziseres Einfügen möglich wird.

9. Time Recycling (10 Punkte)

Um die Flexibilität Ihrer Listen zu zeigen, machen Sie sich nun an Listen für zeitliche Ereignisse. Dazu schreiben Sie ein Modul TimeLists, das als private Komponente im Listenrecord eine ihrer Listen enthält. Da diese Ereignisse in chronologischer Reihenfolge in der Liste sein sollten, müssen Sie zum Einfügen eine neue Prozedur Insert schreiben (dafür werden AddFirst und Append nicht mehr benötigt). Alle anderen im Definition Modul geforderten Prozeduren können direkt durch Aufrufe Ihres obigen Listenmoduls erledigt werden, das heißt, daß die neuen Prozeduren jeweils nur noch aus einer Zeile mit dem Aufruf der entsprechenden Prozedur des Listenmoduls bestehen.

Da auch dieses Modul getestet werden soll, ändern Sie den CalendarManager aus der Vorlesung so ab, daß er Ihre TimeLists verwendet. Dabei können im CalendarManager die oberen 70 Prozent fast ganz gelöscht werden.


Noch ein paar Tips:

Für alle Module dieses Blattes sind die Definition Module, die Sie auf dem FTP-Server finden, zu verwenden. Diese dürfen nicht verändert werden.


Footnotes

... Lösung1
Oder die Beispiellösung


Ingo Melzer 1999-06-09