• Keine Ergebnisse gefunden

Semantik von Programmiersprachen – SS 2015

N/A
N/A
Protected

Academic year: 2022

Aktie "Semantik von Programmiersprachen – SS 2015"

Copied!
2
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Lehrstuhl für Programmierparadigmen

Joachim Breitner Denis Lohner breitner@kit.edu denis.lohner@kit.edu

Semantik von Programmiersprachen – SS 2015

http://pp.ipd.kit.edu/lehre/SS2015/semantik

Blatt 9: Denotationale Semantik mit Fixpunktiteration Besprechung: 08.06.2015

1. Welche der folgenden Aussagen sind richtig, welche falsch? (H)

(a) Die folgende Rekursionsgleichung definiert die Funktionf ::N⇒Neindeutig:

f(n) =

(2·f n2

fallsngerade f(n+ 1)−1 fallsnungerade

(b) Die folgende Rekursionsgleichung definiert die Funktiong::N⇒Neindeutig:

g(n) =

( g n22

fallsngerade g(n−1) fallsnungerade (c) Das FunktionalF :: (Σ*Σ)⇒(Σ*Σ) mit

F(f) =λσ.

((f(σ[x7→42]))[y7→23] fallsσ(z)≤17

σ[z7→0] sonst

gehört zur Rekursionsgleichung Q(σ) =

((Q(σ[x7→42]))[y7→23] fallsσ(z)≤17

σ[z7→0] sonst

(d) Für das FunktionalF :: (Σ*Σ)⇒(Σ*Σ) mit

F(f) =λσ.

(f(σ[y7→12]) fallsσ(x) = 13 σ[x7→10] sonst

gilt

F42(⊥)(σ) =

(⊥ fallsσ(x) = 13 σ[x7→10] sonst

(e) DJc1; (c2; c3)K=DJ(c2; c1); c3K

(f) DJ(if (x <= y) then z := x else z := y); skipKσ=σ[z7→min(σ(x), σ(y))]

(2)

2. Fixpunktiteration (H)

Gegeben sei folgendes ProgrammP:

x := 0; i := n; while (1 <= i) do (x := x + 2 * i; i := i - 1)

(a) Geben Sie das FunktionalF an, das in der denotationellen Semantik zur Schleife gehört.

(b) Berechnen SieF0(⊥),F1(⊥),F2(⊥) und F3(⊥).

(c) Geben SieFn(⊥) und FIX (F) an (ohne Beweis).

(d) Geben SieDJPKan.

3. Lokale Variablen in Blöcken (Ü)

In Kap. 5.3 haben wir dieWhile-Sprache um Blöcke mit lokalen Variablen erweitert und operationale Semantiken dafür angegeben. Erweitern Sie in diesem Abschnitt die denotationale Semantik entsprechend.

(a) Definieren SieDJ_Kfür das neue Sprachkonstrukt{ var x = a; c }. Bleibt dadurchDJ_K kompositional?

(b) Zeigen oder widerlegen Sie:

DJ{ var z = x; x := y; y := z }K=DJx := x + y; y := x - y; x := x - yK

Semantik von Programmiersprachen – Blatt 9 2

Referenzen

ÄHNLICHE DOKUMENTE

In der Vorlesung haben wir bereits die Big-Step- und Small-Step-Semantiken darauf erweitert, hier sollen Sie nun eine denotationale Erweiterung entwickeln. Statt höchstens

Berechnen Sie ein paar einfache Beispiele und versuchen Sie herauszufinden, in welcher Beziehung m, n und k zueinander stehen.. Schnelle

6.3 haben wir die While-Sprache um Blöcke mit lokalen Variablen erweitert und operationale Semantiken

Bei der Big-Step- Semantik interessiert nur der Endzustand einer Programmausf¨ uhrung, w¨ahrend eine Ableitungsfol- ge in der Small-Step-Semantik zus¨atzlich alle

Zeichen Sie dazu den Ableitungsbaum einer Ausf¨ uhrung des Programms gem¨ aß der Big-Step-Semantik f¨ ur n = −4.. Z¨ ahlschleife (

Die in der Vorlesung vorgestelle Big-Step-Semantik f¨ ur Prozeduren mit einem Parameter wertet den ¨ ubergebenen Parameter beim Aufruf aus und ¨ ubergibt nur den Wert an die

In der Vorlesung haben wir bereits die Big-Step- und Small-Step-Semantiken darauf erweitert, hier sollen Sie nun eine denotationale Erweiterung entwickeln. Statt h¨ ochstens

Berechnen Sie ein paar einfache Beispiele und versuchen Sie herauszufinden, in welcher Beziehung m, n und k zueinander stehen.. Schnelle Division (