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.

Eine Wertzuweisung entity := Ausdruck setzt den Wert <strong>der</strong> Größe entity auf den Wert des angegebenen<br />

Ausdrucks und läßt alles an<strong>der</strong>e unverän<strong>der</strong>t. 19<br />

Welche logischen Aussagen kann man nun über die Effekte einer solchen Wertzuweisung treffen? Wir wollen zur<br />

Beantwortung dieser Frage von <strong>der</strong> Nachbedingung ausgehen und versuchen, die notwendigen Vorbedingungen<br />

zu beschreiben. Da wir wissen, daß sich bei <strong>der</strong> Wertzuweisung entity := Ausdruck ausschließlich <strong>der</strong> Wert<br />

<strong>der</strong> Größe entity än<strong>der</strong>n wird, wollen wir die Nachbedingung etwas abstrakter beschreiben. Anstatt<br />

entity := Ausdruck { post}<br />

schreiben wir<br />

entity := Ausdruck { P(entity)}<br />

wobei wir P als Prädikat mit einer einzigen freien Variablen (z.B. x) ansehen. Die Aussage P(entity) drückt<br />

dann aus, daß nach Ausführung <strong>der</strong> Wertzuweisung diejenige Zusicherung gültig sein soll, die entsteht, wenn<br />

wir für x den jetzigen Zustand von entity einsetzen. Der Vorteil dieser Beschreibungsform ist, daß wir nun<br />

für die Angabe einer hinreichenden Vorbedingung das Prädikat P verwenden dürfen, ohne das dieses noch<br />

daran gebunden ist, welchen Zustand entity nach <strong>der</strong> Wertzuweisung hat.<br />

Eine hinreichende Vorbedingung – ja sogar die schwächste Vorbedingung – läßt sich mit diesem Mittel nun sehr<br />

leicht beschreiben. Soll nach <strong>der</strong> Zuweisung entity := Ausdruck die Aussage P(entity) gelten, dann muß<br />

vorher P(Ausdruck) wahr gewesen sein, da ja entity genau den Wert des Ausdrucks zugewiesen bekommt.<br />

An<strong>der</strong>s ausgedrückt: Wenn man weiß, daß ein Prädikat P für das Argument Ausdruck (also P(Ausdruck))<br />

schon vor <strong>der</strong> Wertzuweisung gilt, dann gilt das Prädikat nach <strong>der</strong> Wertzuweisung entity := Ausdruck für<br />

die Größe entity (also P(entity)). Dieser Zusammenhang wird genau durch die folgende Regel und den<br />

zugehörigen Prädikatentransformer beschrieben.<br />

{ P(Ausdruck)} entity := Ausdruck { P(entity)}<br />

wp(entity := Ausdruck , P(entity) ) ≡ P(Ausdruck)<br />

Abbildung 4.3: Verifikationsregel und Prädikatentransformer für die Wertzuweisung<br />

Erfahrungsgemäß ist diese Formulierung für Ungeübte etwas gewöhnungsbedürftig. Wir wollen sie daher an<br />

einigen Beispielen illustrieren.<br />

Beispiel 4.3.1 (Verifikation <strong>der</strong> Wertzuweisung)<br />

Betrachten wir die Wertzuweisung y:=y+1. Wenn nach ihr y

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!