Das bisherige Programm zur Verwaltung von Personendaten soll nun auf rekursiven Prozeduren umgestellt werden.
Dazu sind die im folgenden abgedruckten Module vorgegeben:
DEFINITION MODULE Items; (*bisher hiess dieses Modul ``Persons.d''*) FROM StdIO IMPORT FILE; TYPE Item; PROCEDURE WriteItem(f: FILE; obj: Item); PROCEDURE ReadItem(f:FILE; VAR obj: Item):BOOLEAN; END Items.
DEFINITION MODULE Lists; (* basiert auf Modul ``Items.d'' *) FROM StdIO IMPORT FILE; TYPE List; PROCEDURE isEmpty(l: List):BOOLEAN; PROCEDURE bListA1(f: FILE; n: CARDINAL):List; (* rekursive Erzeugung einer einfach verketteten * Liste mit n Elementen; * die Elemente stehen in der Liste in derselben * Reihenfolge wie sie gelesen werden, also ``aufsteigend'' *) PROCEDURE bListA2(f: FILE; n: CARDINAL; VAR p:List); (* wie bListA1, nur via VAR-Parameter *) PROCEDURE bListD1(f: FILE; n:CARDINAL): List; (* rekursive Erzeugung einer einfach verketteten * Liste mit n Elementen; * die Elemente stehen in der Liste in umgekehrter * Reihenfolge wie sie gelesen werden, * also ``absteigend'' (descending) *) PROCEDURE bListD2(f: FILE; n:CARDINAL; VAR p: List); (* wie bListD1, nur via VAR-Parameter *) PROCEDURE printListA(f: FILE; p:List); (* rekursive Ausgabe der Listenelemente von `vorne her' *) PROCEDURE printListD(f: FILE; p:List); (* rekursive Ausgabe der Listenelemente von `hinten her' *) END Lists.
Beide Definitionsmodule wie auch ein Hauptmodul Main.m2, das Modul Items.m2 und eine Datei mit Testdaten phone.list können aus dem Katalog
/www/thales/ftp/pub/vorlesungen/ss97/prog/blatt7
kopiert werden.
Implementieren Sie das Modul Lists.m2!
Viel Erfolg!