Musterlösung zu Aufgabe 4 -- PersonsList.d


DEFINITION MODULE PersonsList;
IMPORT Persons;
FROM StdIO IMPORT FILE;
  CONST
     NumberOfPers = 50;
  TYPE
     Range = [1..NumberOfPers];
     RangeSet = SET OF Range;

     PersList = ARRAY Range OF Persons.PersDat;
     IndexList = ARRAY Range OF Range;
			
  TYPE CmpPersDat = PROCEDURE(Persons.PersDat, Persons.PersDat):BOOLEAN;

  PROCEDURE InitPersList(
			 fromFile: FILE;
			 VAR persList: PersList; 
			 VAR number: CARDINAL): BOOLEAN;

   (* Separator is whiteSpace - 
    * no check !!!
    * number: the actually read number of records 
    * TRUE, if number > 0, otherwise FALSE
    *)

  PROCEDURE WriteRecords(
			f: FILE; pList: PersList; 
			number : CARDINAL; ind: RangeSet);
  (* writes a set of records, defined by ind, 
   * to open stream f
   *)

  PROCEDURE Sort(	
		a: PersList;
		number: CARDINAL;
		cmp:CmpPersDat;
		VAR res: IndexList);
  (* sorts the records in ``a'' by building a sorted
   * index list ``res''
   * comparing by function ``cmp''
   *)
  
  PROCEDURE linSearch( VAR p: Persons.PersDat; number: CARDINAL;
			less, equal: CmpPersDat;
			persList: PersList;
			ind: IndexList;
			VAR res: RangeSet);
  (* the caller is responsible for consistency between
   * compare-procedures less, equal, index list ind
   * and definiton of components in p
   *
   * defines a set of indices ``res'' of list ``persList''
   * containing records matching with components 
   * defined in ``p''
   *)

END PersonsList.

Musterlösung zu Aufgabe 4 || Übungen || Vorlesung || SS 97 || SAI

Franz Schweiggert, 13.06.1997