Raphael Fischer fischrap@inf.ethz.ch 15.03.2014 Informatik II - Übung 03 Raphael Fischer fischrap@inf.ethz.ch 15.03.2014.

Slides:



Advertisements
Ähnliche Präsentationen
M a r c – o l i v e r p a h l Informatik I – Kapitel 7 Klassen und höhere Datentypen Zusammenfassung des Kapitel 7 Küchlin, Weber, Einführung in die Informatik,
Advertisements

der Universität Oldenburg
PKJ 2005/1 Stefan Dissmann Vorwoche - Klasse public class Studierende { private String name, vorname, studiengang; private int matNr, semester; private.
Sortieren mit Binären Bäumen
Java: Dynamische Datentypen
Listen Richard Göbel.
FH-Hof Verwaltung von Zeichenketten Richard Göbel.
Indirekte Adressierung
FH-Hof Verwaltung von Zeichenketten Richard Göbel.
Java: Referenzen und Zeichenketten
Baumstrukturen Richard Göbel.
FH-Hof Fehlerbehandlung Richard Göbel. FH-Hof Konzept Fehler können mit dem Operator throw einer übergeordneten Funktion signalisiert werden. Parameter.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (05 – Elementare Datenstrukturen) Prof. Th. Ottmann.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 6 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
Java in 9 Folien Besser: Online-Buch Go to Java 2.
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
Rekursive Funktionen (Fakultät)
Performance-Optimierung in JAVA
Abteilung für Telekooperation Übung Softwareentwicklung 1 für Wirtschaftsinformatik Dr. Wieland Schwinger
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
EPROG Tutorium Einheit 4 Klassen und Objekte. Wiederholung Schleifen do... while while for break/continue Strings String char Methoden für Strings Arrays.
Variablenkonzept Klassisch, in Java Basistyp
Einfach und doppelt verkettete Listen in JAVA by Jens Weibler
Arrays und ArrayLists In JAVA.
Kapitel 6: Suchbäume und weitere Sortierverfahren
Softwareengineering Graphen und Bäume Teil II
Programmiervorkurs WS 2014/15 Methoden
Arrays und ArrayLists In JAVA.
Java Syntaxdiagramme Buchstabe A B Z a z ... Ziffer
Java-Kurs - 3. Übung Hausaufgabe Arrays For-Schleifen.
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
M a r c – o l i v e r p a h l Informatik II – Kapitel 12 „Sortier-Algorithmen“ Zusammenfassung des Kapitel 12 Küchlin, Weber, Einführung in die Informatik,
OOP mit Java Oder: Java in 5 Tagen. 1. Tag Klassen und Methoden Hello World in Variationen Von Menschen und Geschlechtern Horden (Schlange stehen)
Java Programme nur ein bisschen objektorientiert.
1 Arrays und Schleifen Özgü & Tim. 2 Inhaltsverzeichnis Arrays Was ist ein Array? Bauanleitung Beispiel Matrix Fehler Schleifen Wofür Schleifen? While-Schleife.
Informatik II – Übung 4 Gruppe 3
Hello World! Javakurs 2013 Arne Kappen
JAVA lernen: Methoden.
Zwei Denkansätze zur Klasse Schlange
Der Abschluss einer Schlange
Zufall in Java Zwei Möglichkeiten.
Felder in Java.
Allgemeine Befehle für die allgemeine Liste
Gruppe 2 Carina Fuss Informatik II – Übung 4 Gruppe 2 Carina Fuss Carina Fuss
Raphael Fischer Informatik II - Übung 04 Raphael Fischer
Raphael Fischer Informatik II - Übung 11 Raphael Fischer
Raphael Fischer Informatik II - Übung 07 Raphael Fischer
Raphael Fischer Informatik II - Übung 06 Raphael Fischer
Cäsar-Verschlüsselung
SS 04 Christiane Rauh Christian Hellinger
Raphael Fischer Informatik II - Übung 05 Raphael Fischer
Raphael Fischer Informatik II - Übung 08 Raphael Fischer
7. Arrays Gelegentlich braucht man für ein Programm mehrere Attribute desselben Datentyps oder derselben Klasse. Beispiel: In der Highscore-Liste eines.
Grundkurs Informatik mit Java
Schleifen mit der Turtle
Arrays in Java Ein Array ist eine Variable, die aus einer An-zahl von Elementen des gleichen Datentyps besteht, die aufeinanderfolgend im Speicher liegen.
1. Die rekursive Datenstruktur Liste 1.3 Rekursive Funktionen
Raphael Fischer Informatik II - Übung 10 Raphael Fischer
2. Vererbung und Kapselung
1. Die rekursive Datenstruktur Liste 1
Datenstrukturen und Softwareentwicklung
9. Vererbung und Polymorphie
3. Die Datenstruktur Graph 3.2 Repräsentation von Graphen
1. Die rekursive Datenstruktur Liste 1.6 Die Datenstruktur Stapel
Heapsort-Algorithmus
Informatik II – Übung 4 Gruppe 3
2. Die rekursive Datenstruktur Baum 2.3 Baum und Kompositum
 Präsentation transkript:

Raphael Fischer fischrap@inf.ethz.ch 15.03.2014 Informatik II - Übung 03 Raphael Fischer fischrap@inf.ethz.ch 15.03.2014

Besprechung Übungsblatt 2 Raphael Fischer 27.11.2018

U2.A1 S R H P V F A N O Q J K G Können Sie aus den obigen Linksklammerdarstellungen den dazugehörigen Baum eindeutig rekonstruieren? S(R(H(K)),P(A(N,O),Q,T),V(J,F(G))) Ja, falls Position der Knoten unwichtig (linker oder rechter Nachfolger?) Nein, da Position der Knoten in Binary tree nicht eindeutig bestimmbar bei einzelnem Kind (linker oder rechter Nachfolger?) S R H P V F A N O Q J K G Raphael Fischer 27.11.2018

U2.A2 – Coding style: Effizienz Objektinstanzierung ist teuer! void initialize() { for (int i=0; i<a.length; i++) { Random r = new Random(); a[i] = r.nextInt(1000); } void initialize() { Random r = new Random(); for (int i=0; i<a.length; i++) { a[i] = r.nextInt(1000); } Raphael Fischer 27.11.2018

Aufgabe 2c Raphael Fischer 27.11.2018

[ 5 1 9 2 ] [ 9 1 5 2 ] [ 9 5 1 2 ] [ 9 5 2 1 ] recursiveSort(4) Kein swap mehr noetig... recursiveSort(3) 2 <- findLargest(2,3) Swap recursiveSort(2) 5 <- findLargest(1,3) Swap recursiveSort(1) 9 <- findLargest(0,3) Swap recursiveSort(0) Ist sortiert! Animation von Simon Mayer Liste absteigend sortiert! Raphael Fischer 27.11.2018

U2.A3 Wurzel an Index 0 Direkte Nachfolger von i an (2i + 1) und (2i + 2) int leftChild( node ){ return 2 * node + 1; } int rightChild( node ){ return 2 * node + 2; int father( node ){ return (node – 1) / 2; (father(0) = -1 / 2 = 0) Raphael Fischer 27.11.2018

U2.A3 b Prüfen des übergebenen Arrays: Teste: Jedes Element braucht einen Vater ("The root is its own father.”) Was passiert mit leeren Knoten? (Brauchen keinen Vater) private static void checkTree(char[] array) { if(array.length == 0) throw new IllegalArgumentException("Empty array is invalid tree!"); for(int i = 1; i < array.length; i++) if(array[father(i)] == ' ' && array[i] != ' ') throw new IllegalArgumentException("Node " + array[i] + " has no father"); } Raphael Fischer 27.11.2018

Überladung (gleicher Funktions- name, andere Argumente) U2.A3 c Überladung (gleicher Funktions- name, andere Argumente) public String toString() { return toString(0, ""); } private String toString(int node, String intendation) if(node >= tree.length || tree[node] == ' ') return ""; return intendation + tree[node] + "\n" + toString(leftChild(node), intendation + " ") + toString(rightChild(node), intendation + " "); Raphael Fischer 27.11.2018

Ausblick: Übungsblatt 3 Raphael Fischer 27.11.2018

Schleifeninvarianten 🙄 Mathematischer Ausdruck, der immer am Anfang (oder am Ende) der Schleife korrekt ist. Beispiel: int add(int a, int b) { int i = b; int e = a; while(i != 0){ e++; i--; } return e; e+b = a+b b+i = a+b e+i = a+b a+i = a+b i = 0 Raphael Fischer 27.11.2018

Schleifeninvarianten 🙄 Leider kein Patentrezept. -> Code verstehen 1c) Trickaufgabe. -> Wichtiges Detail Raphael Fischer 27.11.2018

U3.A2: String und StringBuffer Klasse String (immutable) Operationen können gut optimiert werden Aber: Modifikationen nur durch Kopie! Klasse StringBuffer (mutable) Veränderbar ohne Kopie Aber: Gewisse Operationen sind teuer! Demo: Immutable und Mutable Strings Raphael Fischer 27.11.2018

U3.A2 – String vs. StringBuffer Speicher "hello" " world" String myString = "hello"; myString = myString + " world"; "hello world" String-Konkatenation in Java StringBuffer myStringBuffer = "hello"; myStringBuffer.append(" world"); "hello" "hello world" " world" Methode von StringBuffer Raphael Fischer 27.11.2018

U3.A2 – String vs. StringBuffer Speicher "hello" " world" "hello world" " how" Garbage Collector "hello world how" String myString = "hello"; myString = myString+" world"; myString = myString+" how"; myString = myString+" are"; myString = myString+" you"; myString = myString+" today"; " are" "hello world how are" " you" "hello world how are you" Garbage Collector " today" "hello world how are you today" Animation von Beat Saurenmann Raphael Fischer 27.11.2018

U3.A2 Fehler im Code: Ändere import von Main.java: import u3a1.util.RandomString; import u3a2.util.RandomString; Raphael Fischer 27.11.2018

Syntaxdiagramme Was stellt das dar? Wie ändern, so dass Pinoccio mit bel. Nasenlänge darstellbar ist? Z.B. :--) oder ;------( oder ;) oder :-----------------------) Raphael Fischer 27.11.2018

Syntaxdiagramme Verzweigung: if() {…} else if (…) Oder if(… || …) {…} Pfeil zurück: Irgendeinen loop Raphael Fischer 27.11.2018

U3.A3 – Syntaxchecker für Bäume Implementierung eines Syntaxcheckers für Bäume Zuerst: Erweiterung der Baumsyntax auf leere Teilbäume Syntaxchecker: Je eigene Methode für Baum, Nachfolger und Knoten Lösungsansatz: public static int f(String str, int offset){...} Gebt jeweils den neuen Offset an die übergeordnete Funktion zurück. Überlegt euch, wie gross der Offset am Schluss sein muss und was passiert ist, falls er nicht genau diese Grösse hat. Hinweis: Lösung von 3a) muss mit eingebaut werden Mögliche Probleme und dazugehörige Lösungsansätze/Erklärungen: StringIndexOutOfBoundsException – ihr versucht auf den character n des Strings zuzugreifen, der Array ist aber weniger lang als n Informatik II - Übung 02 07.03.2012

…viel Spass! Informatik II - Übung 02 06.03.2013