Raphael Fischer fischrap@student.ethz.ch 10.04.2014 Informatik II - Übung 07 Raphael Fischer fischrap@student.ethz.ch 10.04.2014.

Slides:



Advertisements
Ähnliche Präsentationen
Klassen - Verkettete Liste -
Advertisements

Spielbäume Richard Göbel.
Sortieren mit Binären Bäumen
Java: Dynamische Datentypen
Listen Richard Göbel.
Baumstrukturen Richard Göbel.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (13 – Offenes Hashing) Prof. Th. Ottmann.
Algorithmen und Datenstrukturen
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (07 - Skiplisten) Prof. Th. Ottmann.
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.
IKG - Übung Diskrete Mathe I – Jörg Schmittwilken
Diskrete Mathematik I Vorlesung 6 Binärer Suchbaum II.
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.
Entwurfsmuster – Iterator
Einführung in die Programmierung Datensammlung
Informatikunterricht mit Java
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,
Abteilung für Telekooperation Übung Softwareentwicklung 1 für Wirtschaftsinformatik Dr. Wieland Schwinger
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
University of Applied Sciences Übung Objektorientierte Programmierung II Dipl.-Inf. (FH) Markus Vogler.
Ch. Turnheer/ M. Vilanova 2002
Tutorium PG Verbesserung Blatt 5 Beim instanziieren eines Fahrrades muss es möglich sein, alle benötigten Attribute dem Konstruktor zu übergeben.
Einfach und doppelt verkettete Listen in JAVA by Jens Weibler
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Thomas Hilpold: Algorithmen und Datenstrukturen SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger.
Kapitel 6: Suchbäume und weitere Sortierverfahren
Softwareengineering Graphen und Bäume Teil II
Programmiervorkurs WS 2014/15 Methoden
3. Beschreibung von Abläufen durch Algorithmen 3.4 Zufall
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Programmierpraktikum Java SS 2005 Mag.Thomas Hilpold.
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas.
Algorithmen und Datenstrukturen 1 SS 2002
Institut für Kartographie und Geoinformation Diskrete Mathematik I Vorlesung Binärer Suchbaum I-
Binärbäume.
DER LETZTE STRICH Michael Plattner; Simon Hofer. Spielregeln Es werden fünf Zeilen lang Striche angeordnet In der untersten fünf Striche, dann vier, dann.
Pointer, Arrays und verkettete Listen. Mehrdimensionale Arrays  Pointer auf ein Array von Pointern  int32 **matrix = new int32*[3];  matrix: Zeiger.
Dr. Wolfram Amme, Generisches Programmieren, Informatik II, FSU Jena, SS Generisches Programmieren.
Vererbung in Java. public abstract class Form { protected int breite; protected int hoehe; protected String farbe; /** * Erzeuge eine Form der Breite.
Anforderungen an die neue Datenstruktur
Klausur „Diskrete Mathematik II“
Objektorientierung Gliederung von Daten und Funktionen zu Objekten
Zwei Denkansätze zur Klasse Schlange
Musterlösung zur Klausur "Diskrete Mathematik" vom
Diskrete Mathematik II
Felder in Java.
Allgemeine Befehle für die allgemeine Liste
Grundkurs Informatik 11-13
Gruppe 2 Carina Fuss Informatik II – Übung 4 Gruppe 2 Carina Fuss Carina Fuss
Raphael Fischer Informatik II - Übung 11 Raphael Fischer
Raphael Fischer Informatik II - Übung 03 Raphael Fischer
Raphael Fischer Informatik II - Übung 06 Raphael Fischer
SS 04 Christiane Rauh Christian Hellinger
Raphael Fischer Informatik II - Übung 05 Raphael Fischer
Raphael Fischer Informatik II - Übung 08 Raphael Fischer
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
2. Die rekursive Datenstruktur Baum 2.2 Suchen und Einfügen
Datenstrukturen und Softwareentwicklung
3. Die Datenstruktur Graph 3.3 Durchlaufen von Graphen
1. Die rekursive Datenstruktur Liste 1.6 Die Datenstruktur Stapel
2.4 Durchlaufen von Bäumen
1. Die rekursive Datenstruktur Liste 1
Informatik Softwareentwicklung – 4.3 Entwurfsmuster
Juli 19 Informatik Kurse
Informatik II – Übung 4 Gruppe 3
2. Die rekursive Datenstruktur Baum 2.3 Baum und Kompositum
 Präsentation transkript:

Raphael Fischer fischrap@student.ethz.ch 10.04.2014 Informatik II - Übung 07 Raphael Fischer fischrap@student.ethz.ch 10.04.2014

Heute ArrayList und Generics Spielbäume Binäre Suchbäume Reversi Raphael Fischer 27.11.2018

ArrayList und Generics Raphael Fischer 27.11.2018

ArrayList Wie Array, aber kann mehr: Kann Array nicht import java.util.ArrayList;    ArrayList array = new ArrayList(5);   array.set(2, ";-)");   String contentOf2 = (String)array.get(2);   array.add("Hi there!");  Kann Array nicht Raphael Fischer 27.11.2018

ArrayList + Generics Mit Generics: Integers: import java.util.ArrayList;    ArrayList<String> array = new ArrayList<String>(5);   array.set(2, ";-)");   String contentOf2 = array.get(2);   array.add("Hi there!"); Integers: ArrayList<Integer> array = new ArrayList<Integer>(5);   Keine primitiven Typen möglich Integer verwenden, wie int benutzen Raphael Fischer 27.11.2018

Eigene Klasse mit Generics class GenericList<T>{       GenericList<T> next;       T value;          public GenericList(T value, GenericList<T> next){           this.value = value;           this.next = next;       }   }   Einfach T wie Klassenname benutzen Raphael Fischer 27.11.2018

Vererbung mit Generics class BinarySearchTreeUtils<T> implements IBinarySearchTreeUtils<T> Raphael Fischer 27.11.2018

Spielbäume Raphael Fischer 27.11.2018

U7.A2: Spielbäume (Beispiel) Nimm 1 oder 2 Streichhölzer. Wer das letzte Streichholz nimmt, verliert 9 I I I I I I I I I I 1 2 Endsituation, in diesem Fall auch gleichzeitig Gewinner Raphael Fischer 27.11.2018

U7.A2: Spielbäume markieren Markieren: Bei Blättern anfangen 1 Sieg, -1 Niederlage Wie obere Knoten markieren? Annahme: Beide Spieler spielen optimal Frage bei jeder Spielsituation: Gegeben diese Situation und Ich (bzw. der Gegner) ist dran, was wird herauskommen? Raphael Fischer 27.11.2018

U7.A2: Tic-Tac-Toe Raphael Fischer 27.11.2018

U7.A3 Binäre Suchbäume Jeder Knoten enthält: Key Thing (Generic) Zeiger auf linken Nachfolger Zeiger auf rechten Nachfolger Key(linker Nachfolger) < Key Key(rechter Nachfolger) > Key Raphael Fischer 27.11.2018

U7.A3: Tree Utils: Einfache Methoden public int height(BinarySearchTree<T> tree);    public boolean isLeaf(BinarySearchTree<T> tree);   public boolean hasOneChild(BinarySearchTree<T> tree);   Slide 653 Raphael Fischer 27.11.2018

U7.A3 Tree Utils: Pre- / In- / Post-order PreOrder: Bearbeite eigenen Knoten PreOrder(linker Knoten) PreOrder(rechter Knoten) InOrder: InOrder(linker Knoten) Bearbeite eigenen Knoten InOrder(rechter Knoten) PostOrder: PostOrder(linker Knoten) PostOrder(rechter Knoten) Bearbeite eigenen Knoten Knoten „bearbeiten“: Ausgeben An Liste anhängen Etc. Raphael Fischer 27.11.2018

U7.A3 Tree Utils Aufgabe public ArrayList<T> preOrder(BinarySearchTree<T> tree);  public ArrayList<T> inOrder(BinarySearchTree<T> tree);   public ArrayList<T> postOrder(BinarySearchTree<T> tree);    Tipps: ArrayList<T> list = new ArrayList<T>();   list.add(object);   list.addAll(anotherArrayList);   list.get(index);   list.set(index, object);   Raphael Fischer 27.11.2018

U7.A3 – Tree Utils public BinarySearchTree<T> insert(BinarySearchTree<T> tree, int key, T thing);   -> Immer als Blatt einfügen, siehe Slide 658 public T find(BinarySearchTree<T> tree, int key);    public BinarySearchTree<T> remove(BinarySearchTree<T> tree, int key);  Wenn Element gefunden und... …es keinen oder einen Nachfolger hat: Einfach aushängen …es zwei Nachfolger hat: Hänge kleinstes Element in rechtem Teilbaum aus Finde dazu Element, wo tree.left.left == null (Hilfsfunktion!) Raphael Fischer 27.11.2018

U7.A4: Reversi! 😍 Serie von Aufgaben Spielregeln und weitere Infos: http://www.vs.inf.ethz.ch/edu/FS2017/I2/reversi Login für Literatur: username: i2bib password: reversi Turnier am Ende des Semesters Super Preise! Raphael Fischer 27.11.2018

U7.A4: 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 Raphael Fischer 27.11.2018

U7.A4: Reversi! 😍 Nur in Eclipse möglich Setup: Folgt Anleitung aus Übung Raphael Fischer 27.11.2018

U7.A4: Reversi! 😍 Implementierung „Random Player“ Neue Klasse: Ändert Run-Configurations Schaut euch die Möglichkeiten des Gameboard gb; an Ändert nextMove(GameBoard gb) Gültiger Move? gb.checkMove(int color, Coordinates c) Dann: Zufallsauswahl Raphael Fischer 27.11.2018

…viel Spass! 10.04.2013 Informatik II - Übung 06