Professor Dr. F. Schweiggert Abteilung Angewandte Informationsverarbeitung 15. Februar 2001
Johannes MayerBlatt 13


[c]



Allg. Informatik für WiWi (WS 2000/2001)


Abgabetermin: 15. Februar 2001

1 Offene Feldparameter (optional 20 Punkte)

Ihnen ist das folgende Oberon-Programm als Grundgerüst vorgegeben:

MODULE StringOps;

   IMPORT Read, Write, Conclusions;

   CONST NameMaxLen = 30;
         AddressMaxLen = 80;

   TYPE Name = ARRAY NameMaxLen OF CHAR;
        Address = ARRAY AddressMaxLen OF CHAR;

   VAR name: Name;
       adresse: Address;

   PROCEDURE CharCount(s: ARRAY OF CHAR; ch: CHAR): INTEGER;
   (* Zaehlt, wie oft das Zeichen ch in s vorkommt. Der String
    * s muss nicht durch ein Null-Byte terminiert sein. In diesem
    * Fall sollen alle Zeichen des Arrays nach ch durchsucht werden.
    *)

   PROCEDURE LowerCase(VAR s: ARRAY OF CHAR);
   (* Wandelt alle Grossbuchstaben in s in Kleinbuchstaben um.
    * s muss kein Null-Byte am Ende besitzen. In diesem Fall
    * Sollen alle Zeichen des Arrays bearbeitet werden.
    *)

BEGIN
   (*** Name und Adresse einlesen ***)

   Write.String("Name: ");
   Read.Line(name);

   Write.String("Adresse: ");
   Read.Line(adresse);

   Write.Ln;

   (*** Anzahl der a's in Name und Adresse bestimmen ***)

   Write.String("Anzahl von 'a' in Name und Adresse: ");
   Write.Int(CharCount(name, "a") + CharCount(adresse, "a"), 0);
   Write.Ln;

   Write.Ln;

   (*** Name und Adresse in Kleinbuchstaben umwandeln ***)

   Write.String("Name in Kleinbuchstaben: ");
   LowerCase(name);
   Write.String(name);
   Write.Ln;

   Write.String("Adresse in Kleinbuchstaben: ");
   LowerCase(adresse);
   Write.String(adresse);
   Write.Ln;
END StringOps.
In diesem Programm sind die beiden Prozeduren CountChar und LowerCase noch nicht implementiert. Sie haben nun die Aufgabe, diese beiden Prozeduren zu schreiben und das zugehörige Definitions-Modul zu erstellen.

(Hinweis: Durch das Importieren des Moduls Conclusions erhalten sie auch bei Laufzeitfehlern, die einen Core-Dump verursachen, eine Fehlermeldung. Beispiele für Fehler dieser Art: Zugriff auf nicht vorhandenes Array-Element, Verlassen einer Funktionsprozedur ohne Wert zurückzugeben. Es empfiehlt sich also dieses Modul zu verwenden!)





Viel Erfolg!


Johannes Mayer, 2001-02-15