Formale Spezifikation mit Java Modeling Language

Größe: px
Ab Seite anzeigen:

Download "Formale Spezifikation mit Java Modeling Language"

Transkript

1 Formale Spezifikation mit Java Modeling Language Daniel Bruns Praxis der Software-Entwicklung, 25 November 2010 INSTITUT FÜR THEORETISCHE INFORMATIK KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der Helmholtz-Gemeinschaft wwwkitedu

2 Software ist allgegenwärtig Daniel Bruns Formale Spezifikation mit JML /14

3 Software ist allgegenwärtig Das bedeutet: Software kann immer und überall Fehler verursachen Daniel Bruns Formale Spezifikation mit JML /14

4 Formale Methoden Fehler sollen möglichst früh erkannt oder vermieden werden Manche Methoden greifen daher bereits in der Entwurfsphase Alle Methoden basieren auf elementaren mathematischen Konzepten wie Mengentheorie, Prädikatenlogik, etc Aber: Viele sind nur für Experten verständlich Java Modeling Language (JML) hat einen anderen Ansatz und zielt darauf ab, vom Durchschnittsprogrammierer genutzt zu werden speziell für die Spezifikation von Java-Programmen baut syntaktisch auf Java auf wird direkt als Kommentar in java-dateien geschrieben reichhaltige Sprache; man muss aber nicht alle Features nutzen kann verschiedene Werkzeuge bedienen: zb statische oder Laufzeitanalysen oder Testfallgenerierung Daniel Bruns Formale Spezifikation mit JML /14

5 Formale Methoden Fehler sollen möglichst früh erkannt oder vermieden werden Manche Methoden greifen daher bereits in der Entwurfsphase Alle Methoden basieren auf elementaren mathematischen Konzepten wie Mengentheorie, Prädikatenlogik, etc Aber: Viele sind nur für Experten verständlich Java Modeling Language (JML) hat einen anderen Ansatz und zielt darauf ab, vom Durchschnittsprogrammierer genutzt zu werden speziell für die Spezifikation von Java-Programmen baut syntaktisch auf Java auf wird direkt als Kommentar in java-dateien geschrieben reichhaltige Sprache; man muss aber nicht alle Features nutzen kann verschiedene Werkzeuge bedienen: zb statische oder Laufzeitanalysen oder Testfallgenerierung Daniel Bruns Formale Spezifikation mit JML /14

6 Formale Methoden Fehler sollen möglichst früh erkannt oder vermieden werden Manche Methoden greifen daher bereits in der Entwurfsphase Alle Methoden basieren auf elementaren mathematischen Konzepten wie Mengentheorie, Prädikatenlogik, etc Aber: Viele sind nur für Experten verständlich Java Modeling Language (JML) hat einen anderen Ansatz und zielt darauf ab, vom Durchschnittsprogrammierer genutzt zu werden speziell für die Spezifikation von Java-Programmen baut syntaktisch auf Java auf wird direkt als Kommentar in java-dateien geschrieben reichhaltige Sprache; man muss aber nicht alle Features nutzen kann verschiedene Werkzeuge bedienen: zb statische oder Laufzeitanalysen oder Testfallgenerierung Daniel Bruns Formale Spezifikation mit JML /14

7 Formale Methoden Fehler sollen möglichst früh erkannt oder vermieden werden Manche Methoden greifen daher bereits in der Entwurfsphase Alle Methoden basieren auf elementaren mathematischen Konzepten wie Mengentheorie, Prädikatenlogik, etc Aber: Viele sind nur für Experten verständlich Java Modeling Language (JML) hat einen anderen Ansatz und zielt darauf ab, vom Durchschnittsprogrammierer genutzt zu werden speziell für die Spezifikation von Java-Programmen baut syntaktisch auf Java auf wird direkt als Kommentar in java-dateien geschrieben reichhaltige Sprache; man muss aber nicht alle Features nutzen kann verschiedene Werkzeuge bedienen: zb statische oder Laufzeitanalysen oder Testfallgenerierung Daniel Bruns Formale Spezifikation mit JML /14

8 Motivierendes Beispiel int add (int x, int y) { while (0 < x--) y++; return y; } Daniel Bruns Formale Spezifikation mit JML /14

9 Motivierendes Beispiel int add (int x, int y) { while (0 < x--) y++; return y; } x y res Daniel Bruns Formale Spezifikation mit JML /14

10 Motivierendes Beispiel int add (int x, int y) { while (0 < x--) y++; return y; } x y res Daniel Bruns Formale Spezifikation mit JML /14

11 Motivierendes Beispiel int add (int x, int y) { while (0 < x--) y++; return y; } x y res Daniel Bruns Formale Spezifikation mit JML /14

12 Motivierendes Beispiel int add (int x, int y) { while (0 < x--) y++; return y; } x y res Daniel Bruns Formale Spezifikation mit JML /14

13 Motivierendes Beispiel int add (int x, int y) { while (0 < x--) y++; return y; } x y res Daniel Bruns Formale Spezifikation mit JML /14

14 Motivierendes Beispiel int add (int x, int y) { while (0 < x--) y++; return y; } x y res Daniel Bruns Formale Spezifikation mit JML /14

15 Motivierendes Beispiel int add (int x, int y) { while (0 < x--) y++; return y; } x y res Daniel Bruns Formale Spezifikation mit JML /14

16 Motivierendes Beispiel ensures \result == x + y; int add (int x, int y) { while (0 < x--) y++; return y; } x y res Daniel Bruns Formale Spezifikation mit JML /14

17 Motivierendes Beispiel requires x >= 0; //@ ensures \result == x + y; int add (int x, int y) { while (0 < x--) y++; return y; } x y res Daniel Bruns Formale Spezifikation mit JML /14

18 Grundlegende Syntax Alle JML-Spezifikationen sind spezielle Kommentare können daher von normalen Java-Parsern ignoriert werden Zeile: requires x >= 0; Block: /*@ requires x >= Im Block ist es üblich, eine neue Zeile zu beginnen JML-Spezifikationen können auch Kommentare enthalten beginnen mit Schlüsselwort (zb requires) und enden mit Semikolon /*@ requires x >= requires true; // nicht requires /* das auch nicht */ Daniel Bruns Formale Spezifikation mit JML /14

19 Grundlegende Syntax Alle JML-Spezifikationen sind spezielle Kommentare können daher von normalen Java-Parsern ignoriert werden Zeile: requires x >= 0; Block: /*@ requires x >= Im Block ist es üblich, eine neue Zeile zu beginnen JML-Spezifikationen können auch Kommentare enthalten beginnen mit Schlüsselwort (zb requires) und enden mit Semikolon /*@ requires x >= requires true; // nicht requires /* das auch nicht */ Daniel Bruns Formale Spezifikation mit JML /14

20 Grundlegende Syntax Alle JML-Spezifikationen sind spezielle Kommentare können daher von normalen Java-Parsern ignoriert werden Zeile: requires x >= 0; Block: /*@ requires x >= Im Block ist es üblich, eine neue Zeile zu beginnen JML-Spezifikationen können auch Kommentare enthalten beginnen mit Schlüsselwort (zb requires) und enden mit Semikolon /*@ requires x >= requires true; // nicht requires /* das auch nicht */ Daniel Bruns Formale Spezifikation mit JML /14

21 Ausdrücke in JML && logisches UND logisches ODER ==> logische Implikation <==> logische Äquivalenz ==!= (Un-)Gleichheit (wie in Java!) + - * / % Arithmetik wie in Java < <= > >= Vergleiche wie in Java \result Rückgabewert einer Methode \old(x) Wert von x im Anfangszustand Daniel Bruns Formale Spezifikation mit JML /14

22 Ausdrücke in JML && logisches UND logisches ODER ==> logische Implikation <==> logische Äquivalenz ==!= (Un-)Gleichheit (wie in Java!) + - * / % Arithmetik wie in Java < <= > >= Vergleiche wie in Java \result Rückgabewert einer Methode \old(x) Wert von x im Anfangszustand Daniel Bruns Formale Spezifikation mit JML /14

23 Beispiel public class Example { private int x; } /*@ ensures x == \old(x)-1 (x!= 0 ==> \result == public int foo (int y) { if (x-- == 1) return 42; else return y/x; } Daniel Bruns Formale Spezifikation mit JML /14

24 Methodenverträge Design by Contract (Meyer 1992) Wenn eine Methode m in einem Zustand aufgerufen wird, in dem eine Vorbedingung α erfüllt ist, dann gilt, nach erfolgreicher Ausführung, eine Nachbedingung β Zwischen aufrufender und aufgerufener Methode wird ein Vertrag geschlossen: Der Aufrufer garantiert die Vorbedingung und der Aufgerufene garaniert die Nachbedingung //@ requires α; //@ ensures β; T m (T1 p1,, Tn pn); Daniel Bruns Formale Spezifikation mit JML /14

25 Methodenverträge Design by Contract (Meyer 1992) Wenn eine Methode m in einem Zustand aufgerufen wird, in dem eine Vorbedingung α erfüllt ist, dann gilt, nach erfolgreicher Ausführung, eine Nachbedingung β Zwischen aufrufender und aufgerufener Methode wird ein Vertrag geschlossen: Der Aufrufer garantiert die Vorbedingung und der Aufgerufene garaniert die Nachbedingung //@ requires α; //@ ensures β; T m (T1 p1,, Tn pn); Daniel Bruns Formale Spezifikation mit JML /14

26 Methodenverträge Design by Contract (Meyer 1992) Wenn eine Methode m in einem Zustand aufgerufen wird, in dem eine Vorbedingung α erfüllt ist, dann gilt, nach erfolgreicher Ausführung, eine Nachbedingung β Zwischen aufrufender und aufgerufener Methode wird ein Vertrag geschlossen: Der Aufrufer garantiert die Vorbedingung und der Aufgerufene garaniert die Nachbedingung //@ requires α; //@ ensures β; T m (T1 p1,, Tn pn); Daniel Bruns Formale Spezifikation mit JML /14

27 Methodenverträge Design by Contract (Meyer 1992) Wenn eine Methode m in einem Zustand aufgerufen wird, in dem eine Vorbedingung α erfüllt ist, dann gilt, nach erfolgreicher Ausführung, eine Nachbedingung β Zwischen aufrufender und aufgerufener Methode wird ein Vertrag geschlossen: Der Aufrufer garantiert die Vorbedingung und der Aufgerufene garaniert die Nachbedingung //@ requires α; //@ ensures β; T m (T1 p1,, Tn pn); Daniel Bruns Formale Spezifikation mit JML /14

28 Methodenverträge Design by Contract (Meyer 1992) Wenn eine Methode m in einem Zustand aufgerufen wird, in dem eine Vorbedingung α erfüllt ist, dann gilt, nach erfolgreicher Ausführung, eine Nachbedingung β Zwischen aufrufender und aufgerufener Methode wird ein Vertrag geschlossen: Der Aufrufer garantiert die Vorbedingung und der Aufgerufene garaniert die Nachbedingung //@ requires x >= 0; //@ ensures \result == x + y; int add (int x, int y); Daniel Bruns Formale Spezifikation mit JML /14

29 Methodenverträge Design by Contract (Meyer 1992) Wenn eine Methode m in einem Zustand aufgerufen wird, in dem eine Vorbedingung α erfüllt ist, dann gilt, nach erfolgreicher Ausführung, eine Nachbedingung β Zwischen aufrufender und aufgerufener Methode wird ein Vertrag geschlossen: Der Aufrufer garantiert die Vorbedingung und der Aufgerufene garaniert die Nachbedingung //@ requires x >= 0; //@ ensures \result == x + y; int add (int x, int y); Daniel Bruns Formale Spezifikation mit JML /14

30 Methodenverträge Design by Contract (Meyer 1992) Wenn eine Methode m in einem Zustand aufgerufen wird, in dem eine Vorbedingung α erfüllt ist, dann gilt, nach erfolgreicher Ausführung, eine Nachbedingung β Zwischen aufrufender und aufgerufener Methode wird ein Vertrag geschlossen: Der Aufrufer garantiert die Vorbedingung und der Aufgerufene garaniert die Nachbedingung //@ requires x >= 0; //@ ensures \result == x + y; int add (int x, int y); Daniel Bruns Formale Spezifikation mit JML /14

31 Methodenverträge Design by Contract (Meyer 1992) Wenn eine Methode m in einem Zustand aufgerufen wird, in dem eine Vorbedingung α erfüllt ist, dann gilt, nach erfolgreicher Ausführung, eine Nachbedingung β Zwischen aufrufender und aufgerufener Methode wird ein Vertrag geschlossen: Der Aufrufer garantiert die Vorbedingung und der Aufgerufene garaniert die Nachbedingung //@ requires x >= 0; //@ ensures \result == x + y; int add (int x, int y); Daniel Bruns Formale Spezifikation mit JML /14

32 Exceptions Beispiel ensures behandelt nur den Fall, dass die Methode normal terminiert, dh ohne Ausnahmen Erwartete Ausnahmen werden mit signals (E e) angegeben (mit Exception-Parameter) und Nachbedingung ensures \result == signals (ArithmeticException e) x == signals (NullPointerException d) y == public int strangedivide (int x, Integer y) { return yintvalue()/x; } Daniel Bruns Formale Spezifikation mit JML /14

33 Exceptions Beispiel ensures behandelt nur den Fall, dass die Methode normal terminiert, dh ohne Ausnahmen Erwartete Ausnahmen werden mit signals (E e) angegeben (mit Exception-Parameter) und Nachbedingung ensures \result == signals (ArithmeticException e) x == signals (NullPointerException d) y == public int strangedivide (int x, Integer y) { return yintvalue()/x; } Daniel Bruns Formale Spezifikation mit JML /14

34 Default-Werte Leere Klauseln sind immer true normal_behavior steht für signals false exceptional_behavior steht für ensures false non_null ist der Default Ansonsten muss nullable verwendet requires ensures signals (E e) public T m ( U p, ); Daniel Bruns Formale Spezifikation mit JML /14

35 Default-Werte Leere Klauseln sind immer true normal_behavior steht für signals false exceptional_behavior steht für ensures false non_null ist der Default Ansonsten muss nullable verwendet requires ensures signals (E e) public T m ( U p, ); Daniel Bruns Formale Spezifikation mit JML /14

36 Default-Werte Leere Klauseln sind immer true normal_behavior steht für signals false exceptional_behavior steht für ensures false non_null ist der Default Ansonsten muss nullable verwendet requires ensures signals (E e) public T m ( U p, ); Daniel Bruns Formale Spezifikation mit JML /14

37 Default-Werte Leere Klauseln sind immer true normal_behavior steht für signals false exceptional_behavior steht für ensures false non_null ist der Default Ansonsten muss nullable verwendet werden requires ensures signals (E e) public T m ( U p, ); Daniel Bruns Formale Spezifikation mit JML /14

38 Default-Werte Leere Klauseln sind immer true normal_behavior steht für signals false exceptional_behavior steht für ensures false non_null ist der Default Ansonsten muss nullable verwendet requires ensures signals (E e) public T m ( U p, ); Daniel Bruns Formale Spezifikation mit JML /14

39 Default-Werte Leere Klauseln sind immer true normal_behavior steht für signals false exceptional_behavior steht für ensures false non_null ist der Default Ansonsten muss nullable verwendet werden requires ensures signals (E e) public T m ( U p, ); Daniel Bruns Formale Spezifikation mit JML /14

40 Default-Werte Leere Klauseln sind immer true normal_behavior steht für signals false exceptional_behavior steht für ensures false non_null ist der Default Ansonsten muss nullable verwendet requires p!= null && ensures \result!= null && signals (E e) public T m ( U p, ); Daniel Bruns Formale Spezifikation mit JML /14

41 Default-Werte Leere Klauseln sind immer true normal_behavior steht für signals false exceptional_behavior steht für ensures false non_null ist der Default Ansonsten muss nullable verwendet requires p!= null && ensures \result!= null && signals (E e) public/*@ T m (/*@ U p, ); Daniel Bruns Formale Spezifikation mit JML /14

42 Default-Werte Leere Klauseln sind immer true normal_behavior steht für signals false exceptional_behavior steht für ensures false non_null ist der Default Ansonsten muss nullable verwendet requires p!= null && ensures \result!= null && signals (E e) public T m ( U p, ); Daniel Bruns Formale Spezifikation mit JML /14

43 Default-Werte Leere Klauseln sind immer true normal_behavior steht für signals false exceptional_behavior steht für ensures false non_null ist der Default Ansonsten muss nullable verwendet requires ensures signals (E e) public/*@ T m (/*@ U p, ); Daniel Bruns Formale Spezifikation mit JML /14

44 Mehrere Spezifikationsfälle Klauseln gleichen Typs werden konjunktiv verknüft requires α 1 requires α 2 ensures β 1 ensures β 2 Mehrere Verträge sind unabhängig voneinander /*@ requires ensures requires signals (E e) Daniel Bruns Formale Spezifikation mit JML /14

45 Mehrere Spezifikationsfälle Klauseln gleichen Typs werden konjunktiv verknüft requires α 1 && α ensures β 1 && β Mehrere Verträge sind unabhängig voneinander /*@ requires ensures requires signals (E e) Daniel Bruns Formale Spezifikation mit JML /14

46 Mehrere Spezifikationsfälle Klauseln gleichen Typs werden konjunktiv verknüft requires α 1 && α ensures β 1 && β Mehrere Verträge sind unabhängig voneinander /*@ requires ensures requires signals (E e) Daniel Bruns Formale Spezifikation mit JML /14

47 Literatur Gary T Leavens, Albert L Baker, and Clyde Ruby Preliminary design of JML: A behavioral interface specification language for Java Technical Report 98-06y, Iowa State University, 2003 Gary T Leavens et al JML reference manual Entwurfsfassung Revision 1235, verfügbar unter September 2009 Peter H Schmitt Spezifikation und Verifikation von Software, 2010 Skript zur Vorlesung Verfügbar unter Daniel Bruns Formale Spezifikation mit JML /14

48 Übungsaufgabe 1 public class Riddle { private int x; } public int twiddle (int z) { return (z + x)/ ++x ; } Daniel Bruns Formale Spezifikation mit JML /14

49 Übungsaufgabe 2 public class Mystery { private int secret; } public static void do (Mystery a, Mystery b){ int x = asecret--; bsecret += asecret; asecret -= x; } Daniel Bruns Formale Spezifikation mit JML /14

Design by Contract with JML

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

Mehr

Klausur Formale Systeme Fakultät für Informatik SS 2017

Klausur Formale Systeme Fakultät für Informatik SS 2017 Klausur Formale Systeme Fakultät für Informatik SS 2017 Prof. Dr. Bernhard Beckert 3. August 2017 Name: Vorname: Matrikel-Nr.: Die Bearbeitungszeit beträgt 60 Minuten. A1 (14) A2 (6) A3 (6) A4 (8) A5 (11)

Mehr

Klausur Formale Systeme Fakultät für Informatik SS Prof. Dr. Bernhard Beckert. 3. August Die Bearbeitungszeit beträgt 60 Minuten.

Klausur Formale Systeme Fakultät für Informatik SS Prof. Dr. Bernhard Beckert. 3. August Die Bearbeitungszeit beträgt 60 Minuten. Name: Vorname: Klausur Formale Systeme Fakultät für Informatik Matrikel-Nr.: SS 2017 Prof. Dr. Bernhard Beckert 3. August 2017 Die Bearbeitungszeit beträgt 60 Minuten. A1 (14) A2 (6) A3 (6) A4 (8) A5 (11)

Mehr

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

! 1. Erste Schritte! 2. Einfache Datentypen! 3. Anweisungen und Kontrollstrukturen! 4. Verifikation! 5. Reihungen (Arrays) II.1.4. Verifikation - 1 - ! 1. Erste Schritte! 2. Einfache Datentypen! 3. Anweisungen und Kontrollstrukturen! 4. Verifikation! 5. Reihungen (Arrays) II.1.4. Verifikation - 1 - 4. Verifikation! Spezifikation: Angabe, was ein Programm

Mehr

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

n 1. Erste Schritte n 2. Einfache Datentypen n 3. Anweisungen und Kontrollstrukturen n 4. Verifikation n 5. Reihungen (Arrays) n 1. Erste Schritte n 2. Einfache Datentypen n 3. Anweisungen und Kontrollstrukturen n 4. Verifikation n 5. Reihungen (Arrays) II.1.4. Verifikation - 1 - 4. Verifikation n Spezifikation: Angabe, was ein

Mehr

Qualitätssicherung in der Softwareentwicklung

Qualitätssicherung in der Softwareentwicklung VU 3 Institut für Softwaretechnologie (IST) TU Graz Sommersemester 2012 Übersicht der Vorlesung 1 Invarianten in JML 2 3 4 5 JML Beispiele Invariant package org.jmlspecs.samples.jmlrefman Purse [Burdy

Mehr

Software Entwicklung 1. Spezifikation von Prozedureigenschaften. Spezifikation prozeduraler Programme. Warum Spezifikationen?

Software Entwicklung 1. Spezifikation von Prozedureigenschaften. Spezifikation prozeduraler Programme. Warum Spezifikationen? Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter AG Softech FB Informatik TU Kaiserslautern Spezifikation von Prozedureigenschaften Bieniusa/Poetzsch-Heffter Software Entwicklung 1 2/ 27

Mehr

JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML.

JavaScript. 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

Elementare Konzepte von

Elementare Konzepte von Elementare Konzepte von Programmiersprachen Teil 2: Anweisungen (Statements) Kapitel 6.3 bis 6.7 in Küchlin/Weber: Einführung in die Informatik Anweisungen (statements) in Java Berechnung (expression statement)

Mehr

CoMa 04. Java II. Paul Boeck. 7. Mai Humboldt Universität zu Berlin Institut für Mathematik. Paul Boeck CoMa 04 7.

CoMa 04. Java II. Paul Boeck. 7. Mai Humboldt Universität zu Berlin Institut für Mathematik. Paul Boeck CoMa 04 7. CoMa 04 Java II Paul Boeck Humboldt Universität zu Berlin Institut für Mathematik 7. Mai 2013 Paul Boeck CoMa 04 7. Mai 2013 1 / 13 Verzweigungen Wenn-Dann Beziehungen if (BEDINGUNG) { else if (BEDINGUNG2)

Mehr

Softwaretechnik. Vorlesung 06: Design by Contract (Entwurf gemäß Vertrag) Peter Thiemann SS Universität Freiburg, Germany

Softwaretechnik. Vorlesung 06: Design by Contract (Entwurf gemäß Vertrag) Peter Thiemann SS Universität Freiburg, Germany Softwaretechnik Vorlesung 06: Design by Contract (Entwurf gemäß Vertrag) Peter Thiemann Universität Freiburg, Germany SS 2008 Inhalt Design by Contract Verträge für prozedurale Programme Verträge für objekt-orientierte

Mehr

Formale Systeme. Organisatorisches. Prof. Dr. Bernhard Beckert, WS 2016/ KIT Die Forschungsuniversita t in der Helmholtz-Gemeinschaft

Formale Systeme. Organisatorisches. Prof. Dr. Bernhard Beckert, WS 2016/ KIT Die Forschungsuniversita t in der Helmholtz-Gemeinschaft Formale Systeme Prof. Dr. Bernhard Beckert, WS 2016/2017 Organisatorisches KIT I NSTITUT F U R T HEORETISCHE I NFORMATIK www.kit.edu KIT Die Forschungsuniversita t in der Helmholtz-Gemeinschaft Personen

Mehr

Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Definition Algorithmus. Wie beschreibt man Algorithmen?

Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Definition Algorithmus. Wie beschreibt man Algorithmen? Programm heute Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 2015 1 Einführung Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München 2 Grundlagen von Algorithmen

Mehr

Lösungshinweise/-vorschläge zum Übungsblatt 5: Software-Entwicklung 1 (WS 2017/18)

Lösungshinweise/-vorschläge zum Übungsblatt 5: Software-Entwicklung 1 (WS 2017/18) Dr. Annette Bieniusa Mathias Weber, M. Sc. Peter Zeller, M. Sc. TU Kaiserslautern Fachbereich Informatik AG Softwaretechnik Lösungshinweise/-vorschläge zum Übungsblatt 5: Software-Entwicklung 1 (WS 2017/18)

Mehr

Algorithmen und Datenstrukturen (für ET/IT)

Algorithmen und Datenstrukturen (für ET/IT) Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 2016 Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München Programm heute 1 Einführung 2 Grundlagen von Algorithmen

Mehr

Ursprünge. Die Syntax von Java. Das Wichtigste in Kürze. Konsequenzen. Weiteres Vorgehen. Rund um Java

Ursprünge. Die Syntax von Java. Das Wichtigste in Kürze. Konsequenzen. Weiteres Vorgehen. Rund um Java Ursprünge Die Syntax von Java Borland Software Corp 1995 Syntax: Pascal Objektorientierte Prorammierung optional Plattformen: Windows (Linux, Mac OS X) Sun Microsystems 1995 Syntax: C/C++ Objektorientiert

Mehr

How To Prove A Propositional Logic

How To Prove A Propositional Logic Klausur Formale Systeme Fakultät für Informatik SS 2015 Prof. Dr. Bernhard Beckert 31. Juli 2015 Vorname: Matrikel-Nr.: Die Bearbeitungszeit beträgt 60 Minuten. A1 (10) A2 (8) A3 (6) A4 (7) A5 (9) A6 (11)

Mehr

Formale Systeme. Organisatorisches. Prof. Dr. Bernhard Beckert, WS 2016/ KIT Die Forschungsuniversita t in der Helmholtz-Gemeinschaft

Formale Systeme. Organisatorisches. Prof. Dr. Bernhard Beckert, WS 2016/ KIT Die Forschungsuniversita t in der Helmholtz-Gemeinschaft Formale Systeme Prof. Dr. Bernhard Beckert, WS 2016/2017 Organisatorisches KIT I NSTITUT F U R T HEORETISCHE I NFORMATIK www.kit.edu KIT Die Forschungsuniversita t in der Helmholtz-Gemeinschaft Personen

Mehr

Formale Modellierung Vorlesung 13 vom : Rückblick und Ausblick

Formale Modellierung Vorlesung 13 vom : Rückblick und Ausblick Rev. 2226 1 [19] Formale Modellierung Vorlesung 13 vom 01.07.13: Rückblick und Ausblick Serge Autexier & Christoph Lüth Universität Bremen Sommersemester 2013 2 [19] Fahrplan Teil I: Formale Logik Teil

Mehr

Die Syntax von Java. Ursprünge. Konsequenzen. Das Wichtigste in Kürze. Weiteres Vorgehen. Rund um Java. Sun Microsystems. Borland Software Corp

Die Syntax von Java. Ursprünge. Konsequenzen. Das Wichtigste in Kürze. Weiteres Vorgehen. Rund um Java. Sun Microsystems. Borland Software Corp Ursprünge Die Syntax von Java Borland Software Corp 1995 Syntax: Pascal Objektorientierte Prorammierung optional Plattformen: Windows (Linux, Mac OS X) Sun Microsystems 1995 Syntax: C/C++ Objektorientiert

Mehr

Institut für Programmierung und Reaktive Systeme 2. Februar Programmieren I. Übungsklausur

Institut für Programmierung und Reaktive Systeme 2. Februar Programmieren I. Übungsklausur Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 2. Februar 2017 Hinweise: Klausurtermine: Programmieren I Übungsklausur Programmieren I: 13. März

Mehr

Warum Programme Verträge schließen sollten

Warum Programme Verträge schließen sollten 1 Warum Programme Verträge schließen sollten RALF HINZE Institut für Informatik, Lehrstuhl Softwaretechnik, Universität Freiburg Georges-Köhler-Allee, Gebäude 079, 79110 Freiburg i. Br. Email: ralf@informatik.uni-bonn.de

Mehr

Ersetzbarkeit und Verhalten

Ersetzbarkeit und Verhalten Ersetzbarkeit und Verhalten U ist Untertyp von T, wenn eine Instanz von U überall verwendbar ist, wo eine Instanz von T erwartet wird Struktur der Typen für Ersetzbarkeit nicht ausreichend Beispiel: void

Mehr

Java Einführung Methoden. Kapitel 6

Java Einführung Methoden. Kapitel 6 Java Einführung Methoden Kapitel 6 Inhalt Deklaration und Aufruf von Methoden Lokale und globale Namen (Bezeichner) Sichtbarkeit und Lebensdauer von Variablen in Methoden Überladen von Methoden 2 Methoden

Mehr

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

1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays) II.1.4. Verifikation - 1 - 1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays) II.1.4. Verifikation - 1 - 4. Verifikation Spezifikation: Angabe, was ein Programm tun

Mehr

System.out.println("TEXT");

System.out.println(TEXT); Inhaltsübersicht - Erstes Beispiel - Datentypen - Ausdrücke und Operatoren - Schleifen / Bedinungen - Struktogramme - Grundgerüst eines Programms in JAVA - Einlesen von Daten Erstes Beispiel public class

Mehr

RO-Tutorien 3 / 6 / 12

RO-Tutorien 3 / 6 / 12 RO-Tutorien 3 / 6 / 12 Tutorien zur Vorlesung Rechnerorganisation Christian A. Mandery WOCHE 2 AM 06./07.05.2013 KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der Helmholtz-Gemeinschaft

Mehr

Institut für Programmierung und Reaktive Systeme 25. Januar Programmieren I. Übungsklausur

Institut für Programmierung und Reaktive Systeme 25. Januar Programmieren I. Übungsklausur Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 25. Januar 2018 Hinweise: Klausurtermine: Programmieren I Übungsklausur Programmieren I: 17. Februar

Mehr

Kapitel 10. Programmierkurs. Grundlagen von Exceptions Behandlung von Exceptions

Kapitel 10. Programmierkurs. Grundlagen von Exceptions Behandlung von Exceptions Kapitel 10 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Exceptions Behandlung von Exceptions Verschiedene Exceptions Mehrere catch-anweisungen Der finally-block WS

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 22 Einstieg in die Informatik mit Java Grundlagen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 22 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White

Mehr

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

1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays) II.1.4. Verifikation - 1 - 1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays) II.1.4. Verifikation - 1 - 4. Verifikation Spezifikation: Angabe, was ein Programm tun

Mehr

Verifikation von Programmen in Java 5

Verifikation von Programmen in Java 5 Verifikation von Programmen in Java 5 ObjektForum Karlsruhe Mattias Ulbrich Betreuung: Prof. Dr. P. H. Schmitt Institut für Theoretische Informatik Universität Karlsruhe (TH) 8. Oktober 2007 Mattias Ulbrich

Mehr

Einführung in die Programmierung

Einführung in die Programmierung Chair of Software Engineering Einführung in die Programmierung Prof. Dr. Bertrand Meyer Vorlesung 5: Invarianten und Logik Erinnerung: Verträge In Verbindung mit einem Feature: Ø Vorbedingungen Ø Nachbedingungen

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java Vorlesung vom 18.4.07, Grundlagen Übersicht 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White Space Zeichen 4 Wortsymbole 5 Interpunktionszeichen 6 Operatoren 7 import Anweisungen 8 Form

Mehr

Klausur Formale Systeme Fakultät für Informatik SS 2018

Klausur Formale Systeme Fakultät für Informatik SS 2018 Klausur Formale Systeme Fakultät für Informatik SS 2018 Prof. Dr. Bernhard Beckert 30. Juli 2018 Name: Vorname: Matrikel-Nr.: Die Bearbeitungszeit beträgt 60 Minuten. A1 (13) A2 (8) A3 (6) A4 (8) A5 (9)

Mehr

Programmieren I + II Regeln der Code-Formatierung

Programmieren I + II Regeln der Code-Formatierung Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme WS 2016/2017, SS 2017 Programmieren I + II Regeln der Code-Formatierung In diesem Dokument finden

Mehr

Ausnahmen. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java 27.6.

Ausnahmen. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java 27.6. Ausnahmen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 27.6.07 G. Bohlender (IANM UNI Karlsruhe) Ausnahmen 27.6.07 1 / 8 Übersicht 1 Einführung

Mehr

Ausnahmebehandlung in Java

Ausnahmebehandlung in Java Ausnahmebehandlung in Java class A { void foo() throws Help, SyntaxError {... class B extends A { void foo() throws Help { if (helpneeded()) throw new Help();... try {... catch (Help e) {... catch (Exception

Mehr

Chapter A. Korrekte Programme. Korrektes Programm. Lecture Algorithmen & Datenstrukturen

Chapter A. Korrekte Programme. Korrektes Programm. Lecture Algorithmen & Datenstrukturen Chapter A Lecture Algorithmen & Datenstrukturen.09.01 Berner Fachhochschule Technik und Informatik A.1 Das Programm endet nach endlich viel Zeit. Das Programm endet nach endlich viel Zeit. Damit dies erfüllt

Mehr

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Martin Unold INFORMATIK. Geoinformatik und Vermessung Wiederholung So sieht ein leeres Java-Programm aus public class Programmname { public static void main (String[] args) { // Hier stehen die Anweisungen Welche Arten von Anweisungen gibt es? Anweisungen

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java Vorlesung 10: Ein Interpreter für While Prof. Dr. Peter Thiemann Albert-Ludwigs-Universität Freiburg, Germany SS 2015 Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 1

Mehr

Einführung in die Programmierung

Einführung in die Programmierung Chair of Software Engineering Einführung in die Programmierung Prof. Dr. Bertrand Meyer Vorlesung 5: Invarianten und Logik Erinnerung: Verträge In Verbindung mit einem Feature: Vorbedingungen Nachbedingungen

Mehr

Programmierung für Mathematik HS11

Programmierung für Mathematik HS11 software evolution & architecture lab Programmierung für Mathematik HS11 Übung 8 1 Aufgabe: Codeverständnis (Repetition) 1.1 Lernziele 1. Code verstehen können. 2. Fehler im Code finden und korrigieren

Mehr

Software Entwicklung 1. Fallstudie: Arithmetische Ausdrücke. Rekursive Klassen. Überblick. Annette Bieniusa / Arnd Poetzsch-Heffter

Software Entwicklung 1. Fallstudie: Arithmetische Ausdrücke. Rekursive Klassen. Überblick. Annette Bieniusa / Arnd Poetzsch-Heffter Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter Fallstudie: Arithmetische Ausdrücke AG Softech FB Informatik TU Kaiserslautern Bieniusa/Poetzsch-Heffter Software Entwicklung 1 2/ 33 Überblick

Mehr

4.4 Imperative Algorithmen Prozeduren

4.4 Imperative Algorithmen Prozeduren 4.4.2 Prozeduren Der Wert eines Ausdrucks u in Zustand z Z lässt sich damit auch leicht definieren (jetzt W Z statt W σ ) Dazu erweitern wir die rekursive Definition von Folie 57 (Wert eines Ausdrucks):

Mehr

Java Anweisungen und Ablaufsteuerung

Java Anweisungen und Ablaufsteuerung Informatik 1 für Nebenfachstudierende Grundmodul Java Anweisungen und Ablaufsteuerung Kai-Steffen Hielscher Folienversion: 24. Januar 2017 Informatik 7 Rechnernetze und Kommunikationssysteme Inhaltsübersicht

Mehr

Methoden. Gerd Bohlender. Einstieg in die Informatik mit Java, Vorlesung vom

Methoden. Gerd Bohlender. Einstieg in die Informatik mit Java, Vorlesung vom Einstieg in die Informatik mit Java, Vorlesung vom 2.5.07 Übersicht 1 2 definition 3 Parameterübergabe, aufruf 4 Referenztypen bei 5 Überladen von 6 Hauptprogrammparameter 7 Rekursion bilden das Analogon

Mehr

Klausur Formale Systeme Fakultät für Informatik SS Prof. Dr. Bernhard Beckert. 31. Juli Die Bearbeitungszeit beträgt 60 Minuten.

Klausur Formale Systeme Fakultät für Informatik SS Prof. Dr. Bernhard Beckert. 31. Juli Die Bearbeitungszeit beträgt 60 Minuten. Name: Vorname: Klausur Formale Systeme Fakultät für Informatik Matrikel-Nr.: SS 2015 Prof. Dr. Bernhard Beckert 31. Juli 2015 Die Bearbeitungszeit beträgt 60 Minuten. A1 (10) A2 (8) A3 (6) A4 (7) A5 (9)

Mehr

2 Eine einfache Programmiersprache

2 Eine einfache Programmiersprache 2 Eine einfache Programmiersprache Eine Programmiersprache soll Datenstrukturen anbieten Operationen auf Daten erlauben Kontrollstrukturen zur Ablaufsteuerung bereitstellen Als Beispiel betrachten wir

Mehr

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

1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays) 1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays) II.1.3. Anweisungen und Kontrollstrukturen - 1 - Anweisung Anweisung Zuweisung Methodenaufruf

Mehr

Software Entwicklung 1

Software Entwicklung 1 Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter AG Softech FB Informatik TU Kaiserslautern Fallstudie: Arithmetische Ausdrücke Bieniusa/Poetzsch-Heffter Software Entwicklung 1 2/ 33 Überblick

Mehr

Einführung in die Programmierung

Einführung in die Programmierung Chair of Software Engineering Einführung in die Programmierung Prof. Dr. Bertrand Meyer Vorlesung 5: Invarianten und Logik Erinnerung: Verträge In Verbindung mit einem Feature: Vorbedingungen Nachbedingungen

Mehr

Teil 5 - Java. Programmstruktur Operatoren Schlüsselwörter Datentypen

Teil 5 - Java. Programmstruktur Operatoren Schlüsselwörter Datentypen Teil 5 - Java Programmstruktur Operatoren Schlüsselwörter Datentypen 1 Kommentare in Java In Java gibt es drei Möglichkeiten zur Kommentierung: // Kommentar Alle Zeichen nach dem // werden ignoriert. für

Mehr

Ausnahmen (Exceptions)

Ausnahmen (Exceptions) Ausnahmen (Exceptions) Herkömmliche Fehlerbehandlung Jede Methode liefert einen Fehlercode int result; result = p(); if (result == ok) { result = q(); if (result == ok) { result = r(); if (result == ok)

Mehr

1 Klassen und Objekte

1 Klassen und Objekte 1 Klassen und Objekte Datentyp - Spezifikation des Typs von Datenobjekten Datenstruktur - logische Ordnung von Elementen eines Datentyps - zur (effizienten) Speicherung, Verwaltung, Zugriff - auf die Elemente

Mehr

Beuth Hochschule Parameter-Übergabe-Mechanismen WS17/18, S. 1

Beuth Hochschule Parameter-Übergabe-Mechanismen WS17/18, S. 1 Beuth Hochschule Parameter-Übergabe-Mechanismen WS17/18, S. 1 Parameter-Übergabe-Mechanismen in Java und in anderen Sprachen. 1. Methoden vereinbaren mit Parametern Wenn man (z.b. in Java) eine Methode

Mehr

Vorlesung Programmieren

Vorlesung Programmieren Vorlesung Programmieren 3. Kontrollstrukturen 04.11.2015 Prof. Dr. Ralf H. Reussner Version 1.1 LEHRSTUHL FÜR SOFTWARE-DESIGN UND QUALITÄT (SDQ) INSTITUT FÜR PROGRAMMSTRUKTUREN UND DATENORGANISATION (IPD),

Mehr

2 Eine einfache Programmiersprache

2 Eine einfache Programmiersprache 2 Eine einfache Programmiersprache Eine Programmiersprache soll Datenstrukturen anbieten Operationen auf Daten erlauben Kontrollstrukturen zur Ablaufsteuerung bereitstellen Als Beispiel betrachten wir

Mehr

2 Eine einfache Programmiersprache. Variablen. Operationen Zuweisung. Variablen

2 Eine einfache Programmiersprache. Variablen. Operationen Zuweisung. Variablen Variablen Eine Programmiersprache soll Datenstrukturen anbieten Operationen auf Daten erlauben Kontrollstrukturen zur Ablaufsteuerung bereitstellen Variablen dienen zur Speicherung von Daten. Um Variablen

Mehr

Tag 5. Repetitorium Informatik (Java) Dozent: Marius Kamp Lehrstuhl für Informatik 2 (Programmiersysteme)

Tag 5. Repetitorium Informatik (Java) Dozent: Marius Kamp Lehrstuhl für Informatik 2 (Programmiersysteme) Tag 5 Repetitorium Informatik (Java) Dozent: Marius Kamp Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2017/2018 Übersicht Methoden Deklaration

Mehr

Programmieren I. Fehlerbehandlung Exceptions. Heusch 2. Bd, 3 Ratz 10. Institut für Angewandte Informatik

Programmieren I. Fehlerbehandlung Exceptions. Heusch 2. Bd, 3 Ratz 10.  Institut für Angewandte Informatik Programmieren I Fehlerbehandlung Exceptions Heusch 2. Bd, 3 Ratz 10 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Exceptions und ihre Behandlung Exception - Ausnahmebedingung

Mehr

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

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

Mehr

Korrektheit und Hoare-Kalkül für Imperative Programme

Korrektheit und Hoare-Kalkül für Imperative Programme Korrektheit und Hoare-Kalkül für Imperative Programme Martin Wirsing in Zusammenarbeit mit Moritz Hammer und Axel Rauschmayer SS 06 Ziele Partielle und totale Korrektheit kennen lernen Die Regeln des Hoare-Kalkül

Mehr

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Martin Unold INFORMATIK. Geoinformatik und Vermessung Wiederholung So sieht ein leeres Java-Programm aus public class Programmname { public static void main (String[] args) { // Hier stehen die Anweisungen Anweisungen mit Variablen Wiederholung Deklaration

Mehr

Vor- und Nachbedingungen in imperativen Programmen OOPM, Ralf Lämmel

Vor- und Nachbedingungen in imperativen Programmen OOPM, Ralf Lämmel Wer ist denn das? Vor- und Nachbedingungen in imperativen Programmen OOPM, Ralf Lämmel Programmspezifikation mit Vor- und Nachbedingungen (C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau 2 3 Gesprächsprotokoll

Mehr

Objektorientiertes Programmieren (Java)

Objektorientiertes Programmieren (Java) Grundlagen Objektorientiertes Programmieren (Java) Java folgt gewissen Rechtschreibregeln die Syntax. Diese besagt, dass hinter jeden Befehl ein Semikolon( ; ) stehen muss, damit der Computer weiß, dass

Mehr

Programmieren I + II Regeln der Code-Formatierung

Programmieren I + II Regeln der Code-Formatierung Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme WS 2012/2013, SS 2013 Programmieren I + II Regeln der Code-Formatierung Die hier vorgestellten

Mehr

Kapitel 10 Delegationsvariablen

Kapitel 10 Delegationsvariablen Kapitel 10 Delegationsvariablen Korbinian Molitorisz IPD Tichy Lehrstuhl für Programmiersysteme KIT die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe (TH) Agenda Wie werden

Mehr

Programmieren in Java -Eingangstest-

Programmieren in Java -Eingangstest- Programmieren in Java -Eingangstest- Nummer: 1. Studiengang: Informatik B.Sc. Informatik M.Sc. ESE B.Sc. ESE M.Sc. Sonstiges: Fachsemester: Bitte Fragen, die Sie nicht beantworten können unbedingt mit

Mehr

Vorlesung Programmieren

Vorlesung Programmieren Vorlesung Programmieren 3. Kontrollstrukturen 09.11.2016 Jun.-Prof. Dr.-Ing. Anne Koziolek Version 1.1 ARBEITSGRUPPE ARCHITECTURE-DRIVEN REQUIREMENTS ENGINEERING (ARE) INSTITUT FÜR PROGRAMMSTRUKTUREN UND

Mehr

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Martin Unold INFORMATIK. Geoinformatik und Vermessung Wiederholung So sieht ein leeres Java-Programm aus public class Programmname { public static void main (String[] args) { // Hier stehen die Anweisungen Anweisungen mit Variablen Wiederholung Deklaration

Mehr

Universität Karlsruhe (TH)

Universität Karlsruhe (TH) Universität Karlsruhe (TH) Lehrstuhl für Programmierparadigmen Fortgeschr. Objektorientierung SS 2009 http://pp.info.uni-karlsruhe.de/ Dozent: Prof. Dr.-Ing. G. Snelting snelting@ipd.info.uni-karlsruhe.de

Mehr

Ausnahmen. Philipp Wendler. Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung

Ausnahmen. Philipp Wendler. Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung Philipp Wendler Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung https://www.sosy-lab.org/teaching/2017-ws-infoeinf/ WS17/18 Fehlerarten Bei der Programmierung

Mehr

Ausnahmen. Dr. Philipp Wendler. Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung

Ausnahmen. Dr. Philipp Wendler. Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung Dr. Philipp Wendler Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung WS18/19 https://www.sosy-lab.org/teaching/2018-ws-infoeinf/ Fehlerarten Bei der Programmierung

Mehr

Arbeitsblätter für die Lehrveranstaltung OOP JAVA 1

Arbeitsblätter für die Lehrveranstaltung OOP JAVA 1 Fachhochschule Stralsund Fachbereich Maschinenbau Lehrgebiet Informatik Prof. Dr.-Ing. Ch.Wahmkow Arbeitsblätter für die Lehrveranstaltung OOP I. Aufbau eines Java-Programmes JAVA 1 Escape-Sequenzen zur

Mehr

Programmieren I. Dokumentation mit javadoc Heusch 10.4 Ratz Institut für Angewandte Informatik

Programmieren I. Dokumentation mit javadoc Heusch 10.4 Ratz Institut für Angewandte Informatik Programmieren I Dokumentation mit javadoc Heusch 10.4 Ratz 4.1.1 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Automatische Dokumentation Java bietet standardmäßig das Dokumentationssystem

Mehr

Algorithmen und Datenstrukturen 07

Algorithmen und Datenstrukturen 07 (7. Juni 2012) 1 Besprechung Blatt 6 Fragen 2 Referenzen Referenzsemantik 3 Vererbung Allgemein abstract Interfaces Vererbung in UML 4 Vorbereitung Blatt 7 Anmerkungen Fragen Fragen zu Blatt 6? Referenzsemantik

Mehr

II.4.2 Abstrakte Klassen und Interfaces - 1 -

II.4.2 Abstrakte Klassen und Interfaces - 1 - 1. Unterklassen und Vererbung 2. Abstrakte Klassen und Interfaces 3. Modularität und Pakete 4. Ausnahmen (Exceptions) 5. Generische Datentypen 6. Collections II.4.2 Abstrakte Klassen und Interfaces - 1

Mehr

Probeklausur zur Vorlesung

Probeklausur zur Vorlesung Dr. Jochen Hoenicke Alexander Nutz Probeklausur zur Vorlesung Einführung in die Informatik Sommersemester 2014 Die Klausur besteht aus diesem Deckblatt und elf Blättern mit den Aufgaben, sowie einem Blatt

Mehr

RO-Tutorien 17 und 18

RO-Tutorien 17 und 18 RO-Tutorien 17 und 18 Tutorien zur Vorlesung Rechnerorganisation Christian A. Mandery TUTORIENWOCHE 2 AM 10.05.2012 KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der

Mehr

Java: Eine kurze Einführung an Beispielen

Java: Eine kurze Einführung an Beispielen Java: Eine kurze Einführung an Beispielen Quellcode, javac und die JVM Der Quellcode eines einfachen Java-Programms besteht aus einer Datei mit dem Suffix.java. In einer solchen Datei wird eine Klasse

Mehr

Korrekte Software: Grundlagen und Methoden Vorlesung 11 vom : Funktionen und Prozeduren

Korrekte Software: Grundlagen und Methoden Vorlesung 11 vom : Funktionen und Prozeduren 18:10:49 2016-07-07 1 [14] Korrekte Software: Grundlagen und Methoden Vorlesung 11 vom 06.06.16: Funktionen und Prozeduren Serge Autexier, Christoph Lüth Universität Bremen Sommersemester 2016 Korrekte

Mehr

! 1. Unterklassen und Vererbung! 2. Abstrakte Klassen und Interfaces! 3. Modularität und Pakete! 4. Ausnahmen (Exceptions) II.4.

! 1. Unterklassen und Vererbung! 2. Abstrakte Klassen und Interfaces! 3. Modularität und Pakete! 4. Ausnahmen (Exceptions) II.4. ! 1. Unterklassen und Vererbung! 2. Abstrakte Klassen und Interfaces! 3. Modularität und Pakete! 4. Ausnahmen (Exceptions) II.4.4 Exceptions - 1 - Ausnahmen (Exceptions( Exceptions) Treten auf, wenn zur

Mehr

Autotest. Automatische Testgenerierung mit Design by Contract. von Simon Greiner am 12. Juli 2007

Autotest. Automatische Testgenerierung mit Design by Contract. von Simon Greiner am 12. Juli 2007 Autotest Automatische Testgenerierung mit Design by Contract von Simon Greiner am 12. Juli 2007 Autotest 1. Testen 2. Design by Contract 3. Strategien zur Testerstellung 1. Zufallsstrategie 2. Planungsstrategie

Mehr

Abschnitt 11: Korrektheit von imperativen Programmen

Abschnitt 11: Korrektheit von imperativen Programmen Abschnitt 11: Korrektheit von imperativen Programmen 11. Korrektheit von imperativen Programmen 11.1 11.2Testen der Korrektheit in Java Peer Kröger (LMU München) in die Programmierung WS 16/17 931 / 961

Mehr

Modellierung und Programmierung 1

Modellierung und Programmierung 1 Modellierung und Programmierung 1 Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut für Informatik Universität Leipzig 4. November 2015 Administratives Zur Abgabe von Übungsaufgaben Nein, wir

Mehr

Arithmetik in der tcsh

Arithmetik in der tcsh Arithmetik in der tcsh Variablen speichern Zeichenketten (also Strings/Wörter) @ statt set Interpretation als arithmetische Ausdrücke (aus Ziffern, (, ), +, -, *, /, % bestehend) Beispiele: @ var = (3

Mehr

RO-Tutorien 15 und 16

RO-Tutorien 15 und 16 Tutorien zur Vorlesung Rechnerorganisation Tutorienwoche 2 am 04.05.2011 1 Christian A. Mandery: KIT Universität des Landes Baden-Württemberg und nationales Grossforschungszentrum in der Helmholtz-Gemeinschaft

Mehr

Die Klasse MiniJava ist in der Datei MiniJava.java definiert:

Die Klasse MiniJava ist in der Datei MiniJava.java definiert: Die Klasse MiniJava ist in der Datei MiniJava.java definiert: import javax.swing.joptionpane; import javax.swing.jframe; public class MiniJava { public static int read () { JFrame f = new JFrame (); String

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Tafelübung 03 Vererbung, Polymorphie, Sichtbarkeit, Interfaces Clemens Lang T2 11. Mai 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/26 Klassen und Objekte Klassen und Objekte

Mehr

Beispielprüfung CuP WS 2015/2016

Beispielprüfung CuP WS 2015/2016 Beispielprüfung CuP WS 2015/2016 Univ.-Prof. Dr. Peter Auer 23. Dezember 2015 Informationen zur Prüfung Die Prüfung wird als Multiple-Choice-Test mit 10 Fragen am Computer abgehalten. (Bei manchen Fragen

Mehr

Programmieren I. Methoden-Spezial Heusch --- Ratz 6.1, Institut für Angewandte Informatik

Programmieren I. Methoden-Spezial Heusch --- Ratz 6.1, Institut für Angewandte Informatik Programmieren I Methoden-Spezial Heusch --- Ratz 6.1, 6.2 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Parameterübergabe bei primitivem Datentypen (Wertkopie) public class MethodParameters

Mehr

3. Anweisungen und Kontrollstrukturen

3. Anweisungen und Kontrollstrukturen 3. Kontrollstrukturen Anweisungen und Blöcke 3. Anweisungen und Kontrollstrukturen Mit Kontrollstrukturen können wir den Ablauf eines Programmes beeinflussen, z.b. ob oder in welcher Reihenfolge Anweisungen

Mehr

Klausur Formale Systeme Fakultät für Informatik WS 2017/2018. Prof. Dr. Bernhard Beckert. 28. Februar **Vorname** **Familienname** **Matr.-Nr.

Klausur Formale Systeme Fakultät für Informatik WS 2017/2018. Prof. Dr. Bernhard Beckert. 28. Februar **Vorname** **Familienname** **Matr.-Nr. Klausur Formale Systeme Fakultät für Informatik WS 2017/2018 Prof. Dr. Bernhard Beckert Vorname: Name: Matrikel-Nr.: Hörsaal: Code: 28. Februar 2018 **Vorname** **Familienname** **Matr.-Nr.** **Hörsaal**

Mehr

2 Eine einfache Programmiersprache

2 Eine einfache Programmiersprache 2 Eine einfache Programmiersprache Eine Programmiersprache soll Datenstrukturen anbieten Operationen auf Daten erlauben Kontrollstrukturen zur Ablaufsteuerung bereitstellen Als Beispiel betrachten wir

Mehr