20.01.2015 Aufrufe

Kapitel 11 - Grundlagen der Programmiersprachen - DdI

Kapitel 11 - Grundlagen der Programmiersprachen - DdI

Kapitel 11 - Grundlagen der Programmiersprachen - DdI

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.

<strong>11</strong>-22<br />

B[P](α)=E[(y*(z+x))]((D[ val x=1; val y=3]∅)+{z=α}).<br />

Hierbei ist<br />

D[ val x=1; val y=3]=D[ val y=3] ° D[ val x=1].<br />

Im einzelnen:<br />

D[ val x=1]∅=∅+{x=E[1]∅}={x=1},<br />

D[ val y=3]{x=1}={x=1}+{y=3}={x=1,y=3}.<br />

Folglich gilt:<br />

B[P](α)=E[(y*(z+x))] {x=1,y=3,z=α}.<br />

Setzen wir u={x=1,y=3,z=α}, so folgt:<br />

E[(y*(z+x))]u=(E[y]u*E[(z+x)]u)=(E[y]u*(E[z]u+E[x]u))<br />

=(u(y)*(u(z)+u(x)))=(3*(α+1)).<br />

Damit ist bewiesen, daß die Semantik des Programms P, dargestellt durch die<br />

berechnete Funktion, lautet:<br />

B[P](α)=3*(α+1).<br />

2) Wir bestimmen die Semantik von P':<br />

val c=1;<br />

fun f x = if x=0 then c else f(x-1);<br />

(read(x);f(x)).<br />

Für einen beliebigen Eingabewert α:int gilt:<br />

B[P'](α)=E[f(x)]((D[ val c=1; fun f x= if x=0 then c else f(x-1)]∅)+{x=α}).<br />

Hierbei ist<br />

D[ val c=1; fun f x= if x=0 then c else f(x-1)]=<br />

D[ fun f(x)= if x=0 then c else f(x-1)] ° D[ val c=1].<br />

Im einzelnen:<br />

D[ val c=1]∅=∅+{c=E[1]∅}={c=1},<br />

D[ fun f x= if x=0 then c else f(x-1)]{c=1}=<br />

{c=1}+{f=(x, if x=0 then c else f(x-1),{c=1})}=<br />

{c=1,f=(x, if x=0 then c else f(x-1),{c=1})}.<br />

Folglich gilt:<br />

B[P'](α)=E[f(x)] {x=α, c=1, f=(x, if x=0 then c else f(x-1),{c=1})}.<br />

Setzen wir u={x=α, c=1, f=(x, if x=0 then c else f(x-1),{c=1})}, so folgt<br />

E[f(x)]u=E[ if x=0 then c else f(x-1)]<br />

(D[ fun f x= if x=0 then c else f(x-1); val x=E[x]u]υ(u(f)))=<br />

E[ if x=0 then c else f(x-1)]<br />

(D[ fun f x= if x=0 then c else f(x-1); val x=E[x]u]{c=1})=<br />

(*) E[ if x=0 then c else f(x-1)]{x=α, c=1, f=(x, if x=0 then c else f(x-1),{c=1})}=<br />

E[c]u=u(c)=1, falls E[x=0]u=wahr, d.h., falls u(x)=0,

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!