Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:Cornelius Heidrich Geändert vor über 8 Jahren
1
Fallunterscheidung und Iteration Programmierung I Prof. Dr. Michael Löwe
2
Fachhochschule für die Wirtschaft Fallunterscheidung und Iteration2 Inhalt Fallunterscheidung Bedingte Anweisung Boole‘sche Fallunterscheidung Mehrfache Fallunterscheidung (Selektion) Iteration Der semantische Iterator Anweisungen zur Iteration
3
Fachhochschule für die Wirtschaft Fallunterscheidung und Iteration3 Bedingte Anweisung W Wenn b ein boole‘scher Ausdruck ist, b E W, und a Anweisung, a ST, dann ist If b Then a End If ST. Die Bedeutung ist gegeben durch: [|If b Then a End If |](z, t) = (1) [|a|](z, t), wenn value[(z, t)](b) = T (2) (z, t) sonst
4
Fachhochschule für die Wirtschaft Fallunterscheidung und Iteration4 Boole‘sche Fallunterscheidung W Wenn b E W und a1, a2 ST, dann ist If b Then a1 Else a2 End IF ST. [|If b Then a1 Else a2 End If |](z, t) = (1) [|a1|](z, t), wenn value[(z, t)](b) = T (2) [|a2|](z, t) sonst
5
Fachhochschule für die Wirtschaft Fallunterscheidung und Iteration5 Mehrfache Fallunterscheidung Else Parts: (1) Der leere Ausdruck ist ein „Else Part“, EP (2) Wenn a ST, dann ist Else a ein „Else Part“, i.e. Else a EP W (3) Wenn b E W, a ST und e EP dann ist Elseif b Then a; e ein „Else Part“, i.e. Elseif b Then a; e EP
6
Fachhochschule für die Wirtschaft Fallunterscheidung und Iteration6 Allgemeine Fallunterscheidung W Wenn b E W, a ST und ep EP, dann ist If b Then a ep End If ST [|If b Then a ep End If |](z, t) = [|a|](z, t), wenn value[(z, t)](b) = T, [|ep|](z, t) sonst [| |] (z, t) = (z, t) [|Else a |](z, t) = [|a|](z, t) [|Elseif b Then a ep|](z, t) = [|a|](z, t), wenn value[(z, t)](b) = T, [|ep|](z, t) sonst
7
Fachhochschule für die Wirtschaft Fallunterscheidung und Iteration7 Iteration (intuitiv) For i = anfang To ende Step differenz Anweisungen Next i Intuitiv: (1) Setze i auf anfang; (2) falls i ende noch nicht erreicht hat, führe Anweisungen aus, sonst verlasse die Iteration bei (4) (3) addiere differenz zu i, fahre mit (2) fort. (4) Ende der Iteration
8
Fachhochschule für die Wirtschaft Fallunterscheidung und Iteration8 Der semantische Iterator Erste Version: Sei f: TypedStates TypedStates Abbildung, dann ist f n : TypedStates TypedStates für alle natürlichen Zahlen n so definiert: (1) f 0 (s) = s (2) f n + 1 (s) = f n (f(s))
9
Fachhochschule für die Wirtschaft Fallunterscheidung und Iteration9 Der semantische Iterator Zweite Version Z 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
10
Fachhochschule für die Wirtschaft Fallunterscheidung und Iteration10 Iteration Z Wenn i Names, e1, e2, e3 E Z, 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)
11
Fachhochschule für die Wirtschaft Fallunterscheidung und Iteration11 Semantik der Iteration Für alle Iterationsköpfe k definieren wir Z [|k|]: TypedStates Names Z* so: [|i = e1 To e2 Step e3|] (s) = (i, w), wobei w durch die folgenden Bedingungen eindeutig charakterisiert ist: ZZ Für z 1, z 2 Z und u, w, x Z* w = uz 1 x impliziert: z 1 value[s](e2) falls value[s](e3) > 0 w = uz 1 x impliziert: z 1 value[s](e2) falls value[s](e3) < 0 w = z 1 u impliziert: z 1 = value[s](e1) w = uz 1 z 2 x impliziert: z 2 = z 1 + value[s](e3) [|For i = e1 To e2 Step e3 a Next|](s) = [|a|] [|i = e1 To e2 Step e3|](s) (s)
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.