BERGISCHE UNIVERSIT ¨AT GESAMTHOCHSCHULE WUPPERTAL
GAUSS-STRASSE 20 42097 WUPPERTAL (Korrespondenzanschrift) 42119 WUPPERTAL (Lieferanschrift) TELEX 8 592 262 bughw TELEFAX (0202) 439-2901 TELEFON (0202) 439-1
Fachbereich 7
MATHEMATIK
Prof. Dr. Hans-J ¨urgen Buhl Praktische Informatik / Numerik
e-mail: Juergen.Buhl@math.uni-wuppertal.de
Programming by Contract
WS 2003/2004 – ¨ Ubungsblatt 4 4. Dezember 2003
Ausgabe: 24. November 2003
Aufgabe 1. Integer Under-/Overflows
Schreiben Sie das Pascal-Beispiel function fakultaet(n : integer): integer aus Abschnitt 3.2 der Vorlesung nach C um und testen Sie. Benutzen Sie dabei die Version, die einen Overflow abf¨angt.
Gehen Sie analog vor beim Beispiel zur Berechnung einer nichtnega- tiven ganzzahligen Potenz einer ganzen Zahl nach dem Algorithmus von Seite 29 der Materialsammlung. Erzeugen Sie dabei im Falle der Berechnung 00 eine Exception.
Aufgabe 2. Overflow-Abfangen
Wie sehen die Fallunterscheidungen zur Vermeidung von INTEGER-Overflows und -Underflows bei den vier Grundrechenar- ten, bei sqrt()und bei sqr() aus?
(Dabei sei sqr() eine selbstdefinierte Funktion zur Berechnung des Quadrats eines ganzzahligen Arguments.)
Welche Konstanten aus welcher Headerdatei ben¨otigen Sie?
Aufgabe 3. assert
Erg¨anzen Sie die Klasse Day von Aufgabe 3 des letzten ¨Ubungsblatts um geeignete assert-Anweisungen, um Vor- und Nachbedingungen sowie Invarianten bei jeder Methode (inklusive den Konstruktoren) zu uberpr¨¨ ufen.
Erg¨anzen Sie zwei geeignete Template-Funktionen Ihres letzten C++- Kurses um eine CT ASSERT-Anweisung und testen Sie.
Aufgabe 4. unordered arguments
Wie k¨onnen Sie bei C++-Programmen den Problemfall von zwei “unor- dered” Argumenten beim Operator >=richtig in die Hand bekommen?
1