Informatik II - Übung 08

Größe: px
Ab Seite anzeigen:

Download "Informatik II - Übung 08"

Transkript

1 Informatik II - Übung 08 Christian Beckel [email protected] U7.A1: IFilter public ArrayList filterraw( ArrayList groups ) dynamic ArrayList result = new ArrayList(); cast for( int i = 0; i < groups.size(); i++ ) ArrayList group = (ArrayList) groups.get(i); for( int j = 0; j < group.size(); j++ ) Student student = (Student) group.get(j); if( filter( student ) ) result.add( student ); return result; Christian Beckel 17/04/14 2

2 U7.A1: IFilter public ArrayList<Student> filtergeneric(arraylist<arraylist<student>> groups) ArrayList<Student> result = new ArrayList<Student>(); for( int i = 0; i < groups.size(); i++ ) ArrayList<Student> group = groups.elementat(i); for( int j = 0; j < group.size(); j++ ) Student student = group.elementat(j); if( filter( student ) ) result.add( student ); return result; Christian Beckel 17/04/14 3 U7.A1: IFilter Helfermethode private boolean filter(student student) return student.getpoints() >= (IFilter.criteria / 100 * IFilter.maxNumberofPoints); Christian Beckel 17/04/14 4

3 For-each loop! Iteration über Arrays und Collections The core collections in Java Über alles, was das Iterable<E> Interface implementiert! Geht auch für eigene Datenstrukturen public ArrayList<Student> filtergeneric( ArrayList<ArrayList<Student>> groups ) ArrayList<Student> result = new ArrayList<Student>(); for(arraylist<student> group : groups ) for( Student student : group ) if( filter( student ) ) result.add( student ); return result; Christian Beckel 17/04/14 5 Beispiel for-each loop Equivalent for loop for( type var : arr ) //body of loop = for( int i = 0; i < arr.length; i++) type var = arr[i]; //body of loop for( type var : coll ) //body of loop = for( Iterator<type> iter = coll.iterator(); iter.hasnext(); ) type var = iter.next(); //body of loop leer! Christian Beckel 17/04/14 6

4 Bedingungen Although the enhanced for loop can make code much clearer, it can't be used in some common situations.! Only access. Elements can not be assigned to, e.g., not to increment each element in a collection.! Only single structure. It's not possible to traverse two structures at once, e.g., to compare two arrays.! Only single element. Use only for single element access, e.g., not to compare successive elements.! Only forward. It's possible to iterate only forward by single steps.! At least Java 5. Don't use it if you need compatibility with versions before Java 5. Christian Beckel 17/04/14 7 U7.A2 IBinarySearchTreeUtils! Typ T : Unbekannt, egal... public class TreeUtils<T> extends IBinarySearchTreeUtils<T> //... public int height(binarysearchtree<t> tree) if (tree == null) return 0; return 1 + Math.max(height(tree.left), height(tree.right)); //... Rest in Eclipse Christian Beckel 17/04/14 8

5 U7.A3 Random Player private Random rand = new Random(); //ausserhalb nextmove!!! public Coordinates nextmove( GameBoard gb ) Coordinates coord = null; ArrayList<Coordinates> validmoves = new ArrayList<Coordinates>( gb.getsize() * gb.getsize() ); System.out.print( "RandomPlayer" ); for( int row = 1; row <= gb.getsize(); row++ ) for( int col = 1; col <= gb.getsize(); col++ ) coord = new Coordinates(row, col); if( gb.checkmove( color, coord ) ) validmoves.add( coord ); if( validmoves.isempty() ) return null; int randindex = rand.nextint( validmoves.size() ); return validmoves.elementat( randindex ); Christian Beckel 17/04/14 9 Vorschau Übungsblatt 8 38 Punkte 2 Wochen Zeit Christian Beckel 17/04/14 10

6 Überblick 1) Binäre Suche (11 Punkte, Theorie & Praxis) 2) Tic-Tac-Toc-Spielbaum (5 Punkte) 3) Reversi: CheckMove() & Steine zählen 4) Rucksackproblem: Backtacking Christian Beckel 17/04/14 11 Zunächst: Datenstruktur Maps! Oft werden indizierte Daten benötigt! Personalien nach AHV-Nummer (unique id)! Dokumente nach Identifier (z.b. file name)! Dies wird möglich durch Maps! Identifier (Key) wird auf Inhalt (Value) "gemappt"! In der Java-Standardbibliothek! interface Map<Key extends Comparable<Key>, Value>! Implementationen: TreeMap, TreeMap,! Bsp.: Map<Integer, String> m = new HashMap<Integer, String>(); Christian Beckel 17/04/14 12

7 U8.A1: Binäre Suche " Binary Search Algorithm (illustrated) " Entscheidungsbaum 15 # $ # 22 $ query: 16 return: null query: 23 return: "23" Christian Beckel 17/04/14 13 U8.A1: Binäre Suche! Entscheidungsbaum zeichnen! Entscheidungsbäume übereinanderlegen Implementierung:! find(list<unit<key, Value>> haystack, Key needle)! setfactor(int factor)! Verallgemeinern der Suche $ nun auch unbalancierte Suchbäume! getnumberofcalls()! Benchmarking mit verschiedenen Faktoren! Durschnittliche Zahl (rekursiver) Aufrufe für verschiedene Faktoren Christian Beckel 17/04/14 14

8 U8.A2: Tic-Tac-Toe! Spielbaum zeichnen! Überlegt euch, wie das Attribut eines Knotens auf Basis der Attribute der Nachfolger berechnet wird, wenn Ihr bzw. der Gegner an der Reihe seid. Christian Beckel 17/04/14 15 U8.A3: Reversi (Teil 3) HumanPlayer RandomPlayer GreedyPlayer nextmove(): wartet auf Eingabe von der Kommandozeile nextmove(): wählt einen zufälligen (aber gültigen!) nächsten Zug nextmove(): wählt nächsten Zug anhand einer einfachen, nicht-rekursiven Bewertungsfunktion Download Übungsserie 7 Übungsserie 8 Christian Beckel 17/04/14 16

9 U8.A3: Reversi! Implementation von ICheckMove ohne das Framework! Ideen?! Implementieren eines Spielers, der unter allen möglichen Zügen den besten auswählt! Bester Zug: Zug, nach dessen Durchführung man maximal mehr Steine besitzt als der Gegner Christian Beckel 17/04/14 17 U8.A3: checkmove() boolean checkmove(gameboard gb, int player, Coordinates c) // Überprüfe alle Richtungen // Solange nicht mindestens eine Richtung gültig ist //... // GameBoard.checkMove darf nicht verwendet werden! Christian Beckel 17/04/14 18

10 U8.A3: greedyplayer()! Einfacher Computergegner! Denktiefe : 1 $ kein Spielbaum nötig!! Bewertungsfunktion: Unterschied der Steine nach dem Zug! Tipps! Ermitteln des besten Zugs 1) Board kopieren (ein GameBoard kann mit gb.clone() kopiert werden) 2) Einen möglichen Zug ausführen (Ihr dürft GameBoard.checkMove() hier verwenden) 3) Zählen (z.b. in Methode eval()) und besten Zug merken! Mit einer etwas intelligenteren Bewertungsfunktion schon ein ziemlicher Gegner Christian Beckel 17/04/14 19 U8.A4: Rucksackproblem und Backtracking x2 g2, w2 x3 g3, w3 x1 g1, w1 x4 g4, w4 x5 g5, w5 Christian Beckel 17/04/14 20

11 Rucksackproblem x1 g1, w1 x2 g2, w2 x3 g3, w3 x4 g4, w4! Problembeschreibung:! k Gegenstände x1,..., xk; Jeweils bekannter Wert und Gewicht! Auswahl von Gegenständen, so dass Gesamtgewicht nicht überschritten wird! Optimierungsproblem: Maximieren des Wertes der ausgewählten Gegenstände x5 g5, w5! Übungsblatt! Theorie! Bruteforce-Ansatz! Backtracking-Ansatz! Vergleich von Bruteforce und Backtracking Christian Beckel 17/04/14 21 Denken in Teilmengen!! Wie viele unterschiedlichen Möglichkeiten hat unser Dieb?! M = Menge der verfügbaren Gegenständen! Der Dieb kann nur eine Teilmenge davon nach Hause bringen! Der Dieb kann auch die leere Menge Ø (fauler Dieb) oder die gesamte Menge M (starker Dieb mit grossem Sack) schaffen!! Beispiel: Christian Beckel 17/04/14 22

12 Christian Beckel 17/04/14 23 Christian Beckel 17/04/14 24

13 Warum? Warum? Christian Beckel 17/04/14 25 U8.A4! Diebstrategie (zu implementieren) 1. Initialisierung 2. Nimm nächste Konfiguration (wie genau?) 3. Berechne das gesamte Gewicht if (gesamtes Gewicht < G) berechne Gesamtwert if (neuer Gesamtwert > Gesamtwert aktuelle optimale Lösung) aktuelle Konfiguration ist neue optimale Lösung 4. Falls noch Konfigurationen übrig, gehe zu Punkt 2 else Berechnung fertig! Liefert die Strategie das optimale Ergebnis?! Gibt es genau eine optimale Lösung? Christian Beckel 17/04/14 26

14 U8.A4 - Bitwertigkeit! Konfiguration als Bitfolge: class Selection! Die Bitwertigkeit bezeichnet den Stellenwert eines einzelnen Bits, den es durch seine Position innerhalb einer Binärzahl hat. Christian Beckel 17/04/14 27 U8.A4: Bruteforce ist einfach public Selection findbest(arraylist<integer> values, ArrayList<Integer> weights, int maxweight)... int last = java.math.pow(2, values.size()); //Anzahl der Teilmengen for( int i = 0; i < last; i++ ) new Selection(values.size(), i); //Selection Bitfeld mit Wert i Christian Beckel 17/04/14 28

15 U8.A4: Backtracking ist schwieriger! Klasse FindResult: Enthält Selection und Value! Rekursive Methode: FindResult fr = find(currselection, currweight, values, weights, maxweight);! Abbruchbedingung: selection.size() == values.size(); // alle Werte im Rucksack! In der Methode zwei mögliche Richtungen zum Weitergehen: //Gegenstand nicht mitnehmen... Selection without = new Selection(...); //um eins vergrössern, bit auf 0 setzen... //prüfen ob Gewicht passt, dann Gegenstand mitnehmen... Selection with = new Selection(...); //um eins vergrössern, bit auf 1 setzen...! In beiden Fällen rekursiver Aufruf (s.o.) Christian Beckel 17/04/14 29 U8.A4: Tipps! class Selection verstehen und verwenden!! Achtung: bei Vergrösserung der Konfiguration (neuen Gegenstand in den Sack legen) muss der neue Stellenwert initialisiert werden: new Selection(depth + 1, selection.bits()); Die neue Selection ist nun um ein Element größer und enthält den Inhalt der alten Selection. Christian Beckel 17/04/14 30

16 viel Spass! Christian Beckel 17/04/14 31

Informatik II - Übung 08

Informatik II - Übung 08 Informatik II - Übung 08 Katja Wolff [email protected] Übungsblatt 7 Informatik II Übung 08 26.04.2017 2 U7.A1: IFilter public ArrayList filterraw( ArrayList groups ) { ArrayList result = new ArrayList();

Mehr

Informatik II (D-ITET) Übungsstunde 8,

Informatik II (D-ITET) Übungsstunde 8, Informatik II (D-ITET) Übungsstunde 8, 27.04.2017 Hossein Shafagh, [email protected] Distributed Systems Group, ETH Zürich The Heartbleed Bug *http://heartbleed.com/ 2 Ablauf Besprechung von Übung 7

Mehr

Informatik II - Übung 07. Christian Beckel

Informatik II - Übung 07. Christian Beckel Informatik II - Übung 07 Christian Beckel [email protected] 15.04.2015 Heute Besprechung Blatt 06 Demo: Objektorientierte Programmierung Hinweise zu Blatt 07 Christian Beckel 15/04/15 2 Besprechung Übungsblatt

Mehr

Informatik II Übung 9

Informatik II Übung 9 Informatik II Übung 9 Florian Scheidegger [email protected] Folien mit freundlicher Genehmigung adaptiert von Gábor Sörös und Simon Mayer [email protected], [email protected] Informatik

Mehr

Informatik II Übung 8 Gruppe 3

Informatik II Übung 8 Gruppe 3 Informatik II Übung 8 Gruppe 3 Leyna Sadamori [email protected] Informatik II Übung 8 Leyna Sadamori 26. April 2017 1 Debriefing Übung 7 2 U7A1 Generics Grundprinzip sehr simpel Iteration über

Mehr

Informatik II Übung 8. Pascal Schärli

Informatik II Übung 8. Pascal Schärli Informatik II Übung 8 [email protected] Was gibts heute? Warm-Up Nachbesprechung Serie 7 Best-Of Vorlesung: Binäre Suche Key-Value Paare Backtracking Vorbesprechung Serie 8 2 Warm - Up Warm - Up

Mehr

Informatik II Übung 09

Informatik II Übung 09 Informatik II Übung 09 Michael Baumann [email protected] n.ethz.ch/~mbauman 04.05.2015 Ablauf 1) Nachbesprechung Serie 8 2) Minimax & Alpha-Beta 3) Vorbesprechung Serie 9 2 Serie 8 3 Aufgabe 1 a,

Mehr

Informatik II Übung 8

Informatik II Übung 8 Informatik II Übung 8 Gruppe 2 Carina Fuss [email protected] 25.4.2018 Carina Fuss 25.4.2018 1 Übung 8 Nachbesprechung Übung 7 Vorbesprechung Übung 8 binäre Suche Backtracking anhand vom Rucksackproblem

Mehr

Informatik II Übung 09. Benjamin Hepp 3 May 2017

Informatik II Übung 09. Benjamin Hepp 3 May 2017 Informatik II Übung 09 Benjamin Hepp [email protected] 3 May 2017 Nachbesprechung U8 3 May 2017 Informatik II - Übung 01 2 Nachbesprechung U8 1. Binaere Suche 2. Knapsack Problem 3. Reversi Teil

Mehr

Informatik II Übung 9. Pascal Schärli

Informatik II Übung 9. Pascal Schärli Informatik II Übung 9 [email protected] Was gibts heute? Warm-Up Nachbesprechung Serie 8 Best-Of Vorlesung: Minimax Alpha Beta Vorbesprechung Serie 9 Info zur Auffahrt 2 Warm - Up Warm-Up (Basisprüfung

Mehr

Informatik II Übung 9

Informatik II Übung 9 Informatik II Übung 9 Katja Wolff [email protected] 1 Othelligence Event Program: Game strategies and game theory Duell Human (German Champion) vs. Machine Panel Apéro Time: Friday, 19.05.2017, 16:00

Mehr

Informatik II - Übung 07

Informatik II - Übung 07 Informatik II - Übung 07 Katja Wolff [email protected] Besprechung Übungsblatt 6 Informatik II Übung 07 12.04.2017 2 Übungsblatt 6 1.) Klassen, Schnittstellen, Typumwandlung 2.) Schnittstellen und

Mehr

Informatik II Übung 7. Pascal Schärli

Informatik II Übung 7. Pascal Schärli Informatik II Übung 7 [email protected] 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

Mehr

Informatik II Übung 9 Gruppe 3

Informatik II Übung 9 Gruppe 3 Informatik II Übung 9 Gruppe 3 Julia Gygax [email protected] Julia Gygax 02.05.2018 1 Administratives Am 23. Mai beginnt die Übung erst um 13.15 Julia Gygax 02.05.2018 2 Warm up Spielbaum / Generics

Mehr

Informatik II Übung 7. Gruppe 2 Carina Fuss

Informatik II Übung 7. Gruppe 2 Carina Fuss Informatik II Übung 7 Gruppe 2 Carina Fuss [email protected] 18.4.2018 Carina Fuss 16.4.2018 1 Übung 7 Hinweise zum Programmieren Nachbesprechung Übung 6 Vorbesprechung Übung 7 ArrayList und Generics

Mehr

Informatik II Übung 7

Informatik II Übung 7 Informatik II Übung 7 Florian Scheidegger [email protected] Folien mit freundlicher Genehmigung adaptiert von Gábor Sörös und Simon Mayer [email protected], [email protected] 18.04.2013

Mehr

Informatik II - Übung 11

Informatik II - Übung 11 Informatik II - Übung 11 Christian Beckel [email protected] 15.05.2014 Blatt 10 1) Merge sort 2) Türme von Hanoi 3) Reversi: alpha-beta-suche Außerdem: Sortierverfahren und ihre Komplexität Christian

Mehr

Informatik II (D-ITET)

Informatik II (D-ITET) Informatik II (D-ITET) [email protected] Distributed Systems Group, ETH Zürich Informatik II (D-ITET) 1 Ablauf Nachbesprechung Übung 6 Besprechung der Vorlesung Die neue Serie... Zeit zum Programmieren

Mehr

Informatik II - Übung 11

Informatik II - Übung 11 Informatik II - Übung 11 Katja Wolff [email protected] Blatt 10 1) Merge sort 2) Türme von Hanoi 3) Reversi: alpha-beta-suche Außerdem: Sortierverfahren und ihre Komplexität Informatik II Übung 11

Mehr

Informatik II - Übung 10

Informatik II - Übung 10 Informatik II - Übung 10 Katja Wolff [email protected] U9.A1: Mini-Max-Algorithmus Strategie von MAX 4 Höhe: 4 Suchtiefe: 3 bester Zug: links MAX 4 0-2 MIN 4 7 3 0 2-2 8 MAX 7-5 2 1 7 8 MIN Informatik

Mehr

Informatik II - Übung 10

Informatik II - Übung 10 Informatik II - Übung 10 Christian Beckel [email protected] 08.05.2014 Blatt 08 1) Binäre Suche 2) TicTacToe 3) Reversi: checkmove() & GreedyPlayer 4) Backtracking Christian Beckel 09/05/14 2 U8.A3: checkmove()

Mehr

Informatik II Übung 7 Gruppe 3

Informatik II Übung 7 Gruppe 3 Informatik II Übung 7 Gruppe 3 Julia Gygax [email protected] Julia Gygax 18.04.2018 1 Nachbesprechung Übung 6 Julia Gygax 18.04.2018 2 Aufgabe 1 Klassen, Schnittstellen und Typumwandlungen Julia Gygax

Mehr

Informatik II (D-ITET) Übungsstunde 11,

Informatik II (D-ITET) Übungsstunde 11, Informatik II (D-ITET) Übungsstunde 11, 17.05.2017 Hossein Shafagh, [email protected] Distributed Systems Group, ETH Zürich Ablauf Besprechung von Übung 10 Hinweise für Übung 11 (Sortieren, O-Notation)

Mehr

1. Die rekursive Datenstruktur Liste

1. Die rekursive Datenstruktur Liste 1. Die rekursive Datenstruktur Liste 1.3 Rekursive Funktionen Ideen zur Bestimmung der Länge einer Liste: 1. Verwalte ein globales Attribut int laenge. Fügt man ein Element zur Liste oder löscht es, wird

Mehr

Aufgabe11. Methode test1. import java.util.hashmap; import java.util.arraylist; public class Aufgabe11 {

Aufgabe11. Methode test1. import java.util.hashmap; import java.util.arraylist; public class Aufgabe11 { Hochschule Harz Programmierung1 Aufgabe 10: FB Automatisierung und Informatik Dipl.-Inf. Dipl.-Ing. (FH) M. Wilhelm Programmierung 1 für MI / WI Thema: Hashing und Generische Klassen Versuchsziele Kenntnisse

Mehr

IT I: Heute. abstrakte Methoden und Klassen. Interfaces. Interfaces List, Set und Collection IT I - VO 7 1

IT I: Heute. abstrakte Methoden und Klassen. Interfaces. Interfaces List, Set und Collection IT I - VO 7 1 IT I: Heute abstrakte Methoden und Klassen Interfaces Interfaces List, Set und Collection 22.11.2018 IT I - VO 7 1 Wissensüberprüfung Überschreiben von Methoden: Aufruf der Methode der Oberklasse ist oft

Mehr

Übungsserie Nr. 6. Ausgabe: 1. April 2015 Abgabe: 15. April Hinweise

Übungsserie Nr. 6. Ausgabe: 1. April 2015 Abgabe: 15. April Hinweise Informatik II (D-ITET) Frühjahrssemester 2015 Prof. Friedemann Mattern Christian Beckel ([email protected]) ETH Zürich Institut für Pervasive Computing Gruppe für Verteilte Systeme http://vs.inf.ethz.ch

Mehr

Software Entwicklung 1. Fallstudie: Arithmetische Ausdrücke. Rekursive Klassen. Überblick. Annette Bieniusa / Arnd Poetzsch-Heffter

Software Entwicklung 1. Fallstudie: Arithmetische Ausdrücke. Rekursive Klassen. Überblick. Annette Bieniusa / Arnd Poetzsch-Heffter Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter Fallstudie: Arithmetische Ausdrücke AG Softech FB Informatik TU Kaiserslautern Bieniusa/Poetzsch-Heffter Software Entwicklung 1 2/ 33 Überblick

Mehr

Informatik II Übung 2. Gruppe 4. Lukas Burkhalter (Folien teils von Christian B. und Leyna S.)

Informatik II Übung 2. Gruppe 4. Lukas Burkhalter (Folien teils von Christian B. und Leyna S.) Informatik II Übung 3 Gruppe 4 (Folien teils von Christian B. und Leyna S.) Lukas Burkhalter [email protected] Informatik II Übung 2 Lukas Burkhalter 14. März 2018 1 Ablauf der Übung Nachbesprechung der

Mehr

Listen. Prof. Dr. Christian Böhm. in Zusammenarbeit mit Gefei Zhang. WS 07/08

Listen. Prof. Dr. Christian Böhm. in Zusammenarbeit mit Gefei Zhang.  WS 07/08 Listen Prof. Dr. Christian Böhm in Zusammenarbeit mit Gefei Zhang http://www.dbs.ini.lmu.de/lehre/nfinfosw WS 07/08 2 Ziele Standardimplementierungen für Listen kennenlernen Listeniteratoren verstehen

Mehr

1. Die rekursive Datenstruktur Liste

1. Die rekursive Datenstruktur Liste 1. Die rekursive Datenstruktur Liste 1.4 Methoden der Datenstruktur Liste Die Warteschlange (Queue) ist ein Sonderfall der Datenstruktur Liste. Bei der Warteschlange werden Einfügen und Entfernen nach

Mehr

Anweisungen zur Ablaufsteuerung

Anweisungen zur Ablaufsteuerung Anweisungen zur Ablaufsteuerung if-else switch while do-while for Ausdrücke Ein Ausdruck ist eine Folge von Variablen, Operatoren und Methodenaufrufen, der zu einem einzelnen Wert ausgewertet wird. Operanden

Mehr

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1. Kapitel 11. Listen. Listen

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1. Kapitel 11. Listen. Listen Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1 Kapitel 11 Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 2 Ziele Implementierungen für

Mehr

Problem: Was ist, wenn der Stapel voll ist? Idee: Erzeuge dynamisch ein grösseres Array und kopiere um. Dynamische Anpassung der Größe

Problem: Was ist, wenn der Stapel voll ist? Idee: Erzeuge dynamisch ein grösseres Array und kopiere um. Dynamische Anpassung der Größe Maximale Größe?! Problem: Was ist, wenn der Stapel voll ist? Idee: Erzeuge dynamisch ein grösseres Array und kopiere um Dynamische Anpassung der Größe Praktische Informatik I, HWS 2009, Kapitel 10 Seite

Mehr

Kapitel zu bearbeitende Aufgaben: 6.1 bis :

Kapitel zu bearbeitende Aufgaben: 6.1 bis : Kapitel 6.3.1 1. zu bearbeitende Aufgaben: 6.1 bis 6.5 6.1: 6.2: === Day 23 === 9: pause 10: 11: 12: 13: lunch 14: 15: 16: 17: meeting 6.3: 6.4: PRG1_OOP8_ALG3_SS.docx Seite 1 von 10 http://hslu.ximit.ch

Mehr

Informatik II Übung 2

Informatik II Übung 2 Informatik II Übung 2 Florian Scheidegger [email protected] Folien mit freundlicher Genehmigung adaptiert von Gábor Sörös und Simon Mayer [email protected], [email protected] 7.3.2013

Mehr

Programmieren in Java

Programmieren 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

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Java Generics und Java API (1/2) Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck https://www.itm.uni-luebeck.de/people/fischer Datenstrukturen In vielen Sprachen

Mehr

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 16/17. Kapitel 13. Listen. Listen 1

Einfü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

Mehr

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 15/16. Kapitel 12. Listen. Listen 1

Einfü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

Mehr

Anwendungsbeispiel MinHeap

Anwendungsbeispiel MinHeap Anwendungsbeispiel MinHeap Uns seien n ganze Zahlen gegeben und wir möchten darin die k größten Zahlen bestimmen; zudem gelten, dass n deutlich größer als k ist Wir können das Problem mit Laufzeit in O(n

Mehr

Kasparov versus Deep Blue. Till Tantau. Institut für Theoretische Informatik Universität zu Lübeck

Kasparov versus Deep Blue. Till Tantau. Institut für Theoretische Informatik Universität zu Lübeck Kasparov versus Deep Blue Institut für Theoretische Informatik Universität zu Lübeck 18. Vorlesung zu Informatik A für MLS 14. Dezember 2006 Die Lernziele der heutigen Vorlesung und der Übungen. 1 Das

Mehr

UE Algorithmen und Datenstrukturen 1 UE Praktische Informatik 1. Übung 3

UE Algorithmen und Datenstrukturen 1 UE Praktische Informatik 1. Übung 3 UE Algorithmen und Datenstrukturen 1 UE Praktische Informatik 1 Übung 3 Algorithmen mit Gedächtnis Besonderheit Beispiele Typische Algorithmen Realisierungsvarianten Institut für Pervasive Computing Johannes

Mehr

19. STL Container Programmieren / Algorithmen und Datenstrukturen 2

19. STL Container Programmieren / Algorithmen und Datenstrukturen 2 19. STL Container Programmieren / Algorithmen und Datenstrukturen 2 Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt Wintersemester 2012 / 2013 1 Agenda Kontrollfragen STL Container: Übersicht

Mehr

ÜBUNGS-BLOCK 8 AUFGABEN

ÜBUNGS-BLOCK 8 AUFGABEN ÜBUNGS-BLOCK 8 AUFGABEN Aufgabe 1: Gegeben sind drei Klassen (linke Spalte) sowie ein Programm (rechts): public class A { this.var = var; public int getvar() { return var; public class Programm { public

Mehr

Universität München, Hans-Peter Kriegel und Thomas Seidl Informatik II a[0] a[1] a[2] a[3] a[n 1]

Universität München, Hans-Peter Kriegel und Thomas Seidl Informatik II a[0] a[1] a[2] a[3] a[n 1] Universität München, Hans-Peter Kriegel und Thomas Seidl Informatik II -108 Kapitel 5: Arrays Einführung Ein Array ist eine Reihung gleichartiger Objekte. a: a[0] a[1] a[2] a[3] a[n 1] Bezeichner a steht

Mehr

Einfache Arrays. Dr. Philipp Wendler. Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung

Einfache Arrays. Dr. Philipp Wendler. Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung Dr. Philipp Wendler Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung WS18/19 https://www.sosy-lab.org/teaching/2018-ws-infoeinf/ Arrays: Wiederholung Ein

Mehr

Teil V. Generics und Kollektionen in Java

Teil V. Generics und Kollektionen in Java Teil V Generics und Überblick 1 Parametrisierbare Datenstrukturen in Java 2 Prof. G. Stumme Algorithmen & Datenstrukturen Sommersemester 2009 5 1 Parametrisierbare Datenstrukturen in Java Motivation für

Mehr

Wie entwerfe ich ein Programm?

Wie entwerfe ich ein Programm? Wie entwerfe ich ein Programm? Welche Objekte brauche ich? Flussdiagramme für Programmablauf Vorcode Testcode Hauptcode Wir spielen Lotto! Borchers: Programmierung für Alle (Java), WS 06/07 Kapitel 5 +

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 - ! 1. Rekursive Algorithmen! 2. Rekursive (dynamische) Datenstrukturen II.3.2 Rekursive Datenstrukturen - 1 - Ausdruck Ausdruck Grundwert ( Typ ) Präfix-Operator Name Methodenaufruf [ Ausdruck ] ( Ausdruck

Mehr

Aufgabenblatt 4. Aufgabe 3. Aufgabe 1. Aufgabe 2. Prof. Dr. Th. Letschert Algorithmen und Datenstrukturen

Aufgabenblatt 4. Aufgabe 3. Aufgabe 1. Aufgabe 2. Prof. Dr. Th. Letschert Algorithmen und Datenstrukturen Prof. Dr. Th. Letschert Algorithmen und Datenstrukturen Aufgabenblatt 4 Aufgabe 1 1. Erläutern Sie in eigenen Worten die Begriffe Datenstruktur, Datentyp und abstrakter Datentyp. Nutzen Sie das Beispiel

Mehr

Informatik II Übung 06. Benjamin Hepp 5 April 2017

Informatik II Übung 06. Benjamin Hepp 5 April 2017 Informatik II Übung 06 Benjamin Hepp [email protected] 5 April 2017 Nachbesprechung U5 5 April 2017 Informatik II - Übung 01 2 Nachbesprechung U5 1. Einfach verkettete Listen Keine Probleme 2.

Mehr

Informatik II. Übungsstunde 6. Distributed Systems Group, ETH Zürich

Informatik II. Übungsstunde 6. Distributed Systems Group, ETH Zürich Informatik II Übungsstunde 6 [email protected] Distributed Systems Group, ETH Zürich Ablauf Besprechung der Vorlesung Uebungsbezogene Themen: Statisches & Dynamisches Type Checking Zeit zum Programmieren...

Mehr

1. Rekursive Algorithmen 2. Rekursive (dynamische) Datenstrukturen

1. Rekursive Algorithmen 2. Rekursive (dynamische) Datenstrukturen 1. Rekursive Algorithmen 2. Rekursive (dynamische) Datenstrukturen II.3.2 Rekursive Datenstrukturen - 1 - Grundwert ( Typ ) Präfix-Operator Name Methodenaufruf [ ] ( ) Infix-Operator Methodenaufruf new

Mehr

Vorlesung Informatik 2

Vorlesung Informatik 2 Vorlesung Informatik 2 Fachhochschule für Technik Esslingen Studiengang Wirtschaftsinformatik Neues in Java 5.0 (Tiger) Dr. rer. nat. Andreas Rau http://www.fht-esslingen.de/~rau [email protected]

Mehr

Informatik II - Tutorium 12

Informatik II - Tutorium 12 Informatik II - Tutorium 12 Vincent Becker [email protected] 23.05.2018 Vincent Becker 24.05.2018 1 Reversi-Turnier 30.5.2018 Deadline für Einreichung SONNTAG NACHT!!! Umfrage Bitte an Umfrage

Mehr

Programmierung für Mathematik HS11

Programmierung für Mathematik HS11 software evolution & architecture lab Programmierung für Mathematik HS11 Übung 8 1 Aufgabe: Codeverständnis (Repetition) 1.1 Lernziele 1. Code verstehen können. 2. Fehler im Code finden und korrigieren

Mehr

Informatik II Übung 11 Gruppe 3

Informatik II Übung 11 Gruppe 3 Informatik II Übung 11 Gruppe 3 Leyna Sadamori [email protected] Informatik II Übung 11 Leyna Sadamori 17. Mai 2017 1 Nachtrag zu Übung 10 Alpha-Beta-Algorithmus Knotenwerte: Beide Varianten sind

Mehr

Informatik II Prüfungsvorbereitungskurs

Informatik II Prüfungsvorbereitungskurs Informatik II Prüfungsvorbereitungskurs Tag 4, 23.6.2016 Giuseppe Accaputo [email protected] 1 Programm für heute Repetition Datenstrukturen Unter anderem Fragen von gestern Point-in-Polygon Algorithmus Shortest

Mehr

Übung Algorithmen und Datenstrukturen

Ü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

Mehr

Klausur Software-Entwicklung März 01

Klausur Software-Entwicklung März 01 Aufgabe 1: minimaler Punktabstand ( 2+5 Punkte ) Matrikelnr : In einem Array punkte sind Koordinaten von Punkten gespeichert. Ergänzen Sie in der Klasse Punkt eine Klassen-Methode (=static Funktion) punktabstand,

Mehr

Beispielprüfung CuP WS 2015/2016

Beispielprüfung CuP WS 2015/2016 Beispielprüfung CuP WS 2015/2016 Univ.-Prof. Dr. Peter Auer 23. Dezember 2015 Informationen zur Prüfung Die Prüfung wird als Multiple-Choice-Test mit 10 Fragen am Computer abgehalten. (Bei manchen Fragen

Mehr

Programmieren 2 Java Überblick

Programmieren 2 Java Überblick Programmieren 2 Java Überblick 1 Klassen und Objekte 2 Vererbung 4 Innere Klassen 5 Exceptions 6 Funktionsbibliothek 7 Datenstrukturen und Algorithmen 8 Ein-/Ausgabe 9 Graphische Benutzeroberflächen 10

Mehr

Informatik - Übungsstunde

Informatik - Übungsstunde Informatik - Übungsstunde Jonas Lauener ([email protected]) ETH Zürich Woche 12-23.05.2018 Lernziele Klassen Dynamic Memory Jonas Lauener (ETH Zürich) Informatik - Übung Woche 12 2 / 20 Structs

Mehr

Datenstrukturen sind neben Algorithmen weitere wichtige Bausteine in der Informatik

Datenstrukturen sind neben Algorithmen weitere wichtige Bausteine in der Informatik 5. Datenstrukturen Motivation Datenstrukturen sind neben Algorithmen weitere wichtige Bausteine in der Informatik Eine Datenstruktur speichert gegebene Daten und stellt auf diesen bestimmte Operationen

Mehr

Mengen und Multimengen

Mengen und Multimengen Überblick 17. Datenstrukturen 17.1 Einleitung 17.2 Listen 17.3 Assoziative Speicher 17.4 Bäume 17.5 Mengen 17.6 Das Collections-Framework in Java 17.7 Zusammenfassung 17 Datenstrukturen 5 Mengen Informatik

Mehr