• Keine Ergebnisse gefunden

Komplexe Beispiele I

N/A
N/A
Protected

Academic year: 2022

Aktie "Komplexe Beispiele I"

Copied!
19
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Besprechung Blatt 8 WP-Kalk¨ul Vorbereitung Blatt 9

Algorithmen und Datenstrukturen 09

Stefan Ploner

21. Dezember 2011

(2)

Besprechung Blatt 8 WP-Kalk¨ul Vorbereitung Blatt 9

1 Besprechung Blatt 8 Fragen

2 WP-Kalk¨ul

Syntax und Rechenregeln Pr¨a- und Postinkrement Bedingungen

Schleifen

3 Vorbereitung Blatt 9 Hinweise

(3)

Besprechung Blatt 8 WP-Kalk¨ul Vorbereitung Blatt 9 Fragen

Fragen zu Blatt 8?

(4)

Besprechung Blatt 8 WP-Kalk¨ul Vorbereitung Blatt 9 Syntax und Rechenregeln

Syntax

¬: nicht

∧: und

∨: oder

∀: f¨ur alle

∃: es gibt (mindestens) ein Rechenregeln

¬(a∧b)≡ ¬a∨ ¬b

¬(a∨b)≡ ¬a∧ ¬b

a⇒b≡ ¬a∨b

mehr: Vorlesungsfolien 9 - 86

(5)

Besprechung Blatt 8 WP-Kalk¨ul Vorbereitung Blatt 9 Syntax und Rechenregeln

a = abc;

b = 5a;

c = a+b;

d = c+b;

// Q = d > 0

P ≡wp(A,Q)

≡wp(0a=abc;b= 5a;c =a+b;d =c +b0,d >0)

≡wp(0a=abc;b= 5a;c =a+b0,c+b >0)

≡wp(0a=abc;b= 5a0,a+ 2b >0)

≡wp(0a=abc0,11a>0)

≡11(abc)>0

≡abc >0

(6)

Besprechung Blatt 8 WP-Kalk¨ul Vorbereitung Blatt 9 Pr¨a- und Postinkrement

Mehrere Anweisungen in einer Zeile

a = 2d;

b = 3e;

c = b++ - --a;

// Q = b<c

...ist identisch zu...

a = 2d;

b = 3e;

a = a-1;

c = b-a;

b = b+1;

// Q = b<c

P ≡wp(A,Q)≡...≡d <0

(7)

Besprechung Blatt 8 WP-Kalk¨ul Vorbereitung Blatt 9 Pr¨a- und Postinkrement

Komplexe Beispiele I

i = a + a++;

a0 = a;

a1 = a;

a = a + 1; // Inc nach auslesen des zweiten Summanden i = a0 + a1;

Was w¨are, wenna = a++ + a;? (Inkrement geht verloren)

i = a++ + a;

a0 = a;

a = a + 1; // Inc vor auslesen des zweiten Summanden a1 = a;

i = a0 + a1;

(8)

Besprechung Blatt 8 WP-Kalk¨ul Vorbereitung Blatt 9 Pr¨a- und Postinkrement

Komplexe Beispiele II

c += c++ + ++c; // aehnlich fuer c += ++c + c++;

c = c + (c++ + ++c); // vereinfacht

c0 = c;

c1 = c;

c = c + 1; // Post-Increment c = c + 1; // Pre-Increment c2 = c;

res = c1 + c2; // Addition von + res = c0 + res; // Addition von +=

c = res;

Merke: Immer erst Aufdr¨oseln und dann das WP-Kalk¨ul anwenden!

(9)

Besprechung Blatt 8 WP-Kalk¨ul Vorbereitung Blatt 9 Bedingungen

Syntax f¨ ur if-else-Bedingungen

if (<b>) {

<s1>

} else {

<s2>

}

<Q>

P ≡[(b)∧wp(S1,Q)]∨[(¬b)∧wp(S2,Q)]

Analog dazu wird bei switch mehr verodert.

(10)

Besprechung Blatt 8 WP-Kalk¨ul Vorbereitung Blatt 9 Bedingungen

if (a < 0) { b = 3e;

d = b + a;

} else { b = 3a;

d = ab;

}

Q = d > 2b;

P ≡[(b)∧wp(s1,Q)]∨[(¬b)∧wp(s2,Q)]

≡[(a<0)∧wp(0b= 3e0,b+a>2b)]∨[(a>= 0)∧wp(0b= 3a0,ab >2b)]

≡[(a<0)∧wp(0b= 3e0,a>b)]∨[(a>= 0)∧wp(0b= 3a0,a>2)]

≡[(a<0)∧(a>3e)]∨[(a>= 0)∧(a>2)]

≡(3e <a<0)∨(a>2)

(11)

Besprechung Blatt 8 WP-Kalk¨ul Vorbereitung Blatt 9 Schleifen

Syntax f¨ ur while-Schleifen

x = a;

y = b;

p = 0;

while (x > 0) { p = p+y;

x = x-1;

}

P ≡a>= 0

Q ≡p =ab I ≡(xy) +p=ab

(12)

Besprechung Blatt 8 WP-Kalk¨ul Vorbereitung Blatt 9 Schleifen

Vor der Schleife (VS)

P ⇒wp(VS,I)

P ⇒wp(0x =a;y =b;p = 00,xy+p =ab) P ⇒wp(0x =a;y =b0,xy =ab)

P ⇒wp(0x =a0,xb=ab) P ⇒ab=ab

(a>= 0)⇒true

true

(13)

Besprechung Blatt 8 WP-Kalk¨ul Vorbereitung Blatt 9 Schleifen

Schleifenrumpf (SR)

I∧b⇒wp(SR,I)

I∧b⇒wp(0p =p+y;x=x−10,xy +p =ab) I∧b⇒wp(0p =p+y0,(x−1)y+p =ab) I∧b⇒wp(0p =p+y0,xy−y+p =ab) I∧b⇒xy −y+p+y =ab

I∧b⇒xy +p =ab xy +p =ab∧(x >0)⇒xy +p =ab

true

(14)

Besprechung Blatt 8 WP-Kalk¨ul Vorbereitung Blatt 9 Schleifen

Nach der Schleife (NS)

Die Invariante ist immernoch g¨ultig, die Abbruchbedingung ist nach der Schleife falsch:

I ∧ ¬b ⇒wp(NS,Q) I ∧ ¬b ⇒wp(00,p =ab) I ∧ ¬b ⇒p=ab

xy+p=ab∧(x <= 0)⇒p=ab

xy+p=ab∧(x= 0)⇒p=ab p =ab ⇒p=ab

true

(15)

Besprechung Blatt 8 WP-Kalk¨ul Vorbereitung Blatt 9 Schleifen

Terminierungsbeweis

Schleifenvariante: V := x

P =a>= 0

⇒V =x>= 0 positiv (1)

Vk =x→Vk−1 =x−1 streng monoton fallend

⇒x = 0 wird irgendwann erreicht (2) x ist ganzzahlig (3)

⇒ Schleife terminiert

(16)

Besprechung Blatt 8 WP-Kalk¨ul Vorbereitung Blatt 9 Schleifen

Schleife innerhalb einer if-Bedingung

x = a; y = b; p = 0;

if (y > 0) {

while (x > 0) { p = p+y;

x = x-1;

} }

P ⇒wp(VS,I)

P ⇒wp(0x=a;y =b;p = 0;if(y >0)...0,xy +p =ab)

P ⇒wp(0x=a;y =b;p = 0;0,[y >0∧xy +p =ab)]∨[y ≤0∧true]) P ⇒...

(17)

Besprechung Blatt 8 WP-Kalk¨ul Vorbereitung Blatt 9 Hinweise

wp-Kalk¨ ul

Punkte gibt es sowohl auf den Rechenweg als auch auf das richtige Ergebnis

Rechenweg muss erkennbar sein!

keine Zwischenschritte ¨uberspringen

Werden Eigenschaften eines Variablentypes verwendet, so muss das notiert werden, z.B. (Typ == Integer)

Rundungsfehler, Overflow und Underflow d¨urfen ignoriert werden

9.4d) Stichwort oder Teilaufgabenk¨urzel als Begr¨undung!

(18)

Besprechung Blatt 8 WP-Kalk¨ul Vorbereitung Blatt 9 Hinweise

Exception vs. Assertion

Anwendung:

IllegalArgumentExceptionbei Schnittstellen die ¨offentlich sichtbar sind

Assertions bei internen Checks oder bei Argumenten von internen Funktionen

beim Testen von Assertions das VM-Argument “-ea” (enable assertions) nicht vergessen!

(19)

Besprechung Blatt 8 WP-Kalk¨ul Vorbereitung Blatt 9 Hinweise

Referenzen

ÄHNLICHE DOKUMENTE

vers. 60 I.U./kg Körpergewicht alle zwei Wochen) des NIH ergab Hinweise auf einen unteren Schwellenwert von 10–15 I.U./kg Körpergewicht alle zwei Wochen für eine Wirksamkeit

Der MINOR-Badelift ist für die Sicherheit und Unfallverhütung beim Baden in der Wanne, speziell für ältere Leute gebaut worden.. Das Gerät ist äusserst stabil und

Es wird keine Haftung übernommen für Schäden durch die Verwendung von Informationen aus diesem Online-Angebot oder durch das Fehlen von Informationen.. Dies gilt auch für

Es wird keine Haftung übernommen für Schäden durch die Verwendung von Informationen aus diesem Online-Angebot oder durch das Fehlen von Informationen.. Dies gilt auch für

Ich freue mich sehr darüber, dass AKZENT über dieses Problem nachdenkt, denn es ist in den letzten Jahren - leider - immer aktueller geworden.. Pro Senectute könnte für alle

Wenn von Basel gesprochen oder geschrieben wird, bleibt auch der Rhein eingeklammert!. Dichter und Maler haben in den vergangenen zwei Jahrhunderten eine stattliche Reihe von Motiven

Es wird keine Haftung übernommen für Schäden durch die Verwendung von Informationen aus diesem Online-Angebot oder durch das Fehlen von Informationen.. Dies gilt auch für

So bedeutet sein Buch nicht bloss eine fesselnde Rückschau auf ein Leben im Dienste der Mitmenschen, sondern bietet uns auch wertvolle Anregungen für die Gestaltung des