Übungen zur Vorlesung Modellierung WS 2009/2010

Werbung
Universität Paderborn
Institut für Informatik
Prof. Dr. Hans Kleine Büning
Paderborn, 15. Januar 2010
Abgabe: 25. Januar 2010, 11:15h
Übungen zur Vorlesung
Modellierung
WS 2009/2010
Blatt 12
Organisatorisches: Die Lösungen der Übungsaufgaben sind in die Kästen im D3-Flur einzuwerfen. Bilden
Sie bitte innerhalb ihrer Übungsgruppe Gruppen von 2-3 Personen zur Lösung der Aufgaben. Die Lösung
muss die Namen und Matrikelnummern derjenigen enthalten, die die Aufgaben gelöst haben sowie die
Übungsgruppennummer.
Aufgabe 40 (6 Punkte): Verifikation von Zuweisungen und bedingten Anweisungen
Ermitteln Sie bei den folgenden Verifikationsschritten jeweils die fehlende Vor- bzw. Nachbedingung bezüglich der vorgegebenen Anweisungssequenz. Geben Sie in ihrer Lösung alle Zwischenschritte und die
verwendeten Regeln an.
(a) Vorbedingung: {. . . }
a := a − 2;
Nachbedingung: {a > 5}
(b) Vorbedingung: {. . . }
u := u + 3;
v := u − 2 ∗ w;
Nachbedingung: {u > 3 und v >
1
3
· u}
(c) Vorbedingung: {a, b ∈ Z und a + 1 > 0}
if (b < 0) then
a := (−4) ∗ b;
else
a := 4 ∗ b;
Nachbedingung: {. . . }
Aufgabe 41 (12 Punkte): Korrektheit von Vor- und Nachbedingungen
Überprüfen Sie die Verifikation durch Einfügen von Zwischenschritten auf ihre Korrektheit.
1
2010
(a) Vorbedingung: {a = b2 }
a := a + 2 ∗ b + 1;
b := b + 1;
Nachbedingung: {a = (b + 1)2 }
(b) Vorbedingung: {a = b3 }
a := a − 3 ∗ b ∗ b + 3 ∗ b − 1;
b := b − 1;
Nachbedingung: {a = b3 }
(c) Vorbedingung: {. . . }
x := x + 3;
y := x − 2 ∗ z;
Nachbedingung: {x > 3 und 3y > x}
(d) Vorbedingung: {a · b ≥ 0}
if (a > b) then
begin
x := a − b;
b := b − a;
a := x;
end
else
a := b;
Nachbedingung: {a · b < 0}
(e) Vorbedingung: {x ≥ 0}
if (a > 0) then
x := 2 ∗ a;
else
x := (−2) ∗ a;
Nachbedingung: {x ≥ 0}
Aufgabe 42 (11 Punkte): Verifikation von bedingten Anweisungen
Gegeben ist folgender Programmfragment, zur Berechnung des Minimum von drei Zahlen a, b, c. Überprüfen sie den Algorithmus mit Hilfe der Regeln der Hoareschen Logik auf Korrektheit und korrigieren sie
eventuell gefundene Fehler. Sollten sie Fehler im Pseudocode korrigiert haben, so zeigen sie mit Hilfe der
Regeln der Hoareschen Logik, dass ihr Pseudocode nun das gewünschte Resultat liefert.
2
2010
Vorbedingung: {a ∈ R und b ∈ R und c ∈ R}
begin
if (a < b) then
if (c < a) then
x := c;
else
x := b;
else
if (c < b) then
x := c;
else
x := a;
end
Nachbedingung: {a ∈ R und b ∈ R und c ∈ R und x ≤ a und x ≤ b und x ≤ c}
3
2010
Herunterladen