Algorithmen und Programmieren II Programmverifikation {V} P {N}
|
|
|
- Manfred Beck
- vor 9 Jahren
- Abrufe
Transkript
1 Algorithmen und Programmieren II Programmverifikation {V} P {N} SS 2012 Prof. Dr. Margarita Esponda ALP II: Margarita Esponda, 11. Vorlesung,
2 Assertions oder Zusicherungen Das Konzept der Zusicherungen kommt aus dem Gebiet der Programmverifikation und Softwarequalität. Assertions sind Anweisungen, die mit Hilfe eines logischen Ausdrucks Bedingungen während der Ausführung eines Programms überprüfen. Beim Assertions geht der Programmierer davon aus, dass diese immer erfüllt sind, überprüft aber trotzdem diese Behauptungen, um zu garantieren, dass Programme immer korrekt ablaufen. Diese Art der Programmierung nennt man defensives Programmieren. ALP II: Margarita Esponda, 11. Vorlesung,
3 Design by Contract (DBC) Zusicherungen sind kein neues Konzept. Assertions kommen aus dem DBC-Konzept, der seit Jahren in mehreren Programmiersprachen eingeführt ist. Die Idee ist, dass die Software nur nach einem bestimmten Vertrag (Spezifikation) zwischen Softwareentwickler und Kunden entworfen wird. Fast alle wichtigen modernen Programmiersprachen unterstützen das DBC-Konzept Beispiel: C, C++, C#, Java, Pearl, PHP, Python, usw. ALP II: Margarita Esponda, 11. Vorlesung,
4 Design by Contract (DBC) Nach dem DBC-Konzept gibt es drei Sorten von Assertions: Vorbedingungen (Preconditions) Bedingungen, die vor der Ausführung einer Funktion oder Methode erfüllt werden sollten. Nachbedingungen (Postconditions) Bedingungen, die nach der Ausführung einer Funktion oder Methode gelten sollten. Invariant (Invariante) Bedingungen, die innerhalb eines Programmsegments immer wahr sein müssen. Zum Beispiel innerhalb einer for-schleife, Funktion oder Klasse. ALP II: Margarita Esponda, 11. Vorlesung,
5 Motivation Es wird ständig wichtiger aus finanziellen Gründen Fehler in Programmen zu finden. Mit Assertions versucht der Softwareentwickler, Fehler so früh wie möglich zu beseitigen. Nach Qusay H. Mahmoud, sahen im Jahr 2005 die Fehlerkorrekturkosten, je nachdem in welcher Phase der Softwareentwicklung die Fehler beseitigt wurden, wie folgt aus. $1 Definition der Anforderungen $5 Softwaredesign $10 Implementierung der Software $20 Testphase $200 nach der Lieferung des Software ALP II: Margarita Esponda, 11. Vorlesung,
6 assert-anweisung in Python Syntax: assert e 1, e 2,, e n Beispiel: mylist = [1,2] assert len(mylist)>0 print(mylist.pop()) assert len(mylist)>0 print(mylist.pop()) assert len(mylist)>0 mylist.pop() >>> 2 1 Traceback (most recent call last): File "assert_statement.py", line 11, in <module> assert len(mylist)>0 AssertionError >>> ALP II: Margarita Esponda, 11. Vorlesung,
7 Programmverifikation Imperative Programmiersprachen Motivation Wie können wir wissen, dass ein Programm korrekt funktioniert? Viel testen hilft, ist aber kein Beweis! Sicherheitskritische Softwarebereiche können sich keine Fehler erlauben Beispiele: Steuerungssysteme für Medizingeräte oder Flugzeuge Überwachungssysteme für Verkehr (z.b. Zug-Verkehr) Software für Weltraumprojekte usw. ALP II: Margarita Esponda, 11. Vorlesung,
8 Programmverifikation Ziel Imperative Programmiersprachen Grundsätzliches Verständnis von Verifikationsmethoden zu erwerben und mit Hilfe dieser Denkweise eine Verbesserung in der Entwicklung von Software zu erreichen. Programmverifikation ist leider nicht immer einsetzbar und das systematische Testen bleibt als einzige Alternative zur Analyse der Korrektheit eines Programms. Um ein Programm zu verifizieren, brauchen wir einen mathematischen Formalismus. ALP II: Margarita Esponda, 11. Vorlesung,
9 Programmverifikation Zwei Formalismen Hoare-Kalkül Sir Charles Antony Hoare University of Oxford, Michrosoft Research Cambridge Turing Award - Einige wichtige Leistungen sind: - CSP (Communicating Sequential Processes) - Monitor-Konzept - Hoare-Kalkül - usw. Die Verifikation eines Programms besteht aus zwei Schritten: - Beweis der partiellen Korrektheit - Beweis der Terminierung ALP II: Margarita Esponda, 11. Vorlesung,
10 Zwei Formalismen wp-kalkül Edsger Wybe Dijkstra Turing Award - Dijkstra's Algorithms - Semaphore-Konzept - Guarded Command Language - Die Methode der schwächsten Vorbedingung wp-kalkül - usw. Die Methode der schwächsten Vorbedingung. weakest precondition (wp) Die totale Korrektheit wird in einem einzigen Arbeitsgang bewiesen ALP II: Margarita Esponda, 11. Vorlesung,
11 Grundlegende Definitionen: Hoare-Kalkül Definition von Programmformeln {P} S {Q} wird als Programmformel bezeichnet, wenn S ein Programm ist und P und Q Prädikate (über Variablen und Konstanten von S) sind. Gültigkeit von Programmformeln Eine Programmformel {P} S {Q} ist gültig, wenn vor Ausführung von S, das Prädikat P wahr ist und nach Beendigung von S, das Prädikat Q wahr ist, gilt. ALP II: Margarita Esponda, 11. Vorlesung,
12 Hoare-Kalkül Programmformeln können als Programmspezifikation für Programme benutzt werden, wenn diese erst geschrieben werden sollen. DBC Design By Contract oder als Programmdokumentation, um die Wirkung eines Programms formal zu beschreiben Probleme: es existieren beliebig viele Formeln für ein Programm die Formeln können zu ungenau oder zu schwach sein Beispiel: {True} S {True} gilt immer für alle Programme S ALP II: Margarita Esponda, 11. Vorlesung,
13 Partielle Korrektheit eines Programms Definition: Sei {P} S {Q} eine Programmspezifikation. Jedes Programm S' ist partiell korrekt in Bezug auf diese Spezifikation, wenn eine Programmformel {P'} S' {Q'} mit P P' und Q' Q existiert. Die partielle Korrektheit eines Programms S ist bewiesen, wenn die Vorbedingung P der Spezifikation die Vorbedingung P' einer gültigen Programmformeln von S' impliziert und die Nachbedingung Q' die Nachbedingung Q der Spezifikation impliziert. P P' und Q' Q gleich oder schwächer als P mindestens so stark wie Q ALP II: Margarita Esponda, 11. Vorlesung,
14 Axiomatische Semantik für einfache Anweisungen Leeranweisungsaxiom Die leere Anweisung hat keine Auswirkung auf den Zustand irgendeiner Programmvariablen und wird durch folgendes Axiom definiert: Für jedes Prädikat P ist {P} {P} eine gültige Programmformel. ALP II: Margarita Esponda, 11. Vorlesung,
15 Axiomatische Semantik für einfache Anweisungen Zuweisungsaxiom Sei x = expr eine Zuweisung (in C, C++, Java, Python, usw.), die den Wert der Variablen x durch den Wert des Ausdrucks expr ersetzt, dann wird die Semantik durch das Zuweisungsaxiom wie folgt definiert. Für jedes Prädikat P ist {P <x expr>} x = expr {P} eine gültige Programmformel. ALP II: Margarita Esponda, 11. Vorlesung,
16 Zuweisungsaxiom Beispiel: Folgende Programmformel { z>0 y-1>0 z==0 y-1 0 } y = y - 1 { z>0 y>0 z==0 y 0} ist gültig, weil nach Anwendung der Substitution y y-1 in der Nachbedingung diese vor der Ausführung der Zuweisung gültig ist und somit die Nachbedingung auch. ALP II: Margarita Esponda, 11. Vorlesung,
17 Zuweisungsaxiom In den Programmformeln verwenden wir (==) für die logischen Vergleichsoperationen innerhalb von Prädikaten, um diese von dem Zuweisungsoperator (=) innerhalb von Programmen zu unterscheiden. Beispiel: Folgende Programmformeln sind gültig: {z>0} x = 0 {z>x} {x==1} x = x-1 {x==0} {y 1 y 5} x = y+1 {x 2 y 5} ALP II: Margarita Esponda, 11. Vorlesung,
18 Das Hoare-Kalkül Das Hoare-Kalkül stellt eine Reihe von Ableitungsregeln zur Verfügung, die, den Nachweis partieller oder totaler Korrektheit ermöglichen. Die Ableitungsregeln haben folgende allgemeine Form: H 1,...,H n H und bedeuten, dass, wenn H 1 bis H n erfüllt sind, dann auch H erfüllt ist. Manche Regeln haben zusätzliche Bedingungen, die festlegen, wann sie angewendet werden dürfen. ALP II: Margarita Esponda, 11. Vorlesung,
19 Ableitungsregeln Sequenzregel Besteht eine Sequenz aus den Anweisungen S 1 und S 2, und sind die Programmformeln {P} S 1 {R} und {R} S 2 {Q} gültig, dann ist auch {P} S 1, S 2 {Q} gültig. {P} S 1 {R}, {R} S 2 {Q} {P} S 1, S 2 {Q} "," als Verallgemeinerung der Trennzeichen zwischen Anweisungen ALP II: Margarita Esponda, 11. Vorlesung,
20 Sequenzregel C, C++, Java, usw. Ableitungsregeln {P} S 1 {R}, {R} S 2 {Q} {P} S 1 ; S 2 {Q} Python {P} S 1 {R}, {R} S 2 {Q} {P} S 1 S 2 {Q} Induktiv lässt sich diese Regel von zwei Anweisungen auf endlich viele aufeinanderfolgende Anweisungen erweitern. ALP II: Margarita Esponda, 11. Vorlesung,
21 Sequenzregel Beispiel: Nehmen wir an, wir möchten die Gültigkeit folgender Programmformel beweisen { x > y } y = x - y y = x + y { x < y } (1) Nach der Sequenzregel ist die Programmformel gültig, wenn wir eine Bedingung R finden können, so dass die beiden Programmformeln {x>y} y = x - y {R} (2) und {R} y = x+y {x<y} (3) gültig sind. ALP II: Margarita Esponda, 11. Vorlesung,
22 Sequenzregel {x>y} y = x - y {R} (2) {R} y = x+y {x<y} (3) Wenn wir das Zuweisungsaxiom auf (3) anwenden, erhalten wir als Vorbedingung R x<x+y, {R x<x+y} y = x+y {x<y}.... (3) und wenn wir wiederum das Prädikat R in (2) einsetzen, erhalten wir mit dem Zuweisungsaxiom die Vorbedingung x<x+x-y, die äquivalent zu x>y ist. {x>y} {x<x+(x-y)} y = x - y {R x<x+y}.. (2) ALP II: Margarita Esponda, 11. Vorlesung,
23 Regel für Blockanweisungen Eine Anweisungsfolge S kann durch begin und end in Pascal oder geschweifte Klammern in C oder Java eingeschlossen werden, ohne dass sich die Semantik von S ändert. Pascal {P} S {Q} {P} begin S end {Q} C, C++, Java, usw. {P} S {Q} {P} {S} {Q} ALP II: Margarita Esponda, 11. Vorlesung,
24 Ableitungsregeln Bedingungsregel wenn wir folgende Programmformel betrachten {P} if Bedingung: S 1 else: S 2 {Q} müssen wir zwischen zwei Fällen unterscheiden 1. Fall Bedingung==True dann ist {P Bedingung} S 1 {Q} eine gültige Formel 2. Fall Bedingung==False dann ist {P Bedingung} S 2 {Q} eine gültige Formel ALP II: Margarita Esponda, 11. Vorlesung,
25 Ableitungsregeln Bedingungsregel bzw. Inferenz-Schema für Fallunterscheidung {P B} S 1 {Q}, {P B} S 2 {Q} {P} if (B) S 1 else S 2 {Q} C, C++, Java, usw. Python {P B} S 1 {Q}, {P B} S 2 {Q} {P} if B: S 1 else: S 2 {Q} ALP II: Margarita Esponda, 11. Vorlesung,
26 while-regel Formen von while-anweisungen Ableitungsregeln Java und C Pascal Python while (B) S while B do S while B: S Nehmen wir an, dass {P B} S {P} eine gültige Programmformel für den Schleifen-Block S ist wenn B nach einem Schleifen-Durchlauf noch erfüllt wird, dann gilt die Vorbedingung {P B} wenn B nicht mehr erfüllt wird, dann gibt es keinen Schleifen- Durchlauf mehr und es gilt {P B} ALP II: Margarita Esponda, 11. Vorlesung,
27 while-regel {P B} S {P} {P} while B: S {P B} Die Vorbedingung P ist nach jedem Schleifen-Durchlauf wahr. P wird als Schleifen-Invariante bezeichnet. Die Festlegung von Schleifen-Invarianten spielt eine zentrale Rolle in der Korrektheitsanalyse von Programmen. Aus der Gültigkeit von {P B} S {P} kann nicht abgeleitet werden, dass jemals B erfüllt wird, d.h. wir wissen nicht, ob die Schleife terminiert. ALP II: Margarita Esponda, 11. Vorlesung,
28 while-regel {INV B} S {INV} {INV} while B: S {P INV} while B: S1... Sn INV INV B INV INV B ALP II: Margarita Esponda, 11. Vorlesung,
29 Beispiel: while-regel Nehmen wir an, wir möchten die Gültigkeit folgender Programmformel beweisen: { x 0 } while x!=0: x = x-1 { x==0 } wir wählen P x 0 und wissen, dass B x 0. Weil P B x==0, können wir unsere Programmformel wie folgt schreiben: { P } while x!=0: x = x-1 { P B } ALP II: Margarita Esponda, 11. Vorlesung,
30 while-regel weiter mit dem Beispiel: Nach der while-regel ist unsere Programmformel gültig, wenn {P B} x=x-1 {P} mit anderen Worten, wir müssen nur die Gültigkeit folgender Programmformel beweisen {x 0 x 0} x=x-1 {x 0} Diese ergibt sich aus dem Zuweisungsaxiom (x 0 x 0) x 1 {x-1 0} x=x-1 {x 0} mit P x 0 (Schleifeninvariante) { x 0 } while x!=0: x = x-1 { x==0 } ALP II: Margarita Esponda, 11. Vorlesung,
31 do-while-regel Ableitungsregeln Pascal {P} S {Q}, {Q B} {P} {P} repeat S until B; {P B} C und Java {P} S {Q}, {Q B} {P} {P} do S while (B); {P B} ALP II: Margarita Esponda, 11. Vorlesung,
32 Konsequenz-Regeln Regel der Schwächeren Nachbedingung Wenn nach der Ausführung einer Anweisungsfolge S die Bedingung R erfüllt ist, dann ist auch jede Nachbedingung Q erfüllt, die aus R impliziert werden kann. {P} S {R}, R Q {P} S {Q} ALP II: Margarita Esponda, 11. Vorlesung,
33 Konsequenz-Regeln Regel der stärkeren Vorbedingung Wenn {R} S {Q} eine gültige Programmformel ist, dann ist für jede Bedingung P, die R impliziert, auch die Programmformel {P} S {Q} gültig. P R, {R} S {Q} {P} S {Q} ALP II: Margarita Esponda, 11. Vorlesung,
34 Beispiel: Konsequenz-Regeln Nehmen wir an, dass folgende Programmformel gilt: {x>0 y>0} S {z+a y == x y a==0} aber (z+a y == x y) a==0 z == x y dann folgt aus der Regel der schwächeren Nachbedingung {x>0 y>0} S { z==x y } ist eine gültige Programmformel. ALP II: Margarita Esponda, 11. Vorlesung,
35 Anwendung der Konsequenz-Regeln Wenn wir die Regel der schwächeren Nachbedingungen zweimal verwenden, können wir folgendes Inferenz-Schema aus der Bedingungsregel ableiten: Python {P B} S 1 {Q}, {P B} S 2 {R} {P} if B: S 1 else: S 2 {Q R} weil Q Q R und R Q R und in beiden oberen Programmformeln angewendet werden kann. ALP II: Margarita Esponda, 11. Vorlesung,
Kapitel 5: Abstrakte Algorithmen und Sprachkonzepte. Elementare Schritte
Elementare Schritte Ein elementarer Berechnungsschritt eines Algorithmus ändert im Allgemeinen den Wert von Variablen Zuweisungsoperation von fundamentaler Bedeutung Zuweisungsoperator In Pascal := In
Assertions (Zusicherungen)
April 10, 2005 Oberseminar Software-Entwicklung Inhalt 1. Einführung (Motivation, Tony Hoare, Programmverifikation) 2. Design by Contract (Idee, Eiffel) 3. Praxis: Programming by Contract for Python 4.
Teil X. Programmverifikation. Spezifikation eines Algorithmus einer Funktion einer Prozedur. Vorbedingungen Parameter Wertebereiche
Teil X Programmverifikation STRUKTURIERTES PROGRAMMIEREN Vorlesung im Wintersemester 2015 Prof. E.G. Schukat-Talamazzini Stand: 24. Juli 2015 Robert W Floyd 1936 2001 Sir Charles Antony Richard Hoare *1934
5. Spezifikation und Verifikation von Programmen. Hier: Spezifikation einfacher Programme
5. Spezifikation und Verifikation von Programmen Programmentwicklung: genaue Kenntnis der gewünschten Leistungen offensichtlich unabdingbar In größeren Systemen: Anforderungsdefinition legt fest: - Funktionalität
4.Grundsätzliche Programmentwicklungsmethoden
4.Grundsätzliche Programmentwicklungsmethoden 1.1 Grundlage strukturierter und objektorientierter Programmierung Begriff Software Engineering - umfaßt den gezielten Einsatz von Beschreibungsmitteln, Methoden
Informatik II Musterlösung
Ludwig-Maximilians-Universität München SS 2006 Institut für Informatik Übungsblatt 4 Prof. Dr. M. Wirsing, M. Hammer, A. Rauschmayer Informatik II Musterlösung Zu jeder Aufgabe ist eine Datei abzugeben,
Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny
Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny 5. Kontrollstrukturen Allgemein Kontrollstrukturen dienen zur Steuerung des Programmablaufs. (Bemerkung: C und C++ besitzen die selben Kontrollstrukturen.)
Einführung in die Informatik 1
Einführung in die Informatik 1 Algorithmen und algorithmische Sprachkonzepte Sven Kosub AG Algorithmik/Theorie komplexer Systeme Universität Konstanz E 202 [email protected] Sprechstunde: Freitag,
Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen. Programmieren I. Martin Schultheiß. Hochschule Darmstadt Wintersemester 2010/2011
Programmieren I Martin Schultheiß Hochschule Darmstadt Wintersemester 2010/2011 1 Operatoren für elementare Datentypen 2 Bedingte Anweisungen 3 Schleifen Zuweisungsoperator Die Zuweisung von Werten an
zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme
Bisher Datentypen: einfach Zahlen, Wahrheitswerte, Zeichenketten zusammengesetzt Arrays (Felder) zur Verwaltung mehrerer zusammengehörender Daten desselben Datentypes eindimensional, mehrdimensional, Array-Grenzen
Algorithmen und Programmieren II Einführung in Python
Algorithmen und Programmieren II Einführung in Python SS 2012 Prof. Dr. Margarita Esponda 1 Was ist Python? eine Skript-Sprache Anfang der 90er Jahre entwickelt. Erfinder: Guido van Rossum an der Universität
1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen. I.2. I.2. Grundlagen von von Programmiersprachen.
1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen I.2. I.2. Grundlagen von von Programmiersprachen. - 1 - 1. Der Begriff Informatik "Informatik" = Kunstwort aus Information und Mathematik
1 Bedingungen und der Typ bool. Informatik I: Einführung in die Programmierung 5. Bedingungen, bedingte Ausführung und Schleifen. Vergleichsoperatoren
1 und der Informatik I: Einführung in die Programmierung 5., bedingte Ausführung und Albert-Ludwigs-Universität Freiburg Bernhard Nebel 27. Oktober 2015 27. Oktober 2015 B. Nebel Info I 3 / 21 Der Vergleichsoperatoren
Semantik von Formeln und Sequenzen
Semantik von Formeln und Sequenzen 33 Grundidee der Verwendung von Logik im Software Entwurf Syntax: Menge von Formeln = Axiome Ax K ist beweisbar Formel ϕ beschreiben Korrektkeit Vollständigkeit beschreibt
zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme
Bisher Datentypen: einfach Zahlen, Wahrheitswerte, Zeichenketten zusammengesetzt Arrays (Felder) zur Verwaltung mehrerer zusammengehörender Daten desselben Datentypes eindimensional, mehrdimensional, Array-Grenzen
SEP 114. Design by Contract
Design by Contract SEP 114 Design by Contract Teile das zu entwickelnde Programm in kleine Einheiten (Klassen, Methoden), die unabhängig voneinander entwickelt und überprüft werden können. Einheiten mit
Grundlagen der Programmierung Prof. H. Mössenböck. 4. Schleifen
Grundlagen der Programmierung Prof. H. Mössenböck 4. Schleifen While-Schleife Führt eine Anweisungsfolge aus, solange eine bestimmte Bedingung gilt i 1 sum 0 i n sum sum + i i i + 1 i = 1; sum = 0; while
Kontrollstrukturen - Universität Köln
Kontrollstrukturen - Universität Köln Mario Manno Kontrollstrukturen - Universität Köln p. 1 Was sind Sprachen Auszeichnungssprachen HTML, XML Programmiersprachen ASM, Basic, C, C++, Haskell, Java, Pascal,
2.5 Programmstrukturen Entscheidung / Alternative
Entscheidung, ob der folgende Anweisungsblock ausgeführt wird oder ein alternativer Block Entscheidung ob die Bedingung wahr oder falsch (True / False) ist Syntax: 2.5 Programmstrukturen 2.5.1 Entscheidung
Grundlagen der Programmierung
Grundlagen der Programmierung Dr. Tom Kamphans 1. Vorlesung 12.10.2016 1 Organisatorisches Vorlesung: Mittwochs 14:00 15:30, Raum F 201 Übung: Mittwochs 15:45 19:00, Raum F 225 Übung: alle zwei Wochen
Master Technische Informatik. Seminar Informatik- SS 2010. Formale Programmverifikation: theoretische Grundlagen und Beispiele
Master Technische Informatik Seminar Informatik- SS 2010 (Betreuer: Prof. Nissen) Formale Programmverifikation: theoretische Grundlagen und Beispiele Bearbeiterin: Dorota Buczynski Matrikelnr. 11035857
Syntax von LOOP-Programmen
LOOP-Berechenbarkeit Syntax von LOOP-Programmen Definition LOOP-Programme bestehen aus: Variablen: x 0, x 1, x 2, x 3,... Konstanten: 0, 1, 2, 3,... Trennsymbolen:; und := Operationen: + und Befehlen:
2. Algorithmen und Algorithmisierung Algorithmen und Algorithmisierung von Aufgaben
Algorithmen und Algorithmisierung von Aufgaben 2-1 Algorithmisierung: Formulierung (Entwicklung, Wahl) der Algorithmen + symbolische Darstellung von Algorithmen Formalismen für die symbolische Darstellung
Abstrakte Algorithmen und Sprachkonzepte
Abstrakte Algorithmen und Sprachkonzepte Thomas Röfer Begriff des Algorithmus Algorithmenaufbau Programmiersprachliche Grundkonzepte Interative und rekursive Algorithmen Rückblick Aufbau und Funktionsweise
VBA-Programmierung: Zusammenfassung
VBA-Programmierung: Zusammenfassung Programmiersprachen (Definition, Einordnung VBA) Softwareentwicklung-Phasen: 1. Spezifikation 2. Entwurf 3. Implementierung Datentypen (einfach, zusammengesetzt) Programmablaufsteuerung
Objektorientierte Programmierung
Objektorientierte Programmierung Eine Einführung mit anschaulichen Beispielen aus der Java-Welt apl. Prof. Dr. Achim Ebert Inhalt Kapitel 3: Kontrollstrukturen Einfache Anweisungen Anweisungsblöcke Steuerung
Sudoku. Warum 6? Warum 6?
. / Sudoku Füllen Sie die leeren Felder so aus, dass in jeder Zeile, in jeder Spalte und in jedem x Kästchen alle Zahlen von bis stehen.. / Warum?. / Warum?. / Geschichte der Logik Syllogismen (I) Beginn
Prolog basiert auf Prädikatenlogik
Software-Technologie Software-Systeme sind sehr komplex. Im Idealfall erfolgt die Programmierung problemorientiert, während die notwendige Übertragung in ausführbare Programme automatisch erfolgt. Prolog-Philosophie:
Übung zu Grundbegriffe der Informatik. Simon Wacker. 15. November 2013
Übung zu Grundbegriffe der Informatik Simon Wacker 15. November 2013 Vollständige Induktion über die Wortlänge Es sei B ein Alphabet. Dann ist B = n N 0 B n. Für jedes Wort w B sei A w eine Aussage, die
Einführung in die Programmierung
Prof. Dr. Rudolf Berrendorf Fachbereich Informatik Fachhochschule Bonn-Rhein-Sieg URM - Programmierung Dipl.-Inf. Sigrid Weil Fachbereich Informatik Fachhochschule Bonn-Rhein-Sieg Einordnung Programmier-Paradigma:
Webbasierte Programmierung
Webbasierte Programmierung Eine Einführung mit anschaulichen Beispielen aus der HTML5-Welt apl. Prof. Dr. Achim Ebert Inhalt Kapitel 6: JavaScript Kontrollstrukturen Verzweigungen Einseitig, zweiseitig,
Einführung in die Theoretische Informatik
Einführung in die Theoretische Informatik Woche 10 Harald Zankl Institut für Informatik @ UIBK Wintersemester 2014/2015 Zusammenfassung Zusammenfassung der letzten LV Satz Sei G = (V, Σ, R, S) eine kontextfreie
Kapitel 7: Formaler Datenbankentwurf
7. Formaler Datenbankentwurf Seite 1 Kapitel 7: Formaler Datenbankentwurf Die Schwierigkeiten der konzeptuellen Modellierung sind zu einem großen Teil dadurch begründet, dass sich die relevanten Strukturen
Rhetorik und Argumentationstheorie.
Rhetorik und Argumentationstheorie 2 [[email protected]] Teil 2 Was ist ein Beweis? 2 Wichtige Grundlagen Tautologie nennt man eine zusammengesetzte Aussage, die wahr ist, unabhängig vom
Algorithmen und Datenstrukturen Laufzeitabschätzung
Algorithmen und Datenstrukturen Laufzeitabschätzung Matthias Teschner Graphische Datenverarbeitung Institut für Informatik Universität Freiburg SS 12 Lernziele der Vorlesung Algorithmen Sortieren, Suchen,
Java 8. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Oktober 2014 JAV8
Java 8 Elmar Fuchs Grundlagen Programmierung 1. Ausgabe, Oktober 2014 JAV8 5 Java 8 - Grundlagen Programmierung 5 Kontrollstrukturen In diesem Kapitel erfahren Sie wie Sie die Ausführung von von Bedingungen
Algorithmen und Datenstrukturen 1 Kapitel 4.1
Algorithmen und Datenstrukturen 1 Kapitel 4.1 Technische Fakultät [email protected] Vorlesung, U. Bielefeld, Winter 2005/2006 Kapitel 4: Maschinenmodelle [Dieses Kapitel hält sich eng an
Grammatiken. Einführung
Einführung Beispiel: Die arithmetischen Ausdrücke über der Variablen a und den Operationen + und können wie folgt definiert werden: a, a + a und a a sind arithmetische Ausdrücke Wenn A und B arithmetische
Prädikatenlogik - Micromodels of Software
Prädikatenlogik - Micromodels of Software Philipp Koch Seminar Logik für Informatiker Universität Paderborn Revision: 30. Mai 2005 1 Inhaltsverzeichnis 1 Motivation 3 2 Modelle 3 2.1 Definition eines Modells.......................
Modul Entscheidungsunterstützung in der Logistik. Einführung in die Programmierung mit C++ Übung 2
Fakultät Verkehrswissenschaften Friedrich List, Professur für Verkehrsbetriebslehre und Logistik Modul Entscheidungsunterstützung in der Logistik Einführung in die Programmierung mit C++ Übung 2 SS 2016
C.3 Funktionen und Prozeduren
C3 - Funktionen und Prozeduren Funktionsdeklarationen in Pascal auch in Pascal kann man selbstdefinierte Funktionen einführen: Funktionen und Prozeduren THEN sign:= 0 Funktion zur Bestimmung des Vorzeichens
Flussdiagramm / Programmablaufplan (PAP)
Flussdiagramm / Programmablaufplan (PAP) Basissysmbole Grenzstelle (Anfang, Zwischenhalt oder Ende des Programms/Algorithmus) Verbindung Zur Verdeutlichung der Ablaufrichtung werden Linien mit einer Pfeilspitze
Einführung. Rechnerarchitekturen Entwicklung und Ausführung von Programmen Betriebssysteme
Teil I Einführung Überblick 1 2 Geschichte der Informatik 3 Technische Grundlagen der Informatik Rechnerarchitekturen Entwicklung und Ausführung von Programmen Betriebssysteme 4 Daten, Informationen, Kodierung
Entwurf von Algorithmen - Kontrollstrukturen
Entwurf von Algorithmen - Kontrollstrukturen Eine wichtige Phase in der Entwicklung von Computerprogrammen ist der Entwurf von Algorithmen. Dieser Arbeitsschritt vor dem Schreiben des Programmes in einer
Erwin Grüner 09.02.2006
FB Psychologie Uni Marburg 09.02.2006 Themenübersicht Folgende Befehle stehen in R zur Verfügung: {}: Anweisungsblock if: Bedingte Anweisung switch: Fallunterscheidung repeat-schleife while-schleife for-schleife
Formale Sprachen und Automaten
Formale Sprachen und Automaten Kapitel 1: Grundlagen Vorlesung an der DHBW Karlsruhe Thomas Worsch Karlsruher Institut für Technologie, Fakultät für Informatik Wintersemester 2012 Ziel Einführung der wichtigsten
Weitere Beweistechniken und aussagenlogische Modellierung
Weitere Beweistechniken und aussagenlogische Modellierung Vorlesung Logik in der Informatik, HU Berlin 2. Übungsstunde Aussagenlogische Modellierung Die Mensa versucht ständig, ihr Angebot an die Wünsche
Logik für Informatiker
Logik für Informatiker 2. Aussagenlogik Teil 3 30.04.2012 Viorica Sofronie-Stokkermans Universität Koblenz-Landau e-mail: [email protected] 1 Letztes Mal Aussagenlogik Syntax: welche Formeln? Semantik:
2. Programmierung in C
2. Programmierung in C Inhalt: Überblick über Programmiersprachen, Allgemeines zur Sprache C C: Basisdatentypen, Variablen, Konstanten Operatoren, Ausdrücke und Anweisungen Kontrollstrukturen (Steuerfluss)
Hilbert-Kalkül (Einführung)
Hilbert-Kalkül (Einführung) Es gibt viele verschiedene Kalküle, mit denen sich durch syntaktische Umformungen zeigen läßt, ob eine Formel gültig bzw. unerfüllbar ist. Zwei Gruppen von Kalkülen: Kalküle
Wissensbasierte Systeme
WBS4 Slide 1 Wissensbasierte Systeme Vorlesung 4 vom 03.11.2004 Sebastian Iwanowski FH Wedel WBS4 Slide 2 Wissensbasierte Systeme 1. Motivation 2. Prinzipien und Anwendungen 3. Logische Grundlagen 4. Suchstrategien
Zusicherungen und Laufzeit Überwachungen in der modellbasierten Software Entwicklung
Zusicherungen und Laufzeit Überwachungen in der modellbasierten Software Entwicklung Methoden Design Integration STZ Softwaretechnik Andreas Rau STZ Softwaretechnik Im Gaugenmaier 20 73730 Esslingen Email:
Softwareentwicklung Allgemeines und prozedurale Konstrukte
Mag. iur. Dr. techn. Michael Sonntag Softwareentwicklung Allgemeines und prozedurale Konstrukte E-Mail: [email protected] http://www.fim.uni-linz.ac.at/staff/sonntag.htm Institut für Informationsverarbeitung
Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme
Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme Programmieren I Dr. Werner Struckmann 7. September 2015 Name: Vorname: Matrikelnummer: Kennnummer: Anrede: Frau Herr
Handout zu Beweistechniken
Handout zu Beweistechniken erstellt vom Lernzentrum Informatik auf Basis von [Kre13],[Bün] Inhaltsverzeichnis 1 Was ist ein Beweis? 2 2 Was ist Vorraussetzung, was ist Behauptung? 2 3 Beweisarten 3 3.1
Kontrollstrukturen MySQL Funktionen. MySQL 4, 5. Kapitel 20a: PHP Teil 2. Marcel Noe
MySQL 4, 5 Kapitel 20a: PHP Teil 2 Gliederung 1 2 Gliederung 1 2 Die ermöglicht ein Bedingtes Ausführen von Code-Abschnitten. Nur wenn die Bedingung erfüllt ist wird der Block hinter if ausgeführt. Ist
Teil 2 - Softwaretechnik. Modul: Programmierung B-PRG Grundlagen der Programmierung 1 Teil 2. Übersicht. Softwaretechnik
Grundlagen der Programmierung 1 Modul: Programmierung B-PRG Grundlagen der Programmierung 1 Teil 2 Softwaretechnik Prof. Dr. O. Drobnik Professur Architektur und Betrieb verteilter Systeme Institut für
Algorithmen mit konstantem Platzbedarf: Die Klasse REG
Algorithmen mit konstantem Platzbedarf: Die Klasse REG Sommerakademie Rot an der Rot AG 1 Wieviel Platz brauchen Algorithmen wirklich? Daniel Alm Institut für Numerische Simulation Universität Bonn August
Einfache Rechenstrukturen und Kontrollfluss II
Einfache Rechenstrukturen und Kontrollfluss II Martin Wirsing in Zusammenarbeit mit Moritz Hammer und Axel Rauschmayer http://www.pst.informatik.uni-muenchen.de/lehre/ss06/infoii/ SS 06 Ziele Lernen imperative
3 Vom Zählen zur Induktion
7 3 Vom Zählen zur Induktion 3.1 Natürliche Zahlen und Induktions-Prinzip Seit unserer Kindheit kennen wir die Zahlen 1,, 3, 4, usw. Diese Zahlen gebrauchen wir zum Zählen, und sie sind uns so vertraut,
Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny
Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny 7. Funktionen Einleitung Nach dem Prinzip Divide and Conquer bietet es sich an, größere Aufgaben in kleinere Teile zu unterteilen. Anweisungsblöcke,
Algorithmen und ihre Programmierung
Veranstaltung Pr.-Nr.: 10 10 V Wirtschaftsinformatik für Wirtschaftwissenschaftler Algorithmen und ihre Programmierung -Teil 1 - Dr. Chris Bizer WS 007/008 Einführung Definition: Algorithmus Ein Algorithmus
Syntaxanalyse Ausgangspunkt und Ziel
Syntaxanalyse Ausgangspunkt und Ziel Ausgangspunkt: Kontextfreie Grammatik Im Normalfall BNF, manchmal EBNF BNF = Backus-Naur-Form = Produktionsregeln EBNF = erweiterte BNF (+ reguläre Ausdrücke) Prüfung
4.5 Nassi-Schneidermann Diagramm
4.5 Nassi-Schneidermann Diagramm Nassi-Schneidermann-Diagramme, die auch Struktogramme genannt werden, sind graphische Hilfsmittel zum Entwurf und zur Darstellung von Programmsystemen. Sie sind beim Detailentwurf
Programmiersprachen. Organisation und Einführung. Berthold Hoffmann. Studiengang Informatik Universität Bremen
Organisation und Einführung Studiengang Informatik Universität Bremen Sommersemester 2010 (Vorlesung am Montag, der 12. April 2010) (Montag, der 12. April 2008) 1 Vorstellung 2 Organisation 3 Einführung
Design by Contract with JML
Thema: Design by Contract with JML Proseminar: Assertions Verfasser: Literatur: Betreuer: Natalya Moriz Gary T.Leavens and Yoonsik Cheon: Design by Contract with JML Prof. Dr. Heike Wehrheim 1 Inhalt DBC
Zusammenfassung. 1 Wir betrachten die folgende Signatur F = {+,,, 0, 1} sodass. 3 Wir betrachten die Gleichungen E. 4 Dann gilt E 1 + x 1
Zusammenfassung Zusammenfassung der letzten LV Einführung in die Theoretische Informatik Woche 7 Harald Zankl Institut für Informatik @ UIBK Wintersemester 2014/2015 1 Wir betrachten die folgende Signatur
Program = Logic + Control
Program = Logic + Control Prozedurale/imperative Sprachen: Abläufe formulieren Computer führt aus von-neumann-maschine Idee von deklarativen/logischen/funktionalen Programmiersprachen: Zusammenhänge formulieren
Theoretische Informatik. Reguläre Sprachen und Automaten
Theoretische Informatik Reguläre Sprachen und Automaten Reguläre Sprachen Reguläre Ausdrücke und Sprachen Gleichungen Syntaxdiagramme Erweiterungen Anwendungen Reguläre Ausdrücke über Σ Syntax: Konstante
Probeklausur: Programmierung WS04/05
Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,
Übungen zur Vorlesung Wissenschaftliches Rechnen I. Grundelemente von Java. Eine Anweisung. wird mit dem Wertzuweisungsoperator = geschrieben.
Eine Anweisung wird mit dem Wertzuweisungsoperator = geschrieben. Eine Anweisung wird mit dem Wertzuweisungsoperator = geschrieben. Daher ist y = x + 5.6; keine Gleichung, sondern die Anweisung den Wert
Theoretische Grundlagen des Software Engineering
Theoretische Grundlagen des Software Engineering 4: Nichtdeterminismus Teil 2 [email protected] Software Systems Engineering Nichtdeterministische endliche Automaten Definition: Ein nichtdeterministischer
Laufzeitverifikation
Laufzeitverifikation Martin Möser Seminar Fehlertolerante und Selbstheilende Systeme: Verifikation und Validierung autonomer Systeme Martin Möser - 1 Einführung / Motivation Autonome Systeme Komplexes
Endlicher Automat (EA)
Endlicher Automat (EA) siehe auch Formale Grundlagen 3 1 Motivation: Automaten für die Modellierung, Spezifikation und Verifikation verwenden! Definition Ein Endlicher Automat A = (S,I,Σ,T,F) besteht aus
Client-Server-Beziehungen
Client-Server-Beziehungen Server bietet Dienste an, Client nutzt Dienste Objekt ist gleichzeitig Client und Server Vertrag zwischen Client und Server: Client erfüllt Vorbedingungen eines Dienstes Server
Grundlagen der Programmierung (Vorlesung 14)
Grundlagen der Programmierung (Vorlesung 14) Ralf Möller, FH-Wedel Vorige Vorlesung Verifikation von Anweisungen und Anweisungsfolgen Schleifen Inhalt dieser Vorlesung Funktionen und Prozeduren Lernziele
Übersicht. Schleifen. Schleifeninvarianten. Referenztypen, Wrapperklassen und API. 9. November 2009 CoMa I WS 08/09 1/15
Übersicht Schleifen Schleifeninvarianten Referenztypen, Wrapperklassen und API CoMa I WS 08/09 1/15 CoMa I Programmierziele Linux bedienen Code umschreiben strukturierte Datentypen Anweisungen und Kontrollstrukturen
Grundlagen der Programmierung in C++ Kontrollstrukturen
Grundlagen der Programmierung in C++ Kontrollstrukturen Wintersemester 2005/2006 G. Zachmann Clausthal University, Germany [email protected] Block Keine Kontrollstruktur im eigentlichen Sinn Dient
Grundlagen der Programmierung
Grundlagen der Programmierung 8. Vorlesung 25.05.2016 1 Ausdrücke "Befehle", die ein Ergebnis liefern 3 + 4 sin(x) x < 10 getchar() Ausdrücke können Teil eines anderen Ausdrucks sein x = sin( x + y ) Auswertung:
Übersicht Programmablaufsteuerung
Übersicht Programmablaufsteuerung Konditionale Verzweigung: if - else switch-anweisung Schleifenkonstrukte: while, do - while for Schleife Sprung-Anweisungen: break, continue, goto, return Anweisungen
1. Erläutern Sie die Aufgaben von Datentypen in der imperativen Programmierung.
1. Erläutern Sie die Aufgaben von Datentypen in der imperativen Programmierung. Beschreiben Sie ferner je einen frei gewählten Datentyp aus der Gruppe der skalaren und einen aus der Gruppe der strukturierten
Programmieren in C/C++ und MATLAB
Programmieren in C/C++ und MATLAB Sven Willert Sabine Schmidt Christian-Albrechts-Universität zu Kiel CAU 4-1 Übung 1) Schreiben Sie ein Programm, das die Fläche unter einer Parabel, also das Integral
Einführung in die Informatik Grammars & Parsers
Einführung in die Informatik Grammars & Parsers Grammatiken, Parsen von Texten Wolfram Burgard Cyrill Stachniss 12.1 Einleitung Wir haben in den vorangehenden Kapiteln meistens vollständige Java- Programme
Programmierkurs II. C und Assembler
Programmierkurs II C und Assembler Prof. Dr. Wolfgang Effelsberg Universität Mannheim Sommersemester 2003 1-1 Inhalt Teil I: Die Programmiersprache C 2. Datentypen und Deklarationen 3. Operatoren und Ausdrücke
Lösungen zur 3. Projektaufgabe TheGI1
Marco Kunze ([email protected]) WS 2001/2002 Sebastian Nowozin ([email protected]) 21. 1. 2002 Lösungen zur 3. Projektaufgabe TheGI1 Definition: Turing-Aufzähler Ein Turing-Aufzähler einer
Verträge für die funktionale Programmierung Design und Implementierung
1 Verträge für die funktionale Programmierung Design und Implementierung RALF HINZE Institut für Informatik III, Universität Bonn Römerstraße 164, 53117 Bonn, Germany Email: [email protected]
Kapitel 2. Methoden zur Beschreibung von Syntax
1 Kapitel 2 Methoden zur Beschreibung von Syntax Grammatik, die sogar Könige zu kontrollieren weiß... aus Molière, Les Femmes Savantes (1672), 2. Akt 2 Ziele Zwei Standards zur Definition der Syntax von
The B Method. B ist eine Methode zur Spezifikation zum Entwurf zur Implementierung von Software Systemen. Bücher zur B-Methode
The B Method B ist eine Methode zur Spezifikation zum Entwurf zur Implementierung von Software Systemen. Bücher zur B-Methode P. Schmitt: Formal Specification and Verification of Software p.1 The B Method
7. Formale Sprachen und Grammatiken
7. Formale Sprachen und Grammatiken Computer verwenden zur Verarbeitung von Daten und Informationen künstliche, formale Sprachen (Maschinenspr., Assemblerspachen, Programmierspr., Datenbankspr., Wissensrepräsentationsspr.,...)
Die Programmiersprache C Eine Einführung
Die Programmiersprache C Eine Einführung Christian Gentsch Fakutltät IV Technische Universität Berlin Projektlabor 2. Mai 2014 Inhaltsverzeichnis 1 Einführung Entstehungsgeschichte Verwendung 2 Objektorientiert
Formale Methoden II. Gerhard Jäger. SS 2008 Universität Bielefeld. Teil 8, 11. Juni 2008. Formale Methoden II p.1/30
Formale Methoden II SS 2008 Universität Bielefeld Teil 8, 11. Juni 2008 Gerhard Jäger Formale Methoden II p.1/30 Beispiele Anmerkung: wenn der Wahrheitswert einer Formel in einem Modell nicht von der Belegungsfunktion
Software- und Systementwicklung
Software- und Systementwicklung Seminar: Designing for Privacy 11.11.2009 Moritz Vossenberg Inhalt Vorgehensmodelle Wasserfallmodell V-Modell Phasen (Pflichtenheft) UML Klassendiagramm Sequenzdiagramm
Zusammenfassung. Satz. 1 Seien F, G Boolesche Ausdrücke (in den Variablen x 1,..., x n ) 2 Seien f : B n B, g : B n B ihre Booleschen Funktionen
Zusammenfassung Zusammenfassung der letzten LV Einführung in die Theoretische Informatik Woche 6 Harald Zankl Institut für Informatik @ UIBK Wintersemester 2014/2015 Satz 1 Seien F, G Boolesche Ausdrücke
Grundlagen der Programmierung
Grundlagen der Programmierung 7. Vorlesung 18.05.2016 1 Konstanten Ganzzahlkonstante Dezimal: 42, 23, -2 Oktal (0 vorangestellt): 052 Hexadezimal (0x vorangestellt): 0x2A Gleitkommazahlen: 3.1415, 2.71,
12 == 12 true 12 == 21 false 4 === 7 true 4 === "vier" false 4 === 4.0 false 12!= 13 true 12!== 12 false 12!== 12.0 true. 1 < 3 true 3 < 1 false
Die if-anweisung if (Bedingung 1) { Code 1 else { Code 2 ; Anm.1: Das ; kann entfallen, da innerhalb { ein sog. Codeblock geschrieben wird. Anm.2: Es gibt noch andere Schreibweisen, aber wir wollen uns
