Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Allgemeine Iteration und Rekursion

Ähnliche Präsentationen


Präsentation zum Thema: "Allgemeine Iteration und Rekursion"—  Präsentation transkript:

1 Allgemeine Iteration und Rekursion
Programmierung I Prof. Dr. Michael Löwe

2 Allgemeine Iteration und Rekursion
Inhalt Iteration Der semantische Iterator Die Verallgemeinerung auf beliebige Typen Anweisungen zur Iteration über Listen ganzer Zahlen Fiktive Anweisung zur Iteration über Zeichenkettenlisten Rekursion FHDW Allgemeine Iteration und Rekursion

3 Allgemeine Iteration und Rekursion
„Zustand sei r:“ i = 1; a = a + i; b = b - i i = 2; a = a + i; b = b - i i = 3; a = a + i; b = b - i i = 4; a = a + i; b = b - i (.....) i = 10; a = a + i; b = b - i „:Zustand sei s“ „Zustand sei r:“ For i = 1 To 10 a = a + i; b = b - i Next i „:Zustand sei s“ s = [|a = a + i; b = b - i|][| i = 1 To 10|](r)(r) s = [|a = a + i; b = b - i|](i, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])(r) FHDW Allgemeine Iteration und Rekursion

4 Der semantische Iterator
Sei f: TypedStates  TypedStates Abbildung, i  Names und w  Z* eine Liste von ganzen Zahlen, dann ist f (i, w): TypedStates  TypedStates so definiert: (1) f (i, )(s) = s (2) f (i, xv)(z, t) = f (i, v)(f(set(z, i, x), t)) falls t(i) = Integer (3) f (i, w)(s) = undefiniert sonst FHDW Allgemeine Iteration und Rekursion

5 Der allgemeine Iterator
Sei f: TypedStates  TypedStates Abbildung, i  Names und w  T* eine Liste von Elementen zu einem beliebigen Typ T, dann ist f (i, w): TypedStates  TypedStates definiert: (1) f (i, )(s) = s (2) f (i, xv)(z, t) = f (i,v)(f(set(z, i, x),t)) falls domain(t(i)) = T (3) f (i, w)(s) = undefiniert sonst FHDW Allgemeine Iteration und Rekursion

6 Allgemeine Iteration und Rekursion
Iteration über Zahlen Wenn i  Names, e1, e2, e3  EZ, dann ist i = e1 To e2 Step e3 ein Iterationskopf, i. e. i = e1 To e2 Step e3  IK Wenn k IK und a ST, dann ist: For k a Next  ST (Iteration) FHDW Allgemeine Iteration und Rekursion

7 Semantik der Iteration über Zahlen
Für alle Iterationsköpfe k definieren wir [|k|]: TypedStates  Names  Z* so: [|i = e1 To e2 Step e3|] (s) = (i, w), wobei w durch die folgenden Bedingungen eindeutig charakterisiert ist: Für z1, z2  Z und u, w, x  Z* w = uz1x impliziert: z1  value[s](e2) falls value[s](e3) > 0 w = uz1x impliziert: z1  value[s](e2) falls value[s](e3) < 0 w = z1u impliziert: z1 = value[s](e1) w = uz1z2x impliziert: z2 = z1 + value[s](e3) [|For k a Next|](s) = [|a|] [|k|](s)(s) FHDW Allgemeine Iteration und Rekursion

8 Iteration über Zeichenketten
Listen von Zeichenketten ES*: | ES* Wenn v ES und w ES* dann ist v|w ES* Wenn i  Names, sl  ES*, dann ist i In sl ein Iterationskopf, i. e. i In sl  IK Wenn k IK und a ST, dann ist: For k a Next  ST (Iteration) FHDW Allgemeine Iteration und Rekursion

9 Semantik der Iteration über Zeichenketten
Für alle neuen Iterationsköpfe k definieren wir [|k|]: TypedStates  Names  S* so: [|i In w1|w2| ....|wn||] (s) = (i, value[s](w1).... value[s](wn)) [|For k a Next|](s) = [|a|] [| k |](s)(s) Anwendungsbeispiele??? FHDW Allgemeine Iteration und Rekursion

10 Allgemeine Iteration und Rekursion
Wenn b ein boole‘scher Ausdruck ist, b  EW, und a Anweisung, a  ST, dann ist Do While b a Loop  ST. Die operationale Bedeutung ist gegeben durch: [| Do While b a Loop |](s) = (1) s , wenn value[s](b) = F (2) [|Do While b a Loop|]([|a|](s)) sonst FHDW Allgemeine Iteration und Rekursion

11 Allgemeine Iteration und Rekursion
Wenn b ein boole‘scher Ausdruck ist, b  EW, und a Anweisung, a  ST, dann ist Do Until b a Loop  ST. Die operationale Bedeutung ist gegeben durch: [| Do Until b a Loop |](s) = (1) s , wenn value[s](b) = T (2) [|Do Until b a Loop|]([|a|](s)) sonst FHDW Allgemeine Iteration und Rekursion

12 Allgemeine Iteration und Rekursion
Wenn b ein boole‘scher Ausdruck ist, b  EW, und a Anweisung, a  ST, dann ist Do a Loop While b  ST. Die operationale Bedeutung ist gegeben durch: [| Do a Loop While b |](s) = (1) [|a|](s) , wenn value[[|a|](s)](b) = F (2) [|Do a Loop While b |]([|a|](s)) sonst FHDW Allgemeine Iteration und Rekursion

13 Allgemeine Iteration und Rekursion
Wenn b ein boole‘scher Ausdruck ist, b  EW, und a Anweisung, a  ST, dann ist Do a Loop Until b  ST. Die operationale Bedeutung ist gegeben durch: [| Do a Loop Until b |](s) = (1) [|a|](s) , wenn value[[|a|](s)](b) = T (2) [|Do a Loop Until b |]([|a|](s)) sonst FHDW Allgemeine Iteration und Rekursion


Herunterladen ppt "Allgemeine Iteration und Rekursion"

Ähnliche Präsentationen


Google-Anzeigen