Einführung in die Programmierung mit Java
|
|
|
- Erna Buchholz
- vor 8 Jahren
- Abrufe
Transkript
1 Einführung in die Programmierung mit Java Teil 14: Verkettete Listen Martin Hofmann Steffen Jost LFE Theoretische Informatik, Institut für Informatik, Ludwig-Maximilians Universität, München Stack 18. Januar 2018 p r q Heap Point x 4 y 5 Point x 4 y 5 Martin Hofmann, Steffen Jost Einführung in die Programmierung Verkettete Listen 14.1
2 Teil 14: Verkettete Listen 1 LinkedList 2 Iteratoren 3 Implementierung verketteter Listen 4 Doppelt verkettete Listen 5 Zusammenfassung Martin Hofmann, Steffen Jost Einführung in die Programmierung Verkettete Listen 14.2
3 ArrayList Wdh. Zur Verwaltung einer gewissen Anzahl Elemente gleichen Typs haben wir bisher Arrays bzw. ArrayList verwendet: public class ArrayList<E> implements List<E>{ boolean isempty(); // Array leer? int size(); // Elemente im Array E get(int index); E set(int index, E element); boolean add(e e); void add(int index, E e); boolean remove(object o); E remove( int index );... // Element bei Index lesen // Element bei Index ersetzen // Am Ende einfügen // Bei Index einfügen // Erstes Element entfernen // Element bei Index löschen Martin Hofmann, Steffen Jost Einführung in die Programmierung Verkettete Listen 14.3
4 Implementierung: ArrayList ArrayList<E> verwendet intern klassische Arrays: Geeignet, falls Oft auf einzelne Element mit Index zugegriffen wird, O ( 1 ) also viele Zugriffe a.get(index) Ungeeignet, falls Anzahl der Elemente sich oft ändert, also O ( n ) Aufrufe von a.add(e) oder a.remove(e) sollten selten sein. Hinzufügen eines Elementes benötigt Umkopieren aller folgenden Elemente. Die Programmbibliothek macht dies zwar automatisch für uns, aber es kostet den Anwender Rechenzeit! Martin Hofmann, Steffen Jost Einführung in die Programmierung Verkettete Listen 14.4
5 Implementierung: ArrayList ArrayList<E> verwendet intern klassische Arrays: Geeignet, falls Oft auf einzelne Element mit Index zugegriffen wird, O ( 1 ) also viele Zugriffe a.get(index) Ungeeignet, falls Anzahl der Elemente sich oft ändert, also O ( n ) Aufrufe von a.add(e) oder a.remove(e) sollten selten sein. Hinzufügen eines Elementes benötigt Umkopieren aller folgenden Elemente. Die Programmbibliothek macht dies zwar automatisch für uns, aber es kostet den Anwender Rechenzeit! Martin Hofmann, Steffen Jost Einführung in die Programmierung Verkettete Listen 14.4
6 Interface List Verallgemeinerung durch Interface List<E> für geordnete Folgen von Elementen gleichen Typs, möglicherweise mit Duplikaten. public interface List<E> extends Collection<E>{ boolean isempty(); // Liste leer? int size(); // Anzahl Elemente in Liste E get(int index); E set(int index, E element); boolean add(e e); void add(int index, E e); boolean remove(object o); E remove( int index );... // Element bei Index lesen // Element bei Index ersetzen // Am Ende einfügen // Bei Index einfügen // Erstes Element entfernen // Element bei Index löschen Martin Hofmann, Steffen Jost Einführung in die Programmierung Verkettete Listen 14.5
7 Interface List Verallgemeinerung durch Interface List<E> für geordnete Folgen von Elementen gleichen Typs, möglicherweise mit Duplikaten. public interface List<E> extends Collection<E>{ boolean isempty(); // Liste leer? int size(); // Anzahl Elemente in Liste E get(int index); // Element bei Index lesen E set(int index, E element); // Element bei Index ersetzen Tipp: Verwende für Variablen/Parameter immer List<E> boolean anstatt add(e ArrayList<E>, e); dann kann // Amman Ende nachträglich einfügen leicht voideine add(int andere index, Implementierung E e); des // Bei Interfaces Index verwenden: einfügen List<String> mylist = new ArrayList<>(); boolean anstatt remove(object o); // Erstes Element entfernen E remove( ArrayList<String> int index ); mylist // = Element new ArrayList<>(); bei Index löschen... Martin Hofmann, Steffen Jost Einführung in die Programmierung Verkettete Listen 14.5
8 Implementierung: LinkedList LinkedList<E> implementiert List<E> als Kette von Objekten Geeignet, falls Anzahl der Elemente sich oft ändert, O ( 1 ) also oft Aufrufe von a.add(e) oder a.remove(e) Wenn meistens sowieso alle Elemente der Reihe nach verwendet werden, z.b. mit Schleifen. O ( n ) Ungeeignet, falls Oft auf einzelne Element mit Index zugegriffen wird, O ( n ) also viele Zugriffe a.get(index) Verändern der Elementanzahl benötigt nur das Umsetzen von Zeigern, aber wenn man ein spezielles Element sucht, muss man sich durchhangeln. Martin Hofmann, Steffen Jost Einführung in die Programmierung Verkettete Listen 14.6
9 Implementierung: LinkedList LinkedList<E> implementiert List<E> als Kette von Objekten Geeignet, falls Anzahl der Elemente sich oft ändert, O ( 1 ) also oft Aufrufe von a.add(e) oder a.remove(e) Wenn meistens sowieso alle Elemente der Reihe nach verwendet werden, z.b. mit Schleifen. O ( n ) Ungeeignet, falls Oft auf einzelne Element mit Index zugegriffen wird, O ( n ) also viele Zugriffe a.get(index) Verändern der Elementanzahl benötigt nur das Umsetzen von Zeigern, aber wenn man ein spezielles Element sucht, muss man sich durchhangeln. Martin Hofmann, Steffen Jost Einführung in die Programmierung Verkettete Listen 14.6
10 Verkettete Listen Eine verkettete Liste besteht (wie eine Kette) aus einzelnen Gliedern. Jedes Glied enthält ein Datum, sowie einen Verweis auf das nächste Glied, eventuell einen zusätzlichen Verweis auf das vorhergehende Glied. Verkettete Listen dienen zur Verwaltung von Daten variabler Anzahl, auf die in der Regel sequentiell zugegriffen wird. Sie erlauben das Einfügen eines Elements an beliebiger Stelle in konstanter Zeit O ( 1 ). Einfügen in ArrayList: O ( n ) Martin Hofmann, Steffen Jost Einführung in die Programmierung Verkettete Listen 14.7
11 Die Klasse LinkedList<E> Die Klasse java.util.linkedlist<e> implementiert verkettete Listen. Hierbei ist E ähnlich wie bei ArrayList<E> ein Typparameter. Unter anderem gibt es die folgenden Methoden: void addfirst(e obj) void addlast(e obj) E getfirst() E getlast() E removefirst() E removelast() Weitere Methoden wie Einfügen an beliebiger Stelle werden über einen Iterator bereitgestellt. Martin Hofmann, Steffen Jost Einführung in die Programmierung Verkettete Listen 14.8
12 Verweis-Strukturen Array ArrayList<E> Array Integer=5 E E E E E Einfach verkettete Liste SimpleList<E> L L L L L E E E E E ArrayList hat ein Array, darin liegen alle Verweise nacheinander im Speicher. Ein zu kleines Array muss komplett ausgetauscht werden. SimpleList speichert Verweise in privaten Link-Objekten, welche irgendwo im Speicher liegen und leicht ausgetauscht werden können. Die E-Objekte bleiben immer unverändert irgendwo im Heap. wobei L = Link<E> Martin Hofmann, Steffen Jost Einführung in die Programmierung Verkettete Listen 14.9
13 Verweis-Strukturen Array ArrayList<E> Array Integer=5 E E E E E Einfach verkettete Liste SimpleList<E> L L L L E E E E E ArrayList hat ein Array, darin liegen alle Verweise nacheinander im Speicher. Ein zu kleines Array muss komplett ausgetauscht werden. SimpleList speichert Verweise in privaten Link-Objekten, welche irgendwo im Speicher liegen und leicht ausgetauscht werden können. Die E-Objekte bleiben immer unverändert irgendwo im Heap. wobei L = Link<E> Martin Hofmann, Steffen Jost Einführung in die Programmierung Verkettete Listen 14.9
14 Schnittstelle ListIterator<E> Für Zugriffe innerhalb der Liste bietet bietet LinkedList<E> die Methode ListIterator<E> listiterator() welche einen Iterator liefert, der auf das erste Element zeigt. Die Schnittstelle ListIterator<E> bietet u.a. folgende Methoden: boolean hasnext() gibt an, ob am Positionszeiger noch ein Element vorhanden ist. E next() liefert das Element am Positionszeiger zurück. Fehler, falls hasnext() = false. void add(e e) fügt ein Element vor dem Positionszeiger ein. void remove() entfernt das Letzte, von next() zurückgegebene, Element. void set(e e) ersetzt das Letzte, von next() zurückgegebene, Element. Martin Hofmann, Steffen Jost Einführung in die Programmierung Verkettete Listen 14.10
15 Anwendungsbeispiel import java.util.*; public class ListTest { public static void main(string[] args) { LinkedList<String> staff = new LinkedList<String>(); staff.addfirst("tom"); staff.addfirst("romeo"); staff.addfirst("harry"); staff.addfirst("dick"); ListIterator<String> iterator = staff.listiterator(); // DHRT String s = iterator.next(); // D HRT s=="dick" iterator.next(); // DH RT iterator.add("juliet"); // DHJ RT iterator.add("nina"); // DHJN RT Martin Hofmann, Steffen Jost Einführung in die Programmierung. Verkettete Listen 14.11
16 . iterator.add("juliet"); // DHJ RT iterator.add("nina"); // DHJN RT iterator.next(); // DHJNR T iterator.remove(); // DHJN T iterator = staff.listiterator(); // neuer Iterator while (iterator.hasnext()) System.out.println(iterator.next()); Ausgabe: Martin Hofmann, Steffen Jost Einführung in die Programmierung Verkettete Listen 14.12
17 . iterator.add("juliet"); // DHJ RT iterator.add("nina"); // DHJN RT iterator.next(); // DHJNR T iterator.remove(); // DHJN T iterator = staff.listiterator(); // neuer Iterator while (iterator.hasnext()) System.out.println(iterator.next()); Ausgabe: Dick Harry Juliet Nina Tom Martin Hofmann, Steffen Jost Einführung in die Programmierung Verkettete Listen 14.12
18 Erklärung Die Methode add fügt ein neues Element unmittelbar vor dem Positionszeiger ein. Die Methoden remove und set sind nur zulässig, wenn direkt vorher next aufgerufen wurde; dann wird das von next zurückgegebene Element aus der Liste entfernt ( ausgespleißt ) (bei remove) oder ersetzt (bei set). Es gibt auch noch die Methoden hasprevious, previous, die den Positionszeiger nach vorne bewegen. Methoden remove und set dürfen auch nach einem Aufruf von previous aufgerufen werden und betreffen dann das von previous zurückgegebene Element. Martin Hofmann, Steffen Jost Einführung in die Programmierung Verkettete Listen 14.13
19 Iteratoren-Schleifen Mit einem Iterator kann man bequem über eine List laufen: Iterator<E> iter = list.listiterator(); while(iter.hasnext()){ E elem = iter.next(); // Code zur Bearbeitung von elem Bemerkung Alternativ kann auch die bereits behandelte vereinfachte for-schleife verwendet werden: for (E elem : list) { // Code zur Bearbeitung von elem Solche For-Each-Schleifen sind nicht nur für Listen, sondern für alle Typen erlaubt, welche das Interface Iterable<E> implementieren. Martin Hofmann, Steffen Jost Einführung in die Programmierung Verkettete Listen 14.14
20 Iteratoren-Schleifen Mit einem Iterator kann man bequem über eine List laufen: Schleifen Iterator<E> mit for iter (E elem = list.listiterator(); : list): while(iter.hasnext()){ Vorteile Kurzer, leicht verständlicher Code; E elem = iter.next(); Index Fehler nicht möglich. // Code zur Bearbeitung von elem Nachteile Liste darf innerhalb der Schleife nicht verändert werden. Bemerkung Alternativ kann auch die bereits behandelte vereinfachte for-schleife verwendet werden: for (E elem : list) { // Code zur Bearbeitung von elem Solche For-Each-Schleifen sind nicht nur für Listen, sondern für alle Typen erlaubt, welche das Interface Iterable<E> implementieren. Martin Hofmann, Steffen Jost Einführung in die Programmierung Verkettete Listen 14.14
21 Fallstricke Iteratoren Während der Verwendung eines Iteratoren darf die Datenstruktur, über die iteriert wird, nicht verändert werden. Ausnahme ConcurrentModificationException wird sonst geworfen. Dabei ist es unerheblich, welcher Thread die Modifikation durchführt. Ausnahme: Veränderungen durch den Iterator selbst, z.b. mit remove oder set Manche Implementierung unterstützen das Interface nicht vollständig: UnsupportedOperationException wird dann bei Aufrufen von remove oder set geworfen. Aufruf von remove oder set ohne vorher next oder previous aufgerufen zu haben, liefert Ausnahme IllegalStateException. Martin Hofmann, Steffen Jost Einführung in die Programmierung Verkettete Listen 14.15
22 Implementierung von LinkedList<E> Die Klasse LinkedList<E> ist bereits implementiert. Wir wollen sehen, wie das gemacht ist. Braucht man nur die Methoden addfirst, getfirst, next, hasnext, so kann man einfach verkettete Listen verwenden: import java.util.*; class Link<E> { E data; Link<E> next; public class LinkedList<E> { private Link<E> first; public LinkedList<E>() { first= null; Martin Hofmann, Steffen Jost Einführung in die Programmierung Verkettete Listen 14.16
23 Link<E> getfirstlink(){return first; public ListIterator<E> listiterator() { return new LinkedListIterator<E>(this); public E getfirst() { if (first==null) throw new NoSuchElementException(); else return first.data; public void addfirst(e obj) { Link<E> newlink = new Link<E>(); newlink.data = obj; newlink.next = first; first = newlink; Martin Hofmann, Steffen Jost Einführung in die Programmierung Verkettete Listen 14.17
24 public E removefirst() { if (first==null) throw new NoSuchElementException(); E obj = first.data; first = first.next; return obj; class LinkedListIterator<E> implements ListIterator<E> { private Link<E> position; private LinkedList<E> list; public LinkedListIterator(LinkedList<E> l) { position = l.getfirstlink(); list = l; Martin Hofmann, Steffen Jost Einführung in die Programmierung Verkettete Listen 14.18
25 public boolean hasnext() { return position!= null; /** Vorbedingung: hasnext() */ public E next() { E obj = position.data; position = position.next; return obj; /* Hier fehlen noch weitere Methoden * des Interfaces ListIterator<E> */ Martin Hofmann, Steffen Jost Einführung in die Programmierung Verkettete Listen 14.19
26 Erklärung Ein Link<E> besteht aus einem Datum und einem Verweis auf ein (das nächste) Link. Eine Liste ist einfach ein Verweis auf ein Link<E>. Die leere Liste wird durch null repräsentiert. Die Klassen Link und LinkedListIterator werden von außen nicht benötigt. Man kann sie daher auch als innere Klassen realisieren. Dann ist zudem der Zugriff auf first in LinkedListIterator einfacher. Martin Hofmann, Steffen Jost Einführung in die Programmierung Verkettete Listen 14.20
27 Doppelt verkettete Listen Will man auch die Methoden addlast, getlast, add, remove, hasprevious, previous implementieren, so muss man die Möglichkeit haben, in einer Liste rückwärts zu gehen. Dazu gibt man jedem Link auch noch einen Verweis auf das vorhergehende Link mit. Man muss natürlich all diese Verweise in den Methoden konsistent halten. Eine Liste besteht nun aus zwei Verweisen: einem auf das erste Link-Objekt und einen auf das Letzte. Die leere Liste wird durch zwei Nullreferenzen repräsentiert. Der Iterator wird nunmehr auch durch zwei Verweise (genannt forward, backward) implementiert. Martin Hofmann, Steffen Jost Einführung in die Programmierung Verkettete Listen 14.21
28 Verweis-Strukturen Array ArrayList<E> Array Integer=5 E E E E E Einfach verkettete Liste L L L L L SimpleList<E> Doppelt verkettete Liste E E E E E wobei L = Link<E> LinkedList<E> L L L L L E E E E E Martin Hofmann, Steffen Jost Einführung in die Programmierung Verkettete Listen 14.22
29 Implementierung import java.util.*; class Link<E> { E data; Link<E> next; Link<E> prev; public class LinkedList<E> { private Link<E> first; private Link<E> last; Link<E> getfirstlink(){return first; public LinkedList() { first= null; last = null; Martin Hofmann, Steffen Jost Einführung in die Programmierung Verkettete Listen 14.23
30 public ListIterator<E> listiterator() { return new LinkedListIterator<E>(this); public E getfirst() { if (first==null) throw new NoSuchElementException(); else return first.data; public E getlast() { if (first==null) throw new NoSuchElementException(); else return last.data; Martin Hofmann, Steffen Jost Einführung in die Programmierung Verkettete Listen 14.24
31 public void addfirst(e obj) { Link<E> newlink = new Link<E>(); newlink.data = obj; newlink.next = first; newlink.prev = null; if (first == null) { first = newlink; last = newlink; else { first.prev = newlink; first = newlink; Martin Hofmann, Steffen Jost Einführung in die Programmierung Verkettete Listen 14.25
32 public void addlast(e obj) { Link<E> newlink = new Link<E>(); newlink.data = obj; newlink.next = null; newlink.prev = last; if (first == null) { first = newlink; last = newlink; else { last.next = newlink; last = newlink; Martin Hofmann, Steffen Jost Einführung in die Programmierung Verkettete Listen 14.26
33 class LinkedListIterator<E> //extends LinkedList<E> implements ListIterator<E> { private Link<E> forward; private Link<E> backward; private LinkedList<E> list; private Link<E> lastreturned; public LinkedListIterator(LinkedList<E> l) { forward = l.getfirstlink; backward = null; list = l; lastreturned = null; Martin Hofmann, Steffen Jost Einführung in die Programmierung Verkettete Listen 14.27
34 public void add(e obj) { lastreturned = null; if (backward == null) { list.addfirst(obj); backward = list.getfirstlink(); else if (!hasnext()) { list.addlast(obj); backward = backward.next; else { Link<E> newlink = new Link<E>(); newlink.data = obj; newlink.next = forward; newlink.prev = backward; backward.next = newlink; forward.prev = newlink; backward = newlink; Martin Hofmann, Steffen Jost Einführung in die Programmierung Verkettete Listen 14.28
35 public boolean hasnext() { return forward!= null; public boolean hasprevious() { return backward!= null; public E next() { lastreturned = forward; backward = forward; forward = forward.next; return backward.data; Martin Hofmann, Steffen Jost Einführung in die Programmierung Verkettete Listen 14.29
36 public E previous() { lastreturned = backward; forward = backward; backward = backward.prev; return forward.data; public void set(e obj) { lastreturned.data = obj; public int nextindex() { throw new UnsupportedOperationException(); public int previousindex() { throw new UnsupportedOperationException(); Martin Hofmann, Steffen Jost Einführung in die Programmierung Verkettete Listen 14.30
37 public void remove() { if (lastreturned == null) throw new IllegalStateException(); else { if (lastreturned.prev == null) list.removefirst(); else if (lastreturned.next == null) list.removelast(); else { lastreturned.prev.next = lastreturned.next; lastreturned.next.prev = lastreturned.prev; if (lastreturned == backward) backward = lastreturned.prev; else forward = lastreturned.next; lastreturned = null; Martin Hofmann, Steffen Jost Einführung in die Programmierung Verkettete Listen 14.31
38 Bemerkungen Der Fall einer leeren Liste ist jeweils gesondert zu behandeln. Es wurden nicht alle erforderlichen Methoden implementiert; insbesondere nicht remove. Die Instanzvariable lastreturned verweist auf das Glied, das von next, bzw. prev als letztes zurückgegeben wurde, Es ist null falls der letzte Aufruf nicht next oder previous war. Man braucht sie zur Implementierung von remove und set. Es gibt in der Literatur zahlreiche Varianten. Listen können zur Realisierung von Stacks und Queues verwendet werden. Martin Hofmann, Steffen Jost Einführung in die Programmierung Verkettete Listen 14.32
39 Vergleich Listen, Arrays Sowohl Listen, als auch Arrays speichern Folgen von Daten. Listen sind besonders geeignet, falls Element an bestimmter Stelle eingefügt oder entfernt werden müssen. Listen haben keine feste Größe, sondern können beliebig erweitert werden. Arrays sind besonders geeignet, wenn der Zugriff auf Elemente über Positionszahlen (Indices) erfolgt. Bei Listen verursachen solche Operationen einen Aufwand, der proportional zum Index ist. Fazit Verändert sich die Anzahl der Elemente oft, oder werden die Elemente immer der Reihe nach bearbeitet, dann LinkedList; Ändert sich die Anzahl der Elemente kaum (oder steht diese vorab fest), und werden die Elemente möglicherweise in willkürlicher Reihenfolge benutzt, dann ArrayList. Martin Hofmann, Steffen Jost Einführung in die Programmierung Verkettete Listen 14.33
40 Übung Was wird gedruckt?: LinkedList<String> staff = new LinkedList<String>(); ListIterator<String> iterator = staff.listiterator(); iterator.add("tom"); iterator.add("dick"); iterator.add("harry"); iterator = staff.listiterator(); iterator.next(); iterator.next(); iterator.add("romeo"); iterator.next(); iterator.add("juliet"); iterator = staff.listiterator(); iterator.next(); iterator.remove(); while(iterator.hasnext()) System.out.println(iterator.next()); Martin Hofmann, Steffen Jost Einführung in die Programmierung Verkettete Listen 14.34
Verkettete 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
Grundkonzepte 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.
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)
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
Objektorientierte 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)
Java 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]...
Einfü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
Objektorientierte 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
Grundlagen 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
Einfü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
Java 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
Kapitel 9. Inner Classes. 9.1 Wiederholung: Iteratoren. Ausführen einer Operation auf allen Elementen einer Containerklasse
Kapitel 9 Inner Classes 9.1 Wiederholung: Iteratoren Ausführen einer Operation auf allen Elementen einer Containerklasse (zb Liste, Baum,...) vgl. map/f old in der funktionalen Programmierung. Aber: higher-order
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,
Java Generics & Collections
Java Praktikum Effizientes Programmieren (Sommersemester 2015) Dennis Reuling Agenda 1 2 3 1 / 30 Praktikum Effizientes Programmieren (Sommersemester 2015) Java Subtyping Teil 1 2 / 30 Praktikum Effizientes
Programmierstil. Objektsammlungen. Konzepte. Zwischenspiel: Einige beliebte Fehler... Variablennamen Kommentare Layout Einrückung
Programmierstil Objektsammlungen Einführung in Sammlungen Variablennamen Kommentare Layout Einrückung (siehe: Stilrichtlinien im Buchanhang) 4.0 Konzepte Sammlungen (besonders: ArrayList) Schleifen: die
1 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
Schnittstellen implementieren am Beispiel Suchbaum
Motivation Informatik mit Java und BlueJ Schnittstellen implementieren am Beispiel Suchbaum von Bernhard Rosing Schreiben Sie eine Klasse Person, deren Instanzen in ein TreeSet (Suchbaum) eingefügt werden
Geordnete 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
Studentische 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
II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:
Technische Informatik für Ingenieure (TIfI) WS 2005/2006, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Datenstrukturen 9. Datenstrukturen Daten zusammenfassen
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,
Rückblick: Inf A - Algorithmen. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 07: Collections 1. Inhalt.
Universität Osnabrück 1 Rückblick: Inf A - Algorithmen 3 - Objektorientierte Programmierung in Java Vorlesung 07: Collections 1 SS 2006 Prof. Dr. F.M. Thiesing, FH Osnabrück Abstrakte Datentypen Liste
Objektorientierte 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
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.
1. 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
8. 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.
Vorlesung 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
Aufgabenblatt 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
Große Übung Praktische Informatik 1
Große Übung Praktische Informatik 1 2005-12-08 [email protected] http://www.informatik.uni-mannheim.de/pi4/people/fuessler 1: Announcements / Orga Weihnachtsklausur zählt als Übungsblatt,
Theorie 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
Einfache Arrays. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung
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 student"
Objektorientierte 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/
Einstieg in die Informatik mit Java
Vorlesung vom 18.4.07, Grundlagen Übersicht 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White Space Zeichen 4 Wortsymbole 5 Interpunktionszeichen 6 Operatoren 7 import Anweisungen 8 Form
Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein ([email protected].
Java Crashkurs Kim-Manuel Klein ([email protected]) May 7, 2015 Quellen und Editoren Internet Tutorial: z.b. http://www.java-tutorial.org Editoren Normaler Texteditor (Gedit, Scite oder ähnliche)
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]
Selbststudium OOP5 21.10.2011 Programmieren 1 - H1103 Felix Rohrer
Kapitel 4.1 bis 4.3 1. zu bearbeitende Aufgaben: 4.1 4.1: done 2. Was verstehen Sie unter einem "Java-Package"? Erweiterungen verschiedener Klassen welche in Java benutzt werden können. 3. Sie möchten
Dr. Monika Meiler. Inhalt
Inhalt 5 Referenzdatentypen - Felder... 5-2 5.1 Eindimensionale Felder - Vektoren... 5-3 5.1.1 Vereinbarung... 5-3 5.1.2 Referenzen sind keine Felder... 5-4 5.1.3 Kopieren eindimensionaler Felder... 5-6
U08 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
Type 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
Grundlagen der Programmierung Prof. H. Mössenböck. 14. Schrittweise Verfeinerung
Grundlagen der Programmierung Prof. H. Mössenböck 14. Schrittweise Verfeinerung Entwurfsmethode für Algorithmen Wie kommt man von der Aufgabenstellung zum Programm? Beispiel geg.: Text aus Wörtern ges.:
Gebundene Typparameter
Gebundene Typparameter interface StringHashable { String hashcode(); class StringHashMap { public void put (Key k, Value v) { String hash = k.hashcode();...... Objektorientierte
Software Engineering Klassendiagramme Assoziationen
Software Engineering Klassendiagramme Assoziationen Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Lesen von Multiplizitäten (1) Multiplizitäten werden folgendermaßen
Informatik 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
Programmieren in Java
Programmieren in Java objektorientierte Programmierung 2 2 Zusammenhang Klasse-Datei In jeder *.java Datei kann es genau eine public-klasse geben wobei Klassen- und Dateiname übereinstimmen. Es können
Lö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
5.14 Generics. Xiaoyi Jiang Informatik I Grundlagen der Programmierung
Motivation für Generics: Containertypen speichern eine Anzahl von Elementen anderer Typen Wie definiert man die Containerklasse ArrayList? In der Definition könnte man als Elementtyp Object angeben maximale
Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden
Kapitel 8 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Methoden Überladen von Methoden Der this-zeiger Konstruktoren Vererbung WS 07/08
Javakurs für Anfänger
Javakurs für Anfänger Einheit 14: Generics Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda Generische Klassen (Generics) Motivation Java Typ-Prüfung Warum also Generics? Generische
Generische Typen in Java 1.5. Die Erweiterung der Java Language Specification
Generische Typen in Java 1.5 - Seminarvortrag 1/26 Generische Typen in Java 1.5 Die Erweiterung der Java Language Specification Seminarvortrag von Heiko Minning, mi3795 bei Prof. Dr. Uwe Schmidt, FH-Wedel
Programmierkurs Java
Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen
von 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
Programmieren 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
Dr. Monika Meiler. Inhalt
Inhalt 11 Dynamische Verwaltung großer Datenmengen... 11-2 11.1 Einige spezielle Klassen des Paketes java.lang.*... 11-2 11.1.1 Klasse Throwable, Exception und Error... 11-2 11.1.2 Klasse Object... 11-7
Betreutes Programmieren Vorlesung Informatik II, Blatt 7 Musterlösung
SS 2011 Fakultät für Angewandte Informatik Lehrprofessur für Informatik 15.06.2011 Prof. Dr. Robert Lorenz Betreutes Programmieren Vorlesung Informatik II, Blatt 7 Musterlösung Programmieraufwand für geübte
Algorithmen 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
620.900 Propädeutikum zur Programmierung
620.900 Propädeutikum zur Programmierung Andreas Bollin Institute für Informatik Systeme Universität Klagenfurt [email protected] Tel: 0463 / 2700-3516 Arrays Wiederholung (1/5) Array = GEORDNETE
Java-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
Datenstrukturen in Java
Datenstrukturen in Java SEP 350 Datenstrukturen Datenstrukturen ermöglichen Verwaltung von / Zugriff auf Daten (hier: Objekte) Datenstrukturen unterscheiden sich duch Funktionalität Implementierung modulares
Generische Datenstrukturen
Generische Datenstrukturen Prof. Dr. rer. nat. habil. Uwe Aßmann Lehrstuhl Softwaretechnologie Fakultät für Informatik TU Dresden Softwaretechnologie, Prof. Uwe Aßmann 1 2 Trends in der Softwareentwicklung
Kapitel 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
Die Java Stream API. Funktionale Programmierung mit der Stream API des JDK 1.8. Prof. Dr. Nikolaus Wulff
Die Java Stream API Funktionale Programmierung mit der Stream API des JDK 1.8 Prof. Dr. Nikolaus Wulff Funktionale Programmierung Neben der Collection API mit default Methoden ist als weitere Neuerung
Bä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
Kapitel 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
Java-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
Folge 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,
Problemstellung. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 24: Reflection 1. IDE und automatische Tests.
Universität Osnabrück 1 Problemstellung 3 - Objektorientierte Programmierung in Java Vorlesung 24: Reflection 1 SS 2006 Prof. Dr. Frank M. Thiesing, FH Osnabrück Um ein Objekt anzulegen, eine seiner Methoden
Repetitorium 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
Ü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
Prinzipien Objektorientierter Programmierung
Prinzipien Objektorientierter Programmierung Valerian Wintner Inhaltsverzeichnis 1 Vorwort 1 2 Kapselung 1 3 Polymorphie 2 3.1 Dynamische Polymorphie...................... 2 3.2 Statische Polymorphie........................
Überschreiben von Methoden
Vergleich der DoME Realisierungen: Methode ausgeben Version 1 (ohne Vererbung): Anzeigen aller Informationen CD: A Swingin Affair (64 Min)* Frank Sinatra Titelanzahl: 16 Mein Lieblingsalbum von Sinatra
Vererbung. Martin Wirsing. Ziele. Vererbung
2 Ziele Martin Wirsing en Begriff der einfachen verstehen und Redefinition von Oberklassenmethoden verstehen spolymorphie verstehen ie Klasse Object kennenlernen in Zusammenarbeit mit Michael Barth, Philipp
Java: Vererbung. Teil 3: super() www.informatikzentrale.de
Java: Vererbung Teil 3: super() Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und IMMER zuerst den Konstruktor der Elternklasse auf! Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und
Anleitung. Ein einfaches RMI-Beispiel. (ab Java 5.0) c Y. Pfeifer. (Juni 2014)
Anleitung Ein einfaches RMI-Beispiel (ab Java.0) c Y. Pfeifer (Juni 014) 1 Ein einfaches RMI-Beispiel Vorgehensweise: 1. Java Projekt anlegen. Zwei Packages server & client erstellen Auf der Server-Seite
Javakurs 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,
Datenbankanwendungsprogrammierung Crashkurs Java
Datenbankanwendungsprogrammierung Crashkurs Java Denny Priebe Datenbankanwendungsprogrammierung p. Unterschiede zu C, C++ typedefs, Präprozessor Strukturen, Unions globale Funktionen Mehrfachvererbung
Java Virtual Machine (JVM) Bytecode
Java Virtual Machine (JVM) durch Java-Interpreter (java) realisiert abstrakte Maschine = Softwareschicht zwischen Anwendung und Betriebssystem verantwortlich für Laden von Klassen, Ausführen des Bytecodes,
Variablen manipulieren per JDI
Variablen manipulieren per JDI Zusammenfassung Jede moderne Java IDE verfügt über eine mächtige und dennoch meist einfach zu bedienende Benutzeroberfläche die das finden von Fehlern in lokalen oder entfernt
Der 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
Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 7. Grafische Benutzeroberflächen
1 Kapitel 7 Ziele 2 (Graphical User Interfaces) als Anwendungsbeispiel für die objektorientierte Programmierung kennenlernen Benutzung von Vererbung zur Erstellung individueller GUI-Klassen durch Erweiterung
Vorlesung Programmieren. Programme verarbeiten Daten. Generische Datenstrukturen. Java Generics und Java API
Vorlesung Programmieren Java Generics und Java API Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck https://www.itm.uni-luebeck.de/people/fischer Programme verarbeiten Daten Häufig
Modul 122 VBA Scribt.docx
Modul 122 VBA-Scribt 1/5 1 Entwicklungsumgebung - ALT + F11 VBA-Entwicklungsumgebung öffnen 2 Prozeduren (Sub-Prozeduren) Eine Prozedur besteht aus folgenden Bestandteilen: [Private Public] Sub subname([byval
368 4 Algorithmen und Datenstrukturen
Kap04.fm Seite 368 Dienstag, 7. September 2010 1:51 13 368 4 Algorithmen und Datenstrukturen Java-Klassen Die ist die Klasse Object, ein Pfeil von Klasse A nach Klasse B bedeutet Bextends A, d.h. B ist
188.154 Einführung in die Programmierung Vorlesungsprüfung
Matrikelnummer Studienkennzahl Name Vorname 188.154 Einführung in die Programmierung Vorlesungsprüfung Donnerstag, 27.1.2005, 18:15 Uhr EI 7 Arbeitszeit: 60 min - max. 50 Punkte erreichbar - Unterlagen
Wiederholung ADT Menge Ziel: Verwaltung (Finden, Einfügen, Entfernen) einer Menge von Elementen
Was bisher geschah abstrakter Datentyp : Signatur Σ und Axiome Φ z.b. ADT Menge zur Verwaltung (Finden, Einfügen, Entfernen) mehrerer Elemente desselben Typs Spezifikation einer Schnittstelle Konkreter
Einfü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
Kapitel 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
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 7 Prof. R. Westermann, A. Lehmann, R.
Die Programmiersprache C Eine Einführung
Die Programmiersprache C Eine Einführung Christian Gentsch Fakutltät IV Technische Universität Berlin Projektlabor 2. Mai 2014 Inhaltsverzeichnis 1 Einführung Entstehungsgeschichte Verwendung 2 Objektorientiert
Effiziente Java Programmierung
Effiziente Java Programmierung Seminar Implementierung moderner virtueller Maschinen am Beispiel von Java SS 2009 von Reinhard Klaus Losse 20. Mai 2009 Gliederung Definition Effizienz Werkzeuge zum Messen
Testklausur 2 zur Vorlesung. Modellierung und Programmierung I. Dr. Monika Meiler Zeit: 60 Minuten
Matrikelnummer: Punkte: Testklausur 2 zur Vorlesung Modellierung und Programmierung I Dr. Monika Meiler Zeit: 60 Minuten Bemerkungen: Jedes Blatt ist mit der Matrikelnummer zu versehen. Jede Aufgabe ist
12) Generische Datenstrukturen
12) Generische Datenstrukturen Prof. Dr. rer. nat. habil. Uwe Aßmann Lehrstuhl Softwaretechnologie Fakultät für Informatik TU Dresden Version 09-0.2, 24.11.08 Softwaretechnologie, Prof. Uwe Aßmann 1 mpfohlene
Fakultät Angewandte Informatik Programmierung verteilter Systeme 28.11.2011. Übungen zur Vorlesung Informatik II, Blatt 6
WS 2011/12 Fakultät Angewandte Informatik Programmierung verteilter Systeme 28.11.2011 Prof. Dr. Bernhard Bauer Übungen zur Vorlesung Informatik II, Blatt 6 Abgabe: Montag, 05.12.2011, 12.00 Uhr, Informatik
Grafik-Programmierung
Grafik-Programmierung In dieser Übung beschäftigen wir uns zunächst mit elementaren Grundlagen der Grafikprogrammierung. In der nächsten Übung werden wir dies auf Spiele anwenden. Aufgabe 1: Einfache Grafik:
Hö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
