Lösungsvorschläge zum Übungsblatt 11: Übersetzung von Programmiersprachen (WS 05/06)

Größe: px
Ab Seite anzeigen:

Download "Lösungsvorschläge zum Übungsblatt 11: Übersetzung von Programmiersprachen (WS 05/06)"

Transkript

1 Prof. Dr. A. Poetzsch-Heffter Dipl.-Inform. M. Gawkowski Technische Universität Kaiserslautern Fachbereich Informatik AG Softwaretechnik Lösungsvorschläge zum Übungsblatt 11: Übersetzung von Programmiersprachen (WS 05/06) Aufgabe 1 Points-to-Graph In dieser Lösung werden wir den Points-to-Graph für das folgende Programm zeigen: import java.lang.integer; class Exp { String unparse () {return "";; class Int extends Exp { private Integer i; Int(Integer ii) {i=ii; String unparse(){ return i.tostring(); class Id extends Exp { private String id; Id(String idd) {id=idd; String unparse(){ return id; class Plus extends Exp { private Exp l, r; Plus(Exp ll, Exp rr) {l=ll; r=rr; String unparse(){ return "(" + l.unparse() + "+" + r.unparse() + ")"; class Prog { public static void main(string args []) { Integer i1 = new Integer(1); Integer i2 = new Integer(2); String v3 = new String("3"); Exp x1 = new Int(i1); Exp x2 = new Int(i2); Exp x3 = new Id(v3); Exp e1 = new Plus(x1,x2); Exp e2 = new Plus(e1,x3); Siehe Abbildung 1 Aufgabe 2 Lebendigkeistsanalyse In dieser Lösung werden wir zeigen, wir man die in- und out-mengen für alle Basisblöcke eines Programms iterativ, durch einen Fixpunkt-Algorithmus berechnen kann. Um den Algorithmus auf den zu dem Programm Kontrollflussgraphen anwenden zu können muss Folgendes vorgeleistet werden:

2 ll e2 rr Plus_2 l r e1 ll rr Plus_1 l r Id_x3 x3 idd x1 ii Int_i1 Int_i2 x2 ii id i i i1 value i2 v3 Integer_1 value Integer_2 original String_3 Abbildung 1: Points-to-Graph für das Java Programm aus Aufgabe 1. Die virtuellen Variablen rr, ll, ii, idd, value und original wurden für die formalen Parameter der entsprechenden Konstruktoren eingeführt. 1. Im ersten Schritt müssen die Blöcke durchnumeriert werden. Die Nummerierung der Blöcke für diese Lösung kann aus Abbildung 2 entnommen werden. 2. Im zweiten Schritt müssen die gen- und kill-mengen für jedes Block B i berechnet werden. Im Folgenden werden zur Erinnerung noch einmal die Berechnungsvorschriften für diese Mengen noch einmal aufgestellt, siehe die Vorlesungsfolie Nr. 204: Die Menge gen(b i ) für ein Block B i ist die Menge der Variablen v, so dass v in B i eine Anwendung besitzt, der keine Definition von v vorausgeht. Die Menge kill(b i ) für ein Block B i ist die Menge der Variablen v, die in B i definiert werden. Nachdem diese Mengen für jedes Block berechnet wurden, ändern sie sich während der Berechnung nicht mehr und können als globale Konstanten des Fixpunkt-Algorithmus gesehen werden. Für unser Programm ergeben sich die folgenden Werte für die gen- und kill-mengen: gen(b 0 ) = {a, b, d, e, v 1 kill(b 0 ) = {v 1, v 0, c gen(b 1 ) = {g, h, i kill(b 1 ) = {d, f gen(b 2 ) = {c, h kill(b 2 ) = {a, b gen(b 3 ) = {i, f, g kill(b 3 ) = {b, c gen(b 4 ) = { kill(b 4 ) = {c, d 3. Im dritten Schritt werden die in- und out-mengen für alle Blöcke des Programms initialisiert. Da laut der Aufgabenstellung keine Variablen am Ende des Programms lebendig sein sollen, wird die out-menge des Basisblocks B 4 mit dem Wert { initialisiert. In der Praxis müsste man hier noch zwischen den Gegenständen der Lebendigkeitsanalyse unterscheiden: wäre zum Beispiel das zu untersuchende Programmstück nur eine Unterprozedur eines Programms, dann müsste man den Wert der out-menge des Prozedurausgangsblocks mit dem Wert {v i v i globale Variable initialisieren. Alle anderen in- und out-mengen des Programms werden während der Initialisierungsphase mit dem Wert { initialisiert. Für unser Programm ergeben die folgenden Werte 2

3 für die in- und out-mengen: out 0 (B 4 ) = { in 0 (B 4 ) = { out 0 (B 3 ) = { in 0 (B 3 ) = { out 0 (B 2 ) = { in 0 (B 2 ) = { out 0 (B 1 ) = { in 0 (B 1 ) = { out 0 (B 0 ) = { in 0 (B 0 ) = { Da bei der Lebendigkeitsanalyse die in- und out-mengen Kontrollfluss-aufwärts berechnet werden (Rückwärtsanalyse), haben wir gleich die Reihenfolge der zu berechnenden Mengen vertauscht, um die Reihenfolge der Berechnung in jeder Iteration zu verdeutlichen. Im Allgemeinen ist die Berechnung in der ursprünglichen Reihenfolge auch möglich jedoch ist sie weniger effizient, dazu siehe das Buch Modern Compiler Implementation in ML von Andrew W. Appel. B0 [1] v0 := v1 [2] v1 := a +b [3] c:= d + e [4] if a < b B1 [5] f := g [6] d := h + i [7] if g < h B2 [8] a := 7 [9] b := 8 [10] if c < h B3 [11] b := f + g [12] c := 2 + i [13] c := 5 [14] d := 2 * c B4 Abbildung 2: Der Eingabe-Kontrollflussgraph mit durchnummerierten Programmpunkten und Basisblöcken Jeder der unten aufgeführten Iterationsschritten wird nach dem folgenden Algorithmus durchgeführt: j := j + 1; B i set[b 4, B 3, B 2, B 1, B 0 ].{ out j (B i ) := out j 1 (B i ); in j (B i ) := in j 1 (B i ); B i set[b 4, B 3, B 2, B 1, B 0 ].{ out j (B i ) := B p succ(b i) in j(b p ) in j (B i ) := gen(b i ) (in j (B i ) kill(b i )) 3

4 Die Berechung der in- und out-mengen in der ersten Iteration: out 1 (B 4 ) = { in 1 (B 4 ) = gen(b 4 ) (out 1 (B 4 ) kill(b 4 )) = { ({ {c, d) = { out 1 (B 3 ) = in 1 (B 4 ) = { in 1 (B 3 ) = gen(b 3 ) (out 1 (B 3 ) kill(b 3 )) = {i, f, g ({ {b, c) = {i, f, g out 1 (B 2 ) = in 1 (B 4 ) in 1 (B 0 ) = { { = { in 1 (B 2 ) = gen(b 2 ) (out 1 (B 2 ) kill(b 2 )) = {c, h ({ {a, b) = {c, h out 1 (B 1 ) = in 1 (B 2 ) in 1 (B 3 ) = {c, h {i, f, g = {c, f, g, h, i in 1 (B 1 ) = gen(b 1 ) (out 1 (B 1 ) kill(b 1 )) = {g, h, i ({c, f, g, h, i {d, f) = {c, g, h, i out 1 (B 0 ) = in 1 (B 0 ) in 1 (B 1 ) = { {c, g, h, i = {c, g, h, i in 1 (B 0 ) = {gen(b 0 ) (out 1 (B 0 ) kill(b 0 )) = {a, b, d, e, v 1 ({c, g, h, i {v 1, v 0, c) = {a, b, d, e, g, h, i, v 1 out 0 (B 4 ) = out 1 (B 4 ) in 0 (B 4 ) = in 1 (B 4 ) out 0 (B 3 ) = out 1 (B 3 ) in 0 (B 3 ) in 1 (B 3 ) out 0 (B 2 ) = out 1 (B 2 ) in 0 (B 2 ) in 1 (B 2 ) out 0 (B 1 ) out 1 (B 1 ) in 0 (B 1 ) in 1 (B 1 ) out 0 (B 0 ) out 1 (B 0 ) in 0 (B 0 ) in 1 (B 0 ) ist der Fixpunkt nach der ersten Iteration noch nich erreicht und wir müssen weiter rechnen. Die Berechung der in- und out-mengen in der zweiten Iteration: out 2 (B i 4) = { in 2 (B 4 ) = gen(b 4 ) (out 2 (B 4 ) kill(b 4 )) = { ({ {c, d) = { out 2 (B 3 ) = in 2 (B 4 ) = { in 2 (B 3 ) = gen(b 3 ) (out 2 (B 3 ) kill(b 3 )) = {i, f, g ({ {b, c) = {i, f, g out 2 (B 2 ) = in 2 (B 4 ) in 2 (B 0 ) = { {a, b, d, e, g, h, i, v 1 = {a, b, d, e, g, h, i, v 1 in 2 (B 2 ) = gen(b 2 ) (out 2 (B 2 ) kill(b 2 )) = {c, h ({a, b, d, e, g, h, i, v 1 {a, b) = {c, d, e, g, h, i, v 1 out 2 (B 1 ) = in 2 (B 2 ) in 2 (B 3 ) = {c, d, e, g, h, i, v 1 {i, f, g = {c, d, e, f, g, h, i, v 1 in 2 (B 1 ) = gen(b 1 ) (out 2 (B 1 ) kill(b 1 )) = {g, h, i ({c, d, e, f, g, h, i, v 1 {d, f) = {c, e, g, h, i, v 1 out 2 (B 0 ) = in 2 (B 0 ) in 2 (B 1 ) = {a, b, d, e, g, h, i, v 1 {c, e, g, h, i, v 1 = {a, b, c, d, e, g, h, i, v 1 in 2 (B 0 ) = {gen(b 0 ) (out 2 (B 0 ) kill(b 0 )) = {a, b, d, e, v 1 ({a, b, c, d, e, g, h, i, v 1 {v 1, v 0, c) = {a, b, d, e, g, h, i, v 1 out 1 (B 4 ) = out 2 (B 4 ) in 1 (B 4 ) = in 2 (B 4 ) out 1 (B 3 ) = out 2 (B 3 ) in 1 (B 3 ) = in 2 (B 3 ) out 1 (B 2 ) out 2 (B 2 ) in 1 (B 2 ) in 2 (B 2 ) out 1 (B 1 ) out 2 (B 1 ) in 1 (B 1 ) in 2 (B 1 ) out 1 (B 0 ) out 2 (B 0 ) in 1 (B 0 ) = in 2 (B 0 ) ist der Fixpunkt nach der zweiten Iteration noch nich erreicht und wir müssen weiter rechnen. 4

5 Die Berechung der in- und out-mengen in der dritten Iteration: out 3 (B 4 ) = { in 3 (B 4 ) = gen(b 4 ) (out 3 (B 4 ) kill(b 4 )) = { ({ {c, d) = { out 3 (B 3 ) = in 3 (B 4 ) = { in 3 (B 3 ) = gen(b 3 ) (out 3 (B 3 ) kill(b 3 )) = {i, f, g ({ {b, c) = {i, f, g out 3 (B 2 ) = in 3 (B 4 ) in 2 (B 0 ) = { {a, b, d, e, g, h, i, v 1 = {a, b, d, e, g, h, i, v 1 in 3 (B 2 ) = gen(b 2 ) (out 3 (B 2 ) kill(b 2 )) = {c, h ({a, b, d, e, g, h, i, v 1 {a, b) = {c, d, e, g, h, i, v 1 out 3 (B 1 ) = in 3 (B 2 ) in 3 (B 3 ) = {c, d, e, g, h, i, v 1 {i, f, g = {c, d, e, f, g, h, i, v 1 in 3 (B 1 ) = gen(b 1 ) (out 3 (B 1 ) kill(b 1 )) = {g, h, i ({c, d, e, f, g, h, i, v 1 {d, f) = {c, e, g, h, i, v 1 out 3 (B 0 ) = in 2 (B 0 ) in 3 (B 1 ) = {a, b, d, e, g, h, i, v 1 {c, e, g, h, i, v 1 = {a, b, c, d, e, g, h, i, v 1 in 3 (B 0 ) = {gen(b 0 ) (out 3 (B 0 ) kill(b 0 )) = {a, b, d, e, v 1 ({a, b, c, d, e, g, h, i, v 1 {v 1, v 0, c) = {a, b, d, e, g, h, i, v 1 out 2 (B 4 ) = out 3 (B 4 ) in 2 (B 4 ) = in 3 (B 4 ) out 2 (B 3 ) = out 3 (B 3 ) in 2 (B 3 ) = in 3 (B 3 ) out 2 (B 2 ) = out 3 (B 2 ) in 2 (B 2 ) = in 3 (B 2 ) out 2 (B 1 ) = out 3 (B 1 ) in 2 (B 1 ) = in 3 (B 1 ) out 2 (B 0 ) = out 3 (B 0 ) in 2 (B 0 ) = in 3 (B 0 ) ist der Fixpunkt nach der dritten Iteration erreicht. Aufgabe 3 Analyse der erreichenden Definitionen Der erste Schritt: Die Blöcke bekommen die gleichen Nummern wie in der vorherigen Aufgabe. Der zweite Schritt: Die gen- und kill-mengen werden folgendermaßen definiert: gen(b 0 ) = {1, 2, 3 kill(b 0 ) = { gen(b 1 ) = {5, 6 kill(b 1 ) = { gen(b 2 ) = {8, 9 kill(b 2 ) = { gen(b 3 ) = {11, 12 kill(b 3 ) = { gen(b 4 ) = {13, 14 kill(b 4 ) = { 5

6 Der dritte Schritt: Die in- und out-mengen werden mit den folgenden Werten initialisiert: in 0 (B 0 ) = { out 0 (B 0 ) = { in 0 (B 1 ) = { out 0 (B 1 ) = { in 0 (B 2 ) = { out 0 (B 2 ) = { in 0 (B 3 ) = { out 0 (B 3 ) = { in 0 (B 4 ) = { out 0 (B 4 ) = { Da bei der Analyse der erreichenden Definitionen die in- und out-mengen dem Kontrollfluss nach abwärts berechnet werden (Abwärtsanalyse), haben wir die Reihenfolge der zu berechnenden Mengen in der Ordnung aufgelistet, die etwa der topologischen Ordnung der Blöcke im Kontrollflussgraph entspricht. Da B i.kill(b i ) = { gilt, können wir unsere Datenflussgleichungen vereinfachen: out j (B i ) = gen j (B i ) (in j (B i ) kill(b i )) = gen j (B i ) in j (B i ) Daraus ergibt sich der folgende Algorithmus für einen Iterationsschritt: j := j + 1; B i set[b 4, B 3, B 2, B 1, B 0 ].{ in j (B i ) := in j 1 (B i ); out j (B i ) := out j 1 (B i ); B i set[b 4, B 3, B 2, B 1, B 0 ].{ in j (B i ) := B p pred(b i) out j(b p ) out j (B i ) := gen(b i ) in j (B i ) Die Berechung der in- und out-mengen in der ersten Iteration: in 1 (B 0 ) = out 1 (B 0 ) out 1 (B 2 ) = { { = { out 1 (B 0 ) = gen(b 0 ) in 1 (B 0 ) = {1, 2, 3 { = {1, 2, 3 in 1 (B 1 ) = out 1 (B 0 ) = {1, 2, 3 out 1 (B 1 ) = gen(b 1 ) in(b 1 ) = {5, 6 {1, 2, 3 = {1, 2, 3, 5, 6 in 1 (B 2 ) = out 1 (B 1 ) = {1, 2, 3, 5, 6 out 1 (B 2 ) = gen(b 2 ) in(b 2 ) = {8, 9 {1, 2, 3, 5, 6 in 1 (B 3 ) = out 1 (B 1 ) = {1, 2, 3, 5, 6 out 1 (B 3 ) = gen(b 3 ) in 1 (B 3 ) = {11, 12 {1, 2, 3, 5, 6 = {1, 2, 3, 5, 6, 11, 12 in 1 (B4) = out 1 (B 2 ) out 1 (B 3 ) {1, 2, 3, 5, 6, 11, 12 = {1, 2, 3, 5, 6, 8, 9, 11, 12 out 1 (B 4 ) = gen(b 4 ) in 1 (B 4 ) = {13, 14 {1, 2, 3, 5, 6, 8, 9 = {1, 2, 3, 5, 6, 8, 9, 13, 14 out 0 (B 0 ) out 1 (B 0 ) in 0 (B 0 ) = in 1 (B 0 ) out 0 (B 1 ) out 1 (B 1 ) in 0 (B 1 ) in 1 (B 1 ) out 0 (B 2 ) out 1 (B 2 ) in 0 (B 2 ) in 1 (B 2 ) out 0 (B 3 ) out 1 (B 3 ) in 0 (B 3 ) in 1 (B 3 ) 6

7 out 0 (B 4 ) out 1 (B 4 ) in 0 (B 4 ) in 1 (B 4 ) ist der Fixpunkt nach der ersten Iteration noch nich erreicht und wir müssen weiter rechnen. Die Berechung der in- und out-mengen in der zweiten Iteration: in 2 (B 0 ) = out 2 (B 0 ) out 2 (B 2 ) = {1, 2, 3 {1, 2, 3, 5, 6, 8, 9 out 2 (B 0 ) = gen(b 0 ) in 2 (B 0 ) = {1, 2, 3 {1, 2, 3, 5, 6, 8, 9 in 2 (B 1 ) = out 2 (B 0 ) out 2 (B 1 ) = gen(b 1 ) in(b 1 ) = {5, 6 {1, 2, 3, 5, 6, 8, 9 in 2 (B 2 ) = out 2 (B 1 ) out 2 (B 2 ) = gen(b 2 ) in(b 2 ) = {8, 9 {1, 2, 3, 5, 6, 8, 9 in 2 (B 3 ) = out 2 (B 1 ) out 2 (B 3 ) = gen(b 3 ) in 2 (B 3 ) = {11, 12 {1, 2, 3, 5, 6, 8, 9 = {1, 2, 3, 5, 6, 8, 9, 11, 12 in 2 (B4) = out 2 (B 2 ) out 2 (B 3 ) {1, 2, 3, 5, 6, 8, 9, 11, 12 = {1, 2, 3, 5, 6, 8, 9, 11, 12 out 2 (B 4 ) = gen(b 4 ) in 2 (B 4 ) = {13, 14 {1, 2, 3, 5, 6, 8, 9, 11, 12 = {1, 2, 3, 5, 6, 8, 9, 11, 12, 13, 14 out 1 (B 0 ) out 2 (B 0 ) in 1 (B 0 ) in 2 (B 0 ) out 1 (B 1 ) out 2 (B 1 ) in 1 (B 1 ) in 2 (B 1 ) out 1 (B 2 ) = out 2 (B 2 ) in 1 (B 2 ) in 2 (B 2 ) out 1 (B 3 ) out 2 (B 3 ) in 1 (B 3 ) = in 2 (B 3 ) out 1 (B 4 ) out 2 (B 4 ) in 1 (B 4 ) = in 2 (B 4 ) ist der Fixpunkt nach der zweiten Iteration noch nich erreicht und wir müssen weiter rechnen. Die Berechung der in- und out-mengen in der dritten Iteration: in 3 (B 0 ) = out 3 (B 0 ) out 3 (B 2 ) {1, 2, 3, 5, 6, 8, 9 out 3 (B 0 ) = gen(b 0 ) in 3 (B 0 ) = {1, 2, 3 {1, 2, 3, 5, 6, 8, 9 in 3 (B 1 ) = out 3 (B 0 ) out 3 (B 1 ) = gen(b 1 ) in(b 1 ) = {5, 6 {1, 2, 3, 5, 6, 8, 9 in 3 (B 2 ) = out 3 (B 1 ) out 3 (B 2 ) = gen(b 2 ) in(b 2 ) = {8, 9 {1, 2, 3, 5, 6, 8, 9 in 3 (B 3 ) = out 3 (B 1 ) out 3 (B 3 ) = gen(b 3 ) in 3 (B 3 ) = {11, 12 {1, 2, 3, 5, 6, 8, 9 = {1, 2, 3, 5, 6, 8, 9, 11, 12 in 3 (B4) = out 3 (B 2 ) out 3 (B 3 ) {1, 2, 3, 5, 6, 8, 9, 11, 12 = {1, 2, 3, 5, 6, 8, 9, 11, 12 out 3 (B 4 ) = gen(b 4 ) in 3 (B 4 ) = {13, 14 {1, 2, 3, 5, 6, 8, 9, 11, 12 = {1, 2, 3, 5, 6, 8, 9, 11, 12, 13, 14 out 2 (B 0 ) = out 3 (B 0 ) in 2 (B 0 ) = in 3 (B 0 ) out 2 (B 1 ) = out 3 (B 1 ) in 2 (B 1 ) = in 3 (B 1 ) out 2 (B 2 ) = out 3 (B 2 ) in 2 (B 2 ) = in 3 (B 2 ) out 2 (B 3 ) = out 3 (B 3 ) in 2 (B 3 ) = in 3 (B 3 ) 7

8 out 2 (B 4 ) = out 3 (B 4 ) in 2 (B 4 ) = in 3 (B 4 ) ist der Fixpunkt nach der dritten Iteration erreicht und damit die Berechnung beendet. 8

Rekursion. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Rekursion. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung Rekursion Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-12-13/infoeinf WS12/13 Aufgabe 1: Potenzfunktion Schreiben Sie eine Methode, die

Mehr

Grundzüge der Wirtschaftsinformatik WS 2002/03. Wiederholung Java. Programmierzyklus. Heiko Rossnagel Problem

Grundzüge der Wirtschaftsinformatik WS 2002/03. Wiederholung Java. Programmierzyklus. Heiko Rossnagel  Problem Grundzüge der Wirtschaftsinformatik WS 2002/03 Wiederholung Java Heiko Rossnagel www.m-lehrstuhl.de accelerate.com Grundzüge der Wirtschaftsinformatik WS 2002/03 1 Programmierzyklus Problem Formulierung

Mehr

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

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Tafelübung 04 Referenzen, Overloading, Klassen(hierarchien) Clemens Lang T2 18. Mai 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/13 Organisatorisches Nächster Übungstermin

Mehr

Alias Analysis for Exceptions in Java Seminar

Alias Analysis for Exceptions in Java Seminar Alias Analysis for Exceptions in Java Seminar Michal Revucky e0225176@student.tuwien.ac.at 16. Dezember 2004 Zusammenfassung Diese Arbeit schlägt einen Alias Analysis Algorithmus für Java vor, dieser kann

Mehr

5. Tutorium zu Programmieren

5. Tutorium zu Programmieren 5. Tutorium zu Programmieren Dennis Ewert Gruppe 6 Universität Karlsruhe Institut für Programmstrukturen und Datenorganisation (IPD) Lehrstuhl Programmierparadigmen WS 2008/2009 c 2008 by IPD Snelting

Mehr

Java Einführung Abstrakte Klassen und Interfaces

Java Einführung Abstrakte Klassen und Interfaces Java Einführung Abstrakte Klassen und Interfaces Interface Interface bieten in Java ist die Möglichkeit, einheitliche Schnittstelle für Klassen zu definieren, die später oder/und durch andere Programmierer

Mehr

Java: Vererbung. Teil 3: super() www.informatikzentrale.de

Java: Vererbung. Teil 3: super() www.informatikzentrale.de Java: Vererbung Teil 3: super() Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und IMMER zuerst den Konstruktor der Elternklasse auf! Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und

Mehr

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2015/16. Vorbereitende Aufgaben

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2015/16. Vorbereitende Aufgaben Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2015/16 Fakultät für Informatik Lehrstuhl 14 Lars Hildebrand, Marcel Preuß, Iman Kamehkhosh, Marc Bury, Diana Howey Übungsblatt

Mehr

Algorithmen und Programmierung II

Algorithmen und Programmierung II Algorithmen und Programmierung II Vererbung Prof. Dr. Margarita Esponda SS 2012 1 Imperative Grundbestandteile Parameterübergabe String-Klasse Array-Klasse Konzepte objektorientierter Programmierung Vererbung

Mehr

Test-Driven Design: Ein einfaches Beispiel

Test-Driven Design: Ein einfaches Beispiel Test-Driven Design: Ein einfaches Beispiel Martin Wirsing in Zusammenarbeit mit Moritz Hammer und Axel Rauschmayer SS 06 2 Ziele Veranschaulichung der Technik des Test-Driven Design am Beispiel eines Programms

Mehr

Programmierkurs. Manfred Jackel

Programmierkurs. Manfred Jackel Java für Anfänger Teil 7: Methoden Programmierkurs 06.-10.10.2008 Manfred Jackel 1 Methoden In der imperativen Programmierung sind Funktionen ein wichtiges Mittel zur Modularisierung. [Oft benötigter]

Mehr

Silke Trißl, Prof. Ulf Leser Wissensmanagement in der Bioinformatik. Jede Applikation braucht eine Klasse mit einer main-methode

Silke Trißl, Prof. Ulf Leser Wissensmanagement in der Bioinformatik. Jede Applikation braucht eine Klasse mit einer main-methode Methoden und Klassen Silke Trißl, Prof. Ulf Leser Wissensmanagement in der Bioinformatik Wiederholung Jede Applikation braucht eine Klasse mit einer main-methode Eintrittspunkt in das Programm Die main-methode

Mehr

Rekursion. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Rekursion. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-13-14/infoeinf WS13/14 Action required now 1. Smartphone: installiere die App "socrative student"

Mehr

Informatik 1 - Translation Studies in Information Technology. Musterlösung zum Aufgabenblatt der ersten Pflichtübung im Wintersemester 16/17

Informatik 1 - Translation Studies in Information Technology. Musterlösung zum Aufgabenblatt der ersten Pflichtübung im Wintersemester 16/17 Informatik 1 - Translation Studies in Information Technology INF1 TSIT MUSTERLÖSUNG: PFLICHTÜBUNG 1 Musterlösung zum Aufgabenblatt der ersten Pflichtübung im Wintersemester 16/17 Praktikum zur Vorlesung

Mehr

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden Kapitel 8 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Methoden Überladen von Methoden Der this-zeiger Konstruktoren Vererbung WS 07/08

Mehr

Übungsblatt 3: Algorithmen in Java & Grammatiken

Übungsblatt 3: Algorithmen in Java & Grammatiken Humboldt-Universität zu Berlin Grundlagen der Programmierung (Vorlesung von Prof. Bothe) Institut für Informatik WS 15/16 Übungsblatt 3: Algorithmen in Java & Grammatiken Abgabe: bis 9:00 Uhr am 30.11.2015

Mehr

1 Polymorphie (Vielgestaltigkeit)

1 Polymorphie (Vielgestaltigkeit) 1 Polymorphie (Vielgestaltigkeit) Problem: Unsere Datenstrukturen List, Stack und Queue können einzig und allein int-werte aufnehmen. Wollen wir String-Objekte, andere Arten von Zahlen oder andere Objekttypen

Mehr

Theorie zu Übung 8 Implementierung in Java

Theorie zu Übung 8 Implementierung in Java Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich Theorie zu Übung 8 Implementierung in Java Klasse in Java Die Klasse wird durch das class-konzept

Mehr

Repetitorium Informatik (Java)

Repetitorium Informatik (Java) Repetitorium Informatik (Java) Tag 6 Lehrstuhl für Informatik 2 (Programmiersysteme) Übersicht 1 Klassen und Objekte Objektorientierung Begrifflichkeiten Deklaration von Klassen Instanzmethoden/-variablen

Mehr

JAVA - Methoden

JAVA - Methoden Übungen Informatik I JAVA - http://www.fbi-lkt.fh-karlsruhe.de/lab/info01/tutorial Übungen Informatik 1 Folie 1 sind eine Zusammenfassung von Deklarationen und Anweisungen haben einen Namen und können

Mehr

1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen

1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen 1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen II.2.2 Methoden, Unterprogramme und Parameter - 1 - 2. Methoden

Mehr

Speicher und Adressraum

Speicher und Adressraum Linearer Speicher (Adressraum) Technische Universität München Speicher und Adressraum Freie Speicherhalde (Heap) Freier Speicherstapel (Stack) Globale Variablen Bibliotheksfunktionen Laufzeitsystem Programmcode

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java Vorlesung vom 07.01.2008 Übersicht 1 Warm-Up zum Jahresbeginn 2 Anfangswertprobleme 3 Polygonzüge 4 Das Eulersche Polygonzugverfahren Warm-Up zum Jahresbeginn 1 Warm-Up zum Jahresbeginn 2 Anfangswertprobleme

Mehr

3 Objektorientierte Konzepte in Java

3 Objektorientierte Konzepte in Java 3 Objektorientierte Konzepte in Java 3.1 Klassendeklarationen Fragen an die Klassendeklaration: Wie heißt die Klasse? Wer darf auf die Klasse und ihre Attribute/Methoden zugreifen? Ist die Klasse eine

Mehr

Problemstellung. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 24: Reflection 1. IDE und automatische Tests.

Problemstellung. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 24: Reflection 1. IDE und automatische Tests. Universität Osnabrück 1 Problemstellung 3 - Objektorientierte Programmierung in Java Vorlesung 24: Reflection 1 SS 2006 Prof. Dr. Frank M. Thiesing, FH Osnabrück Um ein Objekt anzulegen, eine seiner Methoden

Mehr

1.2 Attribute und Methoden Aufbau einer Java-Klasse:

1.2 Attribute und Methoden Aufbau einer Java-Klasse: Aufbau einer Java-Klasse: public class Quadrat { int groesse; int xposition; String farbe; boolean istsichtbar; public void sichtbarmachen() { istsichtbar = true; public void horizontalbewegen(int distance){

Mehr

Sortieralgorithmen. Inhalt: InsertionSort BubbleSort QuickSort. Marco Block

Sortieralgorithmen. Inhalt: InsertionSort BubbleSort QuickSort. Marco Block Inhalt: InsertionSort BubbleSort QuickSort Block M.: "Java-Intensivkurs - In 14 Tagen lernen Projekte erfolgreich zu realisieren", Springer-Verlag 2007 InsertionSort I Das Problem unsortierte Daten in

Mehr

11. Rekursion, Komplexität von Algorithmen

11. Rekursion, Komplexität von Algorithmen 11. Rekursion, Komplexität von Algorithmen Teil 2 Java-Beispiele: Power1.java Hanoi.java K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16 Version: 23. Nov. 2015 Anwendung der Rekursion Rekursiv

Mehr

Wiederholung Wozu Methoden? Methoden Schreiben Methoden Benutzen Rekursion?! Methoden. Javakurs 2012, 3. Vorlesung

Wiederholung Wozu Methoden? Methoden Schreiben Methoden Benutzen Rekursion?! Methoden. Javakurs 2012, 3. Vorlesung Wiederholung Wozu? Schreiben Benutzen Rekursion?! Javakurs 2012, 3. Vorlesung maggyrz@freitagsrunde.org 5. März 2013 Wiederholung Wozu? Schreiben Benutzen Rekursion?! 1 Wiederholung 2 Wozu? 3 Schreiben

Mehr

Universität Karlsruhe (TH)

Universität Karlsruhe (TH) Universität Karlsruhe (TH) Institut für Innovatives Rehnen und Programmstrukturen (IPD) Übersetzerbau WS 2007/08 http://www.info.uni-karlsruhe.de/ Dozent: Prof. Dr.rer.nat. G. Goos goos@ipd.info.uni-karlsruhe.de

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen

Mehr

Übung Grundlagen der Programmierung. Übung 05: Arrays. Abgabetermin: xx.xx.xxxx. Java-Programm Testplan Testergebnisse

Übung Grundlagen der Programmierung. Übung 05: Arrays. Abgabetermin: xx.xx.xxxx. Java-Programm Testplan Testergebnisse Übung 05: Arrays Abgabetermin: xx.xx.xxxx Name: Name, Vorname Matrikelnummer: 0XXXXXX Gruppe: G1 (Prähofer) G2 (Wolfinger) G3 (Wolfinger) Aufgabe Punkte gelöst abzugeben schriftlich abzugeben elektronisch

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

Programmiertechnik Klassenmethoden

Programmiertechnik Klassenmethoden Programmiertechnik Klassenmethoden Prof. Dr. Oliver Haase Oliver Haase Hochschule Konstanz 1 Motivation Programm zur Berechung von public class Eval1 { public static void main(string[] args) { java.util.scanner

Mehr

JAVA - Zufallszahlen

JAVA - Zufallszahlen Übungen Informatik I JAVA - http://www.fbi-lkt.fh-karlsruhe.de/lab/info01/tutorial Übungen Informatik 1 1 5. JAVA werden beim Programmieren erstaunlich oft gebraucht: Simulationen Spiele Aufbau von Testszenarien...

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung 1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben

Mehr

Hochschule Augsburg, Fakultät für Informatik Name:... Prüfung "Programmieren 1", IN1bac, WS 10/11 Seite 1 von 6

Hochschule Augsburg, Fakultät für Informatik Name:... Prüfung Programmieren 1, IN1bac, WS 10/11 Seite 1 von 6 Prüfung "Programmieren 1", IN1bac, WS 10/11 Seite 1 von 6 Datum, Uhrzeit: 24. 01. 2011, 10.30 Uhr Semester: IN1 Note:... Prüfer: Prof. Meixner Dauer: 60 Min. Hilfsmittel: keine Punkte:... Diese Prüfung

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung 1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben

Mehr

Teil 1: Grundeigenschaften von Rechnern und Software

Teil 1: Grundeigenschaften von Rechnern und Software Blatt Nummer: 1 Teil 1: Grundeigenschaften von Rechnern und Software Aufgabe 1.1 [2P] Welcher fundamentale Unterschied besteht zwischen dem Zweck eines Computer von dem Zweck anderer Maschinen (etwa einer

Mehr

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 14/15. Kapitel 11. Fehler und Ausnahmen 1

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 14/15. Kapitel 11. Fehler und Ausnahmen 1 Kapitel 11 Fehler und Ausnahmen Fehler und Ausnahmen 1 Ziele Fehlerquellen in Programmen und bei der Programmausführung verstehen Das Java-Konzept der Ausnahmen als Objekte kennenlernen Ausnahmen auslösen

Mehr

5.5.8 Öffentliche und private Eigenschaften

5.5.8 Öffentliche und private Eigenschaften 5.5.8 Öffentliche und private Eigenschaften Schnittstellen vs. Implementierungen: Schnittstelle einer Klasse beschreibt, was eine Klasse leistet und wie sie benutzt werden kann, ohne dass ihre Implementierung

Mehr

Arrays und Methoden. Programmiervorkurs WS 2010 / 11

Arrays und Methoden. Programmiervorkurs WS 2010 / 11 Arrays und Methoden Programmiervorkurs WS 2010 / 11 Einleitung Bisher sind einfach Programme möglich Nun wollen wir Organisation und Stil verbessern Gesamter Code sollte nicht an einer Stelle stehen Nicht

Mehr

Einfache Arrays. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Einfache Arrays. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-13-14/infoeinf WS13/14 Action required now 1. Smartphone: installiere die App "socrative student"

Mehr

Allgemeine Informatik II SS :30-13:30 Uhr

Allgemeine Informatik II SS :30-13:30 Uhr TU Darmstadt FB Informatik Prof. J. Fürnkranz Vordiplomsklausur - Lösungsvorschlag Allgemeine Informatik II SS 2005 15.09.2005 11:30-13:30 Uhr Hinweise: Als Hilfsmittel ist nur ein schwarzer oder blauer

Mehr

Informatik ist viel mehr als Delphi-Programmierung!

Informatik ist viel mehr als Delphi-Programmierung! Gliederung 1. Objektorientierte Programmierung mit Object Pascal (5. Studienbrief, Kapitel 5) 9.4. + 16.4. 2. Software-Bausteine am Beispiel der Delphi-Komponenten (5. Studienbrief, Kapitel 5) 23.4. 3.

Mehr

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

Übung 1 mit C# 6.0 MATTHIAS RONCORONI Übung 1 mit C# 6.0 MATTHIAS RONCORONI Inhalt 2 1. Überblick über C# 2. Lösung der Übung 1 3. Code 4. Demo C# allgemein 3 aktuell: C# 6.0 mit.net-framework 4.6: Multiparadigmatisch (Strukturiert, Objektorientiert,

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung Kapitel 6 Vererbung Vererbung 1 Ziele Das Vererbungsprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen

Mehr

public class SternchenRechteckGefuellt {

public class SternchenRechteckGefuellt { Java programmieren: Musterlösungen Konsolen-Aufgaben Aufgabe 1: Gefüllte Rechtecke zeichnen Schreiben Sie ein Programm, das ein durch Sternchen gefülltes Rechteck zeichnet. Der Benutzer soll Breite und

Mehr

Grundlagen der Programmierung Prof. H. Mössenböck. 6. Methoden

Grundlagen der Programmierung Prof. H. Mössenböck. 6. Methoden Grundlagen der Programmierung Prof. H. Mössenböck 6. Methoden Parameterlose Methoden Beispiel: Ausgabe einer Überschrift class Sample { static void printheader() { // Methodenkopf Out.println("Artikelliste");

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

Praktikum Informatik II Prof. Dr. Martin Trauth, Dr. Michael Männel

Praktikum Informatik II Prof. Dr. Martin Trauth, Dr. Michael Männel Praktikum Informatik II Prof. Dr. Martin Trauth, Dr. Michael Männel FB Physikalische Technik Musterlösungen Teil 4 Aufgabe 1 package teil4; import javax.swing.*; public class Ei { int haltung, ident; String

Mehr

Die Programmiersprache C Eine Einführung

Die Programmiersprache C Eine Einführung Die Programmiersprache C Eine Einführung Christian Gentsch Fakutltät IV Technische Universität Berlin Projektlabor 2. Mai 2014 Inhaltsverzeichnis 1 Einführung Entstehungsgeschichte Verwendung 2 Objektorientiert

Mehr

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java: Technische Informatik für Ingenieure (TIfI) WS 2005/2006, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Datenstrukturen 9. Datenstrukturen Daten zusammenfassen

Mehr

Methoden. von Objekten definiert werden, Methoden,, Zugriffsmethoden und Read-Only

Methoden. von Objekten definiert werden, Methoden,, Zugriffsmethoden und Read-Only Methoden Wie Konstruktoren und Destruktoren zum Auf- und Abbau von Objekten definiert werden, Wie inline-methoden Methoden,, Zugriffsmethoden und Read-Only Only- Methoden einzusetzen sind, Der this-pointer

Mehr

Präsentation Interfaces

Präsentation Interfaces Einführung in Java Präsentation Interfaces Nozar Delassaei Marvi Inhalt 1. Erinnerung Klasse Objekte Beispiel Klasse Abstrakte Klasse Beispiel Abstrakte Klasse Mehrfachvererbung-1 Mehrfachvererbung-2 2.

Mehr

Vorkurs Informatik WiSe 16/17

Vorkurs Informatik WiSe 16/17 Java Rekursion Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe, 11.10.2016 Technische Universität Braunschweig, IPS Überblick Einleitung Beispiele 11.10.2016 Dr. Werner Struckmann / Stephan Mielke,

Mehr

Dr. Monika Meiler. Inhalt

Dr. Monika Meiler. Inhalt Inhalt 4 Einführung in die Programmiersprache Java (Teil II)... 4-2 4.4 Strukturierte Programmierung... 4-2 4.4.1 Strukturierung im Kleinen... 4-2 4.4.2 Addierer (do-schleife)... 4-3 4.4.3 Ein- Mal- Eins

Mehr

Compilerbau I Sommersemester 2008

Compilerbau I Sommersemester 2008 Fachbereich 12 Informatik und Elektrotechnik Programmiersprachen Kurt Sieber Benedikt Meurer Compilerbau I Sommersemester 2008 Übungsblatt 1 Aufgabe 1 Der erweiterte reguläre Ausdruck α{m, n erkennt zwischen

Mehr

II.1.1. Erste Schritte - 1 -

II.1.1. Erste Schritte - 1 - ! 1. Grundelemente der Programmierung! 2. Objekte, Klassen und Methoden! 3. Rekursion und dynamische Datenstrukturen! 4. Erweiterung von Klassen und fortgeschrittene Konzepte II.1.1. Erste Schritte - 1

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Universität der Bundeswehr Fakultät für Informatik Institut 2 Priv.-Doz. Dr. Lothar Schmitz FT 2006 Übungsblatt 5 Lösungsvorschlag Objektorientierte Programmierung 22. 05. 2006 Lösung 9 (SMS-Eingabe am

Mehr

1. Typen und Literale (6 Punkte) 2. Zuweisungen (6 = Punkte)

1. Typen und Literale (6 Punkte) 2. Zuweisungen (6 = Punkte) Praktische Informatik (Software) Vorlesung Softwareentwicklung 1 Prof. Dr. A. Ferscha Hauptklausur am 01. 02. 2001 Zuname Vorname Matr. Nr. Stud. Kennz. Sitzplatz HS / / / Punkte Note korr. Fügen Sie fehlende

Mehr

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag Ludwig-Maximilians-Universität München WS 2015/16 Institut für Informatik Übungsblatt 5 Prof. Dr. R. Hennicker, A. Klarl Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung:

Mehr

5 Codierung nach RSA (Lösung)

5 Codierung nach RSA (Lösung) Kapitel 5 Codierung nach RSA (Lösung) Seite 1/17 5 Codierung nach RSA (Lösung) 5.1 Einführung Die drei Mathematiker Rivest, Shamir und Adleman entwickelten 1977 das nach ihnen benannte RSA-Verfahren. Es

Mehr

6 Speicherorganisation

6 Speicherorganisation Der Speicher des Programms ist in verschiedene Speicherbereiche untergliedert Speicherbereiche, die den eigentlichen Programmcode und den Code der Laufzeitbibliothek enthalten; einen Speicherbereich für

Mehr

188.154 Einführung in die Programmierung Vorlesungsprüfung

188.154 Einführung in die Programmierung Vorlesungsprüfung Matrikelnummer Studienkennzahl Name Vorname 188.154 Einführung in die Programmierung Vorlesungsprüfung Donnerstag, 27.1.2005, 18:15 Uhr EI 7 Arbeitszeit: 60 min - max. 50 Punkte erreichbar - Unterlagen

Mehr

Einführung in die Programmierung mit Java

Einführung in die Programmierung mit Java Einführung in die Programmierung mit Java Martin Wirsing 2 Ziele Geschichte der OO-Programmiersprachen Warum Java als Programmiersprache verwenden? Ein einfaches Java-Programm erstellen, übersetzen und

Mehr

12. Rekursion Grundlagen der Programmierung 1 (Java)

12. Rekursion Grundlagen der Programmierung 1 (Java) 12. Rekursion Grundlagen der Programmierung 1 (Java) Fachhochschule Darmstadt Haardtring 100 D-64295 Darmstadt Prof. Dr. Bernhard Humm FH Darmstadt, 24. Januar 2006 Einordnung im Kontext der Vorlesung

Mehr

Rekursive Funktionen

Rekursive Funktionen Um Rekursion zu verstehen, muss man vor allem Rekursion verstehen. http://www2.norwalk-city.k12.oh.us/wordpress/precalc/files/2009/05/mona-lisa-jmc.jpg Rekursive Funktionen OOPM, Ralf Lämmel Was ist Rekursion?

Mehr

Innere Klassen in Java

Innere Klassen in Java Innere Klassen in Java SS 2012 Prof. Dr. Margarita Esponda Innere Klassen Klassen- oder Interfacedefinitionen können zur besseren Strukturierung von Programmen verschachtelt werden Eine "Inner Class" wird

Mehr

C# im Vergleich zu Java

C# im Vergleich zu Java C# im Vergleich zu Java Serhad Ilgün Seminar Universität Dortmund SS 03 Gliederung Entstehung von C# und Java Überblick von C# und Java Unterschiede und Gemeinsamkeiten Zusammenfassung und Ausblick Entstehung

Mehr

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Klassenmethoden

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Klassenmethoden Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer Programmiertechnik Klassenmethoden Motivation Programm zur Berechnung von public class Eval1 { public static void main(string[] args) { java.util.scanner

Mehr

1 Fehler-Objekte: Werfen, Fangen, Behandeln

1 Fehler-Objekte: Werfen, Fangen, Behandeln 1 Fehler-Objekte: Werfen, Fangen, Behandeln Tritt während der Programm-Ausführung ein Fehler auf, wird die normale Programm-ausführung abgebrochen und ein Fehler-Objekt erzeugt (geworfen). Die Klasse Throwable

Mehr

Java 8. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Oktober 2014 JAV8

Java 8. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Oktober 2014 JAV8 Java 8 Elmar Fuchs Grundlagen Programmierung 1. Ausgabe, Oktober 2014 JAV8 5 Java 8 - Grundlagen Programmierung 5 Kontrollstrukturen In diesem Kapitel erfahren Sie wie Sie die Ausführung von von Bedingungen

Mehr

Liebe Leserin, lieber Leser, in der ersten Auflage von Programmieren lernen mit Java von Hans- Peter Habelitz sind einige Fehler zu korrigieren.

Liebe Leserin, lieber Leser, in der ersten Auflage von Programmieren lernen mit Java von Hans- Peter Habelitz sind einige Fehler zu korrigieren. Liebe Leserin, lieber Leser, in der ersten Auflage von Programmieren lernen mit Java von Hans- Peter Habelitz sind einige Fehler zu korrigieren. Niemand bedauert diese Fehler mehr als der Autor selbst.

Mehr

Software Engineering Klassendiagramme Einführung

Software Engineering Klassendiagramme Einführung Software Engineering Klassendiagramme Einführung Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Aufgabe Erstellen Sie eine Klasse Person in Java. Jede Person verfügt

Mehr

Informatik. Studiengang Chemische Technologie. Michael Roth Hochschule Darmstadt -Fachbereich Informatik- WS 2012/2013.

Informatik. Studiengang Chemische Technologie. Michael Roth Hochschule Darmstadt -Fachbereich Informatik- WS 2012/2013. Informatik Studiengang Chemische Technologie Michael Roth michael.roth@h-da.de Hochschule Darmstadt -Fachbereich Informatik- WS 2012/2013 Inhalt Teil VIII Einstieg in Java II Michael Roth (h_da) Informatik

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

Teil 1: Grundeigenschaften von Rechnern und Software

Teil 1: Grundeigenschaften von Rechnern und Software Blatt Nummer: 1 Teil 1: Grundeigenschaften von Rechnern und Software Aufgabe 1.1 [3P] Nennen Sie mindestens 3 Arten von Programmen zur Softwareentwicklung Editor, Compiler, Linker, Debugger, Interpreter,...

Mehr

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2 Java Einführung VARIABLEN und DATENTYPEN Kapitel 2 Inhalt dieser Einheit Variablen (Sinn und Aufgabe) Bezeichner Datentypen, Deklaration und Operationen Typenumwandlung (implizit/explizit) 2 Variablen

Mehr

Übungen zur Vorlesung Einführung in die Informatik Wintersemester 2010/11

Übungen zur Vorlesung Einführung in die Informatik Wintersemester 2010/11 Übungen zur Vorlesung Einführung in die Informatik Wintersemester 2010/11 Fakultät für Informatik Lehrstuhl 1 Dr. Lars Hildebrand Carla Delgado-Battenfeld Fatih Gedikli Tobias Marschall Benjamin Schowe

Mehr

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden. Einfache Ein- und Ausgabe mit Java 1. Hallo-Welt! Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden. /** Die Klasse hello sendet einen

Mehr

Vererbung. Martin Wirsing. Ziele. Vererbung

Vererbung. Martin Wirsing. Ziele. Vererbung 2 Ziele Martin Wirsing en Begriff der einfachen verstehen und Redefinition von Oberklassenmethoden verstehen spolymorphie verstehen ie Klasse Object kennenlernen in Zusammenarbeit mit Michael Barth, Philipp

Mehr

Programmierung WS12/13 Lösung - Übung 1 M. Brockschmidt, F. Emmes, C. Otto, T. Ströder

Programmierung WS12/13 Lösung - Übung 1 M. Brockschmidt, F. Emmes, C. Otto, T. Ströder Prof. aa Dr. J. Giesl Programmierung WS12/13 M. Brockschmidt, F. Emmes, C. Otto, T. Ströder Tutoraufgabe 1 (Syntax und Semantik): 1. Was ist Syntax? Was ist Semantik? Erläutern Sie den Unterschied. 2.

Mehr

Informatik B von Adrian Neumann

Informatik B von Adrian Neumann Musterlösung zum 7. Aufgabenblatt vom Montag, den 25. Mai 2009 zur Vorlesung Informatik B von Adrian Neumann 1. Java I Schreiben Sie ein Java Programm, das alle positiven ganzen Zahlen 0 < a < b < 1000

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

Prof. Dr. Uwe Schmidt. 21. August 2007. Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252)

Prof. Dr. Uwe Schmidt. 21. August 2007. Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252) Prof. Dr. Uwe Schmidt 21. August 2007 Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252) Zeit: 75 Minuten erlaubte Hilfsmittel: keine Bitte tragen Sie Ihre Antworten und fertigen

Mehr

Grundlagen der Informatik I (Studiengang Medieninformatik)

Grundlagen der Informatik I (Studiengang Medieninformatik) Grundlagen der Informatik I (Studiengang Medieninformatik) Thema: 3. Datentypen, Datenstrukturen und imperative Programme Prof. Dr. S. Kühn Fachbereich Informatik/Mathematik Email: skuehn@informatik.htw-dresden.de

Mehr

Programmentwicklung I für Hörer anderer Fachrichtungen -Wintersemester 2003/04- Abschlussklausur 20.02.2004

Programmentwicklung I für Hörer anderer Fachrichtungen -Wintersemester 2003/04- Abschlussklausur 20.02.2004 Programmentwicklung I für Hörer anderer Fachrichtungen -Wintersemester 2003/04- Abschlussklausur 20.02.2004 Name : Vorname : Matrikelnummer : Hauptfach : Nebenfach/Fachrichtung Hinweise : 1. Überprüfen

Mehr

Distributed Computing Group

Distributed Computing Group JAVA TUTORIAL Distributed Computing Group Vernetzte Systeme - SS 06 Übersicht Warum Java? Interoperabilität grosse und gut dokumentierte Library weit verbreitet Syntax sehr nahe an C Erfahrung: Java wird

Mehr

Konstruktoren, Packages und Scopes

Konstruktoren, Packages und Scopes Universität Bayreuth Lehrstuhl für Angewandte Informatik IV Datenbanken und Informationssysteme Prof. Dr.-Ing. Jablonski Konstruktoren, Packages und Scopes Dipl. Inf. Manuel Götz Lehrstuhl für Angewandte

Mehr

Einführung in die Java- Programmierung

Einführung in die Java- Programmierung Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Rückblick Datentypen (int, long, double, boolean, String) Variablen und Variablendeklarationen

Mehr

1. Der Einstieg in Java. Was heißt Programmieren?

1. Der Einstieg in Java. Was heißt Programmieren? 1. Der Einstieg in Java Lernziele: Am Ende dieses Kapitels sollen Sie wissen, aus welchen Bestandteilen ein Java-Programm besteht, Java-Programme übersetzen und ausführen können, Möglichkeiten der Kommentierung

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

3. Grundlegende Sprachkonstruktionen imperativer Programme

3. Grundlegende Sprachkonstruktionen imperativer Programme 3. Grundlegende Sprachkonstruktionen imperativer Programme Java-Beispiele: Temperature.java Keyboard.java K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16 Version: 4. Nov. 2015 2 Schwerpunkte

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Universität der Bundeswehr Fakultät für Informatik Institut 2 Priv.-Doz. Dr. Lothar Schmitz FT 2006 Zusatzaufgaben Lösungsvorschlag Objektorientierte Programmierung Lösung 22 (Java und UML-Klassendiagramm)

Mehr

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

Übersicht. Schleifen. Schleifeninvarianten. Referenztypen, Wrapperklassen und API. 9. November 2009 CoMa I WS 08/09 1/15 Übersicht Schleifen Schleifeninvarianten Referenztypen, Wrapperklassen und API CoMa I WS 08/09 1/15 CoMa I Programmierziele Linux bedienen Code umschreiben strukturierte Datentypen Anweisungen und Kontrollstrukturen

Mehr

Themen. Web Service - Clients. Kommunikation zw. Web Services

Themen. Web Service - Clients. Kommunikation zw. Web Services Themen Web Service - Clients Kommunikation zw. Web Services Bisher: Implementierung einer Java Anwendung und Bereitstellung durch Apache Axis unter Apache Tomcat Java2WSDL Erzeugen einer WSDL-Datei zur

Mehr

Gebundene Typparameter

Gebundene Typparameter Gebundene Typparameter interface StringHashable { String hashcode(); class StringHashMap { public void put (Key k, Value v) { String hash = k.hashcode();...... Objektorientierte

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 03: Wiederholung und Nutzereingaben Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Wiederholung Klassen, Objekte, Attribute und Methoden

Mehr