• Keine Ergebnisse gefunden

Programming by Contract

N/A
N/A
Protected

Academic year: 2022

Aktie "Programming by Contract"

Copied!
2
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 6 18. Dezember 2003

Ausgabe: 8. Dezember 2003

Aufgabe 1. Spezifikation der Potenzfunktion

a) Spezifizieren Sie eine Funktionxf zur Berechnung (echt) gebroche- ner Potenzen von x (also: 0≤f <1).

b) Schreiben Sie einen entsprechenden Algorithmus. Benutzen Sie da- bei nicht den log()sondern die Beziehungen:

xf = ( x)2f x1+f =x·xf

Aufgabe 2. Ackermann-Funktion

Die Ackermann-Funktion wird definiert als ackermann(n,m) =

If n = 0 Then m + 1

Else If m = 0

Then ackermann(n-1, 1)

Else ackermann(n-1, ackermann(n, m-1)) Spezifizieren Sie eine implementierbare Version. (Ber¨ucksichtigen Sie den m¨oglichen Floatingpoint-Overflow (Infty).) Berechnen Sie die Ackermann-Funktion f¨ur:

(n, m)∈ {(1,1),(2,2),(3,3)}

Das Abfangen von Overflows ist bei der Ackermann-Funktion be- sonders wichtig, da sie sehr schnell w¨achst: ackermann(4,2) besitzt bereits ¨uber 21000 Ziffern undackermann(4,4) ist gr¨oßer als 10101021000.

1

(2)

Aufgabe 3. Akkumulation

Bei numerischen Approximationen wird h¨aufig mit ¨aquidistanten Git- tern

x= b−a N

gerechnet. Warum ist das effiziente Verfahren der Akkumulation y=a+i∗x (i= 0,1, ..., N)

dem Verfahren

y= a∗(N −i) +i∗b N

unterlegen? Welche Werte von N sollte man bevorzugen? In welcher Reihenfolge sollte man in Analogie zur Mittelwertberechnung die ein- zelnen Rechenoperationen ausf¨uhren?

Aufgabe 4. Virtuelle Annotationsfunktionen

Schreiben Sie eine virtuelle Annotationsfunktion

MAX IN SLICE(X,A(I..J))def=

X := max

j:=I,...,JA(j)

¨ahnlich wie die Funktion ORDERED:

--: function ORDERED(A : VECTOR) return BOOLEAN

--| where

--| return for all I, J : A’RANGE => I J

--| A(I) A(J);

2

Referenzen

ÄHNLICHE DOKUMENTE

• Dazu werden die abgeleiteten Observatoren durch eine Nachbedingung unter Be- nutzung einer oder mehrerer wesentlicher Observatoren spezifiziert. • Modifikatoren werden durch

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

Geben Sie in Beispielen an, wie sich die Vorbedingungen, die Nach- bedingungen und die Invarianten in einer Kindklasse relativ zu denje- nigen einer Elternklasse verhalten sollten,

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?.

Gehen Sie analog vor beim Beispiel zur Berechnung einer nichtnega- tiven ganzzahligen Potenz einer ganzen Zahl nach dem Algorithmus von Seite 29 der

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

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