Informatik II Übung 04

Größe: px
Ab Seite anzeigen:

Download "Informatik II Übung 04"

Transkript

1 Informatik II Übung 04 Michael Baumann n.ethz.ch/~mbauman

2 Ablauf 1) Nachbesprechung Serie 3 2) Stacks 3) Vorbesprechung Serie 4 4) Bytecode und Assembler 2

3 Ablauf 1) Nachbesprechung Serie 3 2) Stacks 3) Vorbesprechung Serie 4 4) Bytecode und Assembler 3

4 Serie 3 4

5 Serie 3 Aufgabe 1 public static String decrypt(string s) { StringBuffer buf = new StringBuffer(""); for(int i = 0; i < s.length(); ++i) { buf.append((char)(s.charat(i) - 3)); return buf.tostring(); Encrypt: 4092 ms, decrypt: 42 ms (mein PC) Bei encrypt wird bei jeder Änderung der ganze String kopiert Strings sind dafür schneller bei lesenden Zugriffen z. B. suchen 5

6 Serie 3 Aufgabe 2 a): X2 : Var: ~. (~X1 ): ~(X1 OR ~X 2 ): (X2 ) OR (~X 1 OR X 2 ): Clause: ( Var ) b) OR (X1 OR X 2 ) AND (~X 1 ): Expr: (X1 ) AND (~X 1 OR ~X 2 ) AND (X 2 ): Clause AND Clause 6

7 Serie 3 Aufgabe 2 a): X2 : nicht erzeugbar Var: ~. (~X1 ): ~(X1 OR ~X 2 ): (X2 ) OR (~X 1 OR X 2 ): Clause: ( Var ) b) OR (X1 OR X 2 ) AND (~X 1 ): Expr: (X1 ) AND (~X 1 OR ~X 2 ) AND (X 2 ): Clause AND Clause 7

8 Serie 3 Aufgabe 2 a): X2 : nicht erzeugbar Var: ~. (~X1 ): erzeugbar ~(X1 OR ~X 2 ): (X2 ) OR (~X 1 OR X 2 ): Clause: ( Var ) b) OR (X1 OR X 2 ) AND (~X 1 ): Expr: (X1 ) AND (~X 1 OR ~X 2 ) AND (X 2 ): Clause AND Clause 8

9 Serie 3 Aufgabe 2 a): X2 : nicht erzeugbar Var: ~. (~X1 ): erzeugbar ~(X1 OR ~X 2 ): nicht erzeugbar (X2 ) OR (~X 1 OR X 2 ): Clause: ( Var ) b) OR (X1 OR X 2 ) AND (~X 1 ): Expr: (X1 ) AND (~X 1 OR ~X 2 ) AND (X 2 ): Clause AND Clause 9

10 Serie 3 Aufgabe 2 a): X2 : nicht erzeugbar Var: ~. (~X1 ): erzeugbar ~(X1 OR ~X 2 ): nicht erzeugbar (X2 ) OR (~X 1 OR X 2 ): nicht erzeugbar b) (X1 OR X 2 ) AND (~X 1 ): (X1 ) AND (~X 1 OR ~X 2 ) AND (X 2 ): Expr: Clause: Clause AND ( Var OR Clause ) 10

11 Serie 3 Aufgabe 2 a): X2 : nicht erzeugbar Var: ~. (~X1 ): erzeugbar ~(X1 OR ~X 2 ): nicht erzeugbar (X2 ) OR (~X 1 OR X 2 ): nicht erzeugbar b) (X1 OR X 2 ) AND (~X 1 ): erzeugbar (X1 ) AND (~X 1 OR ~X 2 ) AND (X 2 ): erzeugbar Expr: Clause: Clause AND ( Var OR Clause ) 11

12 Serie 3 Aufgabe 3 Warum nicht in Knoten? 12

13 Serie 3 Aufgabe 3 b) public class KD { // string parsing public static void parse(string kd) throws ParseException; // parse helpers (entity parsing) private static int parsetree(string kd, int position) throws ParseException; private static int parsesubtree(string kd, int position) throws ParseException; private static int parsenode(string kd, int position) throws ParseException; // atomic helpers (single character parsing) private static boolean checkchar(char expected, String kd, int position); 13

14 Serie 3 Aufgabe 3 b) public static void parse(string kd) throws ParseException { int offset = parsetree(kd, 0); if(offset!= kd.length()) { throw new ParseException("and the tree dies suddenly", offset); 14

15 Serie 3 Aufgabe 3 b) public static boolean checkchar(char c, String kd, int position) { if (position < kd.length()) return kd.charat(position) == c; return false; 15

16 Serie 3 Aufgabe 3 b) private static int parsetree(string kd, int position) throws ParseException { if(checkchar('-', kd, position)) { return position + 1; Baum Baum Node ( Unterbaum ) 16

17 Serie 3 Aufgabe 3 b) private static int parsetree(string kd, int position) throws ParseException { if(checkchar('-', kd, position)) { return position + 1; position = parsenode(kd, position); Baum return position; Baum Node ( Unterbaum ) 17

18 Serie 3 Aufgabe 3 b) private static int parsetree(string kd, int position) throws ParseException { if(checkchar('-', kd, position)) { return position + 1; position = parsenode(kd, position); if(checkchar('(', kd, position)) { if(!checkchar(')', kd, position)) throw new ParseException("expected ')'", position); position++; return position; Baum Baum Node ( Unterbaum ) 18

19 Serie 3 Aufgabe 3 b) private static int parsetree(string kd, int position) throws ParseException { if(checkchar('-', kd, position)) { return position + 1; position = parsenode(kd, position); if(checkchar('(', kd, position)) { position++; position = parsesubtree(kd, position); if(!checkchar(')', kd, position)) throw new ParseException("expected ')'", position); position++; return position; Baum Baum Node ( Unterbaum ) 19

20 Serie 3 Aufgabe 3 b) private static int parsesubtree(string kd, int position) throws ParseException { position = parsetree(kd, position); return position; parsechildren() Nachfolger Baum, 20

21 Serie 3 Aufgabe 3 b) private static int parsesubtree(string kd, int position) throws ParseException { position = parsetree(kd, position); while (checkchar(',', kd, position)) { position += 1; position = parsetree(kd, position); return position; parsechildren() Nachfolger Baum, 21

22 Serie 3 Aufgabe 3 b) private static int parsenode(string kd, int position) throws ParseException { if (position >= kd.length()) throw new ParseException("Expected a node", position); char c = kd.charat(position); if (Character.isUpperCase(c)) return position + 1; else throw new ParseException(String.format( "'%c' is not a valid node name", c), position); 22

23 Demo: Debugging mit Eclipse 23

24 Stacks 24

25 Stacks: Theorie Stack = Stapel Nur auf oberstes Element Zugriff LIFO Beispiele Funktionsstack (siehe Aufgabe 3 und TI1 im 3. Semester) Klammerung 25

26 Beispiel: Klammercheck public static boolean check(string s) { Stack<Character> stack = new Stack<Character>(); for(int i = 0; i < s.length(); i++) { switch(s.charat(i)) { case '(': stack.push('('); break; case ')': if(stack.isempty()) { return false; if(stack.pop()!= '(') { return false; break; return stack.isempty(); 26

27 Serie 3 27

28 Aufgabe 1 Konstruktor Array mit gegebener Kapazität initialisieren tostring() Format: [i0, i1,, i(n-1)] StringBuffer: buf.append( earp ); 28

29 Aufgabe 1 grow() Kapazität verdoppeln, kopieren Arrays.copyOf(...) push(), pop(), empty() Falls nötig grow aufrufen peek() Oberstes Element zurückgeben aber nicht entfernen size() Aktuelle Grösse capacity() Wie viele Elemente passen hinein? 29

30 Aufgabe 2 Ackermann-Funktion Wächst extrem schnell: A(3, 3) = 61 Wilhelm Ackermann ( , Deutchland) A(4, 2) Sinn: Die theoretischen Informatiker findens cool :) 30

31 Aufgabe 2 b) Pseudocode Nicht sprachspezifisch Alles erlaubt, so lange man es versteht selbsterklärend 31

32 Aufgabe 2 b) Pseudocode Bitte kein Brainfuck ( > [< >-]<++.>++++++[< >-]< >++++[<---- >-]<-.>++[<+++ >-]< >++[<--- >-]<--.>+++ [<++++ >-]<+++.>++++[<---- >-]<--.>++[<+++ >-]<++.> [< >-]<---.> [< >-]<+.>+++[<+++ >-]<+. +.> [< >-]<---.> [< >-]< >+++[<--- >-]<.> [< >-]<-----.> [< >-]< >++[<--- >-]<--.--.>+++[<+++ >-]<.>+++[<---- >-]<-.>+++[<++++ >-]< >+++[<---- >-]<---.> [< >-]<-----.> [< >-]<+++++.>+++[<++++ >-]< >+++[<---- >-]<---.>+++[<++++ >-]<+.>+++[<--- >-]<.>+++[<+++ >-]<+.>++++[<---- >-]< > [< >-]<-----.>++++++[< >-]< >++ +++[< >-]< >++[<--- >-]<--.>+++[<+++ >-]<++.>++++[<---- >-]<-.>+++[<++++ >-]< >+++[<++++ >-]< >++++[<---- >-]< > [< >-]<-.>+++[<---- >-]<.> [< >-]<+++++.>+++[<+++ >-]< >++[<--- >-]< >+++[<---- >-]<.-.>+++[<+++>-]<.> [< >-]< > [< >-]< >++[<--->-]<-.--.> [< >-]<-----.> [< >-]<++.>++++[<++++ >-]< >+++[<++++ >-]<+++.>+++ +[<---- >-]< >++++[<++++ >-]<+.>++++[<----- >-]<-.>+++[<++++ >-]<+.> [< >-]<-.> [< >-]<++++.>+++++[<+++++>-]<++++.>++++[<---- >-]<.-.>+++[<++++ >-]<+.> [< >-]< >++++++[< >-]<+ ++.>++++++[< >-]<++++.>++++[<---- >-]<.>++[<+++ >-]<+..>++[<--->-]<-.>+++[<++++ >-]<+.> [< >-]<-.> [< >-]<++++.>++[<--- >-]<--.> [< >-]<-----.>++++[<++++ >-]<+.>++[<+++ >-]< >+ ++[<---- >-]<--.>++++++[< >-]<.>++++++[< >-]< > [< >-]<-----.> [< >-]<++.>++ +++[<+++++ >-]< >++++[<---->-]< > [< >-]<-----.> [< >-]< >+++ [<---- >-]<--.>+++[<+++ >-]<.>+++[<---- >-]<--.> [< >-]<----.> [< >-]<+++++.>+++[<---- >-]<.>++ +[<++++ >-]<+.>+++[<--- >-]< >+++[<---- >-]<.>+++[<+++ >-]<++.> [< >-]<----.> [< >-]<+.>++++[<+++++ >-]<.>++++[<---- >-]< > [< >-]<.>+++++[<++++++>-]<++++.>++++++[< >-]< >++++[<---- >-]<-.>++[<+++ >-]< >++[<--- >-]<--.> [< >-]<----.> [< >-]<+.>++ [<+++ >-]<++.> [< >-]< >+++[<---- >-]<.>+++++[< >-]<++++.>++++++[< >-]< >++++[<---- >-]<-.>++[<+++ >-]< >++[<--- >-]<--.> [< >-]< >+++[<--- >-]<-.> [< >-]< >+ ++[<--- >-]<--.+.>+++[<++++ >-]<+.> [< >-]<-.>+++++[< >-]< >++++++[<

33 Aufgabe 2 c) Ackermann: N 2 N Braucht zwei Argumente, gibt ein Resultat zurück Die Argumente sind immer zuoberst auf dem Stack Was, wenn nur noch eine Zahl auf dem Stack liegt? Stack stack = new Stack(); stack.push(4); stack.push(7); while(stack.size()!= 1) {... Benutzt Stack aus A1 oder (falls ihr A1 nicht geschafft habt) java.util.stack<integer> 33

34 Aufgabe 3 Vergleich C / C++ Java C wird für eine bestimmte Architektur kompiliert und kann dort direkt ausgeführt werden Java wird zu Bytecode kompiliert Dieser wird von der Java Virtual Machine interpretiert 34

35 Aufgabe 3: Beispiel: C++ int function(int a, int b) { return a + b; int main() { printf("%d\n", function(1, 2)); return 0; 35

36 Aufgabe 3: Beispiel Assember (Linux) <function>: 0: 55 push %rbp 1: e5 mov %rsp,%rbp 4: 89 7d fc mov %edi,-0x4(%rbp) 7: f8 mov %esi,-0x8(%rbp) a: 8b 45 f8 mov -0x8(%rbp),%eax d: 8b 55 fc mov -0x4(%rbp),%edx 10: 01 d0 add %edx,%eax 12: 5d pop %rbp 13: c3 retq <main>: 14: 55 push %rbp 15: e5 mov %rsp,%rbp 18: be mov $0x2,%esi 1d: bf mov $0x1,%edi 22: e callq 27 <main+0x13> 27: 89 c6 mov %eax,%esi 29: bf mov $0x0,%edi 2e: b mov $0x0,%eax 33: e callq 38 <main+0x24> 38: b mov $0x0,%eax 3d: 5d pop %rbp 3e: c3 retq 36

37 Aufgabe 3: Beispiel Assember (AVR) <function>: 0: cf 93 push r28 2: df 93 push r29 4: 00 d0 rcall.+0 ; 0x6 <function+0x6> 6: cd b7 in r28, 0x3d ; 61 8: de b7 in r29, 0x3e ; 62 a: std Y+1, r24 ; 0x01 c: 6a 83 std Y+2, r22 ; 0x02 e: ldd r25, Y+1 ; 0x01 10: 8a 81 ldd r24, Y+2 ; 0x02 12: 89 0f add r24, r25 14: 0f 90 pop r0 16: 0f 90 pop r0 18: df 91 pop r29 1a: cf 91 pop r28 1c: ret e <main>: 1e: cf 93 push r28 20: df 93 push r29 22: cd b7 in r28, 0x3d ; 61 24: de b7 in r29, 0x3e ; : 62 e0 ldi r22, 0x02 ; 2 28: 81 e0 ldi r24, 0x01 ; 1 2a: 00 d0 rcall.+0 ; 0x2c <main+0xe> 2c: 88 2f mov r24, r24 2e: 90 e0 ldi r25, 0x00 ; 0 30: 29 2f mov r18, r25 32: 2f 93 push r18 34: 8f 93 push r24 36: 80 e0 ldi r24, 0x00 ; 0 38: 90 e0 ldi r25, 0x00 ; 0 3a: 89 2f mov r24, r25 3c: 8f 93 push r24 3e: 80 e0 ldi r24, 0x00 ; 0 40: 90 e0 ldi r25, 0x00 ; 0 42: 8f 93 push r24 44: 00 d0 rcall.+0 ; 0x46 <main+0x28> 46: 0f 90 pop r0 48: 0f 90 pop r0 4a: 0f 90 pop r0 4c: 0f 90 pop r0 4e: 80 e0 ldi r24, 0x00 ; 0 50: 90 e0 ldi r25, 0x00 ; 0 52: df 91 pop r29 54: cf 91 pop r28 56: ret 37

38 Aufgabe 3: Vergleich Java public class Bytecode { public static int function(int a, int b) { return a + b; public static void main(string[] args) { System.out.println(function(1, 2)); 38

39 Aufgabe 3: Java Bytecode public class Bytecode { public Bytecode(); Code: 0: aload_0 1: invokespecial #8 // Method java/lang/object."<init>":()v 4: return public static int function(int, int); Code: 0: iload_0 1: iload_1 2: iadd 3: ireturn public static void main(java.lang.string[]); Code: 0: getstatic #21 // Field java/lang/system.out:ljava/io/printstream; 3: iconst_1 4: iconst_2 5: invokestatic #27 // Method function:(ii)i 8: invokevirtual #29 // Method java/io/printstream.println:(i)v 11: return 39

40 Aufgabe 3 Versucht, den Bytecode zu verstehen Wie funktioniert Rekursion intern auf dem Prozessor? Ausführung: javac JavaTip.java //compiler java JavaTip //run javap c private JavaTip //disassembler Oder einfach Class File ins Eclipse reinziehen 40

41 Happy Hasensuchen! 41

Praktikum Compilerbau Sitzung 9 Java Bytecode

Praktikum Compilerbau Sitzung 9 Java Bytecode Praktikum Compilerbau Sitzung 9 Java Bytecode Prof. Dr.-Ing. Gregor Snelting Matthias Braun und Sebastian Buchwald IPD Snelting, Lehrstuhl für Programmierparadigmen KIT Universität des Landes Baden-Württemberg

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

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

Java-Schulung Grundlagen

Java-Schulung Grundlagen Java-Schulung Grundlagen Java 2 Standard Edition JDK 5 / 6 31.05.2008 Marcel Wieczorek 1 Themenübersicht Basiswissen Objektorientierung Datentypen Fehlerbehandlung Sonstiges Einführung Klassen, Strings

Mehr

Bäume. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 10: Collections 4. Inhalt. Bäume. Einführung. Bäume.

Bäume. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 10: Collections 4. Inhalt. Bäume. Einführung. Bäume. Universität Osnabrück 1 Bäume 3 - Objektorientierte Programmierung in Java Vorlesung 10: Collections 4 Einführung Bäume sind verallgemeinerte Listenstrukturen Lineare Liste Jedes Element hat höchstens

Mehr

Primitive Datentypen

Primitive Datentypen Primitive Datentypen 2 Arten von Datentypen: primitive Datentypen (heute) Objekte (später) Java ist streng typisiert, d.h. für jede Variable muß angegeben werden was für eine Art von Wert sie aufnimmt.

Mehr

Einführung Datentypen Verzweigung Schleifen. Java Crashkurs. Kim-Manuel Klein May 4, 2015

Einführung Datentypen Verzweigung Schleifen. Java Crashkurs. Kim-Manuel Klein May 4, 2015 Java Crashkurs Kim-Manuel Klein ([email protected]) May 4, 2015 Quellen und Editoren Internet Tutorial: z.b. http://www.java-tutorial.org Editoren Normaler Texteditor (Gedit, Scite oder ähnliche)

Mehr

Programmierung 2. Übersetzer: Code-Erzeugung. Sebastian Hack. Klaas Boesche. Sommersemester 2012. [email protected]. [email protected].

Programmierung 2. Übersetzer: Code-Erzeugung. Sebastian Hack. Klaas Boesche. Sommersemester 2012. hack@cs.uni-saarland.de. boesche@cs.uni-saarland. 1 Programmierung 2 Übersetzer: Code-Erzeugung Sebastian Hack [email protected] Klaas Boesche [email protected] Sommersemester 2012 Bytecodes Der Java Übersetzer erzeugt keine Maschinensprache

Mehr

Grundlagen zur nebenläufigen Programmierung in Java

Grundlagen zur nebenläufigen Programmierung in Java Grundlagen zur nebenläufigen Programmierung in Java Karlsruher Entwicklertag 2013 5. Juni 2013 Referent: Christian Kumpe Inhalt des Vortrags Was zeigt dieser Vortrag? Ein einfaches Beispiel mit allerlei

Mehr

Java: Eine Übersicht. Dennis Giffhorn. Lehrstuhl für Programmierparadigmen Universität Karlsruhe

Java: Eine Übersicht. Dennis Giffhorn. Lehrstuhl für Programmierparadigmen Universität Karlsruhe Java: Eine Übersicht Dennis Giffhorn Lehrstuhl für Programmierparadigmen Universität Karlsruhe Allgemeines Objektorientiert Syntaxfamilie von C/C++ Statisch getypt Entwickelt von Sun Microsystems class

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

Programmentwicklung ohne BlueJ

Programmentwicklung ohne BlueJ Objektorientierte Programmierung in - Eine praxisnahe Einführung mit Bluej Programmentwicklung BlueJ 1.0 Ein BlueJ-Projekt Ein BlueJ-Projekt ist der Inhalt eines Verzeichnisses. das Projektname heißt wie

Mehr

188.154 Einführung in die Programmierung für Wirtschaftsinformatik

188.154 Einführung in die Programmierung für Wirtschaftsinformatik Beispiel 1 Vererbung (Liste) Gegeben sind die beiden Klassen ListNode und PersonNode. 188.154 Einführung in die Programmierung für Wirtschaftsinformatik Wiederholung, Prüfungsvorbereitung Monika Lanzenberger

Mehr

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein ([email protected].

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein (kmk@informatik.uni-kiel. Java Crashkurs Kim-Manuel Klein ([email protected]) May 7, 2015 Quellen und Editoren Internet Tutorial: z.b. http://www.java-tutorial.org Editoren Normaler Texteditor (Gedit, Scite oder ähnliche)

Mehr

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

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

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

HTTP://WWW.WIKIPAINTINGS.ORG/EN/FRIEDENSREICH-HUNDERTWASSER/YOU-ARE-A-GUEST-OF-NATURE-BEHAVE Abstrakte Datentypen.

HTTP://WWW.WIKIPAINTINGS.ORG/EN/FRIEDENSREICH-HUNDERTWASSER/YOU-ARE-A-GUEST-OF-NATURE-BEHAVE Abstrakte Datentypen. HTTP://WWW.WIKIPAINTINGS.ORG/EN/FRIEDENSREICH-HUNDERTWASSER/YOU-ARE-A-GUEST-OF-NATURE-BEHAVE Abstrakte Datentypen OOPM, Ralf Lämmel (C) Ralf Lämmel, OOPM, Universität Koblenz-Landau 562 Motivation abstrakter

Mehr

Informatik II. /* c) Baumstruktur in einen String schreiben und zurueckgeben */ public String tostring() {

Informatik II. /* c) Baumstruktur in einen String schreiben und zurueckgeben */ public String tostring() { Universität Augsburg, Institut für Informatik Sommersemester 2006 Prof. Dr. Werner Kießling 08. Juni. 2006 M. Endres, A. Huhn, T. Preisinger Lösungsblatt 5 Aufgabe 1: Cloneable Tree.java Informatik II

Mehr

Gliederung Grundlagen Schlüsselworte try-catch Fehlerobjekte Fehlerklassen Schlüsselwort finally Schlüsselwort throws selbst erstellte Exceptions

Gliederung Grundlagen Schlüsselworte try-catch Fehlerobjekte Fehlerklassen Schlüsselwort finally Schlüsselwort throws selbst erstellte Exceptions try-catch Schlüsselworte try-catch e Schlüsselwort Schlüsselwort selbst erstellte ermöglichen die Behandlung von Fehlern, die zur Laufzeit entstehen. try-catch in C: Fehler führt immer zum Abbruch des

Mehr

Große Übung Praktische Informatik 1

Große Übung Praktische Informatik 1 Große Übung Praktische Informatik 1 2005-12-08 [email protected] http://www.informatik.uni-mannheim.de/pi4/people/fuessler 1: Announcements / Orga Weihnachtsklausur zählt als Übungsblatt,

Mehr

Java für C++ Programmierer

Java für C++ Programmierer Java für C++ Programmierer Alexander Bernauer [email protected] Einführung in die Übungen zu Informatik II (D ITET) FS2010 ETH Zürich Ziel Allgemeiner Überblick Kennenlernen der Suchbegriffe Warum Java?

Mehr

Einführung in die Programmierung

Einführung in die Programmierung Technische Universität München WS 2003/2004 Institut für Informatik Prof. Dr. Christoph Zenger Testklausur Einführung in die Programmierung Probeklausur Java (Lösungsvorschlag) 1 Die Klasse ArrayList In

Mehr

Einführung in Javadoc

Einführung in Javadoc Einführung in Javadoc Johannes Rinn http://java.sun.com/j2se/javadoc Was ist Javadoc? Javadoc ist ein Werkzeug, dass eine standardisierte Dokumentation für die Programmiersprache Java unterstützt. Vorteil:

Mehr

13 Java 4 - Entwurfsmuster am Beispiel des Rucksackproblems

13 Java 4 - Entwurfsmuster am Beispiel des Rucksackproblems 13 Java 4 - Entwurfsmuster am Beispiel des Rucksackproblems 13.1 Modellierung des Rucksackproblems 13.2 Lösung mit Greedy-Algorithmus 13.3 Lösung mit Backtracking 13.4 Lösung mit Dynamischer Programmierung

Mehr

Informatik II. PVK Part1 Severin Wischmann [email protected] n.ethz.ch/~wiseveri

Informatik II. PVK Part1 Severin Wischmann wiseveri@student.ethz.ch n.ethz.ch/~wiseveri Informatik II PVK Part1 Severin Wischmann [email protected] n.ethz.ch/~wiseveri KAUM JAVA Kaum Java Viel Zeit wird für Java-spezifisches Wissen benützt Wenig wichtig für Prüfung Letztjähriger Assistent

Mehr

Vorkurs Informatik WiSe 15/16

Vorkurs Informatik WiSe 15/16 Java 1 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe, 12.10.2015 Technische Universität Braunschweig, IPS Überblick Organisatorisches Arbeitsablauf Hello! 12.10.2015 Dr. Werner Struckmann / Stephan

Mehr

J.5 Die Java Virtual Machine

J.5 Die Java Virtual Machine Java Virtual Machine Die Java Virtual Machine 22 Prof. Dr. Rainer Manthey Informatik II Java-Compiler und Java Virtual Machine Quellcode-Datei class C... javac D.java Java-Compiler - Dateien class class

Mehr

Java Reflection. Meta-Programmierung mit der java.lang.reflection API. Prof. Dr. Nikolaus Wulff

Java Reflection. Meta-Programmierung mit der java.lang.reflection API. Prof. Dr. Nikolaus Wulff Java Reflection Meta-Programmierung mit der java.lang.reflection API. Prof. Dr. Nikolaus Wulff Java Reflection Die Java Reflection API liefert per Introspection Informationen über Klassen => Meta-Daten.

Mehr

Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005

Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005 Einführung in Java PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005 Gliederung 1. Was ist Java / Geschichte von Java 2. Prinzip der Plattformunabhängigkeit 3. Wie kommt man vom Quellcode zum Programm

Mehr

Datenbankanwendungsprogrammierung Crashkurs Java

Datenbankanwendungsprogrammierung Crashkurs Java Datenbankanwendungsprogrammierung Crashkurs Java Denny Priebe Datenbankanwendungsprogrammierung p. Unterschiede zu C, C++ typedefs, Präprozessor Strukturen, Unions globale Funktionen Mehrfachvererbung

Mehr

Tutorium Java Ein Überblick. Helge Janicke

Tutorium Java Ein Überblick. Helge Janicke Tutorium Java Ein Überblick Helge Janicke 26. Oktober 2000 1 VORRAUSSETZUNGEN ZUM PROGRAMMIEREN MIT JAVA. 1 1 Vorraussetzungen zum Programmieren mit Java. Was braucht man, wenn man mit Java programmieren

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

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

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

Aufgabenblatt Nr. 5 Generizität und TicTacToe

Aufgabenblatt Nr. 5 Generizität und TicTacToe Aufgabenblatt Nr. 5 Generizität und TicTacToe 1 Generische Sortier-Methode 1.1 Aufgabe: Entwickeln einer generischen Sortiermethode für Objekte mit der Schnittstelle Comparable Ihnen ist aus der Vorlesung

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

Kontrollstrukturen, Pseudocode und Modulo-Rechnung

Kontrollstrukturen, Pseudocode und Modulo-Rechnung Kontrollstrukturen, Pseudocode und Modulo-Rechnung CoMa-Übung III TU Berlin 29.10.2012 CoMa-Übung III (TU Berlin) Kontrollstrukturen, Pseudocode und Modulo-Rechnung 29.10.2012 1 / 1 Themen der Übung 1

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

Erster Kontakt mit Java und Pseudocode

Erster Kontakt mit Java und Pseudocode Erster Kontakt mit Java und Pseudocode CoMa-Übung II TU Berlin 23.10.2013 CoMa-Übung II (TU Berlin) Erster Kontakt mit Java und Pseudocode 23.10.2013 1 / 27 Themen der Übung 1 Java auf meinem Rechner 2

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

Musterlösungen zur Klausur Informatik 3

Musterlösungen zur Klausur Informatik 3 Musterlösungen zur Klausur Informatik 3 Justus-Liebig-Universität Gießen Wintersemester 2003/2004 Aufgabe 1 (6 Punkte) Man kreuze bei den folgenden Deklarationen und Definitionen jeweils an, ob sie aus

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

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

Technische Informatik 1 Übung 2 Assembler (Rechenübung) Georgia Giannopoulou ([email protected]) 22./23. Oktober 2015

Technische Informatik 1 Übung 2 Assembler (Rechenübung) Georgia Giannopoulou (ggeorgia@tik.ee.ethz.ch) 22./23. Oktober 2015 Technische Informatik 1 Übung 2 Assembler (Rechenübung) Georgia Giannopoulou ([email protected]) 22./23. Oktober 2015 Ziele der Übung Aufgabe 1 Aufbau und Aufruf von Funktionen in Assembler Codeanalyse

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

Verteilte Systeme CS5001

Verteilte Systeme CS5001 Verteilte Systeme CS5001 Th. Letschert TH Mittelhessen Gießen University of Applied Sciences Client-Server-Anwendungen: Vom passiven (shared state) Monitor zum aktiven Monitor Monitor (Hoare, Brinch-Hansen,

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

Java Virtual Machine (JVM) Übersicht

Java Virtual Machine (JVM) Übersicht Java Virtual Machine (JVM) Alan Dingwall [email protected] Übersicht Was ist die Java Virtual Machine DasClass File Format Aufbau der JVM Kompilation.java.class Fazit Quellennachweise Was ist die JVM Abstrakter

Mehr

Vorlesung Informatik II

Vorlesung Informatik II Vorlesung Informatik II Universität Augsburg Wintersemester 2011/2012 Prof. Dr. Bernhard Bauer Folien von: Prof. Dr. Robert Lorenz Lehrprofessur für Informatik 02. JAVA: Erstes Programm 1 Das erste Java-Programm

Mehr

Speicherstrukturen. Aufgabe 1-1: Fragen zu FAT (File Allocation Table) Aufgabe 1-2: Datensätze variabler Länge. Kind.java:

Speicherstrukturen. Aufgabe 1-1: Fragen zu FAT (File Allocation Table) Aufgabe 1-2: Datensätze variabler Länge. Kind.java: Institut für Datenbanken und Informationssysteme Prof. Dr. M. Reichert, M. Predeschly, J. Kolb Lösung für Übungsblatt 1 Aufgabe 1-1: Fragen zu FAT (File Allocation Table) 1. Im Bootsektor der Festplatte

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 [email protected] 5. März 2013 Wiederholung Wozu? Schreiben Benutzen Rekursion?! 1 Wiederholung 2 Wozu? 3 Schreiben

Mehr

Versuchsziele Kenntnisse in der Anwendung von: Sortieren mit Klassen Benutzung von generischen Klassen o Definition o Sortierung.

Versuchsziele Kenntnisse in der Anwendung von: Sortieren mit Klassen Benutzung von generischen Klassen o Definition o Sortierung. Hochschule Harz Programmierung1 Tutorial 11: FB Automatisierung und Informatik Dipl.-Inf. Dipl.-Ing. (FH) M. Wilhelm Programmierung 1 für MI / WI Thema: Sortieren und generische Klassen Versuchsziele Kenntnisse

Mehr

Programmdokumentation

Programmdokumentation Programmdokumentation Der 1. Abgabe am 29.10.1998 über das 1. und 2. Programm INHALTSVERZEICHNIS: 1 ERSTES PROGRAMM: RECHNUNGSERSTELLUNG... 2 1.1 MODULARISIERUNG UND DATENSTRUKTUR... 2 1.1.1 Grundidee:

Mehr

Software-Engineering Software-Management

Software-Engineering Software-Management Software-Engineering Software-Management 12.3 Unit-Tests mit JUnit - Wissen, was der Sourcecode macht! Lösung Prof. Dr. Rolf Dornberger Software-Engineering: 12.3 Unit-Tests mit JUnit 30.04.2006 1 12.3

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

Übung 9. Quellcode Strukturieren Rekursive Datenstrukturen Uebung 9

Übung 9. Quellcode Strukturieren Rekursive Datenstrukturen Uebung 9 Informatik I 2 Übung 9 Quellcode Strukturieren Rekursive Datenstrukturen Uebung 9 Quellcode Strukturieren Wenn alle Funktionen in einer Datei zusammengefasst sind wird es schnell unübersichtlich Mehrere

Mehr

Übung zur Vorlesung Einführung in Software Engineering

Übung zur Vorlesung Einführung in Software Engineering Übung zur Vorlesung Einführung in Software Engineering Wintersemester 2012/13, Richard Bubel und Martin Hentschel Übungsblatt 5: Testen Abgabeformat: Reichen Sie Ihre Lösung per SVN als eine PDF-Datei

Mehr

(06 - Anwendungen von Stapeln und Schlangen)

(06 - Anwendungen von Stapeln und Schlangen) Vorlesung Algorithmen und Datenstrukturen (06 - Anwendungen von Stapeln und Schlangen) Prof. Dr. Susanne Albers Lineare Listen (1) Lineare Anordnung von Elementen eines Grundtyps (elementarer Datentyp

Mehr

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck Javadoc Programmiermethodik Eva Zangerle Universität Innsbruck Überblick Einführung Java Ein erster Überblick Objektorientierung Vererbung und Polymorphismus Ausnahmebehandlung Pakete und Javadoc Spezielle

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java Fehlerbehandlung und Ein- und Ausgabe Titel der Präsentation 2 Fehler = Exceptions? Die Exception- bzw. Ausnahmebehandlung in Java ist eine spezielle Form der Fehlerbehandlung Typischerweise

Mehr

Übersicht. Informatik 2 Teil 3 Anwendungsbeispiel für objektorientierte Programmierung

Übersicht. Informatik 2 Teil 3 Anwendungsbeispiel für objektorientierte Programmierung Übersicht 3.1 Modell Konto 3.2 Modell Konto - Erläuterungen 3.3 Benutzer Ein- und Ausgabe mit Dialogfenster I 3.4 Benutzer Ein- und Ausgabe mit Dialogfenster II 3.5 Klassen- und Objekteigenschaften des

Mehr

Grundlagen der Programmierung Prof. H. Mössenböck. 10. Klassen

Grundlagen der Programmierung Prof. H. Mössenböck. 10. Klassen Grundlagen der Programmierung Prof. H. Mössenböck 10. Klassen Motivation Wie würde man ein Datum speichern (z.b. 13. November 2004)? 3 Variablen int da; String month; int ear; Unbequem, wenn man mehrere

Mehr

Binärbäume. Prof. Dr. E. Ehses, 2014 1

Binärbäume. Prof. Dr. E. Ehses, 2014 1 Binärbäume Grundbegriffe der Graphentheorie Bäume und Ihre Anwendungen Unterschiedliche Darstellungen von Bäumen und Binärbäumen Binärbäume in Java Rekursive Traversierung von Binärbäumen Ebenenweise Traversierung

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

im Rahmen des Seminars - Programmiersprachen Markus Nestvogel

im Rahmen des Seminars - Programmiersprachen Markus Nestvogel C# im Rahmen des Seminars - Programmiersprachen Markus Nestvogel 2 Gliederung 1. Einführung 2. Microsoft.NET 3. C# 3 1 Einführung objektorientierte Programmiersprache für Microsoft.NET entwickelt Konkurrenz

Mehr

Softwaretechnologie - Wintersemester 2012/2013 - Dr. Günter Kniesel

Softwaretechnologie - Wintersemester 2012/2013 - Dr. Günter Kniesel Übungen zur Vorlesung Softwaretechnologie - Wintersemester 2012/2013 - Dr. Günter Kniesel Übungsblatt 10 - Lösungshilfe Aufgabe 1. CRC-Karten (7 Punkte) Es geht um die Modellierung der folgenden Bibliotheks-Anwendung:

Mehr

Programmierung. Programme, Compiler, virtuelle Maschinen, Java

Programmierung. Programme, Compiler, virtuelle Maschinen, Java Programmierung Programme, Compiler, virtuelle Maschinen, Java Programme Ein Programm ist eine Folge von Anweisungen, die einem Computer sagen, was er tun soll tuwas.c for(int i=0; i=0; i

Mehr

Programmierung in C. Grundlagen. Stefan Kallerhoff

Programmierung in C. Grundlagen. Stefan Kallerhoff Programmierung in C Grundlagen Stefan Kallerhoff Vorstellungsrunde Name Hobby/Beruf Schon mal was programmiert? Erwartungen an den Kurs Lieblingstier Für zu Hause C-Buch online: http://openbook.rheinwerk-verlag.de/c_von_a_bis_z/

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

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

Eclipse 3.0 (Windows)

Eclipse 3.0 (Windows) Eclipse Seite 1 Eclipse 3.0 (Windows) 1. Eclipse installieren Eclipse kann man von der Webseite http://www.eclipse.org/downloads/index.php herunterladen. Eclipse ist für Windows, Mac und Linux erhältlich.

Mehr

IT- Handbuch für Fachinformatiker, 7. Auflage: Text- Lösungen Sascha Kersken

IT- Handbuch für Fachinformatiker, 7. Auflage: Text- Lösungen Sascha Kersken IT- Handbuch für Fachinformatiker, 7. Auflage: Text- Lösungen Sascha Kersken Im Folgenden finden Sie jeweils die korrekte Antwort zu den im Buch abgedruckten Prüfungsfragen, soweit die Antworten in Textform

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

Übungen Informatik I. JAVA - Einführung. elga Gabler, Holger Vogelsang, Christian Pape. Übungen Informatik 1 Folie 1

Übungen Informatik I. JAVA - Einführung. elga Gabler, Holger Vogelsang, Christian Pape. Übungen Informatik 1 Folie 1 Übungen Informatik I JAVA - Einführung Übungen Informatik 1 Folie 1 Warum Java? Java ist derzeit die Programmiersprache für das Internet. Java ist ein Programmierkonzept der Zukunft. Objekt-orientierte

Mehr

Grundlagen von Python

Grundlagen von Python Einführung in Python Grundlagen von Python Felix Döring, Felix Wittwer November 17, 2015 Scriptcharakter Programmierparadigmen Imperatives Programmieren Das Scoping Problem Objektorientiertes Programmieren

Mehr

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

Lösungsvorschläge. zu den Aufgaben im Kapitel 4

Lösungsvorschläge. zu den Aufgaben im Kapitel 4 Lösungsvorschläge zu den Aufgaben im Kapitel 4 Aufgabe 4.1: Der KNP-Algorithmus kann verbessert werden, wenn in der Funktion nexttabelle die Zuweisung next[tabindex] = ruecksprung; auf die etwas differenziertere

Mehr

Rainer Stropek cubido. Baumschule Expression Trees in C#, CLR und DLR

Rainer Stropek cubido. Baumschule Expression Trees in C#, CLR und DLR Rainer Stropek cubido Baumschule Expression Trees in C#, CLR und DLR Inhalt Als Anwendungsentwickler kommt man selten mit Expression Trees in Berührung. Sie sind ein Implementierungsdetail von LINQ. Ihre

Mehr

Buffer Overflow 1c) Angriffsstring: TTTTTTTTTTTTTTTT (16x) Beachte: Padding GCC-Compiler Zusatz: gcc O2 verhindert hier den Angriff (Code Optimierung)

Buffer Overflow 1c) Angriffsstring: TTTTTTTTTTTTTTTT (16x) Beachte: Padding GCC-Compiler Zusatz: gcc O2 verhindert hier den Angriff (Code Optimierung) Buffer Overflow 1c) 1 char passok='f'; 2 char password[8]; 3 printf( Passwort: ); 4 gets(password); 5 if(!strcmp(password, daspassw )){passok = 'T';} 6 if(passok=='t'){printf( %s, Willkommen! );} 7 else

Mehr

1. Der Einstieg in Java

1. Der Einstieg in Java 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

Mehr

Karlsruher Institut für Technologie

Karlsruher Institut für Technologie Karlsruher Institut für Technologie Lehrstuhl für Programmierparadigmen Sprachtechnologie und Compiler WS 2010/2011 Dozent: Prof. Dr.-Ing. G. Snelting Übungsleiter: Matthias Braun Lösung zu Übungsblatt

Mehr

Beispiel: DB-Mock (1/7)

Beispiel: DB-Mock (1/7) Beispiel: DB-Mock (1/7) Aufgabe: DB, auf die vereinfachend nur lesend zugeriffen wird mocken warum: benötigte keine DB-Lizenz, garantiert gleiche Werte ohne aufwändiges reset, kein Zeitverlust durch Verbindungsaufbau

Mehr

Software Engineering I

Software Engineering I Software I Übungsblatt 1 + 2 Claas Pinkernell Technische Universität Braunschweig http://www.sse.cs.tu-bs.de/ Seite 2 Welche Werkzeuge? Programmiersprache Java Integrierte Entwicklungsumgebung Eclipse

Mehr

TCP/IP Programmierung. C# TimeServer Java6 TimeClient

TCP/IP Programmierung. C# TimeServer Java6 TimeClient TCP/IP Programmierung C# TimeServer Java6 TimeClient Stand 19.10.11 21:24:32 Seite 1 von 16 Inhaltsverzeichnis Erläuterung...3 Software...3 C#TimeServer...4 Klasse ServerThread...6 Starten und Beenden...7

Mehr

Test zu Grundlagen der Programmierung Leitung: Michael Hahsler. 21. November 2003

Test zu Grundlagen der Programmierung Leitung: Michael Hahsler. 21. November 2003 Test zu Grundlagen der Programmierung Leitung: Michael Hahsler 1. November 00 Name Martrikelnummer Unterschrift Bitte kreuzen Sie das Studium an, für das Sie diese Prüfung ablegen: O Bakkalaureat Wirtschaftsinformatik

Mehr

Vergleich verschiedener OO-Programmiersprachen

Vergleich verschiedener OO-Programmiersprachen Vergleich verschiedener OO-Programmiersprachen - Schnellumstieg in 15 Minuten - C++ Java Visual C++ C# Programmbeispiel in Visual C++, C#, Java und C++ Dr. Ehlert, Juni 2012 1 Inhaltsverzeichnis 1. Problemstellung

Mehr

Java Programmierung auf der Konsole / unter Eclipse

Java Programmierung auf der Konsole / unter Eclipse Fakultät Informatik, HFU Brückenkurs Programmieren 1 Java Programmierung auf der Konsole / unter Eclipse Allgemeine Begriffe Programmiersprache: künstliche Sprache zur Notation von Programmen Programm:

Mehr

Rekursion. Was heißt "rekursiv" Page 1. Eine Methode m() heißt rekursiv, wenn sie sich selbst aufruft. Beispiel: Berechnung der Fakultät (n!

Rekursion. Was heißt rekursiv Page 1. Eine Methode m() heißt rekursiv, wenn sie sich selbst aufruft. Beispiel: Berechnung der Fakultät (n! Rekursion Was heißt "rekursiv" Eine Methode m() heißt rekursiv, wenn sie sich selbst aufruft m() { m(); direkt rekursiv m() { n() { m(); indirekt rekursiv Beispiel: Berechnung der Fakultät (n!) n! = 1

Mehr

Aufgabe 1. »Programmieren«, WS 2006/2007. Nino Simunic M.A.

Aufgabe 1. »Programmieren«, WS 2006/2007. Nino Simunic M.A. »Programmieren«, WS 006/007 Nino Simunic ([email protected]) Übungsblatt 4 Aufgabe 1 OOP In dieser Aufgabe sollen Sie Autos als Klasse Car modellieren. Die Eigenschaften auf attributiver Ebene sind:

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

Fehler die bei der Programmerstellung passieren können teilweise vom Compiler erkannt werden

Fehler die bei der Programmerstellung passieren können teilweise vom Compiler erkannt werden Exceptions Fehler die bei der Programmerstellung passieren können teilweise vom Compiler erkannt werden int a; double b=10; a = 10 * b; System.out.println(a); Fehler die während der Programmausführung

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

Java für Anfänger Teil 1: Intro. Programmierkurs 11.-15.10.2010 Manfred Jackel

Java für Anfänger Teil 1: Intro. Programmierkurs 11.-15.10.2010 Manfred Jackel Java für Anfänger Teil 1: Intro Programmierkurs 11.-15.10.2010 Manfred Jackel 1 1. Handwerkszeug Eclipse Workbench mit Java-Compiler Java Runtime Environment Notwendige Software Java Runtime Environment

Mehr