Universität Ulm - Abteilung Angewandte Informationsverarbeitung
7. Übungsblatt (28.06.01 bis 05.07.01)
zur Vorlesung Allgemeine Informatik II für Wirtschaftswissenschaftler
SS 2001
Mein kleines Handy-Telefonbuch ... Teil II (10 Punkte)
Im letzten Übungsblatt haben Sie Ihr Telefonbuch mit einem
Hash Table implementiert. Die wichtigsten Funktionen und Features
haben Sie ja bereits schon programmiert, es sind jetzt im zweiten Schritt
noch folgende Dinge zu tun:
- Das Programm soll in verschiedene Module aufgeteilt werden. Eine
Möglichkeit ist ein Split in ein Modul zur Typ-Definition (etwa
PhoneBookTypes), eins für die Standard-Operationen
(PhoneBookOperations) und schließlich eins für die Ein-
und Ausgabeprozeduren (PhoneBookInOut).
- Die Prozedur Insert() soll nun alphabetisch einsortieren.
- Die Datenstruktur soll flexibler gestaltet werden. Eine Variable
vom Typ PhoneBook wird nun ein Pointer auf ein Hash Table
sein und nicht mehr das Hash Table selbst. Außerdem soll der
Datentyp BookEntry ebenfalls über einen Zeiger auf den
eigentlichen Datensatz organisiert werden.
Gibt es irgendwelche Vorteile bei dieser Implementation? Muß an
den Köpfen und innerhalb der Prozeduren etwas geändert werden?
Und falls ja: Was genau? Beantworten Sie diese Fragen Ihrem Tutor!
Nützliche Hinweise:
- Um die neuen Module zu entwickeln, sollten (müssen) Sie Gebrauch von
der Copy-Paste-Methode machen. Es wird sie sehr viel Zeit kosten, alle
Prozeduren nochmals von neuem einzutippen!
- Beachten Sie bei der Modularisierung, daß die DEFINITION Files nun
auch nur diejenigen Prozedurköpfe enthalten dürfen, die Sie
den anderen Modulen zur Verfügung stellen wollen. Alles andere bleibt
verborgen.
- Denken Sie auch an die Aktualisierung der IMPORT Anweisungen.
- Die neue Insert() Prozedur läßt sich am besten mit
einer Skizze entwickeln. Sie werden eine Fallunterscheidung brauchen.
- Bei der alphabetischen Einortierung in Insert() müssen Sie
keine Rücksicht auf Groß- und Kleinschreibung nehmen. Da die
meisten Einträge in Ihrem Telefonbuch sowieso groß geschrieben
sind, ist dieses Feature ohnehin nicht sonderlich relevant.
- Wenn Sie die angesprochenen Typ-Veränderungen implementieren, sollten
Sie sich genau überlegen, welche konkreten Änderungen die
"Zwischenschaltung" von Zeigern in Ihren Prozeduren nach sich zieht. Denken Sie
daran, daß neue Pointer-Variablen immer mit NEW() initialisiert
werden müssen!
Viel Erfolg!!!