22.08.2013 Aufrufe

Grundlagen der Informatik I “Programmierung”

Grundlagen der Informatik I “Programmierung”

Grundlagen der Informatik I “Programmierung”

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

Für eine korrekt implementierte Prozedur r mit formalen Argumenten yr und abstrakten Vor- und<br />

Nachbedingungen prer bzw. postr gilt<br />

{ prer(Ar,entity)} entity.r(Ar) { postr(Ar,entity)}<br />

wp(entity.r(Ar) , postr(Ar,entity)) ≡ prer(Ar,entity)<br />

Bei unqualifizierten Aufrufen wird Current für entity eingesetzt und <strong>der</strong> Ausdruck vereinfacht.<br />

Abbildung 4.4: Verifikationsregeln für Prozeduraufrufe<br />

In einem Korrektheitsbeweis müssen wir nun versuchen, die Nachbedingung post eines Prozeduraufrufs<br />

entity.r(A1,...,An) zu schreiben als post ≡ postr(A1,...,An,entity). Gelingt dies, so können wir<br />

die schwächste Vorbedingung durch Einsetzen in prer(A1,...,An,entity) erstellen.<br />

Beispiel 4.3.4 (Verifikation eines Prozeduraufrufs)<br />

In <strong>der</strong> Klasse ARRAY[INTEGER] sei die Routine sort ohne formale Argumente und ohne Vorbedingung<br />

deklariert und habe als Nachbedingung ∀i:lower..upper-1 . item(i)

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!