• Keine Ergebnisse gefunden

Programming by Contract

N/A
N/A
Protected

Academic year: 2022

Aktie "Programming by Contract"

Copied!
1
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

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

Referenzen

ÄHNLICHE DOKUMENTE

• Invarianten einer Komponente sind allgemeine, unver¨anderliche Konsistenzbe- dingungen an den Zustand einer Komponente, die vor und nach jedem Aufruf eines Dienstes gelten..

Untersuchen Sie die Fallbeispiele der Softwarekatastrophen (Beginn des Kapitels 1 der Materialsammlung) auf Nichteinhalten der in Ab- schnitt 1.1 diskutierten Qualit¨

Zeigen Sie, dass das Parkplatzproblem genau eine L¨ osung der am Ende von Kapitel 3.1 spezifizierten Art f¨ ur alle Eingabegr¨ oßen besitzt, die die Vorbedingungen erf¨ ullen?.

Underflow soll nur in dem Falle auftreten d¨ urfen, wenn das (exakte) Ergebnis im Absolutwert kleiner als FLT MIN ist5.

[r]

Konzipieren Sie gem¨ aß Seite 38 der Materialsammlung eine eigene Ex- ceptionhierarchie unter der Ahnenklasse exception und benutzen Sie diese Exceptions in geeigneten Methoden

Testen Sie auch hier das Programm durch vor¨ ubergehendes absichtlich- es Einbauen von Fehlern in die Algorithmen, um die Zusicherungen greifen zu

Benutzen Sie das Tool valgrind zur ¨ Uberpr¨ ufung von Zeiger- Dereferenzierungen und zur ¨ Uberpr¨ ufung der richtigen Freigabe von dynamisch allokierten Speicherbereichen am