Kapitel 11 - Grundlagen der Programmiersprachen - DdI
Kapitel 11 - Grundlagen der Programmiersprachen - DdI
Kapitel 11 - Grundlagen der Programmiersprachen - DdI
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
<strong>11</strong>-21<br />
E[true]u=wahr,<br />
E[false]u=falsch.<br />
Für bedingte Ausdrücke:<br />
E[ if then else ]u=<br />
E[]u, falls E[]u=wahr,<br />
E[]u, falls E[]u=falsch.<br />
Für Konstanten:<br />
E[]u=.<br />
Für Bezeichner:<br />
E[]u=u().<br />
Für Funktionsanwendungen:<br />
E[()]u=<br />
E[ρ(u())](D[ fun (π(u()))=ρ(u());<br />
val π(u())=E[]u]υ(u())),<br />
Erläuterung: Die Semantik eines Funktionsaufrufs erhält man wie folgt: Man wertet den<br />
Funktionsrumpf ρ(u()) aus. Das muß in <strong>der</strong> Umgebung υ(u()) geschehen, in <strong>der</strong><br />
die Funktion deklariert wurde. Diese Umgebung reichert man mittels D einerseits<br />
an um die Funktionsdeklaration fun ... selbst, denn muß ja innerhalb von <br />
bekannt sein (um Rekrusionen zu ermöglichen). An<strong>der</strong>erseits ergänzt man die Bindung<br />
des aktuellen Parameters , <strong>der</strong> in <strong>der</strong> Umgebung u, also vor Aufruf, mittels<br />
E[]u ausgewertet wird, an den formalen Parameter π(u()), d.h. man<br />
deklariert den formalen Parameter in <strong>der</strong> Umgebung υ(u()) neu.<br />
Für boolesche Ausdrücke:<br />
E[ = ]u=E[]u = E[]u,<br />
E[ ≠ ]u=E[]u ≠ E[]u,<br />
E[true]u=wahr,<br />
E[false]u=falsch.<br />
Die Funktionen D[a], E[a] usw. heißen auch Denotationen von a. Die Funktionensemantik<br />
heißt danach auch denotationale Semantik.<br />
Beispiele:<br />
1) Wir bestimmen die Semantik eines einfachen Programms P. P sei<br />
val x=1;<br />
val y=3;<br />
(read(z); (y*(z+x))).<br />
Für einen beliebigen Eingabewert α:int gilt: