Grundlagen der Informatik I “Programmierung”
Grundlagen der Informatik I “Programmierung”
Grundlagen der Informatik I “Programmierung”
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