7.0 Arbeiten mit Objekten und Klassen

Größe: px
Ab Seite anzeigen:

Download "7.0 Arbeiten mit Objekten und Klassen"

Transkript

1 Einführung in die Programmierung 7.0 Arbeiten mit Objekten und Klassen Thomas R. Gross Department Informatik ETH Zürich Copyright (c) Pearson and Thomas Gross 2016 All rights reserved.

2 Uebersicht 7.1 Initialisierung Variable in Methoden Variable (Attribute) in Klassen 7.2 Listen als Beispiel Warum kopieren wir in einem Program Referenzen auf Objekte oder Arrays? Copyright (c) Pearson 2013 and Thomas Gross All rights reserved. 2

3 Eine Klasse für Knoten einer Liste public class ListNode { int data; ListNode next; Jeder Knoten der Liste speichert: Den Wert einer ganzen (int) Zahl Einen Verweis auf einen anderen Listenknoten null ListNodes können zu einer Kette verbunden ( linked ) werden um eine Menge oder Liste von Werten zu speichern.

4 5

5 Probleme Wie könnten wir den Knoten an Anfang entfernen? list int top = list.removefront(); //?? Gewünscht: list 20 Entfernen ist einfach aber wie kann die Referenzvariable list auf das (neue) erste Element verweisen? 40 6

6 Probleme Was passiert wenn wir eine beliebige Referenzvariable current verwenden? list current int somevalue = current.removefront(); //?? Gewünscht: list Aber wie erreichen wir den Vorgängerknoten? 7

7 Eine Klasse LinkedIntList ListNodes sollen nicht von Klienten direkt verändert werden. Also entwickeln wir eine Klasse die die Knoten versteckt: LinkedIntList. LinkedIntList front ListNode ListNode ListNode

8 Eine Klasse LinkedIntList Klienten arbeiten mit LinkedIntList, nicht mit ListNode Objekten. Wir können die Elemente numerieren (von 0 an) LinkedIntList front ListNode ListNode ListNode element 0 element 1 element 2

9 Hat die Methoden: add, get, indexof, remove, size, tostring Die Liste ist als Kette von Knoten intern implementiert Das LinkedIntList Objekt enthält eine Referenz auf das erste Element in front null im next Attribut signalisiert Ende der Liste Hat front den Wert null so ist die Liste leer LinkedIntList front add(value) add(index, value) indexof(value) remove(index) size() tostring() ListNode ListNode ListNode element 0 element 1 element 2

10 LinkedIntList Klasse v1 public class LinkedIntList { private ListNode front; public LinkedIntList() { front = null; LinkedIntList front = // methods

11 Die add Methode // Adds the given value to the end of the list. public void add(int value) {... Wie wollen wir einen neuen Knoten am Ende hinzufügen? Sind die Werte in der Liste vor diesem Schritt wichtig? front = element 0 element 1 element 2

12 Ein Element in eine leere Liste hinzufügen Bevor 20 hinzugefügt wird: Danach: front = front = 20 element 0 Wir müssen einen Knoten erstellen und an die Liste anhängen.

13 Die add Methode, 1. Versuch // Adds the given value to the end of the list. public void add(int value) { if (front == null) { // adding to an empty list front = new ListNode(value); else { // adding to the end of an existing list...

14 An eine nicht-leere Liste anhängen Bevor 20 am Ende hinzugefügt wird : front = 42-3 element 0 element 1 Danach: front = element 0 element 1 element 2

15 Vorsicht an der Kante! Um ein Element zur Liste hinzuzufügen (oder zu von der Liste zu entfernen) müssen wir das next Attribut des vorherigen Knotens modifizieren. front = 42-3 element 0 element 1 Wie durchlaufenwir eine Liste? Was für einen Typ muss current haben? ListNode

16 Vorsicht an der Kante! Um ein Element zur Liste hinzuzufügen (oder zu von der Liste zu entfernen) müssen wir das next Attribut des vorherigen Knotens modifizieren. front = 42-3 element 0 element 1 Worauf sollte current verweisen wenn wir 20 am Ende einfügen wollen? Welcher Loop Test lässt uns an dieser Stelle anhalten?

17 Die add Methode // Adds the given value to the end of the list. public void add(int value) { if (front == null) { // adding to an empty list front = new ListNode(value); else { // adding to the end of an existing list ListNode current = front; while (current.next!= null) { current = current.next; current.next = new ListNode(value);

18 Implementation von get // Returns value in list at given index. // 0 <= index < size() public int get(int index) {... front = element 0 element 1 element 2 Implementieren Sie die get Methode.

19 Die get Methode // Returns value in list at given index. // 0 <= index < size() public int get(int index) { ListNode current = front; for (int i = 0; i < index; i++) { current = current.next; return current.data;

20 Implementation von add (index) // Inserts the given value at the given index. public void add(int index, int value) {... Implementieren Sie diese Variante der add Methode. front = element 0 element 1 element 2

21 Die 2. Variante der add Methode // Inserts the given value at the given index. // 0 <= index <= size() public void add(int index, int value) { if (index == 0) { // adding to an empty list front = new ListNode(value, front); else { // inserting into an existing list ListNode current = front; for (int i = 0; i < index - 1; i++) { current = current.next; current.next = new ListNode(value, current.next);

22 Element entfernen: remove // Removes and returns the list's first value. public int remove() {... Wie entfernt man den ersten Knoten einer Liste? Ist der Inhalt der Liste wichtig wenn wir den ersten Knoten entfernen wollen?

23 Entfernen des ersten Elements Vor dem Entfernen des ersten Elements: front = element 0 element 1 Nachdem ein Element entfernt wurde: Nachdem 2 Elemente : front = 20 front = element 0

24 remove Methode // Removes and returns the first value. // List must not be empty. public int remove() { if (front == null) { System.exit(-1); int result = front.data; front = front.next; return result

25 Eine weitere remove Methode // Removes value at given index from list. // Precondition: 0 <= index < size public void remove(int index) {... Wie können wir ein beliebiges Element der Liste entfernen? Ist der Inhalt der Liste wichtig wenn wir einen Knoten entfernen wollen?

26 Entfernen eines Elementes Vor dem Entfernen des Elements mit Index 1: front = element 0 element 1 element 2 Danach: front = element 0 element 1

27 Entfernen des Elements mit Index 0 Vor Entfernen des Elements mit Index 0: front = element 0 element 1 element 2 Danach: front = element 0 element 1

28 Entfernen des einzigen Elementes Davor: Danach: front = 20 element 0 front Wir müssen das front Attribut auf null setzen (so dass es nicht auf einen ListNode verweist) Ist das ein Sonderfall den wir im Programm behandeln müssen?

29 remove Methode (Variante 2) // Removes value at given index from list. // Precondition: 0 <= index < size() public void remove(int index) { if (index == 0) { // special case: removing first element front = front.next; else { // removing from elsewhere in the list ListNode current = front; for (int i = 0; i < index - 1; i++) { current = current.next; current.next = current.next.next;

30 LinkedIntList Klasse v2 public class LinkedIntList { private ListNode front; public LinkedIntList() { front = null; LinkedIntList front = public void add (int value) { public void add (int index, int value) { public void remove() { public void remove(int index) {

31 Namen von Methoden In einer Klasse können verschiedene Methoden den selben Namen haben public void add (int value) { public void add (int index, int value) { Die Typen der Parameter müssen unterschiedlich sein public void add (int value) { public void add (int index) { // not OK 35

32 String tostring muss natuerlich einen String zurueckgeben! 36

33 Uebung Schreiben Sie eine Methode addsorted die den Wert einer ganzen Zahl als Parameter akzeptiert und diesen Wert in die sortierte Liste an der richtigen Position einfügt (d.h., die Liste ist auch danach sortiert). Vor addsorted(17) : front = -4 Nach addsorted(17) : 8 22 element 0 element 1 element 2 front = element 0 element 1 element 2 element 3

34 Der Normalfall : irgendwo einfügen Einfügen eines Elementes im Inneren der Liste: addsorted(17) front = element 0 element 1 element 2 Welche Verweise (Referenzen) müssen geändert werden? Was für eine Schleife bietet sich an? Wann sollte die Schleife terminieren?

35 Erster Versuch Fehlerhafte Schleife: ListNode current = front; while (current.data < value) { current = current.next; current front = Wo ist der Fehler? element 0 element 1 element 2 Die Schleife endet zu spät um die Liste korrekt zu verändern.

36 Idee: vorausschauen Korrekte Schleife: ListNode current = front; while (current.next.data < value) { current = current.next; current front = element 0 element 1 element 2 Diesmal hört die Schleife an der richtigen Stelle auf.

37 Spezialfall 1: Hinzufügen am Ende Hinzufügen am Ende der Liste: addsorted(42) front = element 0 element 1 element 2 Exception in thread "main": java.lang.nullpointerexception Warum gibt es eine Exception? Was können wir ändern um diesen Fall richtig zu behandeln?

38 Mehrere Tests für die Schleife A correction to our loop: ListNode current = front; while (current.next!= null && current.next.data < value) { current = current.next; current front = element 0 element 1 element 2 Wir müssen prüfen ob next den Wert null hat bevor wir das data Attribut des Knotens (d.h., next.value) prüfen

39 Spezialfall 2: Hinzufügen am Anfang Einfügen am Anfang der Liste: addsorted(-10) front = element 0 element 1 element 2 Was passiert jetzt in unserem Programm? Wie können wir diesen Fehler beheben?

40 Hinzufügen am Anfang Eine weitere Verbesserung des Programms if (value <= front.data) { // insert at front of list front = new ListNode(value, front); else { // insert in middle of list ListNode current = front; while (current.next!= null && current.next.data < value) { current = current.next; Kann diese Methode jetzt alle möglichenfälle behandeln?

41 Spezialfall 3: Leere Liste Hinzufügen (am Anfang) zu einer leeren Liste: addsorted(42) front = Was passiert jetzt in unserem Programm? Wie können wir diesen Fehler beheben?

42 // Adds given value to list in sorted order. // Precondition: Existing elements are sorted public void addsorted(int value) { if (front == null value <= front.data) { // insert at front of list front = new ListNode(value, front); else { // insert in middle of list ListNode current = front; while (current.next!= null && current.next.data < value) { current = current.next; Endgültige Version

43 (Verknüpfte) Liste vs. Array Algorithmus um die Werte der Liste auszugeben: Algorithmus um die Werte des Arrays auszugeben: ListNode front =...; int[] a =...; ListNode current = front; while (current!= null) { System.out.println(current.data); current = current.next; int i = 0; while (i < a.length) { System.out.println(a[i]); i++;

44 Diskussion Liste vs. Array Vorteil Array Konstante Zugriffszeit Vorteil Liste Grösse flexibel

45 Ein paar Fragen Was ist der Unterschied zwischen einer LinkedIntList und einem ListNode? Was ist der Unterschied zwischen einer leeren und einer null Liste? Wie können wir jede von ihnen konstruieren/generieren

46 Ein paar Fragen Die Attribute von ListNode sind nicht private? Ist das guter oder schlechter Stil? Welchen Effekt hat dieses Codesegment auf eine LinkedIntList values? ListNode current = values.front; current = null;

47 Antworten Eine Liste besteht aus 0 oder mehr Knoten. Jeder Knoten ist einlistnode Objekt Jeder Knoten enthält einen einzigen (int) Wert. null Liste: LinkedIntList list = null; leere Liste: LinkedIntList list = new LinkedIntList();

48 Antworten Das kann man vertreten da LinkedIntList der einzige Klient von ListNode ist Andere Programme manipulieren nicht die ListNode Objekte sondern arbeiten mit Methoden der LinkedIntList Klasse. Es gibt in Java noch bessere Möglichkeiten, solche Klassen zu organisieren, aber die lernen wir erst später kennen. Diese Zuweisungen ändern die Liste nicht. Die Liste kann nur auf folgende Weise verändert werden: Aendern des front Attributes. Aendern des next Verweises auf einen Knoten in der Liste (Aendern des data Attributes eines Knotens)

49 Andere Operationen für Listen Implementieren Sie weitere Methoden fürlinkedintlist: size isempty clear tostring indexof contains Deklarieren Sie ein size Attribut so dass die Anzahl Knoten schnell zurückgegeben werden kann.

50 Einführung in die Programmierung 8.0 Vererbung Thomas R. Gross Department Informatik ETH Zürich Copyright (c) Pearson 2013 and Thomas Gross 2016 All rights reserved.

51 Software Entwicklung Programmieren ist anspruchsvoll Es ist leicht Fehler zu machen LinkedIntList Aufgaben Wir würden gerne Software wiederverwenden Auf früheren Lösungen aufbauen Von LinkedIntList zu DoubleLinkedIntList Von LinkedIntList zu LinkedBooleanList, LinkedPersonList,. 56

52 Software Entwicklung Programmieren ist anspruchsvoll Es ist leicht Fehler zu machen LinkedIntList Aufgaben Wir würden gerne Software wiederverwenden Auf früheren Lösungen aufbauen Von LinkedIntList zu DoubleLinkedIntList Von LinkedIntList zu LinkedBooleanList, LinkedPersonList,. 58

53 Knoten einer doppelt verknüpften Liste public class DllNode { int data; DllNode next; DllNode prev; Jeder Knoten der Liste speichert: Den Wert einer ganzen (int) Zahl Einen Verweis auf einen Vorgänger Listenknoten Einen Verweis auf einen Nachfolger Listenknoten prev prev prev prev

54 Doppelt verknüpfte Liste public class DoubleLinkedIntList { private DllNode front; private DllNode tail; // methods DoubleLinkedIntList front tail DllNode DllNode DllNode prev prev prev element 0 element 1 element 2 60

55 Uebersicht 8.0 Neue Klassen aus existierendem Klassen 8.1 Konstruktoren 8.2 Selektiv Verhalten (von Objekten) festlegen 61

56 Spital Beispiel Gemeinsame Regeln für alle Angestellten: Arbeitszeit, Urlaub, Sozialleistungen, Fortbildung, Pflichtenheft, AlleAngestelltenbesucheneine gemeinsame Orientierungveranstaltung um die für alle gültigen Regeln des Krankenhauses zu erhalten Verhalten im Notfall, professionelles Verhalten, Lohnfortzahlung im Krankheitsfall, Alle Angestellten erhalten das 20-seitige Handbuch, das die Arbeitsverhältnisse im Spital regelt Aber

57 Aber jede Abteilung hat noch ihre eigenen Regeln Angestellte erhalten ein weiteres Handbuch (mit 1-5 Seiten) für die Regeln, die für ihre Abteilung gelten Das Zusatzhandbuch enthält weitere Regeln und ändert oder erweitert Regeln aus dem (allgemeinen) Spitalregelwerk. Angestellten Handbuch 20 Seiten Arzt/Aerztin Handbuch 25 Seiten FaGe (Pflege) Handbuch 22 Seiten Adminstrator/in Handbuch 21 Seiten OP-Fachkraft Handbuch 25 Seiten 63

58 Organisation der Regeln Warum wollen wir nicht je ein Handbuch für Aerzte/innen (25 Seiten), eines für FaGe (22 Seiten), eines für Administratoren (21 Seiten) und eines für OP-Fachkräfte (25 Seiten) haben? Vorteile wenn wir die Handbücher aufteilen : Anpassungen: Nur eine Stelle muss geändert werden, wenn sich die allgemeinenregeln ändern. Lokalitätsprinzip: Schneller Ueberblick über die Regeln die nur für Aerzte/innen gelten.

59 Was wir aus dem Beispiel mitnehmen Allgemeine Regeln sind sinnvoll (das 20-seitige allgemeine Handbuch). Einzelne Gruppen brauchen evtl. Zusatzregeln die nur für diese Abteilung gelten Die Gruppenregeln haben Vorrang vor den allgemeinen Regeln Die Gruppenregeln können evtl. allgemeine Regeln ausser Kraft setzen. 65

60 Regeln für Angestellte Hier ist ein Satz von Regeln der für Angestellte des Krankenhauses gilt: Die Arbeitszeit ist 42 Stunden pro Woche. Angestellte erhalten einen Basislohn von sfr/jahr, bis auf OP-Fachkräfte die sfr/jahr extra erhalten, und Administratoren/-innen, die sfr/jahrextra erhalten. Angestellte haben 4 Wochen Urlaub pro Jahr, bis auf Aerzte/innen, die eine Woche extra (also insgesamt 5 Wochen) bekommen Um einen Urlaub zu beantragen sollten Angestellte ein grünesformular verwenden, bis auf Aerzte/innen, die ein gelbes Formular brauchen. 68

61 Aufgaben und Fähigkeiten der Angestellten Jede Art von Angestellten spielt im Spitalbetrieb eine bestimmte Rolle Aerzte/innen behandeln Patienten (untersuchen und stellen eine Diagnose). Administratoren verarbeiten Rechnungen. FaGe pflegen Patienten auf einer Station (müssen also einer Station zugeteilt sein, für einen bestimmten Zeitraum) OP-Fachkräfte managen den OP-Saal. Wir wollen jetzt ein System erstellen, das die Spitaldirektion bei der Einsatzplanung, Rechnungsstellung etc unterstützt Für jede/r Angestellte/n gibt es ein Exemplar einer Klasse mit der wir planen/verwalten können 69

62 Eine Klasse für Angestellte ( Angestellte ) // A class to represent employees in general (20-page manual). public class Angestellte { public int gethours() { return 42; // works 42 hours / week public double getsalary() { return ; // sfr 80, / year public int getvacationdays() { return 20; // 4 weeks paid vacation, not including weekends public String getvacationform() { return green"; // use the green form

7.0 Arbeiten mit Objekten und Klassen

7.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.

Mehr

7.0 Arbeiten mit Objekten und Klassen

7.0 Arbeiten mit Objekten und Klassen 252-0027 Einführung in die Programmierung 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. Uebersicht

Mehr

Einführung in die Programmierung I. 8.0 Vererbung. Thomas R. Gross. Department Informatik ETH Zürich

Einführung in die Programmierung I. 8.0 Vererbung. Thomas R. Gross. Department Informatik ETH Zürich 252-0027 Einführung in die Programmierung I 8.0 Vererbung Thomas R. Gross Department Informatik ETH Zürich Copyright (c) Pearson 2013 and Thomas Gross 2016 All rights reserved. 3 Software Entwicklung Programmieren

Mehr

Einführung in die Programmierung. 5.0 Input/Output. Thomas R. Gross. Department Informatik ETH Zürich

Einführung in die Programmierung. 5.0 Input/Output. Thomas R. Gross. Department Informatik ETH Zürich 252-0027 Einführung in die Programmierung 5.0 Input/Output Thomas R. Gross Department Informatik ETH Zürich 1 Übersicht 5.1 Output in Fenster 5.2 Arbeiten mit Dateien 5.3 Scanner im Einsatz/Beispiele 5.4

Mehr

16. Dynamische Datenstrukturen

16. 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

Mehr

13. Dynamische Datenstrukturen

13. 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

Mehr

ALP II Dynamische Datenmengen Datenabstraktion (Teil 2)

ALP 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

Mehr

Einführung in die Programmierung. 8.0 Vererbung. Thomas R. Gross. Department Informatik ETH Zürich

Einführung in die Programmierung. 8.0 Vererbung. Thomas R. Gross. Department Informatik ETH Zürich 252-0027 Einführung in die Programmierung 8.0 Vererbung Thomas R. Gross Department Informatik ETH Zürich Copyright (c) Pearson 2013 and Thomas Gross 2016 All rights reserved. Uebersicht 8.0 Neue Klassen

Mehr

Einführung in die Objektorientierte Programmierung Vorlesung 18: Lineare Datenstrukturen. Sebastian Küpper

Einführung in die Objektorientierte Programmierung Vorlesung 18: Lineare Datenstrukturen. Sebastian Küpper Einführung in die Objektorientierte Programmierung Vorlesung 18: Lineare Datenstrukturen Sebastian Küpper Unzulänglichkeit von Feldern Wenn ein Unternehmen alle Rechnungen eines Jahres verwalten möchte,

Mehr

Einführung in die Programmierung. 8.0 Vererbung. Thomas R. Gross. Department Informatik ETH Zürich

Einführung in die Programmierung. 8.0 Vererbung. Thomas R. Gross. Department Informatik ETH Zürich 252-0027 Einführung in die Programmierung 8.0 Vererbung Thomas R. Gross Department Informatik ETH Zürich Copyright (c) Pearson 2013 and Thomas Gross 2016 All rights reserved. Uebersicht 8.2 Selektiv Verhalten

Mehr

Software Entwicklung 1

Software Entwicklung 1 Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter AG Softech FB Informatik TU Kaiserslautern Fallstudie: Lauftagebuch Bieniusa/Poetzsch-Heffter Software Entwicklung 1 2/ 21 Erstellen einer

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

Verkettete Datenstrukturen: Listen

Verkettete 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).

Mehr

3. Übungsblatt zu Algorithmen I im SoSe 2017

3. Übungsblatt zu Algorithmen I im SoSe 2017 Karlsruher Institut für Technologie Prof. Dr. Jörn Müller-Quade Institut für Theoretische Informatik Björn Kaidel, Sebastian Schlag, Sascha Witt 3. Übungsblatt zu Algorithmen I im SoSe 2017 http://crypto.iti.kit.edu/index.php?id=799

Mehr

11.0 Systematisches Programmierung

11.0 Systematisches Programmierung 252-0027 Einführung in die Programmierung 11.0 Systematisches Programmierung Thomas R. Gross Department Informatik ETH Zürich Copyright (c) Pearson 2013 and Thomas Gross 2016 All rights reserved. Uebersicht

Mehr

Einführung in die Programmierung I

Einführung in die Programmierung I 252-0027 Einführung in die Programmierung I Fragen & Antworten Thomas R. Gross Department Informa:k ETH Zürich Copyright (c) Pearson 2013 and Thomas Gross 2016 All rights reserved. Angestellte Lisa = new

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

ADT: Verkettete Listen

ADT: Verkettete Listen ADT: Verkettete Listen Abstrakter typ - Definition public class Bruch int zaehler, nenner; public Bruch(int zaehler, int nenner) this.zaehler = zaehler; this.nenner = nenner; Konstruktor zum Initialisieren

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 15 Einstieg in die Informatik mit Java Collections Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 15 1 Überblick Collections 2 Hierarchie von Collections 3 Verwendung

Mehr

Einführung in die Programmierung I Systematisches Programmieren. Thomas R. Gross. Department Informatik ETH Zürich

Einführung in die Programmierung I Systematisches Programmieren. Thomas R. Gross. Department Informatik ETH Zürich 252-0027 Einführung in die Programmierung I 10.0 Systematisches Programmieren Thomas R. Gross Department Informatik ETH Zürich Copyright (c) Pearson 2013 and Thomas Gross 2016 All rights reserved. Uebersicht

Mehr

ALP II Dynamische Datenmengen

ALP 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

Mehr

Abgabe: (vor 12 Uhr)

Abgabe: (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,

Mehr

Einführung in die Programmierung Systematisches Programmieren. Thomas R. Gross. Department Informatik ETH Zürich

Einführung in die Programmierung Systematisches Programmieren. Thomas R. Gross. Department Informatik ETH Zürich 252-0027 Einführung in die Programmierung 11.0 Systematisches Programmieren Thomas R. Gross Department Informatik ETH Zürich Copyright (c) Pearson 2013 and Thomas Gross 2016 All rights reserved. 1 Übersicht

Mehr

ADT: Verkettete Listen

ADT: Verkettete Listen ADT: Verkettete Listen Motivation I public class Bruch{ int zaehler, nenner; public Bruch(int zaehler, int nenner) { this.zaehler= zaehler; this.nenner = nenner; Konstruktor zum Initialisieren der Werte

Mehr

Einführung in die Programmierung I. 2.4 Felder. Thomas R. Gross. Department Informatik ETH Zürich

Einführung in die Programmierung I. 2.4 Felder. Thomas R. Gross. Department Informatik ETH Zürich 252-0027 Einführung in die Programmierung I 2.4 Felder Thomas R. Gross Department Informatik ETH Zürich Uebersicht 2.4 Felder (Vektoren, "array"s) 2.5 Verschachtelte Schleifen 2.6 "if" Anweisungen 2.7

Mehr

Übung zur Vorlesung Programmierung

Ü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

Mehr

Rechtsbelehrung. Java und OOP Das Buch Christian Silberbauer 144

Rechtsbelehrung. Java und OOP Das Buch Christian Silberbauer   144 Rechtsbelehrung Dieser Foliensatz ist urheberrechtlich geschützt. Änderungen an den Folien sind untersagt. Ausschließlich eine nicht-kommerzielle Nutzung ist kostenfrei. Andernfalls wird eine Gebühr fällig.

Mehr

Tutoraufgabe 1 (Implementierung eines ADTs):

Tutoraufgabe 1 (Implementierung eines ADTs): Prof. aa Dr. E. Ábrahám Datenstrukturen und Algorithmen SS Tutoriumslösung - Übung (Abgabe.05.0) F. Corzilius, S. Schupp, T. Ströder Tutoraufgabe (Implementierung eines ADTs): Wir spezifizieren den ADT

Mehr

Übungsblatt Programmierung und Software-Entwicklung Generizität, Interfaces, Listen, Sortieralgorithmen & JUnit

Übungsblatt Programmierung und Software-Entwicklung Generizität, Interfaces, Listen, Sortieralgorithmen & JUnit Übungsblatt Programmierung und Software-Entwicklung Generizität, Interfaces, Listen, Sortieralgorithmen & JUnit Aufgabe : Die allgemeine Object-Liste Gegeben sei folgendes UML-Klassendiagramm: MyObjectList

Mehr

II. Grundlagen der Programmierung. Beispiel: Merge Sort. Beispiel: Merge Sort (Forts. ) Beispiel: Merge Sort (Forts. )

II. Grundlagen der Programmierung. Beispiel: Merge Sort. Beispiel: Merge Sort (Forts. ) Beispiel: Merge Sort (Forts. ) Technische Informatik für Ingenieure (TIfI) WS 2006/2007, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Rekursion Datenstrukturen Merge S ( split, s, merge ) Beispiel:

Mehr

12. Dynamische Datenstrukturen

12. Dynamische Datenstrukturen Motivation: Stapel. Dynamische Datenstrukturen Verkettete Listen, Abstrakte Datentypen Stapel, Warteschlange, Implementationsvarianten der verketteten Liste 0 04 Motivation: Stapel ( push, pop, top, empty

Mehr

12.3 Ein Datenmodell für Listen

12.3 Ein Datenmodell für Listen Zweiter Versuch: Wir modellieren ein Element der Liste zunächst als eigenständiges Objekt. Dieses Objekt hält das gespeicherte Element. Andererseits hält das Element- Objekt einen Verweis auf das nächste

Mehr

Einführung in die Programmierung. 4.0 Klassen und Objekte. Thomas R. Gross. Department Informatik ETH Zürich

Einführung in die Programmierung. 4.0 Klassen und Objekte. Thomas R. Gross. Department Informatik ETH Zürich 252-0027 Einführung in die Programmierung 4.0 Klassen und Objekte Thomas R. Gross Department Informatik ETH Zürich 1 Klassen und Objekte Objekt ( object ): Ein Gebilde das Zustand ( state ) und Verhalten

Mehr

ADT: Verkettete Listen

ADT: Verkettete Listen ADT: Verkettete Listen Abstrakter typ - Definition public class Bruch{ int zaehler, nenner; public Bruch(int zaehler, int nenner) { this.zaehler = zaehler; this.nenner = nenner; Konstruktor zum Initialisieren

Mehr

Informatik II (D-ITET) Übungsstunde 5,

Informatik 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

Mehr

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Martin 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

Mehr

7. Verkettete Strukturen: Listen

7. Verkettete Strukturen: Listen 7. Verkettete Strukturen: Listen Java-Beispiele: IntList.java List.java Stack1.java Version: 4. Jan. 2016 Vergleich: Schwerpunkte Arrays verkettete Listen Listenarten Implementation: - Pascal (C, C++):

Mehr

Schwerpunkte. Verkettete Listen. Verkettete Listen: 7. Verkettete Strukturen: Listen. Überblick und Grundprinzip. Vergleich: Arrays verkettete Listen

Schwerpunkte. 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

Mehr

Verkettete Listen. DVG Verkettete Listen 1

Verkettete 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

Mehr

Software Entwicklung 1

Software Entwicklung 1 Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter AG Softech FB Informatik TU Kaiserslautern Datenstruktur Liste Bieniusa/Poetzsch-Heffter Software Entwicklung 1 2/ 42 Formale Definition

Mehr

Einführung in die Programmierung. 6.0 Objekte. Thomas R. Gross Department Informatik ETH Zürich

Einführung in die Programmierung. 6.0 Objekte. Thomas R. Gross Department Informatik ETH Zürich 252-0027 Einführung in die Programmierung 6.0 Objekte Thomas R. Gross Department Informatik ETH Zürich Copyright (c) Pearson 2013 and Thomas R Gross 2016, 2017 All rights reserved. Die 1. Aufgabe Wir wollen

Mehr

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2013 / Vorlesung 10, Donnerstag 9.

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2013 / Vorlesung 10, Donnerstag 9. Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2013 / 2014 Vorlesung 10, Donnerstag 9. Januar 2014 (Verkettete Listen, Binäre Suchbäume) Junior-Prof. Dr.

Mehr

Einführung in die Informatik

Einführung in die Informatik Einführung in die Informatik Jochen Hoenicke Software Engineering Albert-Ludwigs-University Freiburg Sommersemester 2014 Jochen Hoenicke (Software Engineering) Einführung in die Informatik Sommersemester

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

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 (D-ITET) Übungsstunde 5

Informatik 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

Mehr

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / Vorlesung 10, Donnerstag 8.

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / Vorlesung 10, Donnerstag 8. Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / 2015 Vorlesung 10, Donnerstag 8. Januar 2015 (Verkettete Listen, Binäre Suchbäume) Junior-Prof. Dr.

Mehr

Informatik II Übung 5

Informatik II Übung 5 Informatik II Übung 5 Gruppe 2 Carina Fuss cfuss@student.ethz.ch 28.3.2018 Carina Fuss 28.3.2018 1 Übung 5 Administratives/Tipps zu Eclipse Nachbesprechung Übung 4 kurze Demo zu Stacks Java Pakete Call

Mehr

Einführung in die Programmierung

Einführung in die Programmierung Technische Universität München WS 2003/2004 Institut für Informatik Prof. Dr. Christoph Zenger Semestralklausur Einführung in die Programmierung Semestralklausur Java (Lösungsvorschlag) 1 Die Klasse ArrayList

Mehr

public interface Stack<E> { public void push(e e); public E pop();

public interface Stack<E> { public void push(e e); public E pop(); ADS Zusammenfassung René Bernhardsgrütter 02.04.2012 1 Generics Gewähren Typsicherheit und können für verschiedene Datentypen ohne Casts verwendet werden. Beim Erstellen der Klasse werden Platzhalter für

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

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Vorlesung Informatik 2 Algorithmen und Datenstrukturen Vorlesung Informatik 2 Algorithmen und Datenstrukturen (05 Elementare Datenstrukturen) Prof. Dr. Susanne Albers Lineare Listen (1) Lineare Anordnung von Elementen eines Grundtyps (elementarer Datentyp

Mehr

Algorithmen und Programmierung III

Algorithmen und Programmierung III Musterlösung zum 5. Aufgabenblatt zur Vorlesung WS 2006 Algorithmen und Programmierung III von Christian Grümme Aufgabe 1 Implementieren von ADTs Testlauf der Klasse TestDeque in der z05a1.jar: 10 Punkte

Mehr

Informatik II Übung 5

Informatik 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

Mehr

Hochschule Augsburg, Fakultät für Informatik Name:... Prüfung "Programmieren 1", IN1bac, WS 10/11 Seite 1 von 6

Hochschule Augsburg, Fakultät für Informatik Name:... Prüfung Programmieren 1, IN1bac, WS 10/11 Seite 1 von 6 Prüfung "Programmieren 1", IN1bac, WS 10/11 Seite 1 von 6 Datum, Uhrzeit: 24. 01. 2011, 10.30 Uhr Semester: IN1 Note:... Prüfer: Prof. Meixner Dauer: 60 Min. Hilfsmittel: keine Punkte:... Diese Prüfung

Mehr

Informatik II (D-ITET) Informatik II (D-ITET) Übungsstunde 1. Distributed Systems Group, ETH Zürich

Informatik 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

Mehr

Konkatenation zweier Listen mit concat

Konkatenation zweier Listen mit concat Ein Datenmodell für Listen Konkatenation zweier Listen mit concat Was ist an der Konkatenation etwas unschön? Man muss die vordere Liste einmal durchgehen, um den letzten Nachfolger (urspr. null zu erhalten,

Mehr

ADT: Java Collections und ArrayList

ADT: Java Collections und ArrayList ADT: Java Collections und ArrayList Überblick der Klassen Object File Collections Map List Set ArrayList LinkedList SortedSet HashSet SortedSet Methode ArrayList Klasse I Beschreibung void add(int position,

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

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

Fallstudie: Online-Statistik

Fallstudie: 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);...

Mehr

Übung Algorithmen und Datenstrukturen

Übung Algorithmen und Datenstrukturen Übung Algorithmen und Datenstrukturen Sommersemester 2017 Patrick Schäfer, Humboldt-Universität zu Berlin Agenda: Kürzeste Wege, Heaps, Hashing Heute: Kürzeste Wege: Dijkstra Heaps: Binäre Min-Heaps Hashing:

Mehr

Software Entwicklung 1

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

Mehr

Übungsblatt 13. Abgabe / Besprechung in Absprache mit dem Tutor

Übungsblatt 13. Abgabe / Besprechung in Absprache mit dem Tutor Albert-Ludwigs-Universität Freiburg Institut für Informatik Einführung in die Informatik Sommersemester 2013 PD Dr. Cyrill Stachniss Dr. Rainer Kümmerle Übungsblatt 13 Abgabe / Besprechung in Absprache

Mehr

Algorithmen und Datenstrukturen. Übersicht. Interfaces und Generics. InsertionSort für Punkte. InsertionSort für Punkte

Algorithmen und Datenstrukturen. Übersicht. Interfaces und Generics. InsertionSort für Punkte. InsertionSort für Punkte Algorithmen und Datenstrukturen Wintersemester 2012/13 21. Vorlesung Übersicht Liste und InsertionSort für e für Objekte beliebiger Klassen für Objekte von Klassen, die ein(e) Nutzer(in) festlegen kann

Mehr

Abschnitt 10: Datenstrukturen

Abschnitt 10: Datenstrukturen Abschnitt 10: Datenstrukturen 10. Datenstrukturen 10.1Einleitung 10.2 Peer Kröger (LMU München) Einführung in die Programmierung WS 16/17 829 / 867 Einleitung Überblick 10. Datenstrukturen 10.1Einleitung

Mehr

Kapitel 4: Datentyp Keller und Schlange

Kapitel 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

Mehr

Grundlagen der Informatik / Algorithmen und Datenstrukturen. Aufgabe 132

Grundlagen der Informatik / Algorithmen und Datenstrukturen. Aufgabe 132 Aufgabenstellung Gehen Sie bei der Bearbeitung der folgenden Teilaufgabenstellungen von den Beispiel-Implementierungen der Klassen ListNodeSL und LinkedList für einfach verkettete Listen aus, wie sie in

Mehr

Informatik II Übung 5 Gruppe 3

Informatik II Übung 5 Gruppe 3 Informatik II Übung 5 Gruppe 3 Leyna Sadamori leyna.sadamori@inf.ethz.ch Informatik II Übung 5 Leyna Sadamori 29. März 2017 1 Administrativ Die Übung am 5. April fällt aus! Bitte in die Übung in HG G 3

Mehr

class ListElement { int value; ListElement next; ListElement() { next=null; value=0;

class 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

Mehr

Übung Informatik I - Programmierung - Blatt 8

Übung Informatik I - Programmierung - Blatt 8 RHEINISCH- WESTFÄLISCHE TECHNISCHE HOCHSCHULE AACHEN LEHR- UND FORSCHUNGSGEBIET INFORMATIK II RWTH Aachen D-52056 Aachen GERMANY http://programmierung.informatik.rwth-aachen.de LuFG Informatik II Prof.

Mehr

1 Abstrakte Datentypen

1 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;

Mehr

Probeklausur: Programmierung WS04/05

Probeklausur: Programmierung WS04/05 Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,

Mehr

Informatik - Übungsstunde

Informatik - Übungsstunde Informatik - Übungsstunde Jonas Lauener (jlauener@student.ethz.ch) 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

Übung Algorithmen und Datenstrukturen

Ü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

Mehr

Innere Klassen. Innere Klassen. Page 1. Lernziele: innere Klassen, statische geschachtelte Klassen, anonyme Klassen.

Innere Klassen. Innere Klassen. Page 1. Lernziele: innere Klassen, statische geschachtelte Klassen, anonyme Klassen. Innere Klassen Innere Klassen Lernziele: innere Klassen, statische geschachtelte Klassen, anonyme Klassen. Literatur: Java Tutorial & Arnold, K., Gosling, J. und Holmes,D... Page 1 Innere Klassen Der erste

Mehr

Informatik II Prüfungsvorbereitungskurs

Informatik II Prüfungsvorbereitungskurs Informatik II Prüfungsvorbereitungskurs Tag 4, 23.6.2016 Giuseppe Accaputo g@accaputo.ch 1 Programm für heute Repetition Datenstrukturen Unter anderem Fragen von gestern Point-in-Polygon Algorithmus Shortest

Mehr

Institut für Informatik

Institut für Informatik Technische Universität München Institut für Informatik Lehrstuhl für Computer Graphik & Visualisierung WS 2010 Praktikum: Grundlagen der Programmierung Lösungsblatt 6 Prof. R. Westermann, A. Lehmann, R.

Mehr

Kapitel 3: Datentyp Liste

Kapitel 3: Datentyp Liste Kapitel 3: Datentyp Liste! Einleitung! Listen-Interface! Liste als Feld: ArrayList! Einfach verkettete Listen! Hilfskopfknotentechnik! Liste als einfach verkettete Liste: LinkedList! Doppelt verkettete

Mehr

Datenkapselung: public / private

Datenkapselung: public / private 627 18. Klassen Klassen, Memberfunktionen, Konstruktoren, Stapel, verkettete Liste, dynamischer Speicher, Copy-Konstruktor, Zuweisungsoperator, Destruktor, Konzept Dynamischer Datentyp Datenkapselung:

Mehr

Informatik II. Woche 10, Giuseppe Accaputo

Informatik 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

Mehr

Algorithmen und Programmierung III

Algorithmen 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

Mehr

Kapitel 3: Datentyp Keller und Schlange

Kapitel 3: Datentyp Keller und Schlange Kapitel 3: Datentyp Keller und Schlange Keller (Stack) Schlange (Queue) Prof. Dr. O. Bittel, HTWG Konstanz Programmiertechnik II Datentyp Keller und Schlange SS 2019 3-1 Definition Keller und seine Operationen

Mehr

Faulheit professionell: Fertige Datenbehälter. Das Java-Collections-Framework Typsicherheit Generische Klassen

Faulheit professionell: Fertige Datenbehälter. Das Java-Collections-Framework Typsicherheit Generische Klassen Faulheit professionell: Fertige Datenbehälter Das Java-Collections-Framework Typsicherheit Generische Klassen Das Java Collections Framework Grundlegende Interfaces Das Interface List Das Interface List

Mehr

Basispruefung Herbst 2016/ Einführung in die Programmierung

Basispruefung Herbst 2016/ Einführung in die Programmierung Basispruefung Herbst 2016/17 0027 Einführung in die Programmierung Departement Informatik ETH Zürich Nachname: Vorname: Stud.number: Mit Ihrer Unterschrift bestätigen Sie, dass Sie folgenden Hinweise zur

Mehr

5. Strukturen und Algorithmen

5. Strukturen und Algorithmen 5. Strukturen und Algorithmen Struktur 5.1 Modellierung allgemein Element Kabel1 Lampe Kabel2 Objekte der Struktur Struktur -> Klasse Element -> Klasse Datenstruktur Dr. Norbert Spangler / Grundlagen der

Mehr

ALP II Dynamische Datenmengen Datenabstraktion

ALP 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

Mehr

Überblick. Rekursive Methoden. Backtracking. Memorization. Einfache rekursive Datenstrukturen. Aufzählen, Untermengen, Permutationen, Bitmengen

Überblick. Rekursive Methoden. Backtracking. Memorization. Einfache rekursive Datenstrukturen. Aufzählen, Untermengen, Permutationen, Bitmengen Überblick 2 Rekursive Methoden Backtracking Memorization Bäume Aufzählen, Untermengen, Permutationen, Bitmengen Memorization Nochmals Fibonacci-Zahlen int fibo(int n) { if(n == 0) { return 0; else if(n

Mehr

Informatik für Mathematiker und Physiker Woche 7. David Sommer

Informatik für Mathematiker und Physiker Woche 7. David Sommer Informatik für Mathematiker und Physiker Woche 7 David Sommer David Sommer 30. Oktober 2018 1 Heute: 1. Repetition Floats 2. References 3. Vectors 4. Characters David Sommer 30. Oktober 2018 2 Übungen

Mehr

Programmieren I. Kapitel 13. Listen

Programmieren 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

Mehr

3. Übungsbesprechung Programmkonstruktion

3. Ü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

Mehr

JAVA KURS COLLECTION

JAVA KURS COLLECTION JAVA KURS COLLECTION COLLECTIONS Christa Schneider 2 COLLECTION Enthält als Basis-Interface grundlegende Methoden zur Arbeit mit Collections Methode int size() boolean isempty() boolean contains (Object)

Mehr

Abstract Data Structures

Abstract Data Structures Abstract Data Structures October 16, 2012 Algorithms & Datastructures 2 Exercises WS 2012 Dipl.-Ing. University Linz, Institute for Pervasive Computing Altenberger Straße 69, A-4040 Linz kurz@pervasive.jku.at

Mehr

Interfaces und Generics

Interfaces und Generics Algorithmen und Datenstrukturen Wintersemester 2012/13 21. Vorlesung Interfaces und Generics Jan-Henrik Haunert Lehrstuhl für Informatik I Übersicht Liste und InsertionSort für Punkte für Objekte beliebiger

Mehr

Abstract Data Structures

Abstract Data Structures Abstract Data Structures October 30, 2018 Algorithms & Datastructures 2 Exercises WS 2018 Dipl.-Ing. Bernhard Anzengruber University Linz, Institute for Pervasive Computing Altenberger Straße 69, A-4040

Mehr