Informatik II - Übung 07

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

368 4 Algorithmen und Datenstrukturen

13. Binäre Suchbäume

Geordnete Binärbäume

Tutorium Algorithmen & Datenstrukturen

Algorithmen und Datenstrukturen Suchbaum

Suchen und Sortieren

Informatik II. PVK Part1 Severin Wischmann n.ethz.ch/~wiseveri

Folge 19 - Bäume Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12

5.14 Generics. Xiaoyi Jiang Informatik I Grundlagen der Programmierung

Informatik II, SS 2014

Java Einführung Collections

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

Suchbäume. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

2 Java: Bäume. 2.1 Implementierung von Bäumen. 2.2 Implementierung eines binären Suchbaums. 2.3 Traversierung von Bäumen

Objektorientierte Programmierung

Teil V. Generics und Kollektionen in Java

Kap. 4.2: Binäre Suchbäume

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 13. Bäume. Bäume

Java Schulung. Objektorientierte Programmierung in Java Teil V: Die Java Collection Klassen. Prof. Dr. Nikolaus Wulff

Java: Vererbung. Teil 3: super()

Objektorientierte Programmierung

1 Polymorphie (Vielgestaltigkeit)

Datenstrukturen & Algorithmen

4. Jeder Knoten hat höchstens zwei Kinder, ein linkes und ein rechtes.

Gebundene Typparameter

Der linke Teilbaum von v enthält nur Schlüssel < key(v) und der rechte Teilbaum enthält nur Schlüssel > key(v)

Wiederholung ADT Menge Ziel: Verwaltung (Finden, Einfügen, Entfernen) einer Menge von Elementen

Java Einführung Abstrakte Klassen und Interfaces

Bäume, Suchbäume und Hash-Tabellen

Aufgabenblatt Nr. 5 Generizität und TicTacToe

Binäre Bäume Darstellung und Traversierung

Informatik II Bäume. Beispiele. G. Zachmann Clausthal University, Germany Stammbaum. Stammbaum. Stammbaum

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

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

Algorithmen und Datenstrukturen

8. Generics Grundlagen der Programmierung 1 (Java)

Suchbäume mit inneren Knoten verschiedener Knotengrade.

Kapiteltests zum Leitprogramm Binäre Suchbäume

Kapitel 9. Inner Classes. 9.1 Wiederholung: Iteratoren. Ausführen einer Operation auf allen Elementen einer Containerklasse

Schnittstellen implementieren am Beispiel Suchbaum

Typumwandlungen bei Referenztypen

JAVA KURS COLLECTION

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

Objektorientierte Programmierung

10. Kapitel (Teil1) BÄUME GRUNDLAGEN. Algorithmen & Datenstrukturen Prof. Dr. Wolfgang Schramm

Meeting C++ C++11 R-Value Referenzen

Klausur zur Einführung in die objektorientierte Programmierung mit Java

1. Einfach verkettete Liste unsortiert 2. Einfach verkettete Liste sortiert 3. Doppelt verkettete Liste sortiert

Höhere Programmierkonzepte Testklausur

VIII: Vererbung. Unterklassen einer Klasse. Vererbung von Methoden und Instanzvariablen. Überschreiben von Methoden

7. Objektorientierte Softwareentwicklung/3. Informatik II für Verkehrsingenieure

Informatik 11 Kapitel 2 - Rekursive Datenstrukturen

Einführung in die Programmierung

Vererbung. Vererbung von Methoden und Instanzvariablen. Vererbung als Realisierung einer is-a Beziehung.

Datenstrukturen und Algorithmen

Programmiertechnik II

Algorithmen und Datenstrukturen

AVL-Bäume Analyse. Theorem Ein AVL-Baum der Höhe h besitzt zwischen F h und 2 h 1 viele Knoten. Definition Wir definieren die nte Fibonaccizahl:

Schulinterner Lehrplan für das Fach Informatik der Sekundarstufe II an der Bettine von Arnim Gesamtschule

Funktionale Programmierung mit Haskell

Lernziele: Ausgleichstechniken für binäre Bäume verstehen und einsetzen können.

Informatik II Musterlösung

Type Erasure in Java 5. Helmi Jouini Institut für Theoretische Informatik Universität Karlsruhe

Java Schulung (Java 2 Java Development Kit 5 / 6)

Repetitorium Informatik (Java)

Algorithmen und Datenstrukturen SS09

Generische Datenstrukturen

12) Generische Datenstrukturen

Zusammenfassung: Programmieren 2 (C#)

Abstrakte Datentypen.

Proseminar: C# und.net. 6. Vortag Generische Klassen. Sebastian Wolf

Javakurs für Anfänger

Ich liebe Java && Ich liebe C# Rolf Borst

Tutoren Simon Andermatt Lukas Beck. Alexis Peter Thomas Ritter

Studentische Lösung zum Übungsblatt Nr. 7

Institut fu r Informatik

Theorie zu Übung 8 Implementierung in Java

Tutoren Jan Ebbe Pat Mächler Valentino Rugolo Sascha Scherrer. Grundlagen der Programmierung (CS101) - Blatt 8 Theorie [4 Punkte] - Praxis [12 Punkte]

Datenstruktur, die viele Operationen dynamischer Mengen unterstützt

Handbuch für die Erweiterbarkeit

12) Generische Datenstrukturen

Tutoraufgabe 1 (2 3 4 Bäume):

Idee: Wenn wir beim Kopfknoten zwei Referenzen verfolgen können, sind die Teillisten kürzer. kopf Eine Datenstruktur mit Schlüsselwerten 1 bis 10

Beispiel zu Datenstrukturen

Softwaretechnologie - Wintersemester 2012/ Dr. Günter Kniesel

Sortierte Folgen 250

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2013 / 2014 Vorlesung 11, Donnerstag, 16.

Name: Seite 2. Beantworten Sie die Fragen in den Aufgaben 1 und 2 mit einer kurzen, prägnanten Antwort.

Einstieg in die Informatik mit Java

Praktische Übung 'JUnit-Test'

Datenstrukturen & Algorithmen

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

Algorithmik II. a) Fügen Sie in einen anfangs leeren binären Baum die Schlüsselfolge 20, 28, 35, 31, 9, 4, 13, 17, 37, 25 ein.

Willkommen zur Vorlesung. Objektorientierte Programmierung Vertiefung - Java

2.4.3 Polymorphie (Wiederholung von Alp2)

Grundlagen der Programmierung Prof. H. Mössenböck. 14. Schrittweise Verfeinerung

Gegeben Zieladresse, finde Nachbarknoten, an den Paket zu senden ist ("Routing-Tabelle")

Transkript:

Informatik II - Übung 07 Katja Wolff katja.wolff@inf.ethz.ch

Besprechung Übungsblatt 6 Informatik II Übung 07 12.04.2017 2

Übungsblatt 6 1.) Klassen, Schnittstellen, Typumwandlung 2.) Schnittstellen und Implementierungen 3.) Polymorphie 4.) Stacks und Optimierung Informatik II Übung 07 12.04.2017 3

U6.A1: Klassen, Interfaces, Casts a) b) Instanziiert werden können: (D, E, F) Informatik II Übung 07 12.04.2017 4

U6.A1: Klassen, Interfaces, Casts Statischer Cast (implicit cast) Nur von Kindklasse zu Elternklasse public static void c1() { public static void c2() { public static void c3() D d = new D(); { public static void c4() A F a f = = d; new F(); { public static void c5() B A E b a e = = = d; f; new E(); { public static void c6() C B A B c b a b = = = = d; f; e; new D(); { E C B A C e c b a c = = = = = d; f; e; b; new D(); F D C C A C f d c c a c = = = = = = d; f; e; b; c; new F(); } E D D B A e d d b a = = = = = f; e; b; c; c; } F E D B f e d b = = = = e; b; c; c; } F E D f e d = = = b; c; c; } F E f e = = c; c; } F f = c; } Informatik II Übung 07 12.04.2017 5

U6.A1: Klassen, Interfaces, Casts Statischer Cast (implicit cast) Nur von Kindklasse zu Elternklasse Dynamisch (explicit cast) T t = (T)obj; Geht, falls obj vom Typ T ist (inkl. alle Kindertypen von T) public static void d1() { public static void d2() { public static void d3() A a = new D(); { B A b a = = (B) new a; E(); C B B c b b = = = (C) (B) new a; a; D(); D C A d c a = = = (D) (C) (A) a; a; b; E D C e d c = = = (E) (D) (C) a; a; b; F E D f e d = = = (F) (E) (D) a; a; b; } F E f e = = (F) (E) a; b; } } Informatik II Übung 07 12.04.2017 6

U6.A2: Implementierung von IStack a) Fabrikmethode: b) empty(): c) Test: public class StackFactory { public static IStack create() { //return new u6a4.chunkedstack(); return new ListStack(); } } public boolean empty(); @Test public void empty() { IStack stack = StackFactory.create(); Assert.assertTrue(stack.empty()); stack.push(42); Assert.assertFalse(stack.empty()); } Informatik II Übung 07 12.04.2017 7

U6.A3: ListUtils a) Fabrikmethode: praktisch wie in A2. Interface IListUtils muss in ListUtils implementiert werden: public interface IListUtils { public String tostring(genericlist list) public GenericList add(genericlist list, Object value); public int size(genericlist list); public GenericList insertsorted(genericlist list, Object value); public GenericList sort(genericlist list); } b) Einfach, wenn man a) verstanden hat. c) Nächste Folie: Informatik II Übung 07 12.04.2017 8

U6.A3: ListUtils /** * Inserts a value into a sorted list so that * the resulting list is still sorted. * The sort order is ascending. */ private GenericList insertsorted(genericlist list, Object value) { if (list == null) return new GenericList(value, null); Comparable lhs = (Comparable) value; Comparable rhs = (Comparable) list.value; if (lhs.smallerthan(rhs)) return new GenericList(value, list); generische Objekte Über Interfaces vergleichen } list.next = insertsorted(list.next, value); return list; Informatik II Übung 07 12.04.2017 9

Vorschau Blatt 7 Informatik II Übung 07 12.04.2017 10

U7.A1: Generics Was sind Generics? Vorteile? Beispiel: Liste mit Elementen vom Typ MyType Object obj = list.getnext(); If(obj instanceof MyType) dosomething((mytype)obj); MyType MyType next MyType next mylist next Informatik II Übung 07 12.04.2017 11

U7.A1: Generics Container ArrayList Zweifach geschachtelt Es gibt viele Gruppen ArrayList<ArrayList<Student>> groups; Eine Gruppe besteht aus Studenten ArrayList<Student> group Ziel: Filter, der abfragt, wer das Testat erhält Haltet euch an Aufgabentext Filter-Funktion besteht aus verschachelter Schleife, in der geprüft wird, ob der Student genügend Punkte hat. Ergebnis: Liste aller Studenten, die das Testat bestehen. Hinweis: Bei (b) müsst ihr einiges casten, bei (c) nicht mehr! Informatik II Übung 07 12.04.2017 12

U7.A2: Binärbäume Was ist ein Binärbaum? W Jeder Knoten enthält Zeiger auf: Linker Nachfolger Rechter Nachfolger (Vater) L R Verschiedene Traversierungen: Pre-order: W-L-R In-order: L-W-R Post-order: L-R-W Informatik II Übung 07 12.04.2017 13

Informatik II Übung 07 12.04.2017 14

U7.A2: Binäre Suchbäume Struktur Jeder Knoten hat... Ein Schlüsselattribut (key) Eine Referenz auf ein Datenelement (record) Verweise auf die Kinder (left, right) Evtl. Verweis auf das Elternelement (parent) Die Menge der Schlüsselattribute ist total geordnet (a b). Für jeden Knoten mit Schüsselattribut s gilt: Alle Schlüssel im linken Unterbaum sind kleiner als s Alle Schlüssel im rechten Unterbaum sind grösser als s Elementare Methoden (sh. Vorlesung): Suchen, Höhe berechnen, Einfügen, Löschen Informatik II Übung 07 12.04.2017 15

U7.A2: Tic-Tac-Toe-Spielbaum Und nun zur Aufgabe! Tic-Tac-Toe a) Baum für restlichen Verlauf des Spiels b) Markieren des Baumes bzgl. Aussicht auf Gewinn c) Könnt ihr gewinnen? Informatik II Übung 07 12.04.2017 16

U7.A3: Binäre Suchbäume a) Löschen von Elementen aus einem gegebenen Baum: Ersetzen durch kleinstes Element des rechten Teilbaums b) Implementierung! Implementieren von IBinarySearchTreeUtils<T> UtilsFactory.create() soll ein Utils-Objekt für den Typ String erzeugen new MyTreeUtils<String>() Folgende Methoden müssen implementiert werden (sh. Vorlesungsslides!): height, isleaf, hasonechild, preorder, inorder, postorder, insert, find, remove Informatik II Übung 07 12.04.2017 17

U7.A3: Binäre Suchbäume Aus der Vorlesung: Höhe eines Baumes rekursiv berechnen? Informatik II Übung 07 12.04.2017 18

U7.A3: Reversi!!! Serie von Aufgaben Spielregeln und weitere Infos: http://www.vs.inf.ethz.ch/edu/fs2017/i2/reversi Login für reversi-papers: username: i2bib password: reversi Turnier am Ende des Semesters Super Preise! Informatik II Übung 07 12.04.2017 19

U7.A3: Reversi Zunächst: Grundprinzipien Später: Strategien für den Computerspieler Spieltheorie Prüfungsrelevanter Stoff (MinMax, Alpha-Beta-Suche,...), der in der Reversi-Übung vertieft wird Informatik II Übung 07 12.04.2017 20

U7.A3: Reversi a) Aufsetzen des Frameworks Bindet die JavaDoc ein (muss in Eclipse explizit gemacht werden) Schaut euch die Möglichkeiten des Gameboards an Gameboard gb; Screenshot an mich b) Implementierung Random Player nextmove()-methode Gültiger Move? gb.checkmove() Informatik II Übung 07 12.04.2017 21

viel Spass! Informatik II Übung 07 10.04.2013 22