Beispiel 1 zur Verifikation eines bedingten Anweisung. Hoare-Regel für die bedingte Anweisung. Beispiel 2 zur Verifikation eines bedingten Anweisung
|
|
- Götz Ackermann
- vor 6 Jahren
- Abrufe
Transkript
1 Hoare-Regel für die bedingte Anweisung I1 : I2 : {B und P } S 1 {Q} { nicht B und P } {Q} {P } if (B) then S 1 {Q} {B und P } S 1 {Q} { nicht B und P } S 2 {Q} {P } if (B) then S 1 S 2 {Q} In der Regel für bedingte Anweisungen wird die Bedingung der Anweisung in weitere Bedingungen in den Zusicherungen umgewandelt. Da die Handlungsstränge des Programmes wieder zusammenlaufen, muss in beiden Alternativen die selbe Nachbedingung erreicht werden. Eine gemeinsame Nachbedingung kann durch Abschwächungsregeln erreicht werden: durch Abstraktion wie im Beispiel oder durch disjunktive Verknüpfung der einzelnen Nachbedingungen. Beispiel 1 zur Verifikation eines bedingten Anweisung {a Z} if (a >0) then {a Z und a>0} {a Z und a>0 und a = a} b := a; {a Z und a>0 und b = a} {a Z und b = a } {a Z und nicht a>0} {a Z und a 0 und a = a} b := a; {a Z und a 0 und b = a} {a Z und b = a } {a Z und b = a } Vorgehensweise bei bekannter Vorbedingung {P } Vorbedingung zu den Vorbedingungen {P und B} im then-teil und {P und nicht B} im -Teil ergänzen. then-teil und -Teil verifizieren mit Nachbedinugungen {Q 1 } bzw. {Q 2 }. Nachbedinungen zu gemeinsamer Nachbedingung {Q} abschwächen (z.b. Q (Q 1 oder Q 2 ). Nachbedingung {Q} der bedingten Anweisung einfügen. c LETTMANN 2003/04 Modellierung Verifikation V-31 c LETTMANN 2003/04 Modellierung Verifikation V-32 Beispiel 2 zur Verifikation eines bedingten Anweisung Beispiel 2 zur Verifikation eines bedingten Anweisung {a >0 und b>0 und a b} if (a >b) then {a >0 und b>0 und a b} if (a >b) then {a >0 und b>0 und a b und a>b} {a b>0 und b>0} {a >0 und b>0 und a b und a b} {a>0 und b a>0} c LETTMANN 2003/04 Modellierung Verifikation V-33 c LETTMANN 2003/04 Modellierung Verifikation V-34
2 Hoare-Regel für die Schleife Beispiel 1 zur Verifikation einer Schleife L : {I und B} S {I} {I} while (B) do S {I und nicht B} Gilt die Zusicherung I vor Ausführung der Schleife und gilt ferner, dass die Ausführung des Schleifenrumpfes S, falls sie terminiert, einen Zustand erzeugt, in dem I gilt, vorausgesetzt vor Ausführung der Schleife galt die Zusicherung (I und B), so gilt I nach jeder Ausführung des Schleifenrumpfes S. Da I nach jeder Ausführung des Schleifenrumpfes gilt, so gilt I nach der Schleife, sofern diese terminiert. Zusätzlich gilt nach der Schleife die Schleifenbedingung natürlich nicht und kann daher negiert zur Nachbedingung ergänzt werden. Wenn die Schleifenbedingung von Anfang an nicht gilt, so wird die Schleife nicht durchlaufen. Da I vor der Schleife gilt, so gilt I daher auch nach der Schleife und damit auch (I und nicht B). Die Verifikation mit der Schleifenregel zeigt NICHT die Terminierung der Schleife. Das Finden der Invarianten stellt in der Programmverifikation i.d.r. den schwierigsten Schritt dar. Die Verifikation einer Schleife entspricht einem induktiven Beweis. Die Invariante entspricht der Induktionsbehauptung. {x + y = a und x 0} Invariante while (x >0) do {x + y = a und x 0 und x>0} {x 1+y +1=a und x 1 0} x := x 1; {x + y +1=a und x 0} y := y +1; {x + y = a und x 0} {x + y = a und x 0 und x 0} {x + y = a und x =0} Wie entdeckt man eine Invariante? Bei der Programmerstellung eine Invariante zur Verifikation vorgeben und als Kommentar in den Programmtext einfügen. Ansonsten ist die einzige Möglichkeit, die Implementation vollständig zu begreifen, aus Durchläufen durch den Schleifenrumpf mit Beispielwerten ein Verständnis für die Veränderung der Zustände zu entwickeln und dieses Verständnis in eine Invariante umzusetzen. Invarianten sind nicht eindeutig. c LETTMANN 2003/04 Modellierung Verifikation V-35 c LETTMANN 2003/04 Modellierung Verifikation V-36 Beispiel zur Verifikation: Potenzieren (1) Beispiel zur Verifikation: Potenzieren (2) Idee des Algorithmus: Rückführung der Potenzierung auf die iterierte Multiplikation Variable x und n bleiben unverändert, damit Eingabewerte zugreifbar bleiben. Variable b speichert das Ergebnis. {b = x n } c LETTMANN 2003/04 Modellierung Verifikation V-37 c LETTMANN 2003/04 Modellierung Verifikation V-38
3 Beispiel zur Verifikation: Potenzieren (3) Suche nach einer Invarianten Tautologische Aussagen sind immer invariant, aber sie helfen nicht. Betrachte Werteverlauf in der Schleife für beteiligte Variablen. Variablenwerte bei Test der Bedingung in while Invariante: {x n = b a i und i 0} x n a b i Beispiel zur Verifikation: Potenzieren(4) {x R und n N und x = x} {x R und n N und a = x} {x R und n N und a = x und 1=1} {x R und n N und a = x und b =1} {x R und n N und a = x und b =1 und n = n} {x R und n N und a = x und b =1 und i = n} {x n = b a i und i 0} Invariante {x n = b a i und i 0 und i>0} {x n = b a i und i>0} {x n = b a a i 1 und i>0} {x n = b a i 1 und i>0} {x n = b a i 1 und i 1 0} {x n = b a i und i 0} {x n = b a i und i 0 und i 0} {x n = b a i und i =0} {x n = b} {b = x n } c LETTMANN 2003/04 Modellierung Verifikation V-39 c LETTMANN 2003/04 Modellierung Verifikation V-40 Beispiel zur Verifikation: Effizientes Potenzieren (1) Beispiel zur Verifikation: Effizientes Potenzieren (2) Idee des Algorithmus: Quadrieren von Teilergebnissen spart die Hälfte der Multiplikationen. Sei n k n k 1...n 2 n 1 n 0 die Dualdarstellung von n, alson = Es gilt dann x n = k n i 2 i. i=0 k (x 2i ) n i, wobei in diesem Produkt nur die i=0 Faktoren für n i =1eine Rolle spielen, und außerdem gilt { 1 falls n/2 i ungerade n i = 0 sonst Damit ergibt sich folger Algorithmus zur Potenzierung: if (i ungerade ) then a := a 2 ; i := i/2; {x R und n N und a = x und b =1 und i = n} {x n = b a i und i 0} Invariante {x n = b a i und i 0 und i>0} {x n = b a i und i>0} if (i ungerade ) then {x n = b a i und i>0 und i ungerade } {x n = b a (a 2 ) [i/2] und i>0 und i ungerade } {x n = b (a 2 ) [i/2] und i>0 und i ungerade } {x n = b (a 2 ) [i/2] und i>0} {x n = b a i und i>0 und i gerade } {x n = b (a 2 ) [i/2] und i>0 und i gerade } {x n = b (a 2 ) [i/2] und i>0} {x n = b (a 2 ) [i/2] und i>0} a := a 2 ; {x n = b a [i/2] und i>0} {x n = b a [i/2] und [i/2] 0} i := i/2; {x n = b a i und i 0} {x n = b a i und i 0 und i 0} {x n = b a i und i =0} {x n = b} {b = x n } c LETTMANN 2003/04 Modellierung Verifikation V-41 c LETTMANN 2003/04 Modellierung Verifikation V-42
4 Invarianten Terminierung Schleifeninvarianten sind Zusicherungen, d.h. sie beschreiben Zusammenhänge von Programmgrößen. Eine Invariante muss vor der Schleife gültig sein. Eine Invariante muss nach Durchlauf durch den Schleifenrumpf gültig sein, wenn sie vor dem Schleifenrumpf gültig war (zusammen mit der Schleifenbedingung). Invarianten sind zum Zeitpunkt der Implementierung leichter zu bestimmen. Der Nachweis der totalen Korrekheit eines Programms erfordert neben der bisher betrachteten partiellen Korrektheit den Nachweis seiner Terminierung. Wann ist Terminierung ein Problem? In Zuweisungen, falls der arithmetische Ausdruck nicht berechenbar ist (z.b. Division durch 0, nicht initialisierte Variable), in bedingten Anweisungen, falls die Bedingung nicht entschieden werden kann oder falls die Anweisungen im then-teil oder im -Teil nicht terminieren, in Anweisungsfolgen, falls eine Anweisung darin nicht terminiert, aber vor allem in Schleifen. Ausser in Schleifen kann die Terminierung garantiert werden,indem man die Art der arithmetischen oder booleschen Ausdrücke auf einfache Formen beschränkt (Komplexitätstheorie: Addition, Subtraktion von 1, also x := x +1;und Test auf 0, also if (x =0)...). Wir beschränken uns daher auf Terminierungsbeweise für Schleifen. c LETTMANN 2003/04 Modellierung Verifikation V-43 c LETTMANN 2003/04 Modellierung Verifikation V-44 Terminierung von Schleifen Beispiel zum Terminierungsbeweis einer Schleife Eine Schleife while (B) do S terminiert unter der Vorbedingung P genau dann, wenn jede Ausführung von S terminiert und wenn ein ganzzahliger Ausdruck T existiert, so dass folge Aussagen gelten: 1. P I 2. (T 0 und I) nicht B 3. {T = i +1 und B und I} S {T = i und I} I bezeichnet dabei eine Invariante der Schleife und i ein Bezeichner für eine ganzzahlige Variable ist, die weder in T noch in der Schleife vorkommt, d.h. nicht in B und nicht in S. T heißt auch Terminierungsfunktion oder Variante der Schleife. Ganzzahliger Ausdruck: T = x Invariante: I =(x + y = a und x 0) Schleifenbedingung: B =(x>0) Nachweis (T 0) und I nicht B x 0 und (x + y = a und x 0) x =0 x 0 Nachweis der Invarianz von I und der Dekrementierung von T while (x >0) do {x = i +1 und x + y = a und x 0 und x>0} {x 1=i und x 1+y +1=a und x 1 0} x := x 1; {x = i und x + y +1=a und x 0} y := y +1; {x = i und x + y = a und x 0} c LETTMANN 2003/04 Modellierung Verifikation V-45 c LETTMANN 2003/04 Modellierung Verifikation V-46
5 Nachweis der Terminierung von Schleifen Terminierung: Ein Problem? Insgesamt sind fünf Nachweise erforderlich: Terminierung des Schleifenrumpfes Ganzzahligkeit von T Folgerbarkeit der Nicht-Gültigkeit der Schleifenbedingung aus T 0 und einer Invarianten I Folgerbarkeit dieser Invarianten I aus der Vorbedingung der Schleife Nachweis der Invarianz von I und Nachweis der Dekrementierung von T Die Invariante I muss nicht mit der Invarianten für den Nachweis der partiellen Korrektheit der Schleife übereinstimmen. Die Gestalt der Hoare-Regel für die Schleife erlaubt keinen gleichzeitigen Nachweis von partieller Korrektheit und Terminierung. Manche Schleifen terminieren immer! while (a b) do while (a >b) do while (b >a) do Manche Schleifen terminieren nicht immer! while (a b) do while (a b) do while (b >a) do Für manche Schleifen ist nicht bekannt, ob sie terminieren! {n N und n>0} while (n 1)do if (n gerade ) then n := n/2; n := 3 n 1; Ulam s Funktion Die Terminierung von Schleifen ist unentscheidbar. c LETTMANN 2003/04 Modellierung Verifikation V-47 c LETTMANN 2003/04 Modellierung Verifikation V-48 Alternative Formulierung des Terminierungsnachweises Zeige Terminierung des Schleifenrumpfes. Bestimme einen ganzzahligen Ausdruck T über den Variablen des Programms. Zeige, dass T in jedem Durchlauf der Schleife verkleinert wird (streng monoton fall). Zeige, dass T nach unten beschränkt ist (T bound ist invariant). Anstelle des streng monoton fallen Ausdruckes T kann auch ein streng monoton wachser ganzzahliger Ausdruck gewählt werden mit eine oberen Schranke. Sind die beiden Formulierungen gleichwertig? Eine Schleife Nicht-Terminierung von Schleifen while (B) do S terminiert nicht, wenn eine Zusicherung I NT existiert, so dass folge Aussagen gelten: 1. Es gibt Eingaben, so dass {B und I NT } vor der Schleife gültig ist. 2. {B und I NT } ist Invariante der Schleife. I NT bezeichnet also eine Zusicherung, die nur in bestimmten Eingabesituationen gültig ist. Beim Nachweis der partiellen Korrektheit und der Terminierung müssen die verweten Zusicherungen in allen denkbaren Zuständen des Programmes an den entsprechen Stellen gelten. c LETTMANN 2003/04 Modellierung Verifikation V-49 c LETTMANN 2003/04 Modellierung Verifikation V-50
6 Notwigkeit von Verifikation Informationssicherheit (Security) Vertraulichkeit Integrität Authentizität Nicht-Rückweisbarkeit (Signaturgesetz) Zertifizierung von IT-Systemen durch das Bundesamt für Sicherheit in der Informationstechnik. (Höhere Stufen der Vertrauenswürdigkeit erfordern formale Spezifikation und formale Verifikation.) Beispiele Home Banking Geld- und Chipkarten Systemsicherheit (Safety) Software für sicherheitskritische Systeme ist formal zu spezifizieren und zu verifizieren. Beispiele: Eingebettete Systeme (Embedded Systems) als Regelungssysteme / reaktive Systeme unter Berücksichtigung von Realzeitaspekten in Autos, Flugzeugen, Raumfahrzeugen, Anlagensteuerungen. Anmerkungen zum Testen Tests können die Anwesenheit von Fehlern beweisen, aber nie die Abwesenheit von Fehlern (bei unlich vielen möglichen Eingaben). Klassifikation von Testverfahren: Schnittstellentest (Blackbox-Test) Die Ein- / Ausgaberelation wird auf Übereinstimmung mit der Spezifikation geprüft. Programmabhängiger Test (Whitebox-Test) Möglichst große Teile aller Pfade durch das Programm werden getestet. Eine möglichst große Überdeckung (des Programmcodes) ist erwünscht. Systematische Auswahl von Testfällen: Schnittstellentest Pro spezifizierter Bedingung mindestens einen Testfall prüfen, Randbereiche (ggf. von beiden Seiten) prüfen, Maximal-, Minmalwerte nicht vergessen, eine genüg große Anzahl von Normalfällen prüfen. Überdeckungstest Erwünscht, aber kaum machbar ist eine Wegüberdeckung d.h. jeder Weg wird mindestens einmal durchlaufen. Auf jeden Fall nötig ist eine Anweisungsüberdeckung, d.h. jede Anweisung wird mindestens einmal durchlaufen. Hauptproblem des Testens: Kombinatorische Explosion der Testfälle c LETTMANN 2003/04 Modellierung Verifikation V-51 c LETTMANN 2003/04 Modellierung Verifikation V-52
Informatik I - Programmierung Globalübung Hoare-Kalkül. Thomas Weiler. Fachgruppe Informatik RWTH Aachen. T. Weiler, RWTH Aachen - 1 -
Informatik I - Programmierung Globalübung 11.11.2003 Hoare-Kalkül Thomas Weiler Fachgruppe Informatik RWTH Aachen T. Weiler, RWTH Aachen - 1 - Ariane 5 Die Ariane 5 ist das jüngste Modell der Trägerrakete
MehrPartielle Korrektheit von Programmen. Beispiele an der Tafel
Partielle Korrektheit von Programmen Beispiele an der Tafel ALP II: Margarita Esponda, 12. Vorlesung, 24.5.2012 36 Beispiel: Partielle Korrektheit von Programmen Nehmen wir an, wir möchten beweisen, dass
MehrKurs 1612 Konzepte imperativer Programmierung Musterlösung zur Nachklausur am
1 Aufgabe 1 a) Da Effizienzbetrachtungen bei der Lösung der Aufgabe keine Rolle spielen, wählen wir einen einfachen, aber ineffizienten Algorithmus mit zwei ineinander verschachtelten for-schleifen. Dadiefor-Schleifen
MehrAlgorithmen und Datenstrukturen Korrektheit von Algorithmen
Algorithmen und Datenstrukturen Korrektheit von Algorithmen Matthias Teschner Graphische Datenverarbeitung Institut für Informatik Universität Freiburg SS 12 Lernziele der Vorlesung Algorithmen Sortieren,
MehrSoftware Entwicklung 2. Formale Verifikation
Software Entwicklung 2 Formale Verifikation Inhalt Verifikation Intuitive Einführung: Die induktive Zusicherungsmethode Zusicherungen Spezifizieren mit Anfangs- und Endebedingung Der Hoare-Kalkül Totale
MehrAlgorithmen & Programmierung. Steuerstrukturen im Detail Selektion und Iteration
Algorithmen & Programmierung Steuerstrukturen im Detail Selektion und Iteration Selektion Selektion Vollständige einfache Selektion Wir kennen schon eine Möglichkeit, Selektionen in C zu formulieren: if
MehrTheoretische Informatik SS 03 Übung 3
Theoretische Informatik SS 03 Übung 3 Aufgabe 1 a) Sind die folgenden Funktionen f : partiell oder total: f(x, y) = x + y f(x, y) = x y f(x, y) = x y f(x, y) = x DIV y? Hierbei ist x DIV y = x y der ganzzahlige
MehrInformatik II - Tutorium
Sommersemester 2008 http://info2tut.blogspot.com 29. April 2007 Universität Karlsruhe (TH) Forschungsuniversität gegründet 1825 Quellennachweis & Dank an: Joachim Wilke, Susanne Dinkler, Bernhard Müller,
MehrKapitel 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
MehrEin Beispielbeweis zur Verifikation des Programms zur Division mit Rest auf der Basis der Hoare-Regeln
Ein Beispielbeweis zur Verifikation des Programms zur Division mit Rest auf der Basis der Hoare-Regeln Ralf Lämmel 24. Dezember 2014 1 Hoare-Regeln Im folgenden müssen wie folgende Hoare-Regeln benutzen:
MehrModul 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
MehrStatisches Programmverständnis. pk12w16,
Statisches Programmverständnis pk12w16, 10. 12. 2012 1 Verifikation einer Klasse für jede Methode und jeden Konstruktor: Annahme: Vorbedingungen und Invarianten erfüllt Nachbedingungen und Invarianten
MehrAufgaben Objektentwurf
Aufgaben Objektentwurf (Einschub zum 5. Tutorium) Tutorium 6 13. März 2009 Svetlana Matiouk, Uni Bonn Ferientutorien zur Vorlesung Softwaretechnologie WS 2008 6. Treffen, Aufgabe 1 Vorwärtsmodellierung
MehrGrundzüge der Wirtschaftsinformatik WS 2002/03. Wiederholung Java. Programmierzyklus. Heiko Rossnagel Problem
Grundzüge der Wirtschaftsinformatik WS 2002/03 Wiederholung Java Heiko Rossnagel www.m-lehrstuhl.de accelerate.com Grundzüge der Wirtschaftsinformatik WS 2002/03 1 Programmierzyklus Problem Formulierung
MehrÜ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
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Wintersemester 2013/14 1. Vorlesung Kapitel 1: Sortieren Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I Das Problem Eingabe Gegeben: eine Folge A = a 1, a 2,..., a
MehrGrundlagen 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
MehrWintersemester 98/99 Hinweise zur Bearbeitung der Klausur zum Kurs 1612 Konzepte imperativer Programmierung
Klausur am 10.04.1999 1 Wintersemester 98/99 Hinweise zur Bearbeitung der Klausur zum Kurs 1612 Konzepte imperativer Programmierung Wir begrüßen Sie zur Klausur "Konzepte imperativer Programmierung". Lesen
MehrAbschlusseigenschaften. Automaten und Formale Sprachen alias Theoretische Informatik. Sommersemester Abschlusseigenschaften
Automaten und Formale Sprachen alias Theoretische Informatik Sommersemester 2012 Dr. Sander Bruggink Übungsleitung: Jan Stückrath Abgeschlossenheit (Definition) Gegeben sei eine Menge M und ein n-ärer
MehrEinführung in die Programmierung Wintersemester 2011/12
Einführung in die Programmierung Wintersemester 2011/12 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund : Kontrollstrukturen Inhalt Wiederholungen - while
MehrTeil 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
MehrSchachtelung der 2. Variante (Bedingungs-Kaskade): if (B1) A1 else if (B2) A2 else if (B3) A3 else if (B4) A4 else A
2.4.6. Kontrollstrukturen if-anweisung: Bedingte Ausführung (Verzweigung) 2 Varianten: if (Bedingung) Anweisung (Anweisung = einzelne Anweisung oder Block) Bedeutung: die Anweisung wird nur ausgeführt,
Mehr2. 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
MehrOperatoren 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
MehrEinfü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 Sven.Kosub@uni-konstanz.de Sprechstunde: Freitag,
MehrAbstrakte 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
Mehr3.2. Korrektheit und Komplexität am Beispiel: Sortieren Sortieren ist eine wichtige Basis-Operation für komplexe Algorithmen
3.2. Korrektheit und Komplexität am Beispiel: Sortieren Sortieren ist eine wichtige Basis-Operation für komplexe Algorithmen Sortierproblem Eingabe: Folge von n natürlichen Zahlen a 1, a 2,, a n, die Folge
Mehr5. 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
MehrKostenmodell. Daniel Graf, Tobias Pröger. 22. September 2016 (aktualisierte Fassung 5 vom 9. Oktober 2016)
Kostenmodell Daniel Graf, Tobias Pröger 22. September 2016 (aktualisierte Fassung 5 vom 9. Oktober 2016) Erklärung: Diese Mitschrift ist als Ergänzung zur Vorlesung gedacht. Wir erheben keinen Anspruch
MehrEinführung in die Informatik Algorithms
Einführung in die Informatik Algorithms Vom Problem zum Algorithmus und zum Programm Wolfram Burgard Cyrill Stachniss 1.1 Motivation und Einleitung In der Informatik sucht man im Normalfall nach Verfahren
MehrProgrammieren I. Kapitel 5. Kontrollfluss
Programmieren I Kapitel 5. Kontrollfluss Kapitel 5: Kontrollfluss Ziel: Komplexere Berechnungen im Methodenrumpf Ausdrücke und Anweisungen Fallunterscheidungen (if, switch) Wiederholte Ausführung (for,
MehrAnnehmende Schleife do while
Annehmende Schleife do while Schleife mit nachfolgender Bedingungsprüfung: annehmende Schleife B S Mit B wird eine Bedingung (logischer Ausdruck) bezeichnet, S ist ein Strukturblock. Zuerst wird S ausgeführt,
MehrSyntax 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:
MehrTheorem Proving. Software Engineering in der Praxis. Prädikatenlogik. Software Engineering in der Praxis Wintersemester 2006/2007
Seite 1 Theorem Proving Prädikatenlogik Seite 2 Gliederung Warum Theorembeweisen? Wie funktioniert Theorembeweisen? Wie kann mir das Werkzeug KIV dabei helfen? Seite 3 Warum Theorembeweisen? Wie kann man
MehrSystematisches Testen der Funktionalität von Softwaresystemen. 17. Juni 2015
Systematisches Testen der Funktionalität von Softwaresystemen 17. Juni 2015 Überblick Semantische Qualität von Software Teststrategien und prinzipien Testgetriebene Softwareentwicklung Welche Arten von
MehrTechnische 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
MehrInhaltsverzeichnis. Einführende Bemerkungen 11. Das Fach Informatik 11 Zielsetzung der Vorlesung Grundbegriffe
Inhaltsverzeichnis Einführende Bemerkungen 11 Das Fach Informatik 11 Zielsetzung der Vorlesung 12 1. Grundbegriffe 1 3 1.1 1.2 1.3 1.4 1.5 1.6 1.7 Information und Nachricht 1.1.1 Information 1.1.2 Nachricht
MehrInformatik 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,
MehrAlgorithmen und Datenstrukturen Kapitel 10
Algorithmen und Datenstrukturen Kapitel 10 Flüsse Frank Heitmann heitmann@informatik.uni-hamburg.de 6. Januar 2016 Frank Heitmann heitmann@informatik.uni-hamburg.de 1/8 Flüsse Graphen Grundlagen Definition
MehrResolutionsalgorithmus
112 Resolutionskalkül Mit dem Begriff Kalkül bezeichnet man eine Menge von syntaktischen Umformungsregeln, mit denen man semantische Eigenschaften der Eingabeformel herleiten kann. Für den Resolutionskalkül:
Mehr4. Einfache Programmstrukturen in C Einfache Programmstrukturen in C
Einfache Programmstrukturen in C 4-1 Welche einfache Programmstrukturen sind zu unterscheiden? Arithmetische und logische Ausdrücke und Zuweisungen Verzweigungen Unvollständige bedingte Anweisungen Vollständige
Mehr5. Elementare Befehle und Struktogramme
5. Elementare Befehle und Struktogramme Programmablauf Beschreibung des Programmablaufs mittel grafischer Symbole Beispiel : Flussdiagramme ja nein Besser : Struktogramme Dr. Norbert Spangler / Grundlagen
MehrKurs 1613 Einführung in die imperative Programmierung Musterlösung zur Klausur am
Kurs 1613 Einführung in die imperative Programmierung 1 Aufgabe 1 procedure NachVorn( inwert: integer; var iorefanfang: trefelement); {Sucht das erste vorkommende Element mit inwert in der info-komponente
MehrFormale Grundlagen 2008W. Vorlesung im 2008S Institut für Algebra Johannes Kepler Universität Linz
Formale Grundlagen Institut für Algebra Johannes Kepler Universität Linz Vorlesung im 2008S http://www.algebra.uni-linz.ac.at/students/win/fg Inhalt Definition Sei A eine Menge und ɛ A A A eine zweistellige
MehrTesten und Debugging
Testen und Debugging Testklassen, Unit Tests Blackbox Test, Whitebox Test Regressionstesten Zusicherungen mit assert Debugger Informatik II: Objektorientierte SW-Entwicklung, Algorithmik, Nebenläufigkeit
MehrGrundlagen 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
Mehr6 Systematisches Testen von Programmen
6 Systematisches Testen von Programmen Testen Untersuchung des Source-Codes nach Fehlern und Anomalien Stefan Lucks, Software-Entwicklung für Sichere Systeme SS 04, Kapitel 6 p.1/24 Untersuchung des Source-Codes
MehrStudent: Alexander Carls Matrikelnummer: Aufgabe: Beschreibung des euklidischen Algorithmus Datum:
Berufsakademie Stuttgart / Außenstelle Horb Studienbereich Technik Studiengang Informationstechnik Kurs IT2006, 2.Semester Dozent: Olaf Herden Student: Alexander Carls Matrikelnummer: 166270 Aufgabe: Beschreibung
MehrAllgemeine Hinweise: TECHNISCHE UNIVERSITÄT MÜNCHEN. Name Vorname Studiengang Matrikelnummer. Hörsaal Reihe Sitzplatz Unterschrift
TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen WS 2008/09 Einführung in die Informatik 2 Klausur Prof. Dr. Helmut Seidl, T. M. Gawlitza, S. Pott,
MehrTeil 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
MehrEffizienz von Algorithmen
Effizienz von Algorithmen Letzte Bearbeitung: Jan 211 Ein wichtiger Aspekt bei Algorithmen sind seine "Kosten". Wir wollen uns hier ausschließlich mit der Laufzeit des gewählten Algorithmus beschäftigen.
MehrAlgorithmen 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
MehrFormale Entwicklung objektorientierter Software
Formale Entwicklung objektorientierter Software Praktikum im Wintersemester 2007/2008 Prof. P.H. Schmitt, Dr. Thomas Käufl, Christian Engel, Benjamin Weiß 24. Oktober 2007 Formale Entwicklung objektorientierter
MehrSoftware-Test: Funktionstest
0/23 Software-Test: Funktionstest Andreas Zeller Lehrstuhl Softwaretechnik Universität des Saarlandes, Saarbrücken Funktionale Testverfahren 1/23 Funktionale Testverfahren testen gegen die Spezifikation
MehrTutorium für Fortgeschrittene
Tutorium für Fortgeschrittene Stroop Aufgabe: Die Farbe gesehener Wörter ist zu klassifizieren. Es gibt 4 Farben (rot, blau, gelb, grün) In Eprime: red, blue, yellow and green. Jeder Farbe ist einer Taste
MehrVerlässliche Echtzeitsysteme
Verlässliche Echtzeitsysteme Grundlagen der statischen Programmanalyse Peter Ulbrich Friedrich-Alexander-Universität Erlangen-Nürnberg Lehrstuhl Informatik 4 (Verteilte Systeme und Betriebssysteme) www4.informatik.uni-erlangen.de
MehrAlgorithmen und Datenstrukturen 1 Kapitel 4.1
Algorithmen und Datenstrukturen 1 Kapitel 4.1 Technische Fakultät robert@techfak.uni-bielefeld.de Vorlesung, U. Bielefeld, Winter 2005/2006 Kapitel 4: Maschinenmodelle [Dieses Kapitel hält sich eng an
MehrGrundlagen 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
MehrSpezifikation der zulässigen Parameter. Bemerkungen: Bemerkungen: (2) Design by Contract:
Spezifikation der zulässigen Parameter Bemerkungen: Bei jeder (partiellen) Funktion muss man sich überlegen und dokumentieren, welche aktuellen Parameter bei einer Anwendung zulässig sein sollen. Der Anwender
MehrDiskrete Strukturen Kapitel 2: Grundlagen (Beweise)
WS 2014/15 Diskrete Strukturen Kapitel 2: Grundlagen (Beweise) Hans-Joachim Bungartz Lehrstuhl für wissenschaftliches Rechnen Fakultät für Informatik Technische Universität München http://www5.in.tum.de/wiki/index.php/diskrete_strukturen_-_winter_14
Mehr4.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
Mehr= 7 (In Binärdarstellung: = 0111; Unterlauf) = -8 (In Binärdarstellung: = 1000; Überlauf)
Musterlösung Übung 2 Aufgabe 1: Große Zahlen Das Ergebnis ist nicht immer richtig. Die Maschine erzeugt bei Zahlen, die zu groß sind um sie darstellen zu können einen Über- bzw. einen Unterlauf. Beispiele
MehrSchleifenanweisungen
Schleifenanweisungen Bisher: sequentielle Abarbeitung von Befehlen (von oben nach unten) Nun: Befehle mehrfach ausführen (= Programmschleife): for-anweisung - wenn feststeht, wie oft z.b.: eine Berechnung
MehrEinführung in die Programmierung
: Inhalt Einführung in die Programmierung Wintersemester 2010/11 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund Wiederholungen - while - do-while - for
MehrDie Ackermannfunktion
Die Ackermannfunktion Slide 1 Die Ackermannfunktion Hans U. Simon (RUB) Email: simon@lmi.rub.de Homepage: http://www.ruhr-uni-bochum.de/lmi Die Ackermannfunktion Slide 2 Eine Frage zu Anfang Ist jede intuitiv
MehrTesten. SEPR Referat: Testen - Oliver Herbst
Testen Inhalt 1. Grundlagen des Testens 2. Testen im Softwarelebenszyklus 3. Statischer Test 4. Dynamischer Test 5. Besondere Tests 2 1. Grundlagen des Testens 3 Grundlagen des Testens Motivation erfüllt
MehrEinfü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
MehrGrundlagen der Theoretischen Informatik
FH Wedel Prof. Dr. Sebastian Iwanowski GTI22 Folie 1 Grundlagen der Theoretischen Informatik Sebastian Iwanowski FH Wedel Kap. 2: Logik, Teil 2.2: Prädikatenlogik FH Wedel Prof. Dr. Sebastian Iwanowski
Mehr1.2 LOOP-, WHILE- und GOTO-Berechenbarkeit
Die Programmiersprache LOOP (i) Syntaktische Komponenten: Variable: x 0, x 1, x 2,... Konstanten: 0, 1, 2,... Trennsymbole: ; := Operationszeichen: + Schlüsselwörter: LOOP DO END (ii) LOOP-Programme: Wertzuweisungen:
MehrWhitebox-Tests: Allgemeines
-Tests: Allgemeines Andere Bezeichnungen Logic driven, Strukturelles Der Tester entwickelt Testfälle aus einer Betrachtung der Ablauflogik des Programms unter Berücksichtigung der Spezifikation Intuitiv
MehrEinführung in die Informatik I
Einführung in die Informatik I Algorithmen und deren Programmierung Prof. Dr. Nikolaus Wulff Definition Algorithmus Ein Algorithmus ist eine präzise formulierte Handlungsanweisung zur Lösung einer gleichartigen
MehrVariablen und Datentypen
Programmieren mit Python Modul 1 Variablen und Datentypen Selbstständiger Teil Inhaltsverzeichnis 1 Überblick 3 2 Teil A: Geldautomat 3 2.1 Einführung.................................. 3 2.2 Aufgabenstellung...............................
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Prof. Dr. Ralf Möller Universität zu Lübeck Institut für Informationssysteme Stefan Werner (Übungen) sowie viele Tutoren Teilnehmerkreis und Voraussetzungen Studiengänge
MehrTheorie der Informatik
Theorie der Informatik 13. LOOP-, WHILE- und GOTO-Berechenbarkeit Malte Helmert Gabriele Röger Universität Basel 9. April 2014 Überblick: Vorlesung Vorlesungsteile I. Logik II. Automatentheorie und formale
MehrVorbereitungen zum 3. Praktikum (PL/SQL):
Vorbereitungen zum 3. Praktikum (PLSQL): SQL ist eine nicht-prozedurale Sprache der 4. Generation, die es nicht erlaubt, Elemente von 3.-Generation-Sprachen (Schleifen, Verzweigungen, etc.) zu benutzen.
MehrKapitel 5. Programmierkurs. Kontrollstrukturen. Arten von Kontrollstrukturen. Kontrollstrukturen Die if-anweisung Die switch-anweisung
Kapitel 5 Programmierkurs Birgit Engels, Anna Schulze ZAIK Universität zu Köln Kontrollstrukturen Die if-anweisung Die switch-anweisung Die for-schleife Die while-schleife Die do-schleife WS 7/8 /55 Kontrollstrukturen
MehrAssertions (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.
MehrVom Testkonzept zu JUnit
Testen und Testkonzept Dipl.-Inf. (FH) Christopher Olbertz 2. Dezember 2014 Testen und Testkonzept Warum testen? Wichtig, obwohl bei Programmierern unbeliebt Stellt weitgehend korrekte Funktionsweise eines
MehrMaster 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
MehrWebbasierte 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,
MehrLOOP-Programme: Syntaktische Komponenten
LOOP-Programme: Syntaktische Komponenten LOOP-Programme bestehen aus folgenden Zeichen (syntaktischen Komponenten): Variablen: x 0 x 1 x 2... Konstanten: 0 1 2... Operationssymbole: + Trennsymbole: ; :=
MehrVBA-Programmierung: Zusammenfassung
VBA-Programmierung: Zusammenfassung Programmiersprachen (Definition, Einordnung VBA) Softwareentwicklung-Phasen: 1. Spezifikation 2. Entwurf 3. Implementierung Datentypen (einfach, zusammengesetzt) Programmablaufsteuerung
MehrMathematik für Naturwissenschaftler I WS 2009/2010
Mathematik für Naturwissenschaftler I WS 2009/2010 Lektion 4 23. Oktober 2009 Kapitel 1. Mengen, Abbildungen und Funktionen (Fortsetzung) Berechnung der Umkehrfunktion 1. Man löst die vorgegebene Funktionsgleichung
MehrDef.: Die Menge der LOOP-Programme ist induktiv wie folgt definiert:
3. LOOP-, WHILE- und GOTO-Berechenbarkeit 3.1 LOOP-Programme Komponenten: Variablen: x 0, x 1, x 2,, y, z, Konstanten: 0, 1, 2, Trennsymbole: ; := Operationszeichen: +, - Schlüsselwörter: LOOP, DO, END
MehrProbabilistische Primzahltests
23.01.2006 Motivation und Überblick Grundsätzliches Vorgehen Motivation und Überblick Als Primzahltest bezeichnet man ein mathematisches Verfahren, mit dem ermittelt wird, ob eine gegebene Zahl eine Primzahl
MehrSchleifen dienen dazu, bestimmte Anweisungen immer wieder abzuarbeiten.
Folge 6 WHILE-Schleife JAVA 6.1 Schleifen Schleifen dienen dazu, bestimmte Anweisungen immer wieder abzuarbeiten. Zu einer Schleife gehören die Schleifenbedingung und der Rumpf. Die Schleifenbedingung
MehrJavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML.
JavaScript JavaScript wird direkt in HTML-Dokumente eingebunden. Gib folgende Zeilen mit einem Texteditor (Notepad) ein: (Falls der Editor nicht gefunden wird, öffne im Browser eine Datei mit der Endung
Mehr(Prüfungs-)Aufgaben zur Berechenbarkeits- und Komplexitätstheorie
(Prüfungs-)Aufgaben zur Berechenbarkeits- und Komplexitätstheorie 1) Schreiben Sie ein LOOP-Programm, das die Funktion f: N \ {0} N, f (n) = n n berechnet. Sie dürfen in Ihrem Programm die Multiplikation
Mehrabgeschlossen unter,,,, R,
Was bisher geschah Turing-Maschinen können Sprachen L X akzeptieren entscheiden Funktionen berechnen f : X X (partiell) Menge aller Turing-akzeptierbaren Sprachen genau die Menge aller Chomsky-Typ-0-Sprachen
MehrFlussdiagramm / Programmablaufplan (PAP)
Flussdiagramm / Programmablaufplan (PAP) Basissysmbole Grenzstelle (Anfang, Zwischenhalt oder Ende des Programms/Algorithmus) Verbindung Zur Verdeutlichung der Ablaufrichtung werden Linien mit einer Pfeilspitze
Mehrzu 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
MehrEinführung in die Programmierung I Systema=sches Programmieren
252-0027 Einführung in die Programmierung I 10.0 Systema=sches Programmieren Thomas R. Gross Department Informa=k ETH Zürich Copyright (c) Pearson 2013 and Thomas Gross 2016 All rights reserved. Uebersicht!
MehrWhite-Box-Test. Black-Box-Test. Testen. Testen. Vorlesung Methoden des Software Engineering. Martin Wirsing. Einheit D.2,
21.12.04 1 Ziele 21.12.04 2 Vorlesung Methoden des Software Engineering Techniken des Black-Box-Testens und des White-Box-Testens kennen lernen Block D Qualitätssicherung Black-Box-Test und White-Box-Test
MehrSoftwaretechnikpraktikum SS 2004. Qualitätsmanagement I. 1. Überblick. Qualität. Qualitätsmerkmal
Softwaretechnikpraktikum SS 2004 Qualitätsmanagement I 5. Vorlesung 1. Überblick Planungsphase Definitionsphase Entwurfsphase Implem.- phase Fragen Was ist Qualität? Wie kann man Qualität messen? Wie kann
Mehr2: Zahlentheorie / Restklassen 2.1: Modulare Arithmetik
Stefan Lucks Diskrete Strukturen (WS 2009/10) 57 2: Zahlentheorie / Restklassen 2.1: Modulare Arithmetik Uhr: Stunden mod 24, Minuten mod 60, Sekunden mod 60,... Rechnerarithmetik: mod 2 w, w {8, 16, 32,
Mehr3: Systematisches Testen
Stefan Lucks 3: Systematisches Testen 70 E für Sichere Vert. Systeme (2007) 3: Systematisches Testen Testen ist ein Prozess, ein Programm mit der Absicht auszuführen, Fehler zu finden. Man muss destruktiv
MehrAlgorithmen & Programmierung. Algorithmen als Funktionen Funktionen in C
Algorithmen & Programmierung Algorithmen als Funktionen Funktionen in C Algorithmus in der Informatik Algorithmen in der Informatik können nur Informationen verarbeiten, die als Daten bezeichnet werden.
MehrMethoden des Software Engineering
1 Vorlesung Methoden des Software Engineering Block F Test und Validierung F 2 Black-Box-Test und White-Box-Test Christian Prehofer Unter Verwendung von Materialien von Martin Wirsing 2 Vorlesungsübersicht
MehrEinführung in die Informatik I (autip)
Einführung in die Informatik I (autip) Dr. Stefan Lewandowski Fakultät 5: Informatik, Elektrotechnik und Informationstechnik Abteilung Formale Konzepte Universität Stuttgart 24. Oktober 2007 Was Sie bis
MehrKomplexität von Algorithmen
Komplexität von Algorithmen Prof. Dr. Christian Böhm WS 07/08 in Zusammenarbeit mit Gefei Zhang http://www.dbs.informatik.uni-muenchen.de/lehre/nfinfosw Ressourcenbedarf - Größenordnungen Prozesse verbrauchen
Mehr