Fallunterscheidung und Iteration Programmierung I Prof. Dr. Michael Löwe.

Slides:



Advertisements
Ähnliche Präsentationen
Algorithmentheorie 08 – Dynamische Programmierung (1)
Advertisements

Vorlesung Informatik 2 Algorithmen und Datenstrukturen (26-Graphenalgorithmen: Wiederholung und Übung) Prof. Th. Ottmann.
Sortieren I - Bubblesort -
Theoretische Grundlagen der Informatik Prof. Dr. Michael Löwe
Programmierung II Prof. Dr. Michael Löwe
Hochschule Fulda – FB ET Sommersemester 2010
Zusammenfassung der Vorwoche
Einführung in JavaScript II
Finale Semantik und beobachtbares Verhalten
der Universität Oldenburg
Terminierung und Deadlocks Enkhbat Daginaa Betreuerin Prof. Heike Wehrheim Totale Korrektheit.
1 Computergestützte Verifikation Probleme bei der Softwareverifikation 1.komplexe Datentypen und Expressions 2.Pointer und dynamische Datenstrukturen.
SWITCH - Anweisung.
SWITCH - Anweisung.
FOR Anweisung.
Algorithmentheorie 04 –Hashing
Prinzipien des Algorithmenentwurfs Backtracking Prof. Dr. Th. Ottmann
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Tobias Lauer.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 2 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (21 – Kürzeste Wege) T. Lauer.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (05 – Elementare Datenstrukturen) Prof. Th. Ottmann.
Vorlesung Informatik 3 Einführung in die Theoretische Informatik (17 –Turingmaschinen) Prof. Dr. Th. Ottmann.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 6 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Imperative Programmierung Funktionen und Parameter
? Grammatik  Orthographie ?
Beispiele für Ausdrucksalgebren
Der C-Präprozessor EDV1 - 04Präprozessor.
Der C-Präprozessor 08-CPräprozessor.
Einführung in die Programmierung Datensammlung
Einführung in die Programmierung Anweisungen und Datentypen
Grundsätzliche Resultate Theorem: Für jeden Relationstyp R(A 1,...,A n ) und jede Menge von FDs über {A 1,...,A n } gibt es: –eine verlustlose (aber nicht.
Struktogramme IF-ELSE FOR – Schleife

Visualisierung funktionaler Programme
Grundkonzepte Java - Klassendefinition
Prof. Dr. med. Stefan Schulz
Informatik 1 Übung 2.
Debugging in Lua Universität zu Köln Re-usable Content in 3D und Simulationssystemen Prof. Dr. Manfred Thaller Referent: Artur Wilke.
BIT – Schaßan – WS 02/03 Basisinformationstechnologie HK-Medien Teil 1, 11.Sitzung WS 02/03.
Einführung in die Programmierung
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger Institut.
2.4 Rekursion Klassifikation und Beispiele
Purga - Scriptengine Ein Einblick.
Algorithmen und Datenstrukturen Übungsmodul 8
Automaten, formale Sprachen und Berechenbarkeit II SoSe 2004 Prof. W. Brauer Teil 1: Wiederholung (Vor allem Folien von Priv.-Doz. Dr. Kindler vom WS 2001/02.
Algorithmen und Datenstrukturen Übungsmodul 3
CuP - Java Sechste Vorlesung Entspricht ungefähr Kapitel 3. 1 – 3
Datentypen: integer, char, string, boolean
Agenda für heute, 7. April, 2005 Bedingte ProgrammausführungBedingte Programmausführung Algorithmische Grundlagen Vergleichsoperatoren, Wahrheitswerte.
Hochschule Fulda – FB ET Sommersemester 2014
Mehrfachausführungen Schleifen in VB 2010 ee. Programmidee: Der Anwender gibt eine Zahl ein, und das Programm gibt die Mehrfachen dieser Zahl aus (das.
Software Engineering Struktogramme
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
{ Schlüsselwort-Chiffre Mit VB  Eingaben einlesen  Nummer des Schlüsselbuchstabens ermitteln  Doppelte Buchstaben aus dem Schlüsselwort entfernen.
MATLAB Control Statements.
Korrektheit von Programmen – Testen
Syntax, Semantik, Spezifikation - Grundlagen der Informatik R. Hartwig Kapitel 3 / 1 Algebraische Hülle und Homomorphie A = [A, F ] sei  -Algebra. Eine.
Wann ist eine Funktion (über den natürlichen Zahlen) berechenbar?
 Sortigkeit oder Arität
Prüfungsbesprechung Barbara Scheuner Vorlesung: Programmieren und Problemlösen Prof. Hans Hinterberger.
Extended Pascal Erweiterung von Pascal shadi Behzadipour shadi Shadi behzadipour.
WS03/041 Dynamische Programmierung (3) Konstruktion optimaler Suchbäume Prof. Dr. S. Albers Prof. Dr. Th. Ottmann.
Dr. Wolfram Amme, Semantik funktionaler Programme, Informatik II, FSU Jena, SS Semantik funktionaler Programme.
Datentypen: integer, char, string, boolean
Prüfungsbesprechung Barbara Scheuner
Allgemeine Iteration und Rekursion
 Präsentation transkript:

Fallunterscheidung und Iteration Programmierung I Prof. Dr. Michael Löwe

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

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

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

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

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

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

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))

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

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)

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)