Grundlagen der Programmierung (Vorlesung 14)
❚ Vorige Vorlesung
❙ Verifikation von Anweisungen und Anweisungsfolgen
❙ Schleifen
❚ Inhalt dieser Vorlesung
❙ Funktionen und Prozeduren
❚ Lernziele
❙ Grundlagen der systematischen Programmentwicklung
Ralf Möller, FH-Wedel
Schleifen
Schleifen (2)
Ganzzahlige Division mit Rest mittels While
z Spezifikation
y var x, y, q, r : N 0
y { y > 0 } S { q * y + r = x fi r < y}
y V P y P: q * y + r = x fi r < y y I fi – B
y Gut: Spezifikation schon in der richtigen Form
z { V } S 0 { I };
z { I } while B do { I fi B } S 1 { I } end while { P }
Ganzzahlige Division mit Rest mittels While
z var x, y, q, r : N 0
z { y > 0 } q, r := 0, x { q * y + r = x } V So I B
z while r ≥ y do
z {q * y + r = x fi r >= y} q, r := q+1, r-y {q * y + r = x}
z end while S1 z {q * y + r = x fi r < y}
P
I fi – B
Terminierungsbeweis
z Für die Variante t wähle: r z Zeige Fortschritt:
y {I fi B fi t > T} S1 {t = T} muß korrekt sein, d.h.
{I fi B fi r > T} q, r := q+1, r-y {r = T} muß korrekt sein
x Also r¨ r-y in Nachbedingung einsetzen x Damit ergibt sich r-y = T
x Es ergibt sich: r > T, wenn y > 0
y (I fi t £ 0) ¡ – B muß gültig sein, d.h.
(I fi r £ 0) ¡ r < y muß gültig sein
x Unter der Voraussetzung, daß r £ 0 und y > 0 ist r < y immer erfüllt
Y é ï[ðRñò'óõôðöw÷wò'ö/Z\[zò^],_lñò'ó÷ ðöw÷wò'ö|ðö/`ba4ced4fò'óhgmò'ö
¾ÀîQÀ Á ½ ¹
r³ÛQÚo HH 0E!/5+º»:!/:Å!T"bß75!/:XQ0E
¾íÀÉîEÀ Á ½
aЩAFDSR0E!DS:0E!ß 8
rstu
¾íÀÉîEÀ Á ½
Øç æOâeÚOÙUç4¡
¿4Ƚ
¶ìÂÆ æ`ÛWâeç@¡kÙ0ç4¡
rH < p3F$OFDSW
ê Ç
¶ìÂ
À
aЩAFDS
Øç/ æOâeÚÙUç@¡%
ê Ç
¶ìÂ
À
×2Æ æ`ÛWâeç@¡kÙ0ç4¡
Ê ß
Øç æOâeÚOÙUç4¡
ÀÈ<Ê
ê Ç
¶ëÂ
À
rH < DS1$p3
ª#«¬
Ë"bß75!/: þq*Щ/FD/,!p3DOÿZßO8
0E!/5:DÎ!/P
ª,9¬
ðº»l/:!:~ß+0E!5:Eß P6
ª ´ ¬
5,+/0E5*û-58!/F#0<
½6¾e¿À
.51ßO8W"!/5ADÎ!/,!/:
5ȼ$1:80Ep3p35/@*ЩFDËDS1PA:56
ª
´/µ
¬
5,+/0E5*û-58!/F#0<
·UÁ4ÂÄÃ
À
.51ýßO8Ë"!5,DÎ!/,!/:
ЩAFDSßOl,1F
ЩAFDS,!/p3DußO8 Ò w Ø wxlxlxp)0E90E!5:6D !/PlGÎ
/>©@-DÎ!Щ/FD !:80E!9©/.è, û-!/p3D
p Î1:>©A'ß 5">©4+0E!5:DÎ!/PßO8èG
ê Ç
¶ìÂ
À
aЩ/FD 0E:p3
¾íÀÉîEÀ Á ½
aЩ/FDRoUÛQÚB'& @+0E5
Ç
¶ìÂ
À
aЩ/FD
Y é ï[ðRñò'óõôðöw÷wò'ö/Z\[zò^],_lñò'ó÷ ðöw÷wò'ö|ðö/`ba4ced4fò'óhgmò'ö
¾ÀîQÀ Á ½ ¹
r³ÛQÚo HH 0E!/5+º»:!/:Å!T"bß75!/:XQ0E
¾íÀÉîEÀ Á ½
aЩAFDSR0E!DS:0E!ß 8
rstu
¾íÀÉîEÀ Á ½
Øç æOâeÚOÙUç4¡
¿4Ƚ
¶ìÂÆ æ`ÛWâeç@¡kÙ0ç4¡
rH < p3F$OFDSW
ê Ç
¶ìÂ
À
aЩAFDS
Øç/ æOâeÚÙUç@¡%
ê Ç
¶ìÂ
À
×2Æ æ`ÛWâeç@¡kÙ0ç4¡
Ê ß
Øç æOâeÚOÙUç4¡
ÀÈ<Ê
ê Ç
¶ëÂ
À
rH < DS1$p3
ª#«¬
Ë"bß75!/: þq*Щ/FD/,!p3DOÿZßO8
0E!/5:DÎ!/P
ª,9¬
ðº»l/:!:~ß+0E!5:Eß P6
ª ´ ¬
5,+/0E5*û-58!/F#0<
½6¾e¿À
.51ßO8W"!/5ADÎ!/,!/:
5ȼ$1:80Ep3p35/@*ЩFDËDS1PA:56
ª
´/µ
¬
5,+/0E5*û-58!/F#0<
·UÁ4ÂÄÃ
À
.51ýßO8Ë"!5,DÎ!/,!/:
ЩAFDSßOl,1F
ЩAFDS,!/p3DußO8 Ò w Ø wxlxlxp)0E90E!5:6D !/PlGÎ
/>©@-DÎ!Щ/FD !:80E!9©/.è, û-!/p3D
p Î1:>©A'ß 5">©4+0E!5:DÎ!/PßO8èG
ê Ç
¶ìÂ
À
aЩ/FD 0E:p3
¾íÀÉîEÀ Á ½
aЩ/FDRoUÛQÚB'& @+0E5
Ç
¶ìÂ
À
aЩ/FD
éëêíìwê é a@ced4fò'óhgmò'ö/çEö%ñò>ó_ôðAöb÷wò'ö
· ß ¾ ¹
r³ÛQÚo HH Í#Î0E/5{©AFDS
rstu
· ß ¾
àFáWÜEâãábäå æ âUå ØÙ0ÚVÛYÜEÙzÝÞv
½
ßPØÙUÚVÛYÜEÙzÝÞ
¤ Ê ß
Øç æOâeÚOÙUç4¡
ÀÈ<Ê
· ß ¾
àFáYÜEâ ábäVåTæ 5,+Ëö÷0E!DXÊ0E,>0E/
ØÙ0ÚVÛYÜEÙzÝÞv 5,+Ð@#0E^ß P
ØÙ0ÚVÛYÜEÙzÝÞ ¤ 5,+-ú2xß7^
Øç æOâ1ÚOÙUç@¡ 5,+ЩAFDS,!/p3D
rH < º»l!A!:%É$Î0EPOp3F
ê Ç
¶ìÂ
À
aЩAFDS
àzáYÜEâãáwäVåTæ âUå ØÙUÚÛWÜEÙzÝÞ v %
(oç[Ûxæ# æOÜá âUå ØÙUÚÛWÜEÙzÝÞ
¤ %
ê Ç
¶ìÂ
À
àFáWÜEâãábäå æ
(ç[Ûxæy æOÜá
Ê ß
Øç æOâeÚOÙUç4¡%
àFáWÜEâãáwäVåTæ âUå àFáWÜEâãáwäVåTæ)+*
ÀÈ<Ê
ê Ç
¶ëÂ
À
ê Ç
¶ìÂ
À
aЩ/FD 0E:p3