Informatik II Übung 5. Pascal Schärli
|
|
- Oswalda Baumann
- vor 5 Jahren
- Abrufe
Transkript
1 Informatik II Übung 5 pascscha@student.ethz.ch
2 Warm - Up
3 Warm - Up public static int power(int base, int exp) { int out=1; for(int i = 0; i<exp;i++){ out*=base; return out; public static int power(int base, int exp); C F iload_3 iload_1 if_icmplt G iload_2 A iconst_1 istore_2 iconst_0 istore_3 goto F B G iload_2 iload_0 imul istore_2 iinc 3 1 [A] [B] [C] ireturn 3
4 Warm - Up public static int power(int base, int exp) { int out=1; for(int i = 0; i<exp;i++){ out*=base; return out; public static int power(int base, int exp); [A] [B] [C] public static int power(int ba... iconst_1 istore_2 iconst_0 istore_3 goto 14 iload_2 iload_0 imul istore_2 iinc 3 1 iload_3 iload_1 if_icmplt 7 iload_2 ireturn ireturn 4
5 Warm Up Basisprüfung 2017 Wie lautet die Schleifeninvariante, mit der sich die Korrektheit beweisen lässt? Tipp: Die Schleifeninvariante beinhaltet die Funktion ggt(x,y) public int ggt(int p, int q) { int a = p; int b = q; while (a!= b){ if(a > b) a = a b; else b = b a; return a; ggt(p,q) = ggt(a,b) Denn: falls a > b: ggt(a,b) = ggt(a-b,b) falls b > a: ggt(a,b) = ggt(a,b-a) Und: ggt(x,x) = x ggt(p,q)*m = a und Falls a>b m>n Falls a<b m<n ggt(p,q)*n = b (a-b)=ggt(p,q)*(m-n) (b-a)=ggt(p,q)*(n-m) 5
6 Nachbesprechung
7 Nachbesprechung U4A1 public Stack(int capacity){ size = 0; buffer = new int[capacity]; 7
8 Nachbesprechung U4A1 public String tostring() { StringBuffer buf = new StringBuffer(); buf.append("["); for (int i=0; i<size; i++) { if (i!=0) buf.append(", "); buf.append(integer.tostring(buffer[i])); buf.append("]"); return buf.tostring(); 8
9 Nachbesprechung U4A1 private void grow() { int[] new_buffer = new int[2 * buffer.length]; for (int i=0; i<size; i++) { new_buffer[i] = buffer[i]; buffer = new_buffer; 9
10 Nachbesprechung U4A1 public void push(int number){ if (size == buffer.length) { grow(); buffer[size] = number; size += 1; public int pop() throws EmptyStackException { if (size == 0) throw new EmptyStackException(); size -= 1; return buffer[size]; public int peek() throws EmptyStackException{ if (size == 0) throw new EmptyStackException(); return buffer[size-1]; 10
11 Nachbesprechung U4A1 public boolean empty() { return size == 0; public int size() { return size; public int capacity() { return buffer.length; 11
12 Nachbesprechung U4A2 A(2,1) A(2,0) A(1,1) A(1,0) A(0,1) <- 2 <- 2 A(0,2) <- 3 <- 3 <- 3 A(1,3) A(1,2) A(1,1) A(1,0) A(0,1) <- 2 <- 2 A(0,2) <- 3 <- 3 A(0,3) <- 4 <- 4 A(0,4) <- 5 <- 5 <- 5 12
13 Nachbesprechung U4A3 Stack stack new Stack(10); public int =A(int n, int m){ stack.push(n); Stack stack = new Stack(10); stack.push(m); stack.push(n); stack.push(m); while(stack.size() > 1) { while(stack.size()!= 1) { if(n == 0){ int else final if(m == 0){m = stack.pop(); else{ int n = stack.pop(); final A(0,m) = m + 1 A(n,0) = A(n-1,1) A(n,m) = A(n-1,A(n,m-1)) if (n == 0) { stack.push(m+1); else if (m == 0) { stack.push(n - 1); stack.push(1); else { stack.push(n-1); stack.push(n); stack.push(m - 1); return stack.pop(); 13
14 Nachbesprechung U4A4 0: 1: 4: 5: 6: 7: 8: 9: 12: 13: 14: 15: 16: 17: 20: iload_1 ifne 8 iload_2 iconst_1 iadd ireturn iload_2 ifne 21 aload_0 iload_1 iconst_1 isub iconst_1 invokevirtual #16; ireturn : 22: 23: 24: 25: 26: 27: 28: 29: 30: 33: 36: aload_0 iload_1 iconst_1 isub aload_0 iload_1 iload_2 iconst_1 isub invokevirtual #16; invokevirtual #16; ireturn public int A(int n, int m) { if (n == 0) return m + 1; if (m == 0) return A(n-1, 1); return A(n-1, A(n, m-1)); 14
15 Nachbesprechung U4A4 Vergleich IterativeAckermann mit Bytecode von RecursiveAckermann: Rekursive Funktionen werden in Java per Stack realisiert IterativeAckermann ahmt demnach die Java Virual Machine (JVM) nach. 15
16 Nachbesprechung U4A4 0: 1: 4: 5: 6: 7: 8: 9: 12: 13: 14: 15: 16: 17: 20: iload_1 ifne 8 iload_2 iconst_1 iadd ireturn iload_2 ifne 21 aload_0 iload_1 iconst_1 isub iconst_1 invokevirtual #16; ireturn : 22: 23: 24: 25: 26: 27: 28: 29: 30: 33: 36: aload_0 iload_1 iconst_1 isub aload_0 iload_1 iload_2 iconst_1 isub invokevirtual #16; invokevirtual #16; ireturn while(stack.size()!= 1) { final int m = stack.pop(); final int n = stack.pop(); if (n == 0) { stack.push(m+1); else if (m == 0) { stack.push(n - 1); stack.push(1); else { stack.push(n-1); stack.push(n); stack.push(m - 1); 16
17 Vorlesung
18 Swap Funktion in Java public static void swap(stringbuffer sbf1, StringBuffer sbf2) { I StringBuffer temp = sbf1; sbf1 = sbf2; sbf2 =temp; StringBuffer sbf1 = new StringBuffer("Hello"); StringBuffer sbf2 = new StringBuffer("World"); System.out.println(sbf1+" "+sbf2); swap(sbf1,sbf2); System.out.println(sbf1+" "+sbf2); Hmmm... Output: Hello World Hello World 18
19 Objekte in Java StringBuffer sbf1 = new StringBuffer( Hello ); = sbf1; sbf2 I sbf3 = sbf1; sbf1 sbf2 sbf2 address1 address1 address2 address1 System.out.println( sbf1 = +sbf1); System.out.println( sbf2 = +sbf1); System.out.println( sbf3 = +sbf1); sbf1.append( World ); sbf2 = new StringBuffer( Hi Zürich ) System.out.println( sbf1 = +sbf1); System.out.println( sbf2 = +sbf1); System.out.println( sbf3 = +sbf1); Output: sbf1 = Hello sbf2 = Hello sbf3 = Hello sbf1 = Hello World sbf2 = Hi Zürich sbf3 = Hello World address1 address2 Hello Hello World Hi Zürich 19
20 Wiederholung: Call by Value VS Call by Reference Call by value: an Funktion übergebenen Daten werden kopiert keine Verbindung mehr zwischen den Daten beim Aufrufer und den Daten in der Funktion Call by reference: Anstatt Daten zu kopieren werden Referenzen (Pointer) auf die Daten übergeben Methodenaufrufe an einem so übergebenen Objekt arbeiten also auf demselben Objekt, das auch außerhalb sichtbar ist 20
21 C++ VS Java In C++ war beides möglich: Call by value: Daten werden kopiert und übergeben swap(a, b) Call by reference: Referenz auf die Daten wird übergeben swap(&a, &b) Java ist IMMER call by value!! Bei der Übergabe einer Referenz auf ein Objekt wird die Adresse in eine lokale Variable kopiert! Bei Übergabe eines primitiven Typs (char, int, float) wird der Wert in eine lokale Variable kopiert! 21
22 What went wrong? public static void swap(stringbuffer s1, StringBuffer s2) IStringBuffer temp = s1; s1 = s2; s2 = temp; { sbf1 sbf2 address1 address2 swap: s1 StringBuffer sbf1 = new StringBuffer("Hello"); StringBuffer sbf2 = new StringBuffer("World"); s2 address2 address1 System.out.println(sbf1+" "+sbf2); swap(sbf1,sbf2); System.out.println(sbf1+" "+sbf2); Output: Hello World Hello World address1 address2 Hello World 22
23 Wie könnte es funktionieren? public static void swap(stringbuffer sbf1, StringBuffer sbf2) { StringBuffer temp = new StringBuffer(sbf1); I sbf1.delete(0, sbf1.length()); sbf1.append(sbf2); sbf1 sbf2 address1 address2 swap: s1 sbf2.delete(0, sbf2.length()); sbf2.append(temp); s2 address1 address2 StringBuffer sbf1 = new StringBuffer("Hello"); StringBuffer sbf2 = new StringBuffer("World"); System.out.println(sbf1+" "+sbf2); swap(sbf1,sbf2); System.out.println(sbf1+" "+sbf2); Output: Hello World World Hello address1 address2 Hello World World Hello Man muss das zu Grunde liegende Objekt verändern! 23
24 Verkettete Liste public class List { public int val; public List next; public List(int val, List next) { this.val = val; this.next = next; [ ] val = next = 1 val = next = 4 val = next = 21 val = next = 8 null 24
25 Packete in Java Paket: Sammlung von Klassen package u4a2; Enthält: IterativeAckermann RecursiveAckermann Können Importiert werden: Als ganzes: import u4a2.* Einzelne Klassen: import u4a2.iterativeackermann 25
26 Beispiel: Nutzen des List Packetes: package u5a1; public class List { public int value; public List next; Paketname Klassenname import list.list; public class Lists { public static String tostring(list list) { if (list == null) return "null"; public List(int value, List next) { this.value = value; this.next = next; StringBuffer buf = new StringBuffer(); buf.append(list.value).append(", ").append(tostring(list.next)); return buf.tostring(); {1, 4, 21, 8 1, 4, 21, 8, null 26
27 Beispiel: Nutzen des List Packetes: public class List { public int val; public List next; package u5a1; import list.list; public class Lists { public static String tostring(list list) { if (list == null) return "null"; StringBuffer buf = new StringBuffer(); //buf = list.value+, +tostring(list.next) buf.append(list.value).append(", ").append(tostring(list.next)); return buf.tostring(); public List(int val, List next) { this.val = val; this.next = next; val = 1 next = 1, +tostring(list.next); 1, 4, 21, 8, null val = 4 next = 4, +tostring(list.next); 4, 21, 8, null val = 21 next = 21, +tostring(list.next); 21, 8, null 8 val = null next = 8, +tostring(list.next); 8, null 27
28 Konventionen zur Namensgebung in Java Pakete: Alles Kleinbuchstaben Bsp: mypackage, u4a2 Klassen: Erste Buchstabe gross Bsp: RandomArray, StringBuffer, Stack Funktionen & Variabeln: Erste Buchstabe klein, danach bei neuem Wort gross Bsp: tostring(), myfunction(), grow(), push() 28
29 Vorbesprechung
30 Vorbesprechung U5A1 - Einfach verkettete Listen Klasse Lists erweitern mit Methoden zur Verwendung von Listen. Achtung unkreative Namensgebung: Lists List List: Grundbaustein der Liste Lists: Sammlung von Methoden zur Verwenung der Liste Rekursive Implementation (wie Beispielsweise bei tostring gezeigt) Keine for oder while oder do while oder andere Schleifen erlaubt! 30
31 Vorbesprechung U5A1 - Einfach verkettete Listen add Neuer wert am Anfang anhängen list1 entspricht {1, 21 add(list1,4); list1 entspricht {4, 1, 21 size Bestimmt die Grösse einer Liste list1 entspricht {4, 1, 21 size(list1); 3 31
32 Vorbesprechung U5A1 - Einfach verkettete Listen sum Bestimmt die Summe aller Listenelemente list1 entspricht {4, 1, 21 sum(list1); 26 last Bestimmt das letzte Element einer Liste list1 entspricht {4, 1, 21 list2 = last(list1); list2 entspricht {21 32
33 Vorbesprechung U5A1 - Einfach verkettete Listen sublist Schneidet den Anfang einer Liste ab list1 entspricht {4, 1, 21 list2 = sublist(list1,1); list2 entspricht {1, 21 valueat Bestimmt den Wert von einem bestimmten Element list1 entspricht {4, 1, 21 valueat(list1,2); 21 33
34 Vorbesprechung U5A1 - Einfach verkettete Listen index bestimmt den ersten Index bei dem ein bestimmter Wert in der Liste gespeichert ist list1 entspricht {4, 1, 21 index(list1,21); 2 34
35 Vorbesprechung U5A2 Modifizierung von Listen Klasse MutableLists erweitert die Klasse Lists mit Methoden zum Bearbeiten von Listen Rekursive Implementation Immernoch keine for oder while oder do while oder andere Schleifen erlaubt! Benützt eure Methoden in Lists aus der Aufgabe 1! 35
36 Vorbesprechung U5A2 Modifizierung von Listen append Neuer wert am Ende anhängen list1 entspricht {4, 1 append(list1,21); list1 entspricht {4, 1, 21 concat Verbidet zwei Listen list1 entspricht {4, 1 list2 entspricht {21, 8 concat(list1,list2); list1 entspricht {4,1,21,8 36
37 Vorbesprechung U5A2 Modifizierung von Listen insertat Wert(e) an bestimmter Stelle einfügen list1 entspricht {4, 1 insertat(list1,1,3); list1 entspricht {4, 3, 1 list1 entspricht {4, 1 list2 entspricht {9, 10 insertat(list1,1,list2); list1 entspricht {4, 9, 10, 1 37
38 Vorbesprechung U5A2 Modifizierung von Listen remove Wert an bestimmter Stelle entfernen list1 entspricht {4, 1, 21, 8 remove(list1,2); list1 entspricht {4, 1, 8 38
39 Vorbesprechung U5A3 Sortieren von Listen Klasse SortedLists erweitert die Klasse Lists mit Methoden zum Bearbeiten von Listen Rekursive Implementation Keine for oder while oder do while oder andere Schleifen erlaubt! Wer hätte es gedacht ;) Zuerst funkiton insertsorted() machen, welche einen Wert in einen bereits sortierten Array einfügt. list.next sortieren, dann list.value mit insertsorted in den sortierten Rest einfügen 39
40 Vorbesprechung U5A3 Sortieren von Listen insertsorted Fügt einer Sortierten Liste einen weiteren Wert hinzu list1 entspricht {1, 4, 21 insertsorted(list1,8); list1 entspricht {1, 4, 8, 21 40
41 Vorbesprechung U5A4 Noch ein wachsender Stack Klasse Stack erweitert die Klasse List mit Methoden zum Bearbeiten von Listen Immer noch Rekursive Implementation ;) Keine for oder while oder do while oder andere Schleifen erlaubt! Bunter mix zwischen U5A1 und U4A1, ihr könnt also die Tipps zu diesen Aufgaben als referenz nehmen :) 41
42 Viel Spass! 42
Informatik II Übung 5 Gruppe 4
Informatik II Übung 5 Gruppe 4 (Folien teils von Christian B. und Christelle G.) Lukas Burkhalter lubu@inf.ethz.ch Informatik II Übung 5 Lukas Burkhalter 27. März 2018 1 Nachbesprechung Letzte Übung (4)
MehrInformatik II - Tutorium 5
Informatik II - Tutorium 5 Vincent Becker vincent.becker@inf.ethz.ch 28.03.2018 Vincent Becker 28.03.2018 1 Neue Webseite Vincent Becker 28.03.2018 3 Allgemeines Java-Konvention: Alle Variablen- und Methodennamen
MehrInformatik II (D-ITET) Übungsstunde 5,
Informatik II (D-ITET) Übungsstunde 5, 30.04.2017 Hossein Shafagh, shafagh@inf.ethz.ch Distributed Systems Group, ETH Zürich Ablauf Besprechung von Übung 4 More Java insights (Call by Value und Call by
MehrInformatik II Übung 5
Informatik II Übung 5 Florian Scheidegger florsche@student.ethz.ch Folien mit freundlicher Genehmigung adaptiert von Gábor Sörös und Simon Mayer gabor.soros@inf.ethz.ch, simon.mayer@inf.ethz.ch 27.03.2013
MehrInformatik II (D-ITET) Informatik II (D-ITET) Übungsstunde 1. Distributed Systems Group, ETH Zürich
Informatik II (D-ITET) Informatik II (D-ITET) simon.mayer@inf.ethz.ch Distributed Systems Group, ETH Zürich Übungsstunde 1 Informatik II (D-ITET) 1 Ablauf Nachbesprechung Übungen 3 und 4 Besprechung der
MehrInformatik II Übung 4. Pascal Schärli
Informatik II Übung 4 pascscha@student.ethz.ch Nachbesprechung Serie 3 - Aufgabe 1 Schleifeninvariante: z+u j=i j Nach der while-scheife: u=0 z= i j Was passiert wenn man das Programm so abändert? Schleifeninvariante
MehrInformatik II (D-ITET) Übungsstunde 5
Informatik II (D-ITET) Übungsstunde 5 simon.mayer@inf.ethz.ch Distributed Systems Group, ETH Zürich Ablauf Nachbesprechung Übungen 3 und 4 Besprechung der Vorlesung Übungsbezogene Themen: Referenzen, Listen
MehrInformatik II Übung 05. Benjamin Hepp 3 April 2017
Informatik II Übung 05 Benjamin Hepp benjamin.hepp@inf.ethz.ch 3 April 2017 Java package Hierarchie import.. nur noetig um Klassen aus anderen Packeten zu importieren Es kann auch immer der vollstaendige
MehrInfo2 Übungsstunde 5. Agenda. Lösungen U4. Java... more insights. Tipps zur Übung 5
Ifo2 Übugsstude 5 Ageda Lösuge U4 Java... more isights Tipps zur Übug 5 1 L4.A1 Stack Neeswertes Zwei Members: buffer ud size capacity := buffer.legth empty := size == 0 elemet idex := size void push(it
MehrInformatik II - Übung 04. Christian Beckel Besprechung Übungsblatt 3
Informatik II - Übung 04 Christian Beckel beckel@inf.ethz.ch 20.03.2014 Besprechung Übungsblatt 3 Christian Beckel 20/03/14 2 U3.A1! Unterschied zwischen! String! StringBuffer! Aufgabenstellung: "KEIN
MehrInformatik II Übung 6. Pascal Schärli
Informatik II Übung 6 pascscha@student.ethz.ch Was gibts heute? Warm-Up Nachbesprechung Serie 5 Best-Of Vorlesung: Klassenhierarichie Abstrakte Klassen Factories Vorbesprechung Serie 6 2 Warm - Up Warm
MehrInformatik II Übung 04
Informatik II Übung 04 Michael Baumann mbauman@student.ethz.ch n.ethz.ch/~mbauman 23.03.2016 Ablauf 1) Nachbesprechung Serie 3 2) Stacks 3) Vorbesprechung Serie 4 4) Bytecode und Assembler 2 Ablauf 1)
MehrInformatik II - Übung 04
Informatik II - Übung 04 Katja Wolff katja.wolff@inf.ethz.ch Besprechung Übungsblatt 3 Informatik II - Übung 04 21.03.2017 2 U3.A1 Programmverifikation static int f(int i, int j) { int u = i; int z = 0;
Mehr16. Dynamische Datenstrukturen
Datenstrukturen 6. Dynamische Datenstrukturen Eine Datenstruktur organisiert Daten so in einem Computer, dass man sie effizient nutzen kann. Verkettete Listen, Abstrakte Datentypen Stapel, Warteschlange
MehrInformatik II - Übung 06
Informatik II - Übung 06 Katja Wolff katja.wolff@inf.ethz.ch Besprechung Übungsblatt 5 Informatik II Übung 06 05.04.2017 2 U5 1.) Einfach verkettete Listen 2.) Modifizierung verketteter Listen 3.) Sortieren
MehrInformatik II Übung 7. Pascal Schärli
Informatik II Übung 7 pascscha@student.ethz.ch Was gibts heute? Warm-Up Nachbesprechung Serie 6 Best-Of Vorlesung: Generics Binäre Suchbäume Spielbäume Vorbesprechung Serie 7 2 Warm - Up Warm-Up interface
MehrRekursion. L. Piepmeyer: Funktionale Programmierung - Rekursion
Rekursion 1 Iterative und rekursive Methoden Summe von 1 bis n berechnen: iterativ rekursiv public int sum(int n){ int result = 0; for(int i=1; i
MehrInformatik II Übung 4 Gruppe 7
Informatik II Übung 4 Gruppe 7 Leyna Sadamori leyna.sadamori@inf.ethz.ch Informatik II Übung 4 Leyna Sadamori 20. März 2014 1 Administratives Text Encoding: UTF-8 Informatik II Übung 4 Leyna Sadamori 20.
Mehr13. Dynamische Datenstrukturen
Motivation: Stapel. Dynamische Datenstrukturen Verkettete Listen, Abstrakte Datentypen Stapel, Warteschlange, Sortierte Liste 40 40 Motivation: Stapel ( push, pop, top, empty ) Wir brauchen einen neuen
MehrInformatik 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! 1. Rekursive Algorithmen.! 2. Rekursive (dynamische) Datenstrukturen. II.3.2 Rekursive Datenstrukturen - 1 -
! 1. Rekursive Algorithmen! 2. Rekursive (dynamische) Datenstrukturen II.3.2 Rekursive Datenstrukturen - 1 - Ausdruck Ausdruck Grundwert ( Typ ) Präfix-Operator Name Methodenaufruf [ Ausdruck ] ( Ausdruck
MehrInformatik II Übung 3
Informatik II Übung 3 Gruppe 2 Carina Fuss cfuss@student.ethz.ch 14.3.2018 Carina Fuss 14.3.2018 1 Übung 2 Nachbesprechung Übung 2 Vorbesprechung Übung 3 String vs. StringBuffer Syntaxdiagramme und Syntaxchecker
MehrPraktikum 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
MehrALP II Dynamische Datenmengen Datenabstraktion (Teil 2)
ALP II Dynamische Datenmengen Datenabstraktion (Teil 2) O1 O2 O3 O4 SS 2012 Prof. Dr. Margarita Esponda 49 Einfach verkettete Listen O1 O2 O3 50 Einführung Einfach verkettete Listen sind die einfachsten
MehrInformatik II. Woche 10, Giuseppe Accaputo
Informatik II Woche 10, 09.03.2017 Giuseppe Accaputo g@accaputo.ch 1 Nachbesprechung: Übung 2 2 Übung 2: Abgaben Habe von allen Abgaben erhalten! Kompliment an euch alle! 3 Tests laufen lassen vor Submit
MehrInformatik II Übung, Woche 14
Giuseppe Accaputo 7. April, 2016 Plan für heute 1. Java Klassen Beispiel: Implementation eines Vorlesungsverzeichnis (VVZ) 2. Informatik II (D-BAUG) Giuseppe Accaputo 2 Java Klassen Beispiel: Implementation
Mehr3. Übungsbesprechung Programmkonstruktion
3. Übungsbesprechung Programmkonstruktion Karl Gmeiner karl@complang.tuwien.ac.at December 12, 2011 K Gmeiner (karl@complang.tuwien.ac.at) 3. Übungsbesprechung PK December 12, 2011 1 / 13 Rückblick und
MehrVerkettete Datenstrukturen: Listen
Verkettete Datenstrukturen: Listen 2 Listen Formal: Liste = endliche Folge von Elementen [a 1, a 2,..., a n ]. Spezialfall: leere Liste [ ]. Länge einer Liste = Anzahl der Elemente (bei leerer Liste: 0).
MehrALP II Dynamische Datenmengen Datenabstraktion
ALP II Dynamische Datenmengen Datenabstraktion O1 O2 O3 O4 SS 2012 Prof Dr Margarita Esponda M Esponda-Argüero 1 Dynamische Datenmengen Dynamische Datenmengen können durch verschiedene Datenstrukturen
MehrEinstieg in die Informatik mit Java
1 / 22 Einstieg in die Informatik mit Java Grundlagen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 22 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White
MehrÜ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
MehrTU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D.
TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D. Übung zur Vorlesung Einführung in die Informatik 2 für Ingenieure (MSE) Alexander van Renen (renen@in.tum.de)
MehrMartin Unold INFORMATIK. Geoinformatik und Vermessung
Wiederholung So sieht ein leeres Java-Programm aus public class Programmname { public static void main (String[] args) { // Hier stehen die Anweisungen Welche Arten von Anweisungen gibt es? Anweisungen
MehrEinstieg 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
MehrInformatik II - Tutorium 6
Informatik II - Tutorium 6 Vincent Becker vincent.becker@inf.ethz.ch 11.04.2018 Vincent Becker 11.04.2018 1 Teilnehmer für Projekte gesucht Falls jemand gerne an Experimenten teilnimmt, ein Email an mich
MehrHeap vs. Stack vs. statisch. 6 Speicherorganisation. Beispiel Statische Variablen. Statische Variablen
Heap vs. vs. statisch Der Speicher des Programms ist in verschiedene Speicherbereiche untergliedert Speicherbereiche, die den eigentlichen Programmcode und den Code der Laufzeitbibliothek enthalten; einen
MehrSchwerpunkte. Verkettete Listen. Verkettete Listen: 7. Verkettete Strukturen: Listen. Überblick und Grundprinzip. Vergleich: Arrays verkettete Listen
Schwerpunkte 7. Verkettete Strukturen: Listen Java-Beispiele: IntList.java List.java Stack1.java Vergleich: Arrays verkettete Listen Listenarten Implementation: - Pascal (C, C++): über Datenstrukturen
MehrHeap vs. Stack vs. statisch. 6 Speicherorganisation. Beispiel Statische Variablen. Statische Variablen
Heap vs. vs. statisch Der Speicher des Programms ist in verschiedene Speicherbereiche untergliedert Speicherbereiche, die den eigentlichen Programmcode und den Code der Laufzeitbibliothek enthalten; einen
MehrAlgorithmen und Programmierung III
Musterlösung zum 4. Aufgabenblatt zur Vorlesung WS 2006 Algorithmen und Programmierung III von Christian Grümme Aufgabe 1 Amortisierte Analyse 10 Punkte Zu erst betrachte ich wie oft die letzte Ziffer
MehrObjektorientierte Programmierung
Universität der Bundeswehr Fakultät für Informatik Institut 2 Priv.-Doz. Dr. Lothar Schmitz FT 2006 Übungsblatt 1 Lösungsvorschlag Objektorientierte Programmierung 10. 04. 2006 Lösung 1 (Imperative Java-Elemente)
MehrTechnische Universität Braunschweig Institut für Programmierung und Reaktive Systeme
Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme Programmieren II Dr. Werner Struckmann 29. August 2014 Name: Vorname: Matrikelnummer: Kennnummer: Anrede: Frau Herr
MehrInformatik II Übung 06. Benjamin Hepp 5 April 2017
Informatik II Übung 06 Benjamin Hepp benjamin.hepp@inf.ethz.ch 5 April 2017 Nachbesprechung U5 5 April 2017 Informatik II - Übung 01 2 Nachbesprechung U5 1. Einfach verkettete Listen Keine Probleme 2.
Mehr7.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.
MehrInformatik 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)))
MehrSchnittstellen, Stack und Queue
Schnittstellen, Stack und Queue Schnittstelle Stack Realisierungen des Stacks Anwendungen von Stacks Schnittstelle Queue Realisierungen der Queue Anwendungen von Queues Hinweise zum Üben Anmerkung: In
MehrÜbung zur Vorlesung Programmierung
RWTH Aachen Lehrgebiet Theoretische Informatik Frohn Reidl Rossmanith Sánchez Ströder WS 013/14 Übungsblatt 4 18.11.013 Übung zur Vorlesung Programmierung Aufgabe T8 Ein Stack ist eine Datenstruktur, die
MehrProgrammieren I. Methoden-Special Heusch --- Ratz 6.1, Institut für Angewandte Informatik
Programmieren I Methoden-Special Heusch --- Ratz 6.1, 6.2 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Parameterübergabe: Wertkopie -By- public class MethodParameters { public
MehrStacks, Queues & Bags. Datenstrukturen. Pushdown/Popup Stack. Ferd van Odenhoven. 19. September 2012
, Queues & Ferd van Odenhoven Fontys Hogeschool voor Techniek en Logistiek Venlo Software Engineering 19. September 2012 ODE/FHTBM, Queues & 19. September 2012 1/42 Datenstrukturen Elementare Datenstrukturen
MehrProgrammieren I. Methoden-Spezial Heusch --- Ratz 6.1, Institut für Angewandte Informatik
Programmieren I Methoden-Spezial Heusch --- Ratz 6.1, 6.2 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Parameterübergabe bei primitivem Datentypen (Wertkopie) public class MethodParameters
MehrFH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Referenzen. Referenzen
5 Objektorientierte Programmierung in Java Prof. Dr. Ing. André Stuhlsatz Referenzen Beispiel an der einfachen Klasse Walze: public class Walze { int id; public Walze(int id) { this.id = id; Verwenden
Mehrclass ListElement { int value; ListElement next; ListElement() { next=null; value=0;
Listenimplementierung Übung 1, Aufgabe 4. c 2004 Evgeny Matusov, Thomas Deselaers Zunächst definieren wir die Basisklasse für die Listenelemente, die gleichzeitig einen Verweis auf weitere Listenelemente
MehrInstitut für Programmierung und Reaktive Systeme 7. Juli Programmieren II. Übungsklausur
Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 7. Juli 2017 Hinweise: Klausurtermine: Programmieren II Übungsklausur Programmieren I: 28. August
MehrProgrammieren I. Kapitel 13. Listen
Programmieren I Kapitel 13. Listen Kapitel 13: Listen Ziel: eigene Datenstrukturen erstellen können und eine wichtige vordefinierte Datenstruktur( familie) kennenlernen zusammengehörige Elemente zusammenfassen
MehrJAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)
JAVA BASICS 2. Primitive Datentypen 1. Warum Java? zunehmend weit verbreitet einfach und (relativ) sicher keine Adressrechnung, aber Pointer keine gotos kein Präprozessor keine globalen Variablen garbage
MehrEinfü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
MehrKapitel 12: Induktive
Kapitel 12: Induktive Datenstrukturen Felix Freiling Lehrstuhl für Praktische Informatik 1 Universität Mannheim Vorlesung Praktische Informatik I im Herbstsemester 2009 Folien nach einer Vorlage von H.-Peter
MehrJAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)
JAVA BASICS 2. Primitive Datentypen 1. Warum Java? weit verbreitet einfach und (relativ) sicher keine Pointer (?) keine gotos kein Präprozessor keine globalen Variablen garbage collection objekt-orientiert
MehrWie kann man es verhindern das Rad immer wieder erneut erfinden zu müssen?
Generic Programming without Generics from JAVA5 Motivation Wie kann man es verhindern das Rad immer wieder erneut erfinden zu müssen? Ein Bespiel: sie haben bereits eine Klasse zur Multiplikation von Matrizen
MehrErste 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/
MehrInstitut für Programmierung und Reaktive Systeme 17. Juli Programmieren II. Übungsklausur
Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 17. Juli 2015 Hinweise: Klausurtermine: Programmieren II Übungsklausur Programmieren I: 7. September
MehrVerkettete Listen. DVG Verkettete Listen 1
Verkettete Listen DVG2-03 - Verkettete Listen 1 Primitive typen Vorteile: werden direkt vom Prozessor unterstützt schneller Zugriff schnelle Verarbeitung Nachteile: kleine menge feste Struktur unflexibel
MehrProgrammierkurs Java
Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE27-Vererbung (Stand 13.04.2012) Aufgabe 1: Stellen Sie sich vor, jemand hat ein bestimmtes Spiel implementiert. Dieses besteht u. a. aus folgenden
MehrAbgabe: (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,
MehrInformatik II Übung 6 Gruppe 4
Informatik II Übung 6 Gruppe 4 (Folien teils von Christian B. und Christelle G.) Lukas Burkhalter lubu@inf.ethz.ch Informatik II Übung 6 Lukas Burkhalter 11.04.2018 1 Programm Heute Code Style Rückblick
MehrInformatik I (D-MAVT)
Informatik I (D-MAVT) Übungsstunde 8, 22.4.2009 simonmayer@student.ethz.ch ETH Zürich Aufgabe 1: Pointer & Structs Schauen wir s uns an! Aufgabe 2: Grossteils gut gemacht! Dynamische Arrays! Sortieren:
Mehr1 Abstrakte Datentypen
1 Abstrakte Datentypen Spezifiziere nur die Operationen! Verberge Details der Datenstruktur; der Implementierung der Operationen. == Information Hiding 1 Sinn: Verhindern illegaler Zugriffe auf die Datenstruktur;
MehrTechnische Universität Braunschweig
Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme Programmieren II Dr. Werner Struckmann 28. August 2015 Name: Vorname: Matrikelnummer: Kennnummer: Anrede: Frau Herr
MehrÜbung Algorithmen und Datenstrukturen
Übung Algorithmen und Datenstrukturen Sommersemester 2017 Patrick Schäfer, Humboldt-Universität zu Berlin Agenda 1. Sortierte Listen 2. Stacks & Queues 3. Teile und Herrsche Nächste Woche: Vorrechnen (first-come-first-served)
Mehr6 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
MehrTECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK
ECHNISCHE UNIVERSIÄ MÜNCHEN FAKULÄ FÜR INFORMAIK Lehrstuhl für Sprachen und Beschreibungsstrukturen WS 2007/2008 Praktikum Grundlagen der Programmierung Lösungsvorschläge zu Blatt 9 F. Forster,. Gawlitza,
MehrInformatik II. Woche 15, Giuseppe Accaputo
Informatik II Woche 15, 13.04.2017 Giuseppe Accaputo g@accaputo.ch 1 Themenübersicht Repetition: Pass by Value & Referenzen allgemein Repetition: Asymptotische Komplexität Live-Programmierung Aufgabe 7.1
MehrJAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)
JAVA BASICS 2. Primitive Datentypen 1. Warum Java? zunehmend weit verbreitet einfach und (relativ) sicher keine Adressrechnung, aber Pointer keine gotos kein Präprozessor keine globalen Variablen garbage
Mehr1. 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
MehrSoftware Entwicklung 1
Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter AG Softech FB Informatik TU Kaiserslautern Überblick Weitere Sortierverfahren Merge Sort Heap Sort Praktische Auswirkungen der Laufzeitabschätzungen
MehrDistributed 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
MehrInformatik II Übung 2. Pascal Schärli
Informatik II Übung 2 Pascal Schärli pascscha@student.ethz.ch 08.03.2018 Code Expert Pascal Schärli 08.03.2018 2 Nachbesprechung Serie 1 Aufgabe 1 a) Induktionsbeweis über a möglich? Nein! Der Induktionsanfang
MehrFallstudie: Online-Statistik
Fallstudie: Online-Statistik Ziel: Klasse / Objekt, welches Daten konsumiert und zu jeder Zeit Statistiken, z.b. Mittelwert, Varianz, Median (etc.) ausgeben kann Statistics s = new Statistics(maxSize);...
MehrInformatik II (D-ITET) Informatik II (D-ITET) Übungsstunde 1. Distributed Systems Group, ETH Zürich
Informatik II (D-ITET) Informatik II (D-ITET) simon.mayer@inf.ethz.ch Distributed Systems Group, ETH Zürich Übungsstunde 1 Informatik II (D-ITET) 1 Ablauf Nachbesprechung Übung 1 und Übung 2 Besprechung
Mehrpue13 January 28, 2017
pue13 January 28, 2017 1 Aufgabe 1 (Klammern und Anweisungsblöcke) Wie Sie in der Vorlesung gelernt haben, werden Anweisungsblöcke in Java nicht durch Einrückung, sondern mithilfe von geschweiften Klammern
MehrLö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
MehrJava Bytecode Eike Robert Freie Universität Berlin. Softwareprojekt Übersetzerbau, 2013
Java Bytecode Eike Robert Freie Universität Berlin Softwareprojekt Übersetzerbau, 2013 Inhalt Bytecode Allgemein Architektur Aufbau Instruktionsgruppen Beispiel FU Berlin, Bytecode, Übersetzerbau 2013
MehrALP II Dynamische Datenmengen
ALP II Dynamische Datenmengen Teil III Iteratoren Iterator-Objekt O1 O2 O3 O4 SS 2012 Prof. Dr. Margarita Esponda 22. ALP2-Vorlesung, M. Esponda 2 Motivation: Iteratoren Wir haben für die Implementierung
Mehrn 1. Grundzüge der Objektorientierung n 2. Methoden, Unterprogramme und Parameter n 3. Datenabstraktion n 4. Konstruktoren n 5. Vordefinierte Klassen
n 1. Grundzüge der Objektorientierung n 2. Methoden, Unterprogramme und Parameter n 3. Datenabstraktion n 4. Konstruktoren n 5. Vordefinierte Klassen II.2.2 Methoden, Unterprogramme und Parameter - 1 -
MehrKapitel 4: Datentyp Keller und Schlange
Kapitel 4: Datentyp Keller und Schlange Keller (Stack) Schlange (Queue) 4-1 Definition Keller und seine Operationen Ein Keller (engl. Stack; Stapel) ist eine endliche Menge von Elementen mit einer LIFO-Organisation
MehrAlgorithmen und Programmierung III
Musterlösung zum 3. Aufgabenblatt zur Vorlesung WS 2006 Algorithmen und Programmierung III von Christian Grümme Aufgabe 1 Potenzieren von Matrizen Testlauf der Klasse Matrix.java: 10 Punkte Erzeuge Matrix
MehrInformatik II (D-ITET) Übungsstunde 4,
Informatik II (D-ITET) Übungsstunde 4, 23.03.2017 Hossein Shafagh, shafagh@inf.ethz.ch Distributed Systems Group, ETH Zürich Quotes The purpose of software engineering is to control complexity, not to
MehrEinführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein (kmk@informatik.uni-kiel.
Java Crashkurs Kim-Manuel Klein (kmk@informatik.uni-kiel.de) May 7, 2015 Quellen und Editoren Internet Tutorial: z.b. http://www.java-tutorial.org Editoren Normaler Texteditor (Gedit, Scite oder ähnliche)
Mehr1. 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Übungsblatt 9. Thema: Methoden-Dispatching, Datenstrukturen, Abstrakte Datentypen
Informatik I WS 05/06 Prof. Dr. W. May Dipl.-Inform. Oliver Fritzen Dipl.-Inform. Christian Kubczak Übungsblatt 9 Ausgegeben am: Abgabe bis: 06.01.2006 17.1.2006 (Theorie) 20.1.2006 (Praktisch) Thema:
MehrKapitel 10. Verweise und Referenzen. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz
Kapitel 10 Verweise und Referenzen Inhalt von Kapitel 10 Verweise und Referenzen 10.1 Das Schlüsselwort this Definition Verwendungszweck Klassenmethoden EINSCHUB: Musterlösung zu Übung 4.1 10.2 Objektreferenzen
MehrInformatik II - Tutorium 4
Informatik II - Tutorium 4 Vincent Becker vincent.becker@inf.ethz.ch 22.03.2017 Vincent Becker 27.03.2017 1 Übungsblatt 3 Vincent Becker 27.03.2017 2 U3.A1 Programmverifikation static int f(int i, int
MehrEinführung in die Informatik: Programmierung und Software-Entwicklung, WS 16/17. Kapitel 13. Listen. Listen 1
Kapitel 13 Listen Listen 1 Ziele Implementierungen für Listen kennenlernen Einfach verkettete und doppelt verkettete Listen verstehen Listen-Implementierungen in der Java-Bibliothek kennenlernen Durch
MehrEinführung in die Informatik: Programmierung und Software-Entwicklung, WS 15/16. Kapitel 12. Listen. Listen 1
Kapitel 12 Listen Listen 1 Ziele Implementierungen für Listen kennenlernen Einfach verkettete und doppelt verkettete Listen verstehen Listen-Implementierungen in der Java-Bibliothek kennenlernen Durch
MehrTECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK
TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen WS 2006/2007 Praktikum Grundlagen der Programmierung Lösungsvorschläge zu Blatt 3 F. Forster, M.
MehrProgrammieren in Java
Programmieren in Java Vorlesung 05: Generics Prof. Dr. Peter Thiemann Albert-Ludwigs-Universität Freiburg, Germany SS 2015 Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 1 / 19 Inhalt Generics
MehrÜbung Algorithmen und Datenstrukturen
Übung Algorithmen und Datenstrukturen Sommersemester 16 Patrick Schäfer, Humboldt-Universität zu Berlin Agenda 1. Fragen zum zweiten Übungsblatt? 2. Vorbesprechung des dritten Übungsblatts 3. Beispielaufgaben
MehrJava Kurs für Anfänger Einheit 5 Methoden
Java Kurs für Anfänger Einheit 5 Methoden Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 22. Juni 2009 Inhaltsverzeichnis Methoden
Mehr