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

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:

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!