ALP II Dynamische Datenmengen Datenabstraktion
|
|
- Leopold Otto
- vor 6 Jahren
- Abrufe
Transkript
1 ALP II Dynamische Datenmengen Datenabstraktion O1 O2 O3 O4 SS 2012 Prof Dr Margarita Esponda M Esponda-Argüero 1
2 Dynamische Datenmengen Dynamische Datenmengen können durch verschiedene Datenstrukturen im Rechner dargestellt werden maximale Größe bekannt Arrays Dynamische Datenmengen Dynamische Datenstrukturen maximale Größe nicht vorhersehbar Listen Bäume Dynamische Arrays M Esponda-Argüero 2
3 Stapel und Schlangen Stapel und Schlangen sind die einfachsten dynamischen Datenstrukturen Mögliche Implementierungen: Arrays "Dynamische Arrays" Wenn ein Feld voll ist, wird zur Laufzeit ein neues erzeugt, das doppelt so groß ist, und alle Daten des alten Feldes werden auf das neue Feld kopiert Das Ganze wird wiederholt, wenn das Feld wieder ausgefüllt ist Verkettete Listen M Esponda-Argüero 3
4 Stapel In einem Stapel ("stack") darf nur das Element entfernt werden, das als letztes eingeführt worden ist LIFO - Datenstruktur "Last In - First Out" push pop push ist der Standard-Name der Einfüge-Operation in einem Stapel (stack) pop ist der Standard-Name der Lösch-Operation M Esponda-Argüero 4
5 Stapel-Operationen Zusätzlich zu den push- und pop-operationen brauchen wir eine peek-operation, die nur das nächst verfügbare Element des Stapels liest, ohne dieses Element zu entfernen und eine empty-operation, die einen Wahrheitswert zurückliefert, wenn der Stapel leer ist push pop Operationen push pop peek empty Eine zusätzliche full-operation kann überprüfen, ob der Stapel voll ist M Esponda-Argüero 5
6 Stapel-Schnittstelle public interface Stack <E> { public boolean empty(); public void push( E element ); public E pop() throws EmptyStackException; public E peek() throws EmptyStackException; In dieser Implementierung werden wir eine EmptyStackException erzeugen bei dem Versuch, ein Element zu entfernen oder zu lesen (pop- und peek-operationen), wenn die Liste leer ist M Esponda-Argüero 6
7 Stapel-Schnittstelle void push( E element ); Wenn der Stapel noch nicht voll ist, wird das Objekt element als oberstes Element des Stapels eingefügt, andernfalls wird ein FullStackException-Objekt erzeugt E pop() throws EmptyStackException; Wenn der Stapel nicht leer ist, wird das oberste Element des Stapels entfernt und als Ergebnis zurückgegeben, andernfalls wird ein EmptyStackException-Objekt erzeugt E peek() throws EmptyStackException; Wenn der Stapel nicht leer ist, wird das oberste Element des Stapels gelesen und als Ergebnis zurückgegeben, andernfalls wird ein EmptyStackException-Objekt erzeugt boolean empty(); Überprüft, ob der Stapel leer ist M Esponda-Argüero 7
8 Implementierung der Stapel-Schnittstelle top O3 O2 Für die Implementierung unseres Stapels verwenden wir ein Array (sarray), wo die Stapelelemente gespeichert werden und eine int- Variable (top), die immer auf das oberste Element des Stapels zeigt O4 sarray O1 Stapel-Objekt M Esponda-Argüero 8
9 Implementierung der Stack-Schnittstelle Im sarray werden die Stapelelemente gespeichert top zeigt immer auf das oberste Element des Stapels Drei Konstruktoren werden definiert, die das Array mit einer Anfangsgröße initialisieren, und den top-zeiger mit 1 (für leere Stapel) initialisieren public class ArrayStapel<E> implements Stack<E> { private E[] sarray; private int top; public ArrayStapel(E[] sarray){ top = -1; thissarray = sarray; public ArrayStapel(){ top = -1; thissarray = (E[]) new Object[100]; public ArrayStapel(int size){ top = -1; thissarray = (E[]) new Object[size]; M Esponda-Argüero 9
10 Die empty-operation des Stapels length Der Stapel ist leer, wenn top auf keinen gültigen Stapelplatz zeigt public boolean empty() { return ( top == -1 ); top -1 M Esponda-Argüero 10
11 Die push-operation length-1 public void push(e element) { if (!full() ) { top O3 top++; sarray[top] = element; else { resizesarray(); O2 top++; sarray O4 O1 1 0 sarray[top] = element; M Esponda-Argüero 11
12 Die push-operation length-1 public void push(e element) { if (!full() ) { top O3 top++; sarray[top] = element; else { resizesarray(); O2 top++; sarray O4 O1 1 0 sarray[top] = element; M Esponda-Argüero 12
13 Die push-operation length-1 public void push(e element) { if (!full() ) { top elem O3 top++; sarray[top] = element; else { resizesarray(); O2 top++; sarray O4 O1 1 0 sarray[top] = element; M Esponda-Argüero 13
14 Die push-operation public void push(e element) { length top sarray if (!full() ) { top++; sarray[top] = element; else { resizesarray(); top++; sarray[top] = element; M Esponda-Argüero 14
15 Die push-operation public void push(e element) { length top sarray if (!full() ) { top++; sarray[top] = element; else { resizesarray(); top++; sarray[top] = element; M Esponda-Argüero 15
16 Die push-operation public void push(e element) { length top sarray if (!full() ) { top++; sarray[top] = element; else { resizesarray(); top++; sarray[top] = element; M Esponda-Argüero 16
17 Die full-hilfsmethode top O3 O2 O4 O1 O3 length-1 Der Stapel ist voll, wenn top gleich stacklength-1 wird private boolean full() { O2 return!( top < sarraylength-1 ); O4 1 sarray O1 0 M Esponda-Argüero 17
18 Die resizesarray-hilfsmethode private void resizesarray(){ E[] temp = (E[]) new Object[sArraylength*2]; for (int i=0; i<sarraylength; i++){ temp[i] = sarray[i]; sarray = temp; M Esponda-Argüero 18
19 Die pop-operation length-1 top O0 O1 O2 O3 O4 1 0 public E pop () throws EmptyStackException { if (!empty() ) { top--; return sarray [ top+1 ]; else throw new EmptyStackException(); sarray M Esponda-Argüero 19
20 Die pop-operation length-1 top O0 O1 O2 O3 O4 1 0 public E pop () throws EmptyStackException { if (!empty() ) { top--; return sarray [ top+1 ]; else throw new EmptyStackException(); sarray M Esponda-Argüero 20
21 Die pop-operation Eine Referenz auf das Objekt O 0 wird zurück gegeben top O0 O1 O2 O3 O4 length public E pop () throws EmptyStackException { if (!empty() ) { top--; return sarray [ top+1 ]; else throw new EmptyStackException(); sarray Beim Einfügen eines neuen Elements im sarray wird die alte Referenz einfach überschrieben M Esponda-Argüero 21
22 Implementierung einer Warteschlange als Array Warteschlangen implementieren eine FIFO-Strategie Dh das erste Element, das eingeführt worden ist, ist das erste, das später entfernt wird dequeue FIFO - Datenstruktur "First In - First Out" enqueue ist der Standard-Name der Einfüge-Operation enqueue dequeue ist der Standard-Name der Lösch-Operation M Esponda-Argüero 22
23 Warteschlangen-Operationen Operationen enqueue dequeue head empty full enqueue dequeue M Esponda-Argüero 23
24 Implementierung einer Warteschlange Tail neue Person Kopf M Esponda-Argüero 24
25 Implementierung einer Warteschlange Tail neue Person Kopf M Esponda-Argüero 25
26 Implementierung einer Warteschlange Tail neue Person Kopf alle Personen bewegen sich! keine gute Idee für die Implementierung! M Esponda-Argüero 26
27 Implementierung der Warteschlange O0 O1 O2 O3 O4 O5 O6 head Erstes Element der Warteschlange tail Erster freier Platz in der Warteschlange qarray Für die Implementierung unserer Warteschlange brauchen wir: ein Array (queue) einen Zeiger (head), der immer auf das erste Element zeigt einen Zeiger (tail), der immer auf den ersten frei verfügbaren Platz der Warteschlange zeigt M Esponda-Argüero 27
28 Wraparound-Strategie Um die Einfüge- und Lösch-Operation in unserer Warteschlange in einer konstanten Zeit O(1) zu realisieren, wird das Feld in unserer Warteschlange als eine zirkulare Struktur betrachtet Neue Elemente in der Warteschlange werden in der Position eingefügt, die von tail angezeigt wird, und tail wird um eine Position nach rechts verschoben Wenn ein Element aus der Warteschlange entfernt wird, wird der head-zeiger einfach um eine Position nach rechts bewegt O0 O1 O2 O3 O4 O5 O6 head tail M Esponda-Argüero 28
29 Wraparound-Strategie enqueue O2 O3 O4 O5 O6 O7 O8 head tail M Esponda-Argüero 29
30 Wraparound-Strategie enqueue O2 O3 O4 O5 O6 O7 O8 O8 tail head M Esponda-Argüero 30
31 Wraparound-Strategie enqueue O9 O2 O3 O4 O5 O6 O7 O8 O8 tail head M Esponda-Argüero 31
32 Wraparound-Strategie enqueue O9 O10 O2 O3 O4 O5 O6 O7 O8 O8 tail head M Esponda-Argüero 32
33 Wraparound-Strategie dequeue O9 O10 O2 O3 O4 O5 O6 O7 O8 O8 tail head M Esponda-Argüero 33
34 Wraparound-Strategie dequeue O9 O10 O2 O3 O4 O5 O6 O7 O8 O8 tail head M Esponda-Argüero 34
35 Die Warteschlangen-Schnittstelle public interface Queue <E> { public void enqueue( E elem ) throws FullQueueException; public E dequeue() throws EmptyQueueException; public E head() throws EmptyQueueException; public boolean empty(); public boolean full(); public void tostring(); Warteschlange mit feste Große! M Esponda-Argüero 35
36 Die empty-operation Unsere Warteschlange ist leer, wenn head und tail auf die gleiche Position des Feldes zeigen head tail public boolean empty () { return head == tail; M Esponda-Argüero 36
37 Die full-operation Wenn in diese Felder das letzte Element eingefügt wird, werden tail und head auch gleich sein und die Warteschlange wäre voll Dh, wir würden nicht eine leere von einer vollen Warteschlange unterscheiden können Deshalb werden wir nie unsere Warteschlange ausfüllen und den Zustand full definieren, wenn tail eine Position von head entfernt liegt public boolean full () { O9 O10 O13 tail O9 O10 O8 O13 head head return (( tail == queuelength-1 ) && ( head == 0 )) ( head == ( tail+1 )) ; O2 O3 O4 O5 O6 O7 O8 O8 O2 O3 O4 O5 O6 O7 O8 tail
38 Die enqueue-operation O13 O2 O3 O4 O5 head tail Wenn die Warteschlange nicht voll ist public void enqueue ( E elem ) throws FullQueueException { if (!full() ) { queue[tail] = elem; if ( tail == (queuelength-1) ) tail = 0; else tail++; else throw new FullQueueException();
39 Die enqueue-operation O13 O2 O3 O4 O5 elem head tail public void enqueue ( E elem ) throws FullQueueException { if (!full() ) { queue[tail] = elem; if ( tail == (queuelength-1) ) tail = 0; else tail++; else throw new FullQueueException();
40 Die enqueue-operation O13 O2 O3 O4 O5 elem head tail public void enqueue ( E elem ) throws FullQueueException { Hier wird geprüft, ob tail am Ende des Feldes ist if (!full() ) { queue[tail] = elem; if ( tail == (queuelength-1) ) tail = 0; else tail++; else throw new FullQueueException();
41 Die enqueue-operation O13 O2 O3 O4 O5 elem head tail public void enqueue ( E elem ) throws FullQueueException { if (!full() ) { queue[tail] = elem; if ( tail == (queuelength-1) ) tail = 0; else tail++; else throw new FullQueueException();
42 Die dequeue-operation O13 O2 O3 O4 O5 O 29 head tail Wenn die Warteschlange nicht leer ist public E dequeue() throws EmptyQueueException { if (!empty() ) { E elem = queue[head]; if ( head == (queuelength-1) ) head = 0; else head++; return elem; else throw new EmptyQueueException();
43 Die dequeue-operation O13 O2 O3 O4 O5 O 29 elem O13 head tail public E dequeue() throws EmptyQueueException { if (!empty() ) { E elem = queue[head]; if ( head == (queuelength-1) ) head = 0; else head++; return elem; else throw new EmptyQueueException();
44 Die dequeue-operation O13 O2 O3 O4 O5 O 29 elem O13 head tail public E dequeue() throws EmptyQueueException { if (!empty() ) { Wenn head am Ende des Feldes ist E elem = queue[head]; if ( head == (queuelength-1) ) head = 0; else head++; return elem; else throw new EmptyQueueException();
45 Die dequeue-operation O13 O2 O3 O4 O5 O 29 elem O13 head tail Die verbliebene Objekt-Referenz wird später überschrieben public E dequeue() throws EmptyQueueException { if (!empty() ) { E elem = queue[head]; if ( head == (queuelength-1) ) head = 0; else head++; return elem; else throw new EmptyQueueException();
46 Die dequeue-operation O13 O2 O3 O4 O5 O 29 return elem O13 head tail public E dequeue() throws EmptyQueueException { if (!empty() ) { E elem = queue[head]; if ( head == (queuelength-1) ) head = 0; else head++; return elem; else throw new EmptyQueueException();
47 Java-Klassen für Stapel und Warteschlangen Vector Stack public class Stack<E> extends Vector <E> { public interface Queue <E> extends Collection <E> Einige Implementierungen sind: LinkedList AbstractQueue LinkedBlockingQueue SynchronousQueue PriorityBlockingQueue DelayQueue PriorityQueue ConcurrentLinkedQueue ArrayBlockingQueue M Esponda-Argüero 47
48 Zusammenfassung Stapel und Schlangen sind dynamische Datenstrukturen, doch die Implementierung mit Hilfe von Feldern hat die Einschränkung, dass die maximal erreichbare Größe vorher bekannt sein muss Eine mögliche Lösung dieses Problems sind Dynamische Arrays Wenn ein Feld voll ist, wird zur Laufzeit ein neues erzeugt, das doppelt so groß ist, und alle Daten des alten Feldes werden auf das neue Feld kopiert Das Ganze wird wiederholt, wenn das Feld wieder ausgefüllt ist Eine zweite Lösung ist, von Anfang an echte dynamische Datenstrukturen zu verwenden (wie Listen, Bäume, usw) M Esponda-Argüero 48
Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny
Grundlagen der Informatik Prof. Dr. Stefan Enderle NTA Isny 2 Datenstrukturen 2.1 Einführung Syntax: Definition einer formalen Grammatik, um Regeln einer formalen Sprache (Programmiersprache) festzulegen.
MehrInformatik 11 Kapitel 2 - Rekursive Datenstrukturen
Fachschaft Informatik Informatik 11 Kapitel 2 - Rekursive Datenstrukturen Michael Steinhuber König-Karlmann-Gymnasium Altötting 15. Januar 2016 Folie 1/77 Inhaltsverzeichnis I 1 Datenstruktur Schlange
Mehr(06 - Anwendungen von Stapeln und Schlangen)
Vorlesung Algorithmen und Datenstrukturen (06 - Anwendungen von Stapeln und Schlangen) Prof. Dr. Susanne Albers Lineare Listen (1) Lineare Anordnung von Elementen eines Grundtyps (elementarer Datentyp
MehrEinführung in die Programmierung
Technische Universität München WS 2003/2004 Institut für Informatik Prof. Dr. Christoph Zenger Testklausur Einführung in die Programmierung Probeklausur Java (Lösungsvorschlag) 1 Die Klasse ArrayList In
MehrHTTP://WWW.WIKIPAINTINGS.ORG/EN/FRIEDENSREICH-HUNDERTWASSER/YOU-ARE-A-GUEST-OF-NATURE-BEHAVE Abstrakte Datentypen.
HTTP://WWW.WIKIPAINTINGS.ORG/EN/FRIEDENSREICH-HUNDERTWASSER/YOU-ARE-A-GUEST-OF-NATURE-BEHAVE Abstrakte Datentypen OOPM, Ralf Lämmel (C) Ralf Lämmel, OOPM, Universität Koblenz-Landau 562 Motivation abstrakter
MehrInstitut 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 7 Prof. R. Westermann, A. Lehmann, R.
MehrInhalte Informatik. I1 Grundprinzip des objektorientierten Modellierens I3 Modellieren von Netzwerkanwendungen
Inhalte Informatik I1 Grundprinzip des objektorientierten Modellierens I3 Modellieren von Netzwerkanwendungen II.0 Grundlegende Programmstrukturen und Algorithmen Sortier- und Suchalgorithmen auf Arrays
MehrObjektorientierte Programmierung
Universität der Bundeswehr Fakultät für Informatik Institut 2 Priv.-Doz. Dr. Lothar Schmitz FT 2006 Zusatzaufgaben Lösungsvorschlag Objektorientierte Programmierung Lösung 22 (Java und UML-Klassendiagramm)
Mehr- k Maximalwerte aus Menge mit n >> k Elementen (Rangfolgebestimmung von Suchmaschinen!) Die typische Operationen:
6 Partiell geordnete binäre Bäume: Heap (Haufen) Motivation für manchen Anwendungen nur partielle Ordnung der Elemente statt vollständiger nötig, z.b. - Prioritätsschlange: nur das minimale (oder maximale)
MehrGrundlagen der Informatik Generische Klassen
Grundlagen der Informatik Generische Klassen Generische Klassen, das Java-Collection-Framework und mehr Generische Programmierung Beobachtung: In vielen Problemstellungen hängt der grundsätzliche Aufbau
Mehr1. Typen und Literale (6 Punkte) 2. Zuweisungen (6 = Punkte)
Praktische Informatik (Software) Vorlesung Softwareentwicklung 1 Prof. Dr. A. Ferscha Hauptklausur am 01. 02. 2001 Zuname Vorname Matr. Nr. Stud. Kennz. Sitzplatz HS / / / Punkte Note korr. Fügen Sie fehlende
MehrObjektorientierte Programmierung
Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum
MehrStruktur am Beispiel einer Liste
Struktur am Beispiel einer 1 Einfügen(neues element ) Aktiv Wartend knoten knoten 2 Einfügen(neues element ) Aktiv Wartend knoten knoten 3 Einfügen(neues element ) Aktiv Wartend knoten knoten 4 Aha, ich
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Tafelübung 04 Referenzen, Overloading, Klassen(hierarchien) Clemens Lang T2 18. Mai 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/13 Organisatorisches Nächster Übungstermin
Mehr1 Polymorphie (Vielgestaltigkeit)
1 Polymorphie (Vielgestaltigkeit) Problem: Unsere Datenstrukturen List, Stack und Queue können einzig und allein int-werte aufnehmen. Wollen wir String-Objekte, andere Arten von Zahlen oder andere Objekttypen
MehrProgrammiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny
Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny 11. Dynamische Datenstrukturen 11.1 Lineare Liste Eine lineare Liste (auch einfach verkettete Liste ) ist eine Art Array mit flexibler Länge.
MehrObjektorientierte Programmierung
Universität der Bundeswehr Fakultät für Informatik Institut 2 Priv.-Doz. Dr. Lothar Schmitz FT 2006 Übungsblatt 5 Lösungsvorschlag Objektorientierte Programmierung 22. 05. 2006 Lösung 9 (SMS-Eingabe am
MehrEinführung Elementare Datenstrukturen. Der Konstruktor muß den Listenkopf head erzeugen. Der Vorgänger und Nachfolger von head ist head selbst.
Einführung Elementare Datenstrukturen (Folie 38, Seite 23 im Skript) Der Konstruktor muß den Listenkopf head erzeugen. Der Vorgänger und Nachfolger von head ist head selbst. Einführung Elementare Datenstrukturen
MehrVerkettete Listen. Implementierung von einfach verketteten Listen. Implementierung von doppelt verketteten Listen
Verkettete Listen Verwendung von Listen in Java Das Prinzip des Iterators Implementierung von einfach verketteten Listen Implementierung von doppelt verketteten Listen Informatik II: Objektorientierte
MehrFolge 18 - Vererbung
Workshop Folge 18 - Vererbung 18.1 Ein einfacher Fall der Vererbung Schritt 1 - Vorbereitungen Besorgen Sie sich - vielleicht aus einer der Übungen der Folge 17 - ein fertiges und lauffähiges Listenprojekt,
MehrJava Einführung Collections
Java Einführung Collections Inhalt dieser Einheit Behälterklassen, die in der Java API bereitgestellt werden Wiederholung Array Collections (Vector, List, Set) Map 2 Wiederholung Array a[0] a[1] a[2] a[3]...
MehrGroße Übung Praktische Informatik 1
Große Übung Praktische Informatik 1 2005-12-08 fuessler@informatik.uni-mannheim.de http://www.informatik.uni-mannheim.de/pi4/people/fuessler 1: Announcements / Orga Weihnachtsklausur zählt als Übungsblatt,
MehrStudentische Lösung zum Übungsblatt Nr. 7
Studentische Lösung zum Übungsblatt Nr. 7 Aufgabe 1) Dynamische Warteschlange public class UltimateOrderQueue private Order[] inhalt; private int hinten; // zeigt auf erstes freies Element private int
MehrGrundkonzepte java.util.list
Grundkonzepte java.util.list Eine List ist eine Spezialisierung einer allgemeinen Ansammlung (Collection): Lineare Ordnung ist definiert Zugriff über Rang oder Position Volle Kontrolle wo eingefügt bzw.
MehrSuchbäume. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung
Suchbäume Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-13-14/infoeinf WS13/14 Action required now 1. Smartphone: installiere die App "socrative
MehrObjektorientierte Programmierung. Kapitel 12: Interfaces
12. Interfaces 1/14 Objektorientierte Programmierung Kapitel 12: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2012/13 http://www.informatik.uni-halle.de/ brass/oop12/
MehrExceptions. Prof. Dr. Margarita Esponda SS 2012. M. Esponda-Argüero
Exceptions Prof. Dr. Margarita Esponda SS 2012 1 Ausnahmen Eine Ausnahme (Exception) ist ein Fehler oder ein nicht geplantes Ereignis, das während der Ausführung eines Programms vorkommt und dessen normalen
MehrJava-Implementierung der Priority-Queue und des Huffman-Algorithmus Effiziente Algorithmen SS12 Übung 4 Aufgabe 5 Johannes Hein
Übersicht Beschreibung der Datenstruktur Seite 1 Schnittstelle PriorityQueue Seite 2 Klasse PriorityQueueException Seite 3 Klasse Data Seite 4 Klasse PriorityQueueImpl Seite 5 Klasse Huffman Seite 8 Aufbau
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Sie kennen und üben die Vorgehensweise, die bei algorithmisch komplexen Problemen angewendet wird. Sie kennen die zentralen Datenstrukturen der Informatik und wie sie in
MehrJava. Wir verwenden oft Java für Datenstrukturen und Algorithmen. Die Vorlesung ist aber von der Programmiersprache unabhängig.
Komplexität von Algorithmen (Folie 34, Seite 18 im Skript) Wir verwenden oft für Datenstrukturen und Algorithmen. Die Vorlesung ist aber von der Programmiersprache unabhängig. Lernziel sind die einzelnen
MehrInstitut für Programmierung und Reaktive Systeme 25. August 2014. Programmier-Labor. 04. + 05. Übungsblatt. int binarysearch(int[] a, int x),
Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 25. August 2014 Programmier-Labor 04. + 05. Übungsblatt Aufgabe 21: a) Schreiben Sie eine Methode
MehrEinführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 13. Bäume. Bäume
1 Kapitel 13 Ziele 2 Den Begriff des Baums in der Informatik kennenlernen als verkettete Datenstruktur repräsentieren können Rekursive Funktionen auf n verstehen und schreiben können Verschiedene Möglichkeiten
MehrJAVA 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)
MehrProgrammierung mit C Zeiger
Programmierung mit C Zeiger Zeiger (Pointer)... ist eine Variable, die die Adresse eines Speicherbereichs enthält. Der Speicherbereich kann... kann den Wert einer Variablen enthalten oder... dynamisch
MehrTheorie zu Übung 8 Implementierung in Java
Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich Theorie zu Übung 8 Implementierung in Java Klasse in Java Die Klasse wird durch das class-konzept
MehrProf. Dr. Uwe Schmidt. 21. August 2007. Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252)
Prof. Dr. Uwe Schmidt 21. August 2007 Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252) Zeit: 75 Minuten erlaubte Hilfsmittel: keine Bitte tragen Sie Ihre Antworten und fertigen
MehrDatenstrukturen & Algorithmen
Datenstrukturen & Algorithmen Matthias Zwicker Universität Bern Frühling 2010 Übersicht Elementare Datenstrukturen für dynamische Mengen Stapel & Warteschlangen Verkettete Listen Bäume Anwendungsbeispiel:
MehrProgrammieren in Java
Programmieren in Java Dateien lesen und schreiben 2 Übersicht der heutigen Inhalte File Streams try-with-resources Properties csv-dateien 3 Klasse File Die Klasse java.io.file bietet Unterstützung im Umgang
MehrProbeklausur: 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,
MehrGrundlagen der Programmierung Prof. H. Mössenböck. 11. Objektorientierung
Grundlagen der Programmierung Prof. H. Mössenböck 11. Objektorientierung Klasse = Daten + Methoden Beispiel: Positionsklasse class Position { private int x; private int y; void goleft() { x = x - 1; void
MehrBäume. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 10: Collections 4. Inhalt. Bäume. Einführung. Bäume.
Universität Osnabrück 1 Bäume 3 - Objektorientierte Programmierung in Java Vorlesung 10: Collections 4 Einführung Bäume sind verallgemeinerte Listenstrukturen Lineare Liste Jedes Element hat höchstens
MehrU08 Entwurfsmuster (II)
U08 Entwurfsmuster (II) Inhalt der Übung Diskussion und Implementierung von Entwurfsmustern Übungsaufgaben Aufgabe 1 (Queue) Gegeben ist das folgende Analysemodell einer Warteschlange (Queue): Eine Warteschlange
MehrAufgabenblatt Nr. 5 Generizität und TicTacToe
Aufgabenblatt Nr. 5 Generizität und TicTacToe 1 Generische Sortier-Methode 1.1 Aufgabe: Entwickeln einer generischen Sortiermethode für Objekte mit der Schnittstelle Comparable Ihnen ist aus der Vorlesung
Mehr3 Objektorientierte Konzepte in Java
3 Objektorientierte Konzepte in Java Bisherige Beobachtungen zu Objekten: werden in Klassen zusammengefasst besitzen Eigenschaften und Verhalten verbergen private Informationen werden geboren, leben und
MehrWie ich lernte die API zu lieben. 19. März 2013. bernhard.groehling@sicsec.de 08142-4425 037 sic[!]sec GmbH Industriestraße 29-31 82194 Gröbenzell
Burp- Burp- Wie ich lernte die zu lieben 19. März 2013 bernhard.groehling@sicsec.de 08142-4425 037 sic[!]sec GmbH Industriestraße 29-31 82194 Gröbenzell Burp- Was erwartet uns? Das erwartet euch Theorie:
MehrKapitel 6. Vererbung
1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben
MehrÜbungspaket 31 Entwicklung eines einfachen Kellerspeiches (Stacks)
Übungspaket 31 Entwicklung eines einfachen Kellerspeiches (Stacks) Übungsziele: Skript: 1. Definieren einer dynamischen Datenstruktur 2. Dynamische Speicher Speicherallokation 3. Implementierung eines
MehrBachelor-Klausur im WiSe 2013 / 2014. Grundlagen der Informatik
Fachhochschule Kaiserslautern FB Informatik und Mikrosystemtechnik Prof. Dr. M. Duque-Antón Bachelor-Klausur im WiSe 2013 / 2014 im Fach Grundlagen der Informatik Angewandte Informatik / Medieninformatik
MehrKapitel 6. Vererbung
1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben
MehrProbeklausur: 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,
MehrInteraktionen zwischen Objekten durch Senden von Nachrichten und Reagieren auf empfangene Nachrichten
Objekt Objekt kapselt Variablen und Routinen Interaktionen zwischen Objekten durch Senden von Nachrichten und Reagieren auf empfangene Nachrichten Eigenschaften jedes Objekts: Identität (identisch = mehrere
Mehr3 Objektorientierte Konzepte in Java
3 Objektorientierte Konzepte in Java 3.1 Klassendeklarationen Fragen an die Klassendeklaration: Wie heißt die Klasse? Wer darf auf die Klasse und ihre Attribute/Methoden zugreifen? Ist die Klasse eine
MehrZiel, Inhalt. Programmieren in C++ Wir lernen wie man Funktionen oder Klassen einmal schreibt, so dass sie für verschiedene Datentypen verwendbar sind
Templates und Containerklassen Ziel, Inhalt Wir lernen wie man Funktionen oder Klassen einmal schreibt, so dass sie für verschiedene Datentypen verwendbar sind Templates und Containerklassen 1 Ziel, Inhalt
MehrJava Einführung Klassendefinitionen
Java Einführung Klassendefinitionen Inhalt dieser Einheit Java-Syntax Klassen definieren Objekte instanziieren Instanzvariable deklarieren Klassenvariable deklarieren 2 Klassen definieren In der Problemanalyse
MehrGeordnete Binärbäume
Geordnete Binärbäume Prof. Dr. Martin Wirsing in Zusammenarbeit mit Gilbert Beyer und Christian Kroiß http://www.pst.ifi.lmu.de/lehre/wise-09-10/infoeinf/ WS 09/10 Einführung in die Informatik: Programmierung
Mehr8. Generics Grundlagen der Programmierung 1 (Java)
8. Generics Grundlagen der Programmierung 1 (Java) Fachhochschule Darmstadt Haardtring 100 D-64295 Darmstadt Prof. Dr. Bernhard Humm FH Darmstadt, 6. Dezember 2005 Einordnung im Kontext der Vorlesung 1.
MehrFachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6
Gudrun Fischer Sascha Kriewel programmierung@is.informatik.uni-duisburg.de Anmeldung zur Klausur! Übungsblatt Nr. 6 Um an der Klausur teilzunehmen, müssen sich Studierende der angewandten Informatik in
MehrKapitel 6. Vererbung
Kapitel 6 Vererbung Vererbung 1 Ziele Das Vererbungsprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen
MehrVererbung & Schnittstellen in C#
Vererbung & Schnittstellen in C# Inhaltsübersicht - Vorüberlegung - Vererbung - Schnittstellenklassen - Zusammenfassung 1 Vorüberlegung Wozu benötigt man Vererbung überhaubt? 1.Um Zeit zu sparen! Verwendung
Mehr1.2 Attribute und Methoden Aufbau einer Java-Klasse:
Aufbau einer Java-Klasse: public class Quadrat { int groesse; int xposition; String farbe; boolean istsichtbar; public void sichtbarmachen() { istsichtbar = true; public void horizontalbewegen(int distance){
MehrÜbung 13: Priority Queues (Vorrangwarteschlangen 1 )
Übung 13: Priority Queues (Vorrangwarteschlangen 1 ) Definition Eine Priority Queue ist eine Datenstruktur zur Speicherung einer Menge von Elementen, für die eine Halbordnung (Prioritätssteuerung) definiert
MehrEinführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 8. Arrays. Arrays
1 Kapitel 8 Ziele 2 Die Datenstruktur der kennenlernen Grundlegende Algorithmen auf in Java implementieren können Mit von Objekten arbeiten können 3 Erweiterungen zur Behandlung von : Überblick Bisher
Mehr1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen
1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen II.2.3 Datenabstraktion - 1 - public class Rechteck { Selektoren
MehrC# im Vergleich zu Java
C# im Vergleich zu Java Serhad Ilgün Seminar Universität Dortmund SS 03 Gliederung Entstehung von C# und Java Überblick von C# und Java Unterschiede und Gemeinsamkeiten Zusammenfassung und Ausblick Entstehung
MehrVorlesung 09: Mengen. Peter Thiemann SS 2010
Vorlesung 09: Mengen Peter Thiemann Universität Freiburg, Germany SS 2010 Peter Thiemann (Univ. Freiburg) JAVA 1 / 43 Inhalt Mengen HashSet LinkedHashSet CopyOnWriteArraySet EnumSet SortedSet NavigableSet
MehrClient-Server-Beziehungen
Client-Server-Beziehungen Server bietet Dienste an, Client nutzt Dienste Objekt ist gleichzeitig Client und Server Vertrag zwischen Client und Server: Client erfüllt Vorbedingungen eines Dienstes Server
MehrEinführung in die Java- Programmierung
Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Wichtig... Mittags keine Pommes... Praktikum A 230 C 207 (Madeleine + Esma) F 112 F 113
MehrJava Schulung. Objektorientierte Programmierung in Java Teil V: Die Java Collection Klassen. Prof. Dr. Nikolaus Wulff
Java Schulung Objektorientierte Programmierung in Java Teil V: Die Java Collection Klassen Prof. Dr. Nikolaus Wulff Collections in Java 2 Java 2 Collections: http://java.sun.com/products/jdk/1.2/docs/guide/collections/index.html
MehrRepetitorium Informatik (Java)
Repetitorium Informatik (Java) Tag 6 Lehrstuhl für Informatik 2 (Programmiersysteme) Übersicht 1 Klassen und Objekte Objektorientierung Begrifflichkeiten Deklaration von Klassen Instanzmethoden/-variablen
MehrTeil 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
Mehr3.2 Modellierende Spezifikation von ADT
3.2 Modellierende Spezifikation von ADT Wie kann ich das Verhalten der Operationen eines ADO spezifizieren, wenn ich mich wegen der Datenabstraktion nicht auf seine Daten beziehen kann? 2 Alternativen:
Mehr5.4 Klassen und Objekte
5.4 Klassen und Objekte Zusammenfassung: Projekt Figuren und Zeichner Figuren stellt Basisklassen für geometrische Figuren zur Verfügung Zeichner bietet eine übergeordnete Klasse Zeichner, welche die Dienstleistungen
MehrJavakurs zu Informatik I. Henning Heitkötter
Javakurs zu Informatik I Arrays vergleichen Implementieren Sie folgende Methode, die prüft, ob die Elemente der beiden Arrays an jeder Position übereinstimmen: public static boolean identisch(int[] a,
Mehrvon Anja Austermann Drag and Drop
von Anja Austermann Drag and Drop »Drag and Drop«ist die Bezeichnung für den Datentransfer zwischen unterschiedlichen Anwendungen mit grafischer Benutzeroberfläche. Zur Zeit arbeitet Drag and Drop in Java
MehrLösungsvorschläge. zu den Aufgaben im Kapitel 4
Lösungsvorschläge zu den Aufgaben im Kapitel 4 Aufgabe 4.1: Der KNP-Algorithmus kann verbessert werden, wenn in der Funktion nexttabelle die Zuweisung next[tabindex] = ruecksprung; auf die etwas differenziertere
MehrEINI WiMa/LW. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 11/12
EINI WiMa/LW Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 11/12 Fakultät für Informatik Technische Universität Dortmund lars.hildebrand@udo.edu http://ls1-www.cs.uni-dortmund.de
MehrJava Einführung Abstrakte Klassen und Interfaces
Java Einführung Abstrakte Klassen und Interfaces Interface Interface bieten in Java ist die Möglichkeit, einheitliche Schnittstelle für Klassen zu definieren, die später oder/und durch andere Programmierer
Mehr188.154 Einführung in die Programmierung für Wirtschaftsinformatik
Beispiel 1 Vererbung (Liste) Gegeben sind die beiden Klassen ListNode und PersonNode. 188.154 Einführung in die Programmierung für Wirtschaftsinformatik Wiederholung, Prüfungsvorbereitung Monika Lanzenberger
MehrGebundene Typparameter
Gebundene Typparameter interface StringHashable { String hashcode(); class StringHashMap { public void put (Key k, Value v) { String hash = k.hashcode();...... Objektorientierte
MehrBinärbäume. Prof. Dr. E. Ehses, 2014 1
Binärbäume Grundbegriffe der Graphentheorie Bäume und Ihre Anwendungen Unterschiedliche Darstellungen von Bäumen und Binärbäumen Binärbäume in Java Rekursive Traversierung von Binärbäumen Ebenenweise Traversierung
MehrKlassendefinitionen verstehen
Klassendefinitionen verstehen Java-Programme bestehen aus Klassendefinitionen und sonst nichts! 1 1.0 Konzepte Felder Konstruktoren Methoden Parameter Zuweisungen ( = ) Anweisungen bedingte Anweisungen
MehrInnere Klassen in Java
Innere Klassen in Java SS 2012 Prof. Dr. Margarita Esponda Innere Klassen Klassen- oder Interfacedefinitionen können zur besseren Strukturierung von Programmen verschachtelt werden Eine "Inner Class" wird
MehrPIWIN 1 Übung Blatt 5
Fakultät für Informatik Wintersemester 2008 André Gronemeier, LS 2, OH 14 Raum 307, andre.gronemeier@cs.uni-dortmund.de PIWIN 1 Übung Blatt 5 Ausgabedatum: 19.12.2008 Übungen: 12.1.2009-22.1.2009 Abgabe:
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Wintersemester 202/3 24. Vorlesung Amortisierte Analyse Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I Hash-Tabellen Frage: Ziel: Problem: Lösung: Wie groß macht man
MehrAbschnitt 9: Schnittstellen: Interfaces
Abschnitt 9: Schnittstellen: Interfaces 9. Schnittstellen: Interfaces 9.1 Die Idee der Schnittstellen 9.2 Schnittstellen in Java 9.3 Marker-Interfaces 9.4 Interfaces und Hilfsklassen 9.5 Zusammenfassung
MehrType Erasure in Java 5. Helmi Jouini Institut für Theoretische Informatik Universität Karlsruhe
Type Erasure in Java 5 Helmi Jouini Institut für Theoretische Informatik Universität Karlsruhe Warum Generics? Containerklassen in Java 1.4 sind generisch nutzbar aber typunsicher. Public class LinkedList
Mehr1. Grundlegende Konzepte in Java (6 Punkte)
1. Grundlegende Konzepte in Java (6 Punkte) a) Welches der folgenden Literale ist korrekt und wenn ja, von welchem Typ ist es? "true" nicht korrekt X korrekt vom Typ String 'true' X nicht korrekt korrekt
Mehr8 Baum in perfekter Komposition
8 Baum in perfekter Komposition Die Implementierung des Binärbaums im letzten Kapitel wird mithilfe des Entwurfsmusters Kompositum optimiert. Knoten und Abschluss Bei der einfach verketteten Liste wurde
MehrHöhere Programmierkonzepte Testklausur
Höhere Programmierkonzepte Testklausur Prof. Dr. Nikolaus Wulff Zum 15. Januar 2016 1 Ein Google-Map Algorithmus (5 Punkte) 1 2 typedef void X; 3 typedef void Y; 4 5 void map(unsigned int n / tuple length
MehrDer linke Teilbaum von v enthält nur Schlüssel < key(v) und der rechte Teilbaum enthält nur Schlüssel > key(v)
Ein Baum T mit Knotengraden 2, dessen Knoten Schlüssel aus einer total geordneten Menge speichern, ist ein binärer Suchbaum (BST), wenn für jeden inneren Knoten v von T die Suchbaumeigenschaft gilt: Der
MehrBeispiel: Methode mit einem Fehler. Diese Methode wird problematisch, wenn von außen eine Dauer von 0 Sekunden angegeben wird, etwa im Aufruf
16 Exceptions Zur Behandlung unerwarteter Situationen bietet Java Unterstützung in Form von Exceptions oder Ausnahmen. Den Sinn von Exceptions können wir Ihnen an einem kleinen Beispiel klarmachen. Nehmen
MehrFHZ. K20 Arrays. Lernziele. Hochschule Technik+Architektur Luzern Abteilung Informatik, Fach Programmieren. Inhalt
Inhalt 1. Einführung 2. Array-Komponenten von elementaren Datentypen 3. Array-Komponenten sind Objekte 4. Array als Parameter 5. Kopieren von Arrays 6. Beispiel 7. Vector versus Array Folie 1 Lernziele
MehrÜbersicht. Informatik 2 Teil 3 Anwendungsbeispiel für objektorientierte Programmierung
Übersicht 3.1 Modell Konto 3.2 Modell Konto - Erläuterungen 3.3 Benutzer Ein- und Ausgabe mit Dialogfenster I 3.4 Benutzer Ein- und Ausgabe mit Dialogfenster II 3.5 Klassen- und Objekteigenschaften des
MehrJava-Schulung Grundlagen
Java-Schulung Grundlagen Java 2 Standard Edition JDK 5 / 6 31.05.2008 Marcel Wieczorek 1 Themenübersicht Basiswissen Objektorientierung Datentypen Fehlerbehandlung Sonstiges Einführung Klassen, Strings
MehrInhaltsverzeichnis. Praktikum Algoritmen und Datenstrukturen WS2004/2005 Paul Litzbarski Stefan Nottorf. Druckmanager allgemein 2.
Praktikum Algoritmen und Datenstrukturen WS2004/2005 Paul Litzbarski Stefan Nottorf Inhaltsverzeichnis Druckmanager allgemein 2 Design 2 Druckauftrag 3 Liste 4 ListenEintrag 6 GUI 7 1 Druckmanager : allgemein
MehrSoftwaretechnologie - Wintersemester 2012/2013 - Dr. Günter Kniesel
Übungen zur Vorlesung Softwaretechnologie - Wintersemester 2012/2013 - Dr. Günter Kniesel Übungsblatt 10 - Lösungshilfe Aufgabe 1. CRC-Karten (7 Punkte) Es geht um die Modellierung der folgenden Bibliotheks-Anwendung:
MehrKapitel 11: Wiederholung und Zusammenfassung
Wiederholung und Zusammenfassung 1: Begriff und Grundprobleme der Informatik Begriff Informatik Computer als universelle Rechenmaschine Grenzen der Berechenbarkeit Digitalisierung Problem der Komplexität
MehrAssoziation und Aggregation
Assoziation und Aggregation Martin Wirsing in Zusammenarbeit mit Matthias Hölzl, Nora Koch 05/03 2 Ziele Verstehen der Begriffe Assoziation und Aggregation Implementierung von Assoziationen in Java schreiben
MehrTypumwandlungen bei Referenztypen
Typumwandlungen bei Referenztypen Genau wie es bei einfachen Typen Typumwandlungen gibt, gibt es auch bei Referenztypen Umwandlungen von einem Referenztypen in einen anderen Referenztypen, die wie bei
MehrAlgorithmen & Datenstrukturen 1. Klausur
Algorithmen & Datenstrukturen 1. Klausur 7. Juli 2010 Name Matrikelnummer Aufgabe mögliche Punkte erreichte Punkte 1 35 2 30 3 30 4 15 5 40 6 30 Gesamt 180 1 Seite 2 von 14 Aufgabe 1) Programm Analyse
Mehr