Informatik II - Tutorium

Ähnliche Dokumente
{P} S {Q} {P} S {Q} {P} S {Q} Inhalt. Hoare-Kalkül. Hoare-Kalkül. Hoare-Tripel. Hoare-Tripel. Hoare-Tripel

! 1. Erste Schritte! 2. Einfache Datentypen! 3. Anweisungen und Kontrollstrukturen! 4. Verifikation! 5. Reihungen (Arrays) II.1.4. Verifikation - 1 -

Verifizierende Testverfahren

C. A. R. Hoare. An Axiomatic Basis for Computer Programming. Nicolas Schelp. Proseminar Assertions SS 2007

WS 05/06 mod Verifikation

Informatik I - Programmierung Globalübung Hoare-Kalkül. Thomas Weiler. Fachgruppe Informatik RWTH Aachen. T. Weiler, RWTH Aachen - 1 -

Verifikation von Programmen

Algorithmen und Programmieren II Programmverifikation {V} P {N}

Vorbereitungskurs Mathematik zum Sommersemester 2015 Aussagen, Logik und Beweistechniken

FACHHOCHSCHULE AUGSBURG Hochschule für Technik, Wirtschaft und Gestaltung

Aufgabe 8. 1 Arbeitsweise illustrieren. 2 Korrektheitsbeweis führen. 3 Laufzeitanalyse durchführen.

Beispiel 1 zur Verifikation eines bedingten Anweisung. Hoare-Regel für die bedingte Anweisung. else

4.3 Verifikation von Aussagen über Algorithmen

Programmieren lernen mit Visual Basic

Algorithmen und Datenstrukturen Korrektheit von Algorithmen

Partielle Korrektheit von Programmen. Beispiele an der Tafel

Einführung in die Programmierung II. 3. Kontrollstrukturen

Beispiel 1 zur Verifikation eines bedingten Anweisung. Hoare-Regel für die bedingte Anweisung. Beispiel 2 zur Verifikation eines bedingten Anweisung

Ein Beispielbeweis zur Verifikation des Programms zur Division mit Rest auf der Basis der Hoare-Regeln

Kurs 1612 Konzepte imperativer Programmierung Musterlösung zur Nachklausur am

2. Grundlagen. Beschreibung von Algorithmen durch Pseudocode. Korrektheit von Algorithmen durch Invarianten.

Allgemeine Hinweise: TECHNISCHE UNIVERSITÄT MÜNCHEN. Name Vorname Studiengang Matrikelnummer. Hörsaal Reihe Sitzplatz Unterschrift

Grundlagen: Algorithmen und Datenstrukturen

Übung Algorithmen und Datenstrukturen

(Aufgaben zu Wertzuweisungen siehe Vorlesungsbeilage S. 49)

Theoretische Informatik SS 03 Übung 3

Tutorium für Fortgeschrittene

float: Fließkommazahl nach IEEE 754 Standard mit 32 bit

Client-Server-Beziehungen

Informatik I Tutorium WS 07/08

Schleifeninvarianten. Dezimal zu Binär

Resolutionsalgorithmus

Ersetzbarkeit und Verhalten

Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen. Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen

Definition der Hilfsprädikate

2 Teil 2: Nassi-Schneiderman

Einführung in die Programmierung Wintersemester 2011/12

Programmieren mit statistischer Software

Informatik II Musterlösung

Thomas Gewering Benjamin Koch Dominik Lüke. (geschachtelte Schleifen)

Klassen und Objekte. Klassen sind Vorlagen für Objekte. Objekte haben. Attribute. Konstruktoren. Methoden. Merkblatt

Informatik II, SS 2014

7. Einführung in C++ Programmieren / Algorithmen und Datenstrukturen 1 Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt

1. Übung Algorithmen I

Das diesem Dokument zugrundeliegende Vorhaben wurde mit Mitteln des Bundesministeriums für Bildung und Forschung unter dem Förderkennzeichen

2.4 Schleifen. Schleifen unterscheiden sich hinsichtlich des Zeitpunktes der Prüfung der Abbruchbedingung:

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

Werkzeuge zur Programmentwicklung

C# - Einführung in die Programmiersprache Bedingte Anweisungen und Schleifen

Erfüllbarkeitstests. Im folgenden: Ein sehr effizienter Erfüllbarkeitstest für eine spezielle Klasse von Formeln in KNF, sogenannte Hornformeln (vgl.

Welche Informatik-Kenntnisse bringen Sie mit?

Aufgabe 2 Konstruktion von Binärbäumen Tafelübung

Einstieg in die Informatik mit Java

Intensivübung zu Algorithmen und Datenstrukturen

Kurs 1613 Einführung in die imperative Programmierung Musterlösung zur Nachklausur am

Programmieren I. Kapitel 5. Kontrollfluss

C++ Teil 2. Sven Groß. 16. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Apr / 22

Übersicht. Schleifen. Schleifeninvarianten. Referenztypen, Wrapperklassen und API. 9. November 2009 CoMa I WS 08/09 1/15

Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen. Programmieren I. Martin Schultheiß. Hochschule Darmstadt Wintersemester 2010/2011

Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny

Girls Day 2017 Programmierung

Kapitel 2: Programmfluss steuern

Fachhochschule Südwestfalen Wir geben Impulse. Kontrollstrukturen und Schleifen in Octave

Übungspaket 9 Logische Ausdrücke

Ordnen Sie die folgenden Funktionen nach ihrer asymptotischer Komplexität in aufsteigender Reihenfolge: i=1 4i + n = 4 n. i=1 i + 3n = 4 ( n(n+1)

Übung zur Vorlesung Berechenbarkeit und Komplexität

1 Aufgaben 1.1 Umgebungsvariable setzen: CLASSPATH

Grundbegriffe der Informatik

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 25

Einstieg in die Informatik mit Java

Arrays. Arrays werden verwendet, wenn viele Variablen benötigt werden. Der Vorteil in Arrays liegt darin, dass man nur eine Variable deklarieren muss

= 7 (In Binärdarstellung: = 0111; Unterlauf) = -8 (In Binärdarstellung: = 1000; Überlauf)

Vorlesung Datenstrukturen

Einführung in die Theoretische Informatik

2. Woche Eindeutige Entschlüsselbarleit, Sätze von Kraft und McMillan, Huffmancodierung

Vorsemesterkurs Informatik

1 Aufgaben 1.1 Objektorientiert: ("extended-hamster") Sammel-Hamster

1. Typen 1.1 Typsicherheit 1.2 Typprüfung

Grundlagen von C# - 2

Einstieg in die Informatik mit Java

String - Matching. Kapitel Definition

Kapitel L:II. II. Aussagenlogik

Student: Alexander Carls Matrikelnummer: Aufgabe: Beschreibung des euklidischen Algorithmus Datum:

1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays)

Arithmetik in der tcsh

Software Entwicklung 2. Formale Verifikation

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 1. Teil

Transkript:

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, Michael Rother, Max Kramer

Übersicht 1 Organisatorisches 2 Und nochmal... 3 Invarianten 4 WP-Kalkül 5 Entwicklungsumgebung 6 Abschluss

1 Organisatorisches 2 Und nochmal... 3 Invarianten 4 WP-Kalkül 5 Entwicklungsumgebung 6 Abschluss

Beachte: Abgabe des ersten Übungsblattes ist am Freitag 02.05.2008 13:00 Uhr. Die korrigierten Blätter gibt es in der Regel am Dienstag zurück. Jede Praxisaufgabe muss per Email angegeben werden info2-tutor@gmx.de Vergesst nicht die 2 - Wochen - Regel!

1 Organisatorisches 2 Und nochmal... 3 Invarianten 4 WP-Kalkül 5 Entwicklungsumgebung 6 Abschluss

Und nochmal... Das UML Aktivitätdiagramm enthält... 1... Aktivitäten. 2... eine Systemgrenze 3... Anwender. Assoziationen... 1... ohne Kardinalitäten haben implizit eine Kardinalität von 1. 2... müssen mit Richtungspfeilen in Leserichtung versehen werden. 3... werden mit einer Linie dargestellt..

Und nochmal... Das UML Aktivitätdiagramm enthält... 1... Aktivitäten. 2... eine Systemgrenze 3... Anwender. Assoziationen... 1... ohne Kardinalitäten haben implizit eine Kardinalität von 1. 2... müssen mit Richtungspfeilen in Leserichtung versehen werden. 3... werden mit einer Linie dargestellt..

Und nochmal... Das UML Aktivitätdiagramm enthält... 1... Aktivitäten. 2... eine Systemgrenze 3... Anwender. Assoziationen... 1... ohne Kardinalitäten haben implizit eine Kardinalität von 1. 2... müssen mit Richtungspfeilen in Leserichtung versehen werden. 3... werden mit einer Linie dargestellt..

1 Organisatorisches 2 Und nochmal... 3 Invarianten 4 WP-Kalkül 5 Entwicklungsumgebung 6 Abschluss

(Schleifen-)Invarianten Sinn und Zweck Aussagen, die am Anfang und am Ende eines (Schleifen-)Durchlaufs gelten Helfen, die Korrektheit eines Programmes zu beweisen Beweis durch vollständige Induktion *juhu*

LCM - Aufgabe 1 funktion LCM (a, b) // LCM = kgv 2 i := 1; 3 z := b; 4 solange ( z mod a) > 0 5 z := z + b; 6 i := i + 1; 7 antworte z; Aufgaben Ist z = i b eine Invariante für die solange-schleife? Gilt nach jedem Schleifendurchlauf die Invariante LCM(a, b) = LCM(a, z)? Wie hoch ist die Anzahl der Additionen im schlimmsten Fall und welche Eigenschaft haben die Paare (a,b) dann?

LCM - Lösung Induktion über die Anzahl der Schleifendurchläufe n IA: n = 0 : z 0 = b = 1 b = i 0 b (Zeile 2) IV: n N : z n = i n b IS: n n + 1 Z4 z n+1 = z n + b IV = i n b + b = (i n + 1) b Z5 = i n+1 b Wir finden ein Gegenbeispiel a = 3, b = 5 so dass LCM(a, b) = LCM(a, z 0 ) = LCM(3, 5) = 15 aber nach dem ersten Druchlauf gilt: LCM(3, z 1 ) = LCM(3, 10) = 30 LCM(a, b) Im Worst-Case LCM(a, b) = a b wird die Schleife a-mal durchlaufen und es finden a Additionen statt. a und b sind teilerfremd.

1 Organisatorisches 2 Und nochmal... 3 Invarianten 4 WP-Kalkül 5 Entwicklungsumgebung 6 Abschluss

Hilfsdefinition: Spezifikation von Programmen Eine Programm-Spezifikation besteht aus Vorbedingung Q, Nachbedingung R und dem eigentlichen Programmcode P. Wird trotz Einhaltung der Vorbedingung die Nachbedingung nach Ablauf des Programms nicht immer eingehalten, ist die Spezifikation inkorrekt oder das Programm fehlerhaft. Schreibweise: {Vorbedingung}Programmcode{Nachbedingung} oder {Q}P{R}. Schreibweise jedoch für uns vorerst irrelevant.

WP-Kalkül: Einführung Ein Kalkül ist ein Verfahren zur Verifikation eines imperativen Programmcodes. wp steht für weakest precondition, also die schwächste Vorbedingung. Überprüfung der Korrektheit geschieht durch Rückwärtsanalyse des Programmcodes. Ausgehend von der Nachbedingung wird geprüft, ob diese durch die Vorbedingung und den Programmcode garantiert wird. Es existieren auch Kalküle die eine Vorwärtsanalyse durchführen.

WP-Kalkül: Aufbau Schreibweise wp( [Programmcode], [Nachbedingung]) = [schwächste Vorbedingung] Die [schwächste Vorbedingung] entsteht hauptsächlich durch einfache Termersetzung vom [Programmcode] in die [Nachbedingung]. Sie gibt größtmögliche Menge Daten an, welche (nach Ablauf des Programmcodes) die [Nachbedingung] erfüllen. Jede Untermenge davon erfüllt später die [Nachbedingung] auch.

WP-Kalkül: Aufbau Schreibweise wp( [Programmcode], [Nachbedingung]) = [schwächste Vorbedingung] Der Programmcode wird immer in Hochkommata angeben und kann Zusweisungen, Bedingungen oder Schleifen enthalten. Wird kein Code ausgeführt setht im Programmcode - Teil leer. Beispiel: x := 3

WP-Kalkül: Aufbau Schreibweise wp( [Programmcode], [Nachbedingung]) = [schwächste Vorbedingung] Die [Nachbedingung] wird ohne Hochkommata angeben und kann Vergleiche, logische Verknüpfungen oder logische Werte enthalten. Logische Werte sind true und false, logische Verknüpfungen sind (und) und (oder). Ist true (false) die einzige [Nachbedingung], so ist die [schwächste Vorbedingung] true (false). Beispiel: x < 3 y > 27

WP-Kalkül: Aufbau Schreibweise wp( [Programmcode], [Nachbedingung]) = [schwächste Vorbedingung] Die [schwächste Vorbedingung] kann ebenfalls Vergleiche, logische Verknüpfungen oder logische Werte enthalten. Ist sie true (false) erfüllen alle möglichen Daten später die [Nachbedingung]. Beispiel: x > 0

WP-Kalkül: einige Regeln einfache Zuweisung wp( x := x + 3, x < 5) = {x + 3 < 5} = {x < 2} Termersetzung der Zuweisung (rechte Seite) in alle Vorkommen der Nachbedingung Ausnahme: Durch All- oder Existenzquantoren gebundene Variablen der Nachbedingung

WP-Kalkül: einige Regeln mehrere Anweisung wp( x := x + 3;x := 0, x < 5) = wp( x := x + 3, wp( x := 0,x < 5)) Rückführung auf einfache Anweisung durch Ausklammerung von rechts nach links Reihenfolge wichtig!

WP-Kalkül: einige Regeln Vereinfachung der Nachbedingung wp( x := x + 3, 0 < 5) = wp( x := x + 3, true) = {true} Widersprüche und Tautlogien elimieren vereinfachte Nachbedingungen können auch hilfreich sein

WP-Kalkül: einige Regeln Vereinfachung gleicher Anweisungsteile wp( x := x + 3;y := 0, x < 5) wp( x := x + 3;y := 0, y < 3) = wp( x := x + 3;y := 0, (x < 5) (y < 3)) Bei gleichem Programm lassen sich die Nachbedingungen zu einer zusammenfassen.

WP-Kalkül: einige Regeln if - Anweisung wp( if (y > 0) then x := x + 3, x < 5) = ((y > 0) wp( x := x + 3, (x < 5))) ((y <= 0) wp( leer, (x < 5))) Betrachtung beider Fälle (Bedingung erfüllt bzw. nicht erfüllt) logische ODER-Verknüpfung zwischen true - und false - Zweig Reduktion der Bedingung im wp-kalkül auf den then - bzw. else - Zweig.

Einstiegsaufgaben wp( x := x-3;, x > 3) wp( x := x-3;, y < 5) wp( x := x-3;, y : y 5) wp( if (x > 3)then y++; else y--;, y = 2)

Einstiegsaufgaben wp( x := x-3;, x > 3) = {x 3 > 3} = {x > 6} wp( x := x-3;, y < 5) wp( x := x-3;, y : y 5) wp( if (x > 3)then y++; else y--;, y = 2)

Einstiegsaufgaben wp( x := x-3;, x > 3) = {x 3 > 3} = {x > 6} wp( x := x-3;, y < 5) = {y < 5} wp( x := x-3;, y : y 5) wp( if (x > 3)then y++; else y--;, y = 2)

Einstiegsaufgaben wp( x := x-3;, x > 3) = {x 3 > 3} = {x > 6} wp( x := x-3;, y < 5) = {y < 5} wp( x := x-3;, y : y 5) wp(x := x-3;, true) = {true} wp( if (x > 3)then y++; else y--;, y = 2)

Einstiegsaufgaben wp( x := x-3;, x > 3) = {x 3 > 3} = {x > 6} wp( x := x-3;, y < 5) = {y < 5} wp( x := x-3;, y : y 5) wp(x := x-3;, true) = {true} wp( if (x > 3)then y++; else y--;, y = 2) = {(x > 3) wp(y++;, y = 2) (x > 3) wp(y--;, y = 2)} = {(x > 3) (y = 1) (x 3) (y = 3)}

1 Organisatorisches 2 Und nochmal... 3 Invarianten 4 WP-Kalkül 5 Entwicklungsumgebung 6 Abschluss

IDEs Wozu? Die Programmieraufgaben werden anspruchsvoller und umfangreicher Gerade bei Verwendung des Collection-Frameworks ist eine IDE hilfreich: Autocompletion Übersicht durch Strukturierung und Färbung Debugging integrierte Dokumentationsanzeige Als Klausurvorbereitung zunächst ohne dann mit IDE programmieren zu empfehlen: Eclipse: www.eclipse.org zur besseren Übersicht: www.easyeclipse.org evtl. intuitiver, ähnlicher Funktionsumfang: Netbeans, www.netbeans.org

1 Organisatorisches 2 Und nochmal... 3 Invarianten 4 WP-Kalkül 5 Entwicklungsumgebung 6 Abschluss

Zum Schluss... Was ihr nun wissen solltet! Wie beweise ich eine Schleifeninvariante?

Zum Schluss... Was ihr nun wissen solltet! Wie beweise ich eine Schleifeninvariante? Was ist eine Spezifikation eines Programmes?

Zum Schluss... Was ihr nun wissen solltet! Wie beweise ich eine Schleifeninvariante? Was ist eine Spezifikation eines Programmes? Was ist das wp-kalkül?

Zum Schluss... Was ihr nun wissen solltet! Wie beweise ich eine Schleifeninvariante? Was ist eine Spezifikation eines Programmes? Was ist das wp-kalkül? Wie berechne ich es?

Zum Schluss... Was ihr nun wissen solltet! Wie beweise ich eine Schleifeninvariante? Was ist eine Spezifikation eines Programmes? Was ist das wp-kalkül? Wie berechne ich es? Wann und wo ist das erste Übungsblatt abzugeben? Ihr wisst was nicht? Stellt jetzt Fragen!