Einführung in die Programmierung Systematisches Programmieren. Thomas R. Gross. Department Informatik ETH Zürich

Größe: px
Ab Seite anzeigen:

Download "Einführung in die Programmierung Systematisches Programmieren. Thomas R. Gross. Department Informatik ETH Zürich"

Transkript

1 Einführung in die Programmierung 11.0 Systematisches Programmieren Thomas R. Gross Department Informatik ETH Zürich Copyright (c) Pearson 2013 and Thomas Gross 2016 All rights reserved. 1

2 Übersicht 11.1 Einführung 11.2 Aussagen 11.3 Preconditions und Postconditions für Statements 11.4 Preconditions und Postconditions für Loops 2

3 Methoden von List Was fehlt in dieser Zusammenfassung? add(value) add(index, value) clear() indexof(value) get(index) remove(index) set(index, value) size() tostring() appends value at end of list inserts given value at given index, shifting subsequent values right removes all elements of the list returns first index where given value is found in list (-1 if not found) returns the value at given index removes/returns value at given index, shifting subsequent values left replaces value at given index with given value returns the number of elements in list returns a string representation of the list such as "[3, 42, -7, 15]" 3

4 a) Einige Methoden fehlen. b) Information über Laufzeitkosten c) Information über Annahmen und Anforderungen (wann kann eine Methode verwendet werden, was sindlegale Parameterwerte) 4

5 Verantwortlichkeiten Sehen wir uns nochmal die Methode gcd an den grössten gemeinsamen Teiler (ggt) zu finden /** * Calculates the greatest common divisor * using Euclid s algorithm. * * Returns the greatest common divisor of x and y */ int gcd(int x, int y) { int r = x % y; while (r!= 0) { x = y; y = r; r = x % y; return y; 5

6 Rationale Zahlen q Q : a/b Bruch: Zähler / Nenner (beide N, d.h. natürliche Zahlen, b 0) quotient = numerator / denominator geschrieben oft (a,b) oder (p,q) Zwei rationale Zahlen (p 1,q 1 ) und (p 2, q 2 ) sind äquivalent: (p 1, q 1 ) ~ (p 2, q 2 ) wenn p 1 q 2 = p 2 q 1 Kürzen erlaubt eindeutige Darstellung Wollen für zwei rationale Zahlen feststellen ob sie äquivalent sind. 6

7 Rationale Zahlen Warum ein Interesse an diesen Zahlen? Ganze Zahlen werden dargestellt als Summe von 2 k (0 <= k<= m) m r = 2 k k = 0 Dezimalzahlen (zw. 0 1) werden auch als Summen dargestellt m s = 2 -k 7 k = 1

8 Darstellung von Zahlen Leider ist die Darstellung von Dezimalzahlen nicht exakt aber = 1 1.0/ / /6.0 = The Art and Science of ERIC S. ROBERTS Java An Introduction to Computer Science Nach: Eric Roberts, The Art and Science of Java Pearson Education Limited; ISBN-10:

9 Klasse Rational /** * The Rational class is used to represent rational numbers, which * are defined to be the quotient of two integers. */ public class Rational { /** Creates a new Rational initialized to zero. */ public Rational() { this(0); /** * Creates a new Rational from the integer argument. n The initial value */ public Rational(int n) { this(n, 1); Overloading bei der Definition der Konstruktoren this( ) : Aufruf eines anderen Konstruktors

10 Klasse Rational /** * Creates a new Rational with the value x / y. x The numerator of the rational number y The denominator of the rational number */ public Rational(int x, int y) { int g = gcd(math.abs(x), Math.abs(y)); num = x / g; den = Math.abs(y) / g; if (y < 0) num = -num; Hauptkonstruktor Benutzt gcd() um eindeutige Darstellung zu garantieren /** * Adds the rational number r to this one and returns the sum. r The rational number to be added The sum of the current number and r */ public Rational add(rational r) { return new Rational(this.num * r.den + r.num * this.den, this.den * r.den); gcd() erstellt neues Exemplar

11 Klasse Rational /** * Creates a string representation of this rational number. The string representation of this rational number */ public String tostring() { if (den == 1) { return "" + num; else { return num + "/" + den; /* Private instance variables */ private int num; /* The numerator of this Rational */ private int den; /* The denominator of this Rational */ Ganze Zahlen nicht als Bruch ausgeben Attribute sind private

12 int gcd(int x, int y) { int r = x % y; while (r!= 0) { x = y; y = r; r = x % y; return y; Was für Annahmen macht diese Methode? Liefert sie immer das gewünschte Ergebnis? Was für Fälle sollten wir untersuchen? Schreiben Sie die Fälle auf, die Sie für "interessant" halten Simulieren Sie die Ausführung 21

13 Verantwortlichkeiten Diese Implementation des ggt erwartet x 0 y > 0 Wer ist dafür "verantwortlich"? Klient? Die Methode? 22

14 Klient /** * Creates a new Rational with the value x / y. */ public Rational(int x, int y) { int g = gcd(math.abs(x), Math.abs(y)); num = x / g; den = Math.abs(y) / g; if (y < 0) num = -num; 23

15 Verantwortlichkeiten (Teil)Lösung hier gcd(math.abs(x), Math.abs(y)); Kommentar wäre nicht verfehlt gcd kann davon ausgehen dass x 0 "x 0" ist eine Aussage die hier immer gilt Nicht gelöst ist dass y 0 sein muss Beispiel soll nicht überladen werden 24

16 11.2 Aussagen 25

17 (Logische) Aussagen Aussage ("assertion"): Eine Behauptung die entweder wahr oderfalsch ist. Wir fragen dann oft "Ist die Aussage wahr"? Beispiele: Zürich ist ein Kanton der Schweiz x 0 (hängt von x ab) Stockholm ist die Hauptstadt Norwegens 11 ist eine Primzahl 120 ist kleiner als 11 x geteilt durch 2 ergibt 8 (hängt von x ab) 26

18 (Logische) Aussagen Nicht alle Aussagen sind wahr Für einige Aussagen können wir vielleicht nicht sofort entscheiden ob sie wahr oder falsch sind Wichtig ist dass es Sinn macht zu fragen, ob die Aussage wahr oder falsch ist Logisch heisst hier: im Sinne der klassischen Logik 27

19 29

20 Aussagen und Programme Wir können Aussagen über das Programm machen und fragen ob sie an bestimmten Stellen wahr sind. Gültige Antworten sind IMMER, NIE, oder MANCHMAL. System.out.print("Type a nonnegative number: "); double number = console.nextdouble(); // Point A: is number < 0.0 here? MANCHMAL while (number < 0.0) { // Point B: is number < 0.0 here? IMMER System.out.print("Negative; try again: "); number = console.nextdouble(); // Point C: is number < 0.0 here? MANCHMAL // Point D: is number < 0.0 here? NIE 34

21 Mit Aussagen arbeiten Direkt nachdem eine Variable initialisiert wurde, ist ihr Wert bekannt: int x = 3; // is x > 0? IMMER Über die Werte von Parametern wissen wir i.a. nichts: public static void mystery(int a, int b) { // is a == 10? MANCHMAL Innerhalb eines if, while, usw. wissen wir evtl. etwas: public static void mystery(int a, int b) { if (a < 0) { // is a == 10? NIE... 35

22 Aussagen und Schleifen Zu Beginn des Rumpfes einer Schleife muss der Test true, ergeben haben: while (y < 10) { // is y < 10? IMMER... Direkt nach einer Schleife muss der Test false sein: while (y < 10) {... // is y < 10? NIE 36

23 Aussagen und Schleifen Im Rumpf einer Schleife kann der Test false ergeben: while (y < 10) { y++; // is y < 10? MANCHMAL 37

24 "Manchmal" Verschiedene Aktivitäten können dazu führen, dass der Wert einervariable unbekanntist (diese führendannzu "MANCHMAL" Antworten): Eingabe von Scanner lesen Lesen einer Zahl von einem Random Objekt Übergabe eines Parameters Wenn für eine Stelle im Programm sowohl die Antwort ja" also auch "nein" möglich ist, dann ist die richtige Antwort "manchmal". Wenn man sich nicht sicher ist dann ist "Manchmal" eine gute Vermutung 38

25 Beispiel 1 public static void mystery(int x, int y) { int z = 0; // Point A while (x >= y) { // Point B x = x - y; z++; if (x!= y) { // Point C z = z * 2; // Point D // Point E System.out.println(z); Welche Aussagen sind an diesen Stellen wahr? Möglich sind IMMER, NIE oder MANCHMAL. Point A Point B Point C Point D Point E x < y x == y z == 0 MANCHMAL MANCHMAL IMMER NIE MANCHMAL MANCHMAL MANCHMAL NIE NIE MANCHMAL MANCHMAL NIE IMMER NIE MANCHMAL 39

26 40

27 Beispiel 2 public static int mystery(scanner console) { int prev = 0; int count = 0; int next = console.nextint(); // Point A while (next!= 0) { // Point B if (next == prev) { // Point C count++; prev = next; next = console.nextint(); // Point D // Point E return count; Welche Aussagen sind an diesen Stellen wahr? Möglich sind IMMER, NIE oder MANCHMAL. Point A Point B Point C Point D Point E next == 0 prev == 0 next == prev 43

28 Beispiel 2 public static int mystery(scanner console) { int prev = 0; int count = 0; int next = console.nextint(); // Point A while (next!= 0) { // Point B if (next == prev) { // Point C count++; prev = next; next = console.nextint(); // Point D // Point E return count; Welche Aussagen sind an diesen Stellen wahr? Möglich sind IMMER, NIE oder MANCHMAL. Point A Point B Point C Point D Point E next == 0 prev == 0 next == prev MANCHMAL IMMER MANCHMAL NIE MANCHMAL MANCHMAL NIE NIE IMMER MANCHMAL NIE MANCHMAL IMMER MANCHMAL MANCHMAL 44

29 // Assumes y >= 0, and returns x^y public static int pow(int x, int y) { int prod = 1; // Point A while (y > 0) { // Point B if (y % 2 == 0) { // Point C x = x * x; y = y / 2; // Point D else { // Point E prod = prod * x; y--; // Point F // Point G return prod; Beispiel 3 Welche Aussagen sind an diesen Stellen wahr? Möglich sind IMMER, NIE oder MANCHMAL. Point A Point B Point C Point D Point E Point F Point G y > 0 y % 2 == 0 45

30 // Assumes y >= 0, and returns x^y public static int pow(int x, int y) { int prod = 1; // Point A while (y > 0) { // Point B if (y % 2 == 0) { // Point C x = x * x; y = y / 2; // Point D else { // Point E prod = prod * x; y--; // Point F // Point G return prod; Beispiel 3 Welche Aussagen sind an diesen Stellen wahr? Möglich sind IMMER, NIE oder MANCHMAL. y > 0 y % 2 == 0 Point A MANCHMAL MANCHMAL Point B IMMER MANCHMAL Point C IMMER IMMER Point D IMMER MANCHMAL Point E IMMER NIE Point F MANCHMAL IMMER Point G NIE IMMER 46

31 Übersicht 11.1 Einführung 11.2 Aussagen 11.3 Aussagen für Statements 11.4 Preconditions and Postconditions für Loops 47

32 Ziel: Aussagen über ein Programm herleiten Welche Aussagen gelten (an einer Stelle) im Programm? Ggf. was für Annahmen sind nötig, dass die Aussage wahr ist Warum? Finden "interessanter" Fälle für Test Erstellen der Bedingungen, die Klienten erfüllen müssen Behandeln von Sonderfällen in einer Methode Wenn die Liste am Anfang leer ist, dann muss das 1. Element auf diese Weise eingefügt werden. 48

33 11.3 Preconditions und Postconditions für Statements 49

34 Hoare Logik Tony Hoare entwickelte in den (19)70gern einen Ansatz wie man über Programme logische Schlüsse ziehen kann. Am Anfang betrachten wir nur Zuweisungen, If-Statements, Schleifen und Variable Fürs erste keine Objekte und Methoden Schritt 1: Vorwärts und rückwärts schliessen Schritt 2: Genauere Definition von Aussagen, Vor- und Nachbedingungen Erstmal ohne Schleifen 50

35 Warum Ziel ist es, dass Sie für ein einfaches Programm genau argumentieren können. In der täglichen Programmentwicklung genügt es oft, weniger detailliert zu argumentieren als es die Hoare Logik erforderlich macht. Für einfache Programme ist dieser Ansatz zu aufwändig. Für realistische Progamme wird der Ansatz schnell kompliziert. Wir haben immer noch kein gutes Modell für Objekte und Parallelismus. Aliasing ist eine Herausforderung. Aber manchmal hilft der Ansatz (siehe Fencepost Probleme) 51

36 Aber eine gute Schulung, systematisch zu programmieren Wir können über Zustände (der Ausführung) eines Programms (und später auch eines Objekts) schlussfolgern Wir können den Effekt eines Programms beschreiben Wir können definieren was es heisst dass eine Aussage weaker (schwächer) oder stronger (stärker) ist. Wichtig für die Definition von Schnittstellen (zwischen Modulen) wenn wir entscheiden müssen welche Bedingungen erfüllt sein müssen (um eine Methode aufzurufen). 52

37 Beispiel Wie finden wir Aussagen für Stellen im Programm Uns interessieren nicht irgendwelche Aussagen sondern solche, die das Verhalten der Ausführung beschreiben 53

38 55

39 Beispiel Vorwärts schliessen Vom Zustand vor der Ausführung eines Programm(segments) Nehmen wir an wir wissen (oder vermuten) w > 0 // w > 0 x = 17; // w > 0 x == 17 y = 42; // w > 0 x == 17 y == 42 z = w + x + y; // w > 0 x == 17 y == 42 z > 59 Jetzt wissen wir einiges mehr über das Programm, u.a. z > 59 56

40 Beispiel Rückwärts schliessen: Nehmen wir an wir wollen dass z nach Ausführung negativ ist // x = 17; // y = 42; // z = w + x + y; // z < 0 57

41 Beispiel Rückwärts schliessen: Nehmen wir an wir wollen dass z nach Ausführung negativ ist // w < 0 x = 17; // w + x + 42 < 0 y = 42; // w + x + y < 0 z = w + x + y; // z < 0 Dann müssen wir wissen (oder vermuten) dass vor der Ausführung gilt: w < -59 Notwendig und hinreichend 58

42 Vorwärts vs Rückwärts, Teil 1 Vorwärts schliessen: Bestimmt was sich aus den ursprünglichen Annahmen herleiten lässt. Sehr praktisch wenn eine Invariante gelten soll Rückwärts schliessen: Bestimmt hinreichende Bedingungen die ein gegebenes Ergebnis garantieren Wenn das Ergebniss erwünscht ist, dann folgt aus den Bedingungen die Korrektheit. Ist das Ergebniss unerwünscht, dann reichen die Bedingungen um einen Bug zu generieren 59

43 Vorwärts vs Rückwärts, Teil 2 Vorwärts schliessen: Simuliert die Ausführung des Programms (für viele Inputs gleichzeitig ) Oft leicht zu verstehen, erscheint natürlich Aber führt dazu dass (viele) Details festgehalten werden, die letztlich irrelevant sind. 60

44 Vorwärts vs Rückwärts, Teil 3 Rückwärts schliessen: Oft von grossem praktischen Nutzen: Sie müssen verstehen (oder festhalten) was jede Anweisung zum Erreichen eines bestimmten Zustandes beiträgt. Ein Programm(segment) rückwärts zu lesen erfordert Übung aber führt zu einer neuen Sicht auf ein Programm. 61

45 Terminologie Die Annahme (Aussage), die vor der Ausführung eines Statements gilt, ist die Precondition. Die Aussage, die nach der Ausführung gilt (unter der Annahme dass die Aussage davor gültig ist), ist die Postcondition. 62

46 65

47 Andere Statements (Anweisungen) if-statement 66

48 68

49 Terminologie Die Annahme (Aussage), die vor der Ausführung eines Statements gilt, ist die Precondition. Die Aussage, die nach der Ausführung gilt (unter der Annahme dass die Aussage davor gültig ist), ist die Postcondition. 69

50 71

51 Grundidee(n) 1. Die Precondition für den then-block und den else-blocks (eines if-statements) beinhaltet das Ergebnis des Tests. 2. Die Postcondition nach dem if-statement ist die Disjunktion ( oder ) der Postconditions des then- und else-blockes. 72

52 Nehmen wir an x >= 0 Beispiel (Vorwärts) // x >= 0 z = 0; // x >= 0 z == 0 if (x!= 0) { // x >= 0 z == 0 x!= 0 (also x > 0) z = x; // z > 0 else { // x >= 0 z == 0!(x!= 0) (also x == 0) z = x + 1; // z == 1 // ( z > 0) ( z == 1) (also z > 0) 73

53 74

54 Die übliche Notation Statt die Pre/Postconditions in Kommentaren (nach //) schreiben verwenden wir { Kein Java mehr Aber diese Schreibweise hat sich eingebürgert, lange vor Java { w < -59 x = 17; { w + x < -42 Zwischen { und steht eine logische Aussage Kein Java Code 75

55 Mehr Terminologie Aussagen (Pre/Postconditions) sind logische Ausdrücke die sich auf den Zustand (der Ausführung) eines Programms beziehen. Der Zustand eines Programms ist sichtbar durch die Namen der Variablen (und jede Variable liefert ihren Wert) Die Variablennamen können in (logischen) Ausdrücken verwendet werden solange die Ausdrücke keine Nebenwirkungen ( no sideeffects ) haben 78

56 Mehr Terminologie Eine Aussage gilt für den Zustand eines Programms wenn die Auswertung der Aussage (des Ausdrucks) mit dem Zustand das Ergebnis true ergibt. Die Auswertung jedes Variable ergibt den Wert der Variable im augenblicklichen Programmzustand. Eine Aussage beschreibt eine Menge von Programmzuständen genau die, für die die Aussage gilt. 80

Einführung in die Programmierung I Systematisches Programmieren. Thomas R. Gross. Department Informatik ETH Zürich

Einführung in die Programmierung I Systematisches Programmieren. Thomas R. Gross. Department Informatik ETH Zürich 252-0027 Einführung in die Programmierung I 10.0 Systematisches Programmieren Thomas R. Gross Department Informatik ETH Zürich Copyright (c) Pearson 2013 and Thomas Gross 2016 All rights reserved. Uebersicht

Mehr

11.0 Systematisches Programmierung

11.0 Systematisches Programmierung 252-0027 Einführung in die Programmierung 11.0 Systematisches Programmierung Thomas R. Gross Department Informatik ETH Zürich Copyright (c) Pearson 2013 and Thomas Gross 2016 All rights reserved. Uebersicht

Mehr

7.0 Arbeiten mit Objekten und Klassen

7.0 Arbeiten mit Objekten und Klassen 252-0027 Einführung in die Programmierung I 7.0 Arbeiten mit Objekten und Klassen Thomas R. Gross Department Informatik ETH Zürich Copyright (c) Pearson 2013. and Thomas Gross 2016 All rights reserved.

Mehr

Einführung in die Programmierung I. 2.4 Felder. Thomas R. Gross. Department Informatik ETH Zürich

Einführung in die Programmierung I. 2.4 Felder. Thomas R. Gross. Department Informatik ETH Zürich 252-0027 Einführung in die Programmierung I 2.4 Felder Thomas R. Gross Department Informatik ETH Zürich Uebersicht 2.4 Felder (Vektoren, "array"s) 2.5 Verschachtelte Schleifen 2.6 "if" Anweisungen 2.7

Mehr

Einführung in die Programmierung I Systematisches Programmieren. Thomas R. Gross. Department Informatik ETH Zürich

Einführung in die Programmierung I Systematisches Programmieren. Thomas R. Gross. Department Informatik ETH Zürich 252-0027 Einführung in die Programmierung I 10.0 Systematisches Programmieren Thomas R. Gross Department Informatik ETH Zürich Copyright (c) Pearson 2013 and Thomas Gross 2016 All rights reserved. Uebersicht

Mehr

Einführung in die Programmierung I Systema=sches Programmieren

Einführung in die Programmierung I Systema=sches Programmieren 252-0027 Einführung in die Programmierung I 0.0 Systema=sches Programmieren Thomas R. Gross Department Informa=k ETH Zürich Copyright (c) Pearson 203 and Thomas Gross 206 All rights reserved. Uebersicht!

Mehr

7.0 Arbeiten mit Objekten und Klassen

7.0 Arbeiten mit Objekten und Klassen 252-0027 Einführung in die Programmierung 7.0 Arbeiten mit Objekten und Klassen Thomas R. Gross Department Informatik ETH Zürich Copyright (c) Pearson 2013. and Thomas Gross 2016 All rights reserved. Uebersicht

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

Kontrollfluss. man Verzweigungen und Sprünge. o bisher linear (von oben nach unten) o Für interessante Programme braucht

Kontrollfluss. man Verzweigungen und Sprünge. o bisher linear (von oben nach unten) o Für interessante Programme braucht Kontrollanweisungen Kontrollfluss o bisher linear (von oben nach unten) o Für interessante Programme braucht man Verzweigungen und Sprünge Kontrollfluss o bisher linear (von oben nach unten) o Für interessante

Mehr

Aufgabe 1.1. Wählen Sie jene Variablendeklarationen mit Initialisierungen aus, die in Java hinsichtlich der Typen korrekt sind:

Aufgabe 1.1. Wählen Sie jene Variablendeklarationen mit Initialisierungen aus, die in Java hinsichtlich der Typen korrekt sind: Test 1 in Programmkonstruktion 59 / 100 Punkte 1. Multiple-Choice-Aufgaben 20 / 30 Punkte Bitte wählen Sie alle zutreffenden Antwortmöglichkeiten aus. Es können beliebig viele Antwortmöglichkeiten zutreffen,

Mehr

Abgabe: (vor 12 Uhr)

Abgabe: (vor 12 Uhr) TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen SS 2011 Einführung in die Informatik I Übungsblatt 7 Prof. Dr. Helmut Seidl, A. Lehmann, A. Herz,

Mehr

Einführung in die Programmierung

Einführung in die Programmierung 252-0027 Einführung in die Programmierung 2.5 if -Anweisungen 2.6 Nochmals Schleifen: while Loops 2.Y Output Thomas R. Gross Department Informatik ETH Zürich Uebersicht 2.2 Typen und Variable Deklaration

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

12 Abstrakte Klassen, finale Klassen und Interfaces

12 Abstrakte Klassen, finale Klassen und Interfaces 12 Abstrakte Klassen, finale Klassen und Interfaces Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält,

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

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

7.0 Arbeiten mit Objekten und Klassen

7.0 Arbeiten mit Objekten und Klassen 252-0027 Einführung in die Programmierung 7.0 Arbeiten mit Objekten und Klassen Thomas R. Gross Department Informatik ETH Zürich Copyright (c) Pearson 2013. and Thomas Gross 2016 All rights reserved. Uebersicht

Mehr

Dynamische Datentypen. Destruktor, Copy-Konstruktor, Zuweisungsoperator, Dynamischer Datentyp, Vektoren

Dynamische Datentypen. Destruktor, Copy-Konstruktor, Zuweisungsoperator, Dynamischer Datentyp, Vektoren Dynamische Datentypen Destruktor, Copy-Konstruktor, Zuweisungsoperator, Dynamischer Datentyp, Vektoren Probleme mit Feldern (variabler Länge) man kann sie nicht direkt kopieren und zuweisen Probleme mit

Mehr

Methoden. (Softwareentwicklung II (IB)) Prof. Dr. Oliver Braun. Letzte Änderung: :40. Methoden 1/44

Methoden. (Softwareentwicklung II (IB)) Prof. Dr. Oliver Braun. Letzte Änderung: :40. Methoden 1/44 Methoden (Softwareentwicklung II (IB)) Prof. Dr. Oliver Braun Letzte Änderung: 02.03.2018 12:40 Methoden 1/44 Was Sie bereits wissen müssen: Siehe Softwareentwicklung I (IB) Methoden 2/44 Überladen Methoden

Mehr

Welche Informatik-Kenntnisse bringen Sie mit?

Welche Informatik-Kenntnisse bringen Sie mit? Welche Informatik-Kenntnisse bringen Sie mit? So gehen Sie vor! Lösen Sie die Aufgaben der Reihe nach von 1 bis 20, ohne das Lösungsblatt zur Hilfe zu nehmen. Der Schwierigkeitsgrad der Aufgaben nimmt

Mehr

Einführung in die Programmierung. 5.0 Input/Output. Thomas R. Gross. Department Informatik ETH Zürich

Einführung in die Programmierung. 5.0 Input/Output. Thomas R. Gross. Department Informatik ETH Zürich 252-0027 Einführung in die Programmierung 5.0 Input/Output Thomas R. Gross Department Informatik ETH Zürich 1 Übersicht 5.1 Output in Fenster 5.2 Arbeiten mit Dateien 5.3 Scanner im Einsatz/Beispiele 5.4

Mehr

Datenkapselung: public / private

Datenkapselung: public / private 627 18. Klassen Klassen, Memberfunktionen, Konstruktoren, Stapel, verkettete Liste, dynamischer Speicher, Copy-Konstruktor, Zuweisungsoperator, Destruktor, Konzept Dynamischer Datentyp Datenkapselung:

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

Softwareentwicklung II (IB) Methoden. Prof. Dr. Oliver Braun. Fakultät für Informatik und Mathematik Hochschule München

Softwareentwicklung II (IB) Methoden. Prof. Dr. Oliver Braun. Fakultät für Informatik und Mathematik Hochschule München Softwareentwicklung II (IB) Methoden Fakultät für Informatik und Mathematik Hochschule München Letzte Änderung: 05.04.2018 17:44 Inhaltsverzeichnis Was Sie bereits wissen müssen: Siehe Softwareentwicklung

Mehr

Organisatorisches. Neue Übungsblätter: Nur mehr elektronisch? Abgabe Di, , 14 Uhr bis Do, , 8Uhr

Organisatorisches. Neue Übungsblätter: Nur mehr elektronisch? Abgabe Di, , 14 Uhr bis Do, , 8Uhr Organisatorisches Neue Übungsblätter: Nur mehr elektronisch? Abgabe Di, 14.10., 14 Uhr bis Do, 23.10., 8Uhr. 14.10.2014 IT I - VO 1 1 IT I: Heute Wiederholung CuP ctd: this Arrays, ArrayLists Schleifen:

Mehr

Beispiel: die Klasse Brüche

Beispiel: die Klasse Brüche Universität München, Hans-Peter Kriegel und Thomas Seidl Informatik II -138 Beispiel: die Klasse Brüche class Fraction { int num; Int denom; // numerator // denominator Fraction (int n, int d) { num =

Mehr

Info B VL 11: Innere Klassen/Collections

Info B VL 11: Innere Klassen/Collections Info B VL 11: Innere Klassen/Collections Objektorientiere Programmierung in Java 2003 Ute Schmid (Vorlesung) Elmar Ludwig (Übung) FB Mathematik/Informatik, Universität Osnabrück Info B VL 11: Innere Klassen/Collections

Mehr

Client-Server-Beziehungen

Client-Server-Beziehungen Client-Server-Beziehungen Server bietet Dienste an, Client nutzt Dienste Objekt ist gleichzeitig Client und Server Vertrag zwischen Client und Server: Client erfüllt Vorbedingungen eines Dienstes Server

Mehr

Basispruefung Herbst 2016/ Einführung in die Programmierung

Basispruefung Herbst 2016/ Einführung in die Programmierung Basispruefung Herbst 2016/17 0027 Einführung in die Programmierung Departement Informatik ETH Zürich Nachname: Vorname: Stud.number: Mit Ihrer Unterschrift bestätigen Sie, dass Sie folgenden Hinweise zur

Mehr

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

{P} S {Q} {P} S {Q} {P} S {Q} Inhalt. Hoare-Kalkül. Hoare-Kalkül. Hoare-Tripel. Hoare-Tripel. Hoare-Tripel Inhalt Hoare-Kalkül Formale Verifizierung Hoare-Kalkül while-sprache Terminierung Partielle / totale Korrektheit 4.0 Hoare-Kalkül entwickelt von C.A.R. (Tony) Hoare (britischer Informatiker), 1969 formales

Mehr

Organisatorisches. drei Gruppen Gruppe 1: 10:10-11:40, Gruppe 2: 11:45-13:15 Gruppe 3: 13:20-14:50

Organisatorisches. drei Gruppen Gruppe 1: 10:10-11:40, Gruppe 2: 11:45-13:15 Gruppe 3: 13:20-14:50 Organisatorisches Vorlesung Donnerstag 8:35 bis 10:05 Übung drei Gruppen Gruppe 1: 10:10-11:40, Gruppe 2: 11:45-13:15 Gruppe 3: 13:20-14:50 Tutorium (Mehr oder weniger) abwechselnd Mo und Mi 10-11:30 Termine

Mehr

PK-Einstufungstest. 1. Allgemeine Multiple-Choice-Aufgaben

PK-Einstufungstest. 1. Allgemeine Multiple-Choice-Aufgaben PK-Einstufungstest 34 / 100 Punkte Alle Aufgaben beziehen sich auf Java. 1. Allgemeine Multiple-Choice-Aufgaben 4 / 15 Punkte Bitte wählen Sie ALLE zutreffenden Antwortmöglichkeiten aus. Es können beliebig

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

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

Einführung in die Programmierung

Einführung in die Programmierung 252-0027 Einführung in die Programmierung 2.3.2 Verschachtelte Schleifen 2.4 Methoden mit Parametern 2.5 if -Anweisungen Thomas R. Gross Department Informatik ETH Zürich Uebersicht 2.2 Typen und Variable

Mehr

2.2 Spezifikation abstrakter Datentypen. 2.3 Implementierung und Anwendung von ADT. 2.4 Datenabstraktion und Objektorientierung

2.2 Spezifikation abstrakter Datentypen. 2.3 Implementierung und Anwendung von ADT. 2.4 Datenabstraktion und Objektorientierung Inhaltsverzeichnis (update) 2 Datenabstraktion 2.1 Begriffe 2.2 Spezifikation abstrakter Datentypen 2.2.1 Algebraische Spezifikation 2.2.2 Modellierende Spezifikation 2.3 Implementierung und Anwendung

Mehr

Übungsstunde: Informatik 1 D-MAVT

Übungsstunde: Informatik 1 D-MAVT Übungsstunde: Informatik 1 D-MAVT Daniel Bogado Duffner Übungsslides unter: n.ethz.ch/~bodaniel Bei Fragen: bodaniel@student.ethz.ch Daniel Bogado Duffner 21.03.2018 1 Ablauf Quiz und Recap Floating Point

Mehr

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

Variablenarten. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java Variablenarten Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 10.12.07 G. Bohlender (IANM UNI Karlsruhe) OOP und Klassen 10.12.07 1 / 15

Mehr

Einführung in die Programmierung I. 9.0 Generische Programmierung. Thomas R. Gross. Department Informatik ETH Zürich

Einführung in die Programmierung I. 9.0 Generische Programmierung. Thomas R. Gross. Department Informatik ETH Zürich 252-0027 Einführung in die Programmierung I 9.0 Generische Programmierung Thomas R. Gross Department Informatik ETH Zürich Copyright (c) Pearson 2013 and Thomas Gross 2016 All rights reserved. Uebersicht

Mehr

Java Übung. Übung Mai Universität Duisburg-Essen Kommedia, Übung EinPro SS06, Einführung in Java - Übung. Werner Gaulke.

Java Übung. Übung Mai Universität Duisburg-Essen Kommedia, Übung EinPro SS06, Einführung in Java - Übung. Werner Gaulke. Java Übung Übung 5 Universität Duisburg-Essen Kommedia, Übung EinPro SS06, 9. Mai 2006 (UniDUE) 9. Mai 2006 1 / 20 Beispiel Anforderungen: Klasse Mensch mit Attributen: Name, Alter, Laune, Geschlecht.

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

PK-Einstufungstest. 1. Allgemeine Multiple-Choice-Aufgaben. Aufgabe 1.1. Alle Aufgaben beziehen sich auf Java.

PK-Einstufungstest. 1. Allgemeine Multiple-Choice-Aufgaben. Aufgabe 1.1. Alle Aufgaben beziehen sich auf Java. PK-Einstufungstest 59 / 100 Punkte Alle Aufgaben beziehen sich auf Java. 1. Allgemeine Multiple-Choice-Aufgaben 14 / 15 Punkte Bitte wählen Sie ALLE zutreffenden Antwortmöglichkeiten aus. Es können beliebig

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

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme Programmieren I Dr. Werner Struckmann 8. September 2014 Name: Vorname: Matrikelnummer: Kennnummer: Anrede: Frau Herr

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

Ideen und Konzepte der Informatik. Programme und Algorithmen Kurt Mehlhorn

Ideen und Konzepte der Informatik. Programme und Algorithmen Kurt Mehlhorn Ideen und Konzepte der Informatik Programme und Algorithmen Kurt Mehlhorn November 2016 Algorithmen und Programme Algorithmus = Schritt-für-Schritt Vorschrift zur Lösung eines Problems. Formuliert man

Mehr

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

Klassen und Objekte. Klassen sind Vorlagen für Objekte. Objekte haben. Attribute. Konstruktoren. Methoden. Merkblatt Klassen und Objekte Klassen sind Vorlagen für Objekte. Objekte haben Attribute Konstruktoren Methoden Aus einer Klasse kann man beliebig viele Objekte herstellen. Attribute bestimmen die Eigenschaften

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

Einführung in die Programmierung

Einführung in die Programmierung Einführung in die Programmierung Prüfung HS16 Eprog HS 16 21.12.2017 1 Aufgabe 1 Theorie Nachfolgend sind die Operatoren in absteigender Reihenfolge ihrer Präzedenz aufgelistet: Treten mehrere Operatoren

Mehr

Ideen und Konzepte der Informatik

Ideen und Konzepte der Informatik Ideen und Konzepte der Informatik Programme und Algorithmen Antonios Antoniadis 23. Oktober 2017 Algorithmen und Programme Algorithmus Schritt-für-Schritt Vorschrift zur Lösung eines Problems. Formuliert

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

Übung Algorithmen und Datenstrukturen

Übung Algorithmen und Datenstrukturen Übung Algorithmen und Datenstrukturen Sommersemester 2017 Marc Bux, Humboldt-Universität zu Berlin Agenda 1. (Sortierte) Listen 2. Stacks & Queues 3. Datenstrukturen 4. Rekursion und vollständige Induktion

Mehr

Java Tools JDK. IDEs. Downloads. Eclipse. IntelliJ. NetBeans. Java SE 8 Java SE 8 Documentation

Java Tools JDK. IDEs.  Downloads. Eclipse. IntelliJ. NetBeans. Java SE 8 Java SE 8 Documentation Java Tools JDK http://www.oracle.com/technetwork/java/javase/ Downloads IDEs Java SE 8 Java SE 8 Documentation Eclipse http://www.eclipse.org IntelliJ http://www.jetbrains.com/idea/ NetBeans https://netbeans.org/

Mehr

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme Bisher Datentypen: einfach Zahlen, Wahrheitswerte, Zeichenketten zusammengesetzt Arrays (Felder) zur Verwaltung mehrerer zusammengehörender Daten desselben Datentypes eindimensional, mehrdimensional, Array-Grenzen

Mehr

Probeklausur: Programmierung WS04/05

Probeklausur: Programmierung WS04/05 Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,

Mehr

Ideen und Konzepte der Informatik. Programme und Algorithmen Kurt Mehlhorn

Ideen und Konzepte der Informatik. Programme und Algorithmen Kurt Mehlhorn Ideen und Konzepte der Informatik Programme und Algorithmen Kurt Mehlhorn Algorithmen und Programme Algorithmus Schritt-für-Schritt Vorschrift zur Lösung eines Problems. Formuliert man umgangssprachlich,

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

16. Structs und Klassen I. Rationale Zahlen, Struct-Definition, Operator-Überladung, Datenkapselung, Klassen-Typen

16. Structs und Klassen I. Rationale Zahlen, Struct-Definition, Operator-Überladung, Datenkapselung, Klassen-Typen 491 16. Structs und Klassen I Rationale Zahlen, Struct-Definition, Operator-Überladung, Datenkapselung, Klassen-Typen Rechnen mit rationalen Zahlen 492 Rationale Zahlen (Q) sind von der Form n d mit n

Mehr

1 Aufgaben 1.1 Umgebungsvariable setzen: CLASSPATH

1 Aufgaben 1.1 Umgebungsvariable setzen: CLASSPATH 1 Aufgaben 1.1 Umgebungsvariable setzen: CLASSPATH Die Umgebungsvariable CLASSPATH kann im Hamster-Simulator sowohl für Compiler als auch für die Ausführung des Hamster-Programms gesetzt werden: Hierdurch

Mehr

OOP. Tagesprogramm. Zusicherungen Zusicherungen und Ersetzbarkeit

OOP. Tagesprogramm. Zusicherungen Zusicherungen und Ersetzbarkeit 1 2016-11-09 Tagesprogramm Zusicherungen Zusicherungen und Ersetzbarkeit 2 Ersetzbarkeit und Verhalten U ist Untertyp von T wenn Instanz von U überall verwendbar wo Instanz von T erwartet Struktur der

Mehr

Einführung in die Programmierung. 6.0 Objekte. Thomas R. Gross Department Informatik ETH Zürich

Einführung in die Programmierung. 6.0 Objekte. Thomas R. Gross Department Informatik ETH Zürich 252-0027 Einführung in die Programmierung 6.0 Objekte Thomas R. Gross Department Informatik ETH Zürich Copyright (c) Pearson 2013 and Thomas R Gross 2016, 2017 All rights reserved. Uebersicht 6.3 Parameter

Mehr

Verschlüsseln eines Bildes. Visuelle Kryptographie. Verschlüsseln eines Bildes. Verschlüsseln eines Bildes

Verschlüsseln eines Bildes. Visuelle Kryptographie. Verschlüsseln eines Bildes. Verschlüsseln eines Bildes Verschlüsseln eines Bildes Visuelle Kryptographie Anwendung von Zufallszahlen Wir wollen ein Bild an Alice und Bob schicken, so dass Alice allein keine Information über das Bild bekommt Bob allein keine

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

D-BAUG Informatik I. Exercise session: week 1 HS 2018

D-BAUG Informatik I. Exercise session: week 1 HS 2018 1 D-BAUG Informatik I Exercise session: week 1 HS 2018 Java Tutorials 2 Questions? expert.ethz.ch 3 Common questions and issues. expert.ethz.ch 4 Need help with expert? Mixed expressions Type Conversions

Mehr

Übersetzen des Quelltexts in ausführbaren Maschinen-Code Translation of source code into executable machine code

Übersetzen des Quelltexts in ausführbaren Maschinen-Code Translation of source code into executable machine code Informatik II D-BAUG Self-Assessment, 2. März 2017 Lösung Name, Vorname:............................................................. Legi-Nummer:.............................................................

Mehr

Interface. So werden Interfaces gemacht

Interface. So werden Interfaces gemacht Design Ein Interface (=Schnittstelle / Definition) beschreibt, welche Funktionalität eine Implementation nach Aussen anzubieten hat. Die dahinter liegende Algorithmik wird aber der Implementation überlassen.

Mehr

Klausur. 2. Aufgabe (3 Punkte) Ergänzen Sie die leeren Zellen derart, dass sich in einer Zeile die selben Zahlenwerte ergeben.

Klausur. 2. Aufgabe (3 Punkte) Ergänzen Sie die leeren Zellen derart, dass sich in einer Zeile die selben Zahlenwerte ergeben. Programmieren bei Dr. Robert Heß TM&M1, IST1 und ET1 Anfang SS 2003 Klausur 1. Aufgabe (2 Punkte) Kodieren Sie folgende Dezimalzahlen in Binärzahlen um. Zeigen Sie den Rechenweg, die negative Zahl soll

Mehr

Einführung in die Programmierung I. 1.0 EBNF 2.0 Einfache Java Programme. Thomas R. Gross. Department Informatik ETH Zürich

Einführung in die Programmierung I. 1.0 EBNF 2.0 Einfache Java Programme. Thomas R. Gross. Department Informatik ETH Zürich 252-0027 Einführung in die Programmierung I 1.0 EBNF 2.0 Einfache Java Programme Thomas R. Gross Department Informatik ETH Zürich Graphische Darstellung von EBNF Regeln Syntax Graph: graphische Darstellung

Mehr

17. Klassen. Datenkapselung, Klassen, Memberfunktionen, Konstruktoren

17. Klassen. Datenkapselung, Klassen, Memberfunktionen, Konstruktoren 556 17. Klassen Datenkapselung, Klassen, Memberfunktionen, Konstruktoren Ein neuer Typ mit Funktionalität... 557 struct rational { int n; int d; // INV: d!= 0 // POST: return value is the sum of a and

Mehr

Algorithmen und Datenstrukturen Musterlösung 5

Algorithmen und Datenstrukturen Musterlösung 5 Algorithmen und Datenstrukturen Musterlösung 5 Martin Avanzini Thomas Bauereiß Herbert Jordan René Thiemann

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

Software Entwicklung 1

Software Entwicklung 1 Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter AG Softech FB Informatik TU Kaiserslautern Fallstudie: Lauftagebuch Bieniusa/Poetzsch-Heffter Software Entwicklung 1 2/ 21 Erstellen einer

Mehr

Informatik II Übung 3. Pascal Schärli

Informatik II Übung 3. Pascal Schärli Informatik II Übung 3 pascscha@student.ethz.ch Warm up Ist das ein Baum? Left child: Right child: Parent: [A B C _ E _ G H I _] 0 2 3 4 5 6 7 8 9 1 2*i + 1 2*i + 2 (i-1)/2 2 Überblick Serie 3 Aufgabe 1

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 06: Einführung in Kontrollstrukturen Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Einführung in Kontrollstrukturen 3 Grundstrukturen von

Mehr

Einführung in die Programmierung Generische Programmierung. Thomas R. Gross. Department Informatik ETH Zürich

Einführung in die Programmierung Generische Programmierung. Thomas R. Gross. Department Informatik ETH Zürich 252-0027 Einführung in die Programmierung 10.0 Generische Programmierung Thomas R. Gross Department Informatik ETH Zürich Copyright (c) Pearson 2013 and Thomas Gross 2016 All rights reserved. Uebersicht

Mehr

Implementieren von Klassen

Implementieren von Klassen Implementieren von Klassen Felder, Methoden, Konstanten Dr. Beatrice Amrhein Überblick Felder/Mitglieder (Field, Member, Member-Variable) o Modifizierer Konstanten Methoden o Modifizierer 2 Felder und

Mehr

Vorkurs Informatik WiSe 17/18

Vorkurs Informatik WiSe 17/18 Java Ausdrücke und Variablen Dr. Werner Struckmann / Stephan Mielke, Nicole Naczk, 05.10.2017 Technische Universität Braunschweig, IPS Überblick Ausdrücke, Datentypen und Variablen Kontrollstrukturen 05.10.2017

Mehr

Visuelle Kryptographie. Anwendung von Zufallszahlen

Visuelle Kryptographie. Anwendung von Zufallszahlen Visuelle Kryptographie Anwendung von Zufallszahlen Verschlüsseln eines Bildes Wir wollen ein Bild an Alice und Bob schicken, so dass Verschlüsseln eines Bildes Wir wollen ein Bild an Alice und Bob schicken,

Mehr

CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik)

CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik) CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik) Einfache Programme: Programm-Argument, Bedingte Anweisungen, Switch, Enum Boolesche Werte und Ausdrücke Seite 1 Beispiel: Umrechnen

Mehr

1 Bedingte Anweisungen. 2 Vergleiche und logische Operatoren. 3 Fallunterscheidungen. 4 Zeichen und Zeichenketten. 5 Schleifen.

1 Bedingte Anweisungen. 2 Vergleiche und logische Operatoren. 3 Fallunterscheidungen. 4 Zeichen und Zeichenketten. 5 Schleifen. Themen der Übung Kontrollstrukturen, Pseudocode und Modulo-Rechnung CoMa-Übung III TU Berlin 9.10.01 1 Bedingte Anweisungen Vergleiche und logische Operatoren 3 Fallunterscheidungen 4 Zeichen und Zeichenketten

Mehr

Objektorientierte Programmierung und Modellierung

Objektorientierte Programmierung und Modellierung Objektorientierte Programmierung und Modellierung Einführung, Teil 2 24.10.17 - WS17/18 Hakan Aksu 1 Raumänderung beachten Dienstag 14:15-15:45 Uhr in M001 (anstatt K101) 2 Ausfalltermine 31.10 Vorlesung

Mehr

Informatik II - Übung 03

Informatik II - Übung 03 Informatik II - Übung 03 Katja Wolff katja.wolff@inf.ethz.ch 15.03.2014 Besprechung Übungsblatt 2 Informatik II - Übung 03 15.03.2017 2 U2.A1 S Klammerdarstellung und eingerückter Form R P V S(R(H(K)),P(A(N,O),Q,T),V(J,F(G)))

Mehr

1 Klassen anlegen und Objekte erzeugen

1 Klassen anlegen und Objekte erzeugen Werkzeugkiste Java 1 1 Klassen anlegen und Objekte erzeugen Klassengrundgerüst 1 /** 2 * Write a description of class Testklasse here. 3 * 4 * @author ( your name ) 5 * @version (a version number or a

Mehr

Programmieren I. Kapitel 5. Kontrollfluss

Programmieren 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,

Mehr

Software Entwicklung 1. Rekursion. Beispiel: Fibonacci-Folge I. Motivation. Annette Bieniusa / Arnd Poetzsch-Heffter

Software Entwicklung 1. Rekursion. Beispiel: Fibonacci-Folge I. Motivation. Annette Bieniusa / Arnd Poetzsch-Heffter Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter AG Softech FB Informatik TU Kaiserslautern Rekursion Bieniusa/Poetzsch-Heffter Software Entwicklung 1 2/ 27 Motivation Beispiel: Fibonacci-Folge

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

Erste Java-Programme (Scopes und Rekursion)

Erste Java-Programme (Scopes und Rekursion) Lehrstuhl Bioinformatik Konstantin Pelz Erste Java-Programme (Scopes und Rekursion) Tutorium Bioinformatik (WS 18/19) Konstantin: Konstantin.pelz@campus.lmu.de Homepage: https://bioinformatik-muenchen.com/studium/propaedeutikumprogrammierung-in-der-bioinformatik/

Mehr

Einführung in die Programmierung

Einführung in die Programmierung 252-0027 Einführung in die Programmierung 2.3.2 Verschachtelte Schleifen Thomas R. Gross Department Informatik ETH Zürich 2.3.2 Verschachtelte for Schleifen for Schleife for (initialization; test; update)

Mehr

Zusicherungen A01 OOP. Zusicherungen

Zusicherungen A01 OOP. Zusicherungen 2013-10-23 Zusicherungen 1 185.A01 OOP Zusicherungen 2013-10-23 Zusicherungen 2 OOP Ersetzbarkeit und Verhalten U ist Untertyp von T wenn eine Instanz von U überall verwendbar ist wo eine Instanz von T

Mehr

Ideen und Konzepte der Informatik. Programme und Algorithmen Kurt Mehlhorn

Ideen und Konzepte der Informatik. Programme und Algorithmen Kurt Mehlhorn Ideen und Konzepte der Informatik Programme und Algorithmen Kurt Mehlhorn 26. Oktober 2015 Programme und Algorithmen Programmiersprache = Kunstsprache mit genau definierter Syntax (was ist ein zulässiger

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

12. Java Klassen. Klassen - Technisch. Beispiel: Erdbebendaten. Klassen - Konzeptuell

12. Java Klassen. Klassen - Technisch. Beispiel: Erdbebendaten. Klassen - Konzeptuell Klassen - Technisch Eine Klasse ist eine Einheit mit einem Namen, die Daten und Funktionalität beinhaltet 12. Java Klassen Klassen, Typen, Objekte, Deklaration, Instanzierung, Konstruktoren, Kapselung,

Mehr

Prozeduren vs. Funktionen

Prozeduren vs. Funktionen Prozeduren vs. Funktionen Mit der Formalisierung wird auch der Unterschied zwischen Prozeduren und Funktionen noch einmal klar. Der Aufruf beider Varianten bewirkt zunächst das Gleiche: die Eingabevariablen

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

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

Programmierkonventionen - 1 -

Programmierkonventionen - 1 - Die wichtigsten Bestandteile der Programmierkonventionen für Java werden hier erläutert. Dies sind: Schreibweise von Bezeichnern Einrückkonventionen Kommentare Programmierkonventionen - 1 - Einleitung

Mehr