Hinweis: Nach Read.Char ist Streams.stdin.count entweder 1 oder 0, je nach dem, ob Lesen geklappt hat oder nicht. Mit Streams.stdin.eof und Streams.stdin.error könnte man im letzteren Fall unterscheiden, woran es gelegen hat. Für diese Aufgabe spielt das allerdings keine Rolle.
DEFINITION Rational; TYPE Number = RECORD num: LONGINT; (* numerator *) den: LONGINT; (* denominator, > 0 *) END; PROCEDURE Add(op1, op2: Number; VAR result: Number): BOOLEAN; PROCEDURE Sub(op1, op2: Number; VAR result: Number): BOOLEAN; PROCEDURE Mul(op1, op2: Number; VAR result: Number): BOOLEAN; PROCEDURE Div(op1, op2: Number; VAR result: Number): BOOLEAN; PROCEDURE Cmp(op1, op2: Number): INTEGER; (* return -1, 0, 1, if op1 is less than, equal, or greater than op2 *) END Rational.Sie beschreibt ein Modul für das Rechnen mit einfachen Brüchen. (Für die Oberon-Bibliothek würde man dieses Modul anders formulieren, aber es geht zunächst nur um die Programmiersprache.) Für jede der vier Grundrechenarten gibt es eine Funktion, die TRUE liefern soll, wenn die Operation ausgeführt werden konnte, und FALSE bei Überlauf oder Division durch Null.
Implementieren Sie dieses Modul. Auf alle Überlauftests dürfen Sie vorerst verzichten. Verwenden Sie zum Kürzen von Brüchen das Modul für den größten gemeinsamen Teiler aus den Übungen.
Schreiben Sie ein weiteres Modul zum Testen Ihrer Implementierung. Es braucht nicht mehr zu können, als vier ganze Zahlen einzulesen, die als Zähler und Nenner von zwei Brüchen interpretiert werden, deren Summe, Differenz, Produkt, Quotient und Vergleichsresultat auszugeben ist.
Erzeugen Sie ein Makefile, um Ihre Module zu übersetzen und zu einem Testprogramm zusammenzubinden.
abgabe oolib *.od *.om MakefileAus den Kommentaren in Ihren Quellen soll hervorgehen, um welche Aufgabe es sich jeweils handelt und für wen sie gewertet werden soll (maximal drei Personen je Arbeitsgruppe). Jedes Mitglied einer Arbeitsgruppe sollte in der Lage sein, Fragen zur eingereichten Lösung zu beantworten.
Weitere Hinweise zur Vorlesung und zu den Übungen finden Sie im WWW unter "http://www.mathematik.uni-ulm.de/sai/ws97/oolib/" . Die Beispielprogramme können Sie sich aus den Verzeichnissen unter "/www/thales/ftp/pub/vorlesungen/ws97/oolib/zb" holen.