Tutoraufgabe 1 (Listen):
|
|
|
- Markus Hartmann
- vor 8 Jahren
- Abrufe
Transkript
1 Prof. aa Dr. J. Giesl Programmierung WS16/17 F. Frohn, J. Hensel, D. Korzeniewski Allgemeine Die Hausaufgaben sollen in Gruppen von je 2 Studierenden aus der gleichen Kleingruppenübung (Tutorium) bearbeitet werden. Namen und Matrikelnummern der Studierenden sind auf jedes Blatt der Abgabe zu schreiben. Heften bzw. tackern Sie die Blätter! Die Nummer der Übungsgruppe muss links oben auf das erste Blatt der Abgabe geschrieben werden. Notieren Sie die Gruppennummer gut sichtbar, damit wir besser sortieren können. Die Lösungen müssen bis Montag, den um 15:00 Uhr in den entsprechenden Übungskasten eingeworfen werden. Sie nden die Kästen am Eingang Halifaxstr. des Informatikzentrums (Ahornstr. 55). Alternativ können Sie die Lösungen auch vor der Abgabefrist direkt bei Ihrer Tutorin/Ihrem Tutor oder unmittelbar vor Beginn in der Globalübung abgeben. In einigen Aufgaben müssen Sie in Java programmieren und.java-dateien anlegen. Drucken Sie diese aus und schicken Sie sie per vor Montag, dem um 15:00 Uhr an Ihre Tutorin/Ihren Tutor. Stellen Sie sicher, dass Ihr Programm von javac akzeptiert wird, ansonsten werden keine Punkte vergeben. Einige Hausaufgaben müssen im Spiel Codescape gelöst werden: Diese Aufgaben werden getrennt von den anderen Hausaufgaben gewertet. Halten Sie sich beim Lösen von Programmieraufgaben an die auf der Website zur Vorlesung verfügbaren Codekonventionen. Verstöÿe, die zu unleserlichem Code führen, können zu Punktabzug führen. Tutoraufgabe 1 (Listen): In dieser Aufgabe geht es um einfach verkettete Listen als Beispiel für eine dynamische Datenstruktur. Wir legen hier besonderen Wert darauf, dass eine einmal erzeugte Liste nicht mehr verändert werden kann. Achten Sie also in der Implementierung darauf, dass die Attribute der einzelnen Listen-Elemente nur im Konstruktor geschrieben werden. Für diese Aufgabe benötigen Sie die Klasse ListExercise.java, welche Sie von unserer Webseite herunter laden können. In der gesamten Aufgabe dürfen Sie keine Schleifen verwenden (die Verwendung von Rekursion ist hingegen erlaubt). Ergänzen Sie in Ihrer Lösung für alle öentlichen Methoden auÿer Konstruktoren und Selektoren geeignete javadoc-kommentare. a) Erstellen Sie eine Klasse List, die eine einfach verkettete Liste als rekursive Datenstruktur realisiert. Die Klasse List muss dabei mindestens die folgenden öentlichen Methoden und Attribute enthalten: static final List EMPTY ist die einzige List-Instanz, die die leere Liste repräsentiert List(List n, int v) erzeugt eine neue Liste, die mit dem Wert v beginnt, gefolgt von allen Elementen der Liste n List getnext() liefert die von this referenzierte Liste ohne ihr erstes Element zurück int getvalue() liefert das erste Element der Liste zurück b) Implementieren Sie in der Klasse List die öentlichen Methoden int length() und String tostring(). Die Methode length soll die Länge der Liste zurück liefern. Die Methode tostring soll eine textuelle Repräsentation der Liste zurück liefern, wobei die Elemente der Liste durch Kommata separiert hintereinander stehen. Beispielsweise ist die textuelle Repräsentation der Liste mit den Elementen 2, 3 und 1 der String "2, 3, 1". c) Ergänzen Sie diese Klasse darüber hinaus noch um eine Methode getsublist, welche ein Argument i vom Typ int erhält und eine unveränderliche Liste zurück liefert, welche die ersten i Elemente der aktuellen Liste enthält. Sollte die aktuelle Liste nicht genügend Elemente besitzen, wird einfach eine Liste mit allen Elementen der aktuellen Liste zurück gegeben. 1
2 d) Vervollständigen Sie die Methode merge in der Klasse ListExercise.java. Diese Methode erhält zwei Listen als Eingabe, von denen wir annehmen, dass diese bereits aufsteigend sortiert sind. Sie soll eine Liste zurück liefern, die alle Elemente der beiden übergebenen Listen in aufsteigender Reihenfolge enthält. Verwenden Sie zwei Zeiger, die jeweils auf das kleinste noch nicht in die Ergebnisliste eingefügte Element in den Argumentlisten zeigen. Vergleichen Sie die beiden Elemente und fügen Sie das kleinere ein, wobei Sie den entsprechenden Zeiger ein Element weiter rücken. Sobald eine der Argumentlisten vollständig eingefügt ist, können die Elemente der anderen Liste ohne weitere Vergleiche hintereinander eingefügt werden. e) Vervollständigen Sie die Methode mergesort in der Klasse ListExercise.java. Diese Methode erhält eine unveränderliche Liste als Eingabe und soll eine Liste mit den gleichen Elementen in aufsteigender Reihenfolge zurückliefern. Falls die übergebene Liste weniger als zwei Elemente enthält, soll sie unverändert zurück geliefert werden. Ansonsten soll die übergebene Liste mit der vorgegebenen Methode divide in zwei kleinere Listen aufgespalten werden, welche dann mit mergesort sortiert und mit merge danach wieder zusammengefügt werden. Sie können die ausführbare main-methode verwenden, um das Verhalten Ihrer Implementierung zu überprüfen. Um beispielsweise die unveränderliche Liste [2,4,3] sortieren zu lassen, rufen Sie die main-methode durch java ListExercise auf. Aufgabe 2 (Bäume): ( = 19 Punkte) In dieser Aufgabe sollen einige rekursive Algorithmen auf sortierten Binärbäumen implementiert werden. Von der Webseite können Sie die Klassen Tree und TreeNode herunterladen. Die Klasse Tree repräsentiert einen Binärbaum, entsprechend der Klasse Baum auf den Vorlesungsfolien. Einzelne Knoten des Baumes werden mit der Klasse TreeNode dargestellt. Alle Methoden, die Sie implementieren, sorgen dafür, dass in dem Teilbaum left nur Knoten mit kleineren Werten als in der Wurzel liegen und in dem Teilbaum right nur Knoten mit gröÿeren Werten. Um den Baum zu visualisieren, ist eine Ausgabe als dot Datei bereits implementiert. In dieser einfachen Beschreibungssprache für Graphen steht eine Zeile x -> y; dafür, dass der Knoten y ein Nachfolger des Knotens x ist. In Dateien, die von dem vorgegebenen Code generiert wurden, steht der linke Nachfolger eines Knotens immer vor dem rechten Nachfolger in der Datei. Optional können Sie mit Hilfe der Software Graphviz, wie unten beschrieben, automatisch Bilder aus dot Dateien generieren. Die Klasse Tree enthält auÿerdem eine main Methode, die einige Teile der Implementierung testet. Am Schluss dieser Aufgabe sollte der Aufruf java Tree t1.dot t2.dot eine Ausgabe der folgenden Form erzeugen. Die Zahlen sind teilweise Zufallszahlen. Aufgabe b): Zufaelliges Einfuegen Baum als DOT File ausgegeben in Datei t1.dot Aufgabe a): Suchen nach zufaelligen Elementen 17 ist enthalten 19 ist nicht enthalten 12 ist nicht enthalten 15 ist enthalten 12 ist nicht enthalten 13 ist nicht enthalten 3 ist enthalten 17 ist enthalten 2 ist enthalten 15 ist enthalten 26 ist enthalten 9 ist enthalten 18 ist nicht enthalten 2
3 29 ist nicht enthalten Aufgabe c): geordnete String-Ausgabe tree[2, 3, 6, 7, 9, 15, 17, 21, 22, 23, 24, 25, 26, 27, 28] Aufgabe d): Suchen nach vorhandenen Elementen mit Rotation. Baum nach Suchen von 15, 3 und 23 als DOT File ausgegeben in Datei t2.dot Falls Sie anschlieÿend mit dot -Tpdf t1.dot > t1.pdf und dot -Tpdf t2.dot > t2.pdf die dot Dateien in PDF umwandeln 1, sollten Sie Bilder ähnlich zu den folgenden erhalten Listing 1: t1.dot digraph { graph [ ordering =" out " ]; 7 -> 6; 6 -> 2; null0 [ shape = point ] 2 -> null0 ; 2 -> 3; null1 [ shape = point ] 3 -> null1 ; null2 [ shape = point ] 3 -> null2 ; null3 [ shape = point ] 6 -> null3 ; 7 -> 15; 15 -> 9; null4 [ shape = point ] 9 -> null4 ; null5 [ shape = point ] 9 -> null5 ; 15 -> 17; null6 [ shape = point ] 17 -> null6 ; 17 -> 26; 26 -> 22; > 21; null7 [ shape = point ] 21 -> null7 ; null8 [ shape = point ] 21 -> null8 ; 22 -> 24; 24 -> 23; null9 [ shape = point ] 23 -> null9 ; null10 [ shape = point ] 23 -> null10 ; 24 -> 25; null11 [ shape = point ] 25 -> null11 ; null12 [ shape = point ] 25 -> null12 ; 26 -> 27; null13 [ shape = point ] 27 -> null13 ; 27 -> 28; null14 [ shape = point ] 28 -> null14 ; null15 [ shape = point ] 28 -> null15 ; } Listing 2: t2.dot digraph { graph [ ordering =" out " ]; 15 -> 3; 3 -> 2; null0 [ shape = point ] 2 -> null0 ; null1 [ shape = point ] 2 -> null1 ; 3 -> 7; 7 -> 6; null2 [ shape = point ] 6 -> null2 ; null3 [ shape = point ] 6 -> null3 ; 7 -> 9; null4 [ shape = point ] 9 -> null4 ; null5 [ shape = point ] 9 -> null5 ; 15 -> 23; 23 -> 17; null6 [ shape = point ] 17 -> null6 ; 17 -> 22; 22 -> 21; null7 [ shape = point ] 21 -> null7 ; null8 [ shape = point ] 21 -> null8 ; null9 [ shape = point ] 22 -> null9 ; 23 -> 26; 26 -> 24; null10 [ shape = point ] 24 -> null10 ; 24 -> 25; null11 [ shape = point ] 25 -> null11 ; null12 [ shape = point ] 25 -> null12 ; 26 -> 27; null13 [ shape = point ] 27 -> null13 ; 27 -> 28; null14 [ shape = point ] 28 -> null14 ; null15 [ shape = point ] 28 -> null15 ; } Wie oben erwähnt sind die meisten Zahlen zufällig bei jedem Aufruf neu gewählt. In jedem Fall aber sollten die obersten Knoten in der zweiten Grak die Zahlen 3, 15 und 23 sein. In dieser Aufgabe dürfen Sie keine Schleifen verwenden. Die Verwendung von Rekursion ist hingegen erlaubt. a) Implementieren Sie Methoden zum Suchen nach einer Zahl im Baum. Die Methode simplesearch in der Klasse Tree prüft, ob eine Wurzel existiert. Falls nicht, wird sofort false zurück gegeben. Existiert die Wurzel, wird ihre Methode simplesearch aufgerufen. 1 Sie benötigen hierfür Graphviz 3
4 Die Methode simplesearch der Klasse TreeNode durchsucht nun den Baum nach der übergebenen Zahl. Hat der aktuelle Knoten den gesuchten Wert gespeichert, kann true zurückgegeben werden. Andernfalls wird eine Fallunterscheidung gemacht. Da der Baum sortiert ist, wird nach Zahlen, die kleiner sind als der im aktuellen Knoten gespeicherte Wert, nur im linken Teilbaum weiter gesucht. Für Zahlen die gröÿer sind, muss nur im rechten Teilbaum gesucht werden. Trit diese Suche irgendwann auf null, kann die Suche abgebrochen werden und es wird false zurückgegeben. b) Implementieren Sie Methoden zum Einfügen einer Zahl in den Baum. Vervollständigen Sie dazu die Methoden insert in den Klassen TreeNode und Tree. In der Klasse Tree muss zunächst überprüft werden ob eine Wurzel existiert. Falls nein, so sollte das neue Element als Wurzel eingefügt werden. Existiert eine Wurzel, dann wird insert auf der Wurzel aufgerufen. In der Klasse TreeNode wird zunächst nach der einzufügenden Zahl gesucht. Wird sie gefunden, braucht nichts weiter getan zu werden (die Zahl wird also kein zweites Mal eingefügt). Existiert die Zahl noch nicht im Baum, muss ein neuer Knoten an der Stelle eingefügt werden, wo die Suche abgebrochen wurde. Wird zum Beispiel im folgenden Baum die Zahl 36 eingefügt, beginnt die Suche beim Knoten 33, läuft dann über den Knoten 47 und wird nach Knoten 38 abgebrochen, weil der linke Nachfolger fehlt. An dieser Stelle, als linker Nachfolger von 38, wird nun die 36 eingefügt Obwohl dem eigentlichen Einfügen eine Suche vorausgeht, ist es nicht sinnvoll, die Methode simplesearch in dieser Teilaufgabe zu verwenden. c) Schreiben Sie tostring Methoden für die Klassen Tree und TreeNode. Die tostring Methode der Klasse TreeNode soll alle Zahlen, die im aktuellen Knoten und seinen Nachfolgern gespeichert sind, aufsteigend sortiert und mit Kommas getrennt ausgeben. Ruft man beispielsweise tostring auf dem Knoten aus dem Baum oben auf, der die Zahl 15 gespeichert hat, wäre die Ausgabe 5, 10, 15, 18, 20. Die tostring Methode der Klasse Tree soll die Ausgabe tree[5, 10, 15, 18, 20, 33, 38, 39, 47, 49, 51] für das obige Beispiel erzeugen. d) Implementieren Sie in dieser Teilaufgabe die Methoden search und rotationsearch in der Klasse Tree beziehungsweise TreeNode. Diese sollen einen alternativen Algorithmus zur Suche nach einem Wert im Baum implementieren. Es ist sinnvoll Elemente, nach denen häug gesucht wird, möglichst weit oben im Baum zu speichern. Das kann realisiert werden, indem der Baum beim Aufruf der Suche so umstrukturiert wird, dass das gesuchte Element, falls es existiert, in der Wurzel steht und die übrige Struktur weitgehend erhalten wird. Da auÿerdem unbedingt die Sortierung erhalten bleiben muss, sollte ein spezieller Algorithmus verwendet werden. Um einen Knoten eine Ebene im Baum nach oben zu befördern, kann die sogenannte Rotation verwendet werden. Soll im folgenden Beispiel x nach oben rotiert werden, wird die left Referenz des Vorgängerknotens y auf die right Referenz von x gesetzt. Anschlieÿend wird die right Referenz von x auf y gesetzt. 4
5 Das Ergebnis ist der rechts daneben gezeichnete Baum. Um im rechten Baum y nach oben zu rotieren, wird die Operation spiegelbildlich ausgeführt. y x x c a y a b b c Diese Rotation kann nun so lange wiederholt werden, bis der Knoten mit der gesuchten Zahl in der Wurzel ist. Ist die gesuchte Zahl nicht enthalten, wird der Knoten bei dem die Suche erfolglos abgebrochen wird, in die Wurzel rotiert. Die Signatur und Dokumentation der vorgegebenen Methoden geben Ihnen weitere Hinweise, wie die Rotation eines Knotens in die Wurzel rekursiv implementiert werden kann. Aufgabe 3 (Deck 6): (Codescape) Schlieÿen Sie das Spiel Codescape ab, indem Sie den letzten Raum auf Deck 6 auf eine der drei möglichen Arten lösen. Genieÿen Sie anschlieÿend das Outro. Es gibt verschiedene Möglichkeiten wie die Story endet, abhängig von Ihrer Entscheidung im nalen Raum. Verraten Sie Ihren Kommilitonen nicht, welche Auswirkungen Ihre Entscheidung hatte, bevor diese selbst das Spiel abgeschlossen haben. 5
Tutoraufgabe 1 (Hoare-Kalkül):
Prof. aa Dr. J. Giesl Programmierung WS16/17 F. Frohn, J. Hensel, D. Korzeniewski Allgemeine Die Hausaufgaben sollen in Gruppen von je 2 Studierenden aus der gleichen Kleingruppenübung (Tutorium) bearbeitet
Tutoraufgabe 1 (Fibonacci-Zahlen):
Prof. aa Dr. J. Giesl Programmierung WS11/12 M. Brockschmidt, F. Emmes, C. Fuhs, C. Otto, T. Ströder Allgemeine Die Hausaufgaben sollen in Gruppen von je 2 Studierenden aus der gleichen Kleingruppenübung
Tutoraufgabe 1 (2 3 4 Bäume):
Prof. aa Dr. E. Ábrahám Datenstrukturen und Algorithmen SS Übungsblatt (Abgabe.0.0) F. Corzilius, S. Schupp, T. Ströder Allgemeine Hinweise: Die Hausaufgaben sollen in Gruppen von je bis Studierenden aus
Tutoraufgabe 1 (Programmanalyse):
Prof. aa Dr. M. Müller Programmierung WS15/16 C. Aschermann, J. Hensel, J. Protze, P. Reble Allgemeine Hinweise: Die Hausaufgaben sollen in Gruppen von je 3 Studierenden aus der gleichen Kleingruppenübung
Tutoraufgabe 1 (Vollständige Induktion): Tutoraufgabe 2 (Rotationen): Datenstrukturen und Algorithmen SS15 Übungsblatt 5 (Abgabe 3.6.
Prof. aa Dr. Ir. Joost-Pieter Katoen Allgemeine Hinweise: Christian Dehnert, Friedrich Gretz, Benjamin Kaminski, Thomas Ströder Die Hausaufgaben sollen in Gruppen von je - Studierenden aus der gleichen
Tutoraufgabe 1 (Klassenhierarchie):
Prof. aa Dr. J. Giesl Programmierung WS14/15 C. Aschermann, F. Frohn, J. Hensel, T. Ströder Allgemeine Die Hausaufgaben sollen in Gruppen von je 2 Studierenden aus der gleichen Kleingruppenübung (Tutorium)
Tutoraufgabe 1 (Starke Zusammenhangskomponenten):
für Informatik Prof. aa Dr. Ir. Joost-Pieter Katoen Allgemeine Hinweise: Datenstrukturen und Algorithmen SS1 Übungsblatt (Abgabe 4.0.01) Christian Dehnert, Friedrich Gretz, Benjamin Kaminski, Thomas Ströder
Tutoraufgabe 1 (Programmanalyse):
Prof. aa Dr. J. Giesl Programmierung WS14/15 C. Aschermann, F. Frohn, J. Hensel, T. Ströder Allgemeine Hinweise: Die Hausaufgaben sollen in Gruppen von je 2 Studierenden aus der gleichen Kleingruppenübung
Tutoraufgabe 1 (Überladen von Methoden):
Prof. aa Dr. J. Giesl Programmierung WS12/13 M. Brockschmidt, F. Emmes, C. Otto, T. Ströder Allgemeine Hinweise: Die Hausaufgaben sollen in Gruppen von je 2 Studierenden aus der gleichen Kleingruppenübung
Tutoraufgabe 1 (Fibonacci-Zahlen):
Prof. aa Dr. J. Giesl Programmierung WS12/13 M. Brockschmidt, F. Emmes, C. Otto, T. Ströder Tutoraufgabe 1 (Fibonacci-Zahlen): Die Folge der Fibonacci-Zahlen ist folgendermaßen definiert: F 0 = 0 F 1 =
Tutoraufgabe 1 (Entwerfen von Klassenhierarchien):
Prof. aa Dr. J. Giesl Programmierung WS16/17 F. Frohn, J. Hensel, D. Korzeniewski Allgemeine Hinweise: Die Hausaufgaben sollen in Gruppen von je 2 Studierenden aus der gleichen Kleingruppenübung (Tutorium)
Informatik Abitur Bayern 2017 / II - Lösung
Informatik Abitur Bayern 2017 / II - Lösung Autoren: Wolf (1) Wagner (2) Scharnagl (3-5) 1a 5 1b Diese Methode vergleicht den Namen des Interpreten eines jeden Elements der Liste mit dem gegebenen Namen.
Informatik II Übung 2
Informatik II Übung 2 Florian Scheidegger [email protected] Folien mit freundlicher Genehmigung adaptiert von Gábor Sörös und Simon Mayer [email protected], [email protected] 7.3.2013
Übungen zu Programmierung I - Blatt 8
Dr. G. Zachmann A. Greß Universität Bonn Institut für Informatik II 1. Dezember 2004 Wintersemester 2004/2005 Übungen zu Programmierung I - Blatt 8 Abgabe am Mittwoch, dem 15.12.2004, 15:00 Uhr per E-Mail
Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 16/17. Kapitel 14. Bäume. Bäume 1
Kapitel 14 Bäume Bäume 1 Ziele Den Begriff des Baums in der Informatik kennenlernen Bäume als verkettete Datenstruktur repräsentieren können Rekursive Funktionen auf Bäumen verstehen und schreiben können
Datenstrukturen Teil 2. Bäume. Definition. Definition. Definition. Bäume sind verallgemeinerte Listen. Sie sind weiter spezielle Graphen
Bäume sind verallgemeinerte Listen Datenstrukturen Teil 2 Bäume Jeder Knoten kann mehrere Nachfolger haben Sie sind weiter spezielle Graphen Graphen bestehen aus Knoten und Kanten Kanten können gerichtet
8 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
Institut für Programmierung und Reaktive Systeme 5. Dezember Programmieren I. 5. Übungsblatt
Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 5. Dezember 2016 Programmieren I 5. Übungsblatt Hinweis: Auf diesem und den folgenden Übungsblättern
13. Bäume: effektives Suchen und Sortieren
Schwerpunkte Aufgabe und Vorteile von Bäumen 13. Bäume: effektives Suchen und Sortieren Java-Beispiele: Baum.java Traverse.java TraverseTest.java Sortieren mit Bäumen Ausgabealgorithmen: - Preorder - Postorder
Aufgabe 1 (Programmanalyse, Punkte)
2 Aufgabe 1 (Programmanalyse, 8 + 6 Punkte) a) Geben Sie die Ausgabe des Programms für den Aufruf java M an. Schreiben Sie hierzu jeweils die ausgegebenen Zeichen hinter den Kommentar OUT:. public class
Tutoraufgabe 1 (2 3 4 Bäume):
Prof. aa Dr. E. Ábrahám Datenstrukturen und Algorithmen SS Lösung - Übung F. Corzilius, S. Schupp, T. Ströder Tutoraufgabe ( Bäume): a) Löschen Sie den Wert aus dem folgenden Baum und geben Sie den dabei
1. Aufgabe (6 Punkte): Java-Programmierung (Arrays)
Der folgende Mitschrieb wurde von Prof. Alexa am 16.07.2008 als Probeklausur in der MPGI2 Vorlesung gezeigt und wurde auf http://www.basicinside.de/2008/node/94 veröffentlicht. Die Abschrift ist unter
Algorithmen und Datenstrukturen
Prof. Dr. V. Linnemann Lübeck, den 12. Mai 2010 Universität zu Lübeck Institut für Informationssysteme Algorithmen und Datenstrukturen Sommersemester 2010 6. Übungsblatt Lösungen Lösung 1: Optimale Matrixmultiplikation
Übung 4: Die generische Klasse AvlBaum in Java 1
Übung 4: Die generische Klasse AvlBaum in Java 1 Ein binärer Suchbaum hat die AVL -Eigenschaft, wenn sich in jedem Knoten sich die Höhen der beiden Teilbäume höchstens um 1 unterscheiden. Diese Last (
int x = 3; int y = 11; public A () { this.x = z; y *= z;
Prof. aa Dr. J. Giesl Programmierung WS16/17 F. Frohn, J. Hensel, D. Korzeniewski Aufgabe 1 (Programmanalyse): (13 + 6 = 19 Punkte) a) Geben Sie die Ausgabe des Programms für den Aufruf java M an. Tragen
Aufgabenblatt 2 Suchen und Sortieren. Aufgabe 1: Vergleiche und Sortieren in Java
Aufgabenblatt 2 Suchen und Sortieren Abgabetermin: Samstag, 21.05.2016 23:55 Uhr Zur Prüfungszulassung müssen in einem Aufgabenblatt mind. 25% der Punkte erreicht werden und alle weiteren Aufgabenblätter
Tutoraufgabe 1 (Zweierkomplement): Lösung: Programmierung WS16/17 Lösung - Übung 2
Prof. aa Dr. J. Giesl Programmierung WS16/17 F. Frohn, J. Hensel, D. Korzeniewski Tutoraufgabe 1 (Zweierkomplement): a) Sei x eine ganze Zahl. Wie unterscheiden sich die Zweierkomplement-Darstellungen
Tutoraufgabe 1 (Entwerfen von Klassenhierarchien):
Prof. aa Dr. J. Giesl Programmierung WS16/17 F. Frohn, J. Hensel, D. Korzeniewski Allgemeine Die Hausaufgaben sollen in Gruppen von je 2 Studierenden aus der gleichen Kleingruppenübung (Tutorium) bearbeitet
Beispiellösung zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 5
Robert Elsässer Paderborn, den 15. Mai 2008 u.v.a. Beispiellösung zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 5 AUFGABE 1 (6 Punkte): Nehmen wir an, Anfang bezeichne in einer normalen
Vorlesung Informatik 2 Algorithmen und Datenstrukturen
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (18 Bäume: Grundlagen und natürliche Suchbäume) Prof. Dr. Susanne Albers Bäume (1) Bäume sind verallgemeinerte Listen (jedes Knoten-Element kann mehr
Wiederholung. Bäume sind zyklenfrei. Rekursive Definition: Baum = Wurzelknoten + disjunkte Menge von Kindbäumen.
Wiederholung Baum: Gerichteter Graph, der die folgenden drei Bedingungen erfüllt: Es gibt einen Knoten, der nicht Endknoten einer Kante ist. (Dieser Knoten heißt Wurzel des Baums.) Jeder andere Knoten
Tutoraufgabe 1 (Das Herz):
Prof. aa Dr. J. Giesl Programmierung WS4/5 Üungslatt (Agae 5..4) C. Aschermann, F. Frohn, J. Hensel, T. Ströder Allgemeine Die Hausaufgaen sollen in Gruppen von je Studierenden aus der gleichen Kleingruppenüung
Objektorientierung II
9Lehrstuhl für Bioinformatik Einführung in die Programmierung für Bioinformatiker Prof. B. Rost, Dr. L. Richter Blatt 09 19.12.2016 Objektorientierung II Aufgabe 9.1. Modellierung - Geometrische Figuren
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 Aufgabenblatt 4 Prof. R. Westermann, A. Lehmann,
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
Programmieren in Java -Eingangstest-
Programmieren in Java -Eingangstest- Nummer: 1. Studiengang: Informatik B.Sc. Informatik M.Sc. ESE B.Sc. ESE M.Sc. Sonstiges: Fachsemester: Bitte Fragen, die Sie nicht beantworten können unbedingt mit
Datenstruktur Baum und Rekursion Software Entwicklung 1
Datenstruktur Baum und Rekursion Software Entwicklung 1 Annette Bieniusa, Mathias Weber, Peter Zeller 1 Datenstruktur Baum Bäume gehören zu den wichtigsten in der Informatik auftretenden Datenstrukturen.
Übung: Algorithmen und Datenstrukturen SS 2007
Übung: Algorithmen und Datenstrukturen SS 07 Prof. Lengauer Sven Apel, Michael Claÿen, Christoph Zengler, Christof König Blatt 8 Votierung in der Woche vom 25.06.0729.06.07 Aufgabe 22 AVL-Bäume (a) Geben
Institut für Informatik und Angewandte Kognitionswissenschaften
Grundlegende Programmiertechniken (»Programmierung«), WS 2007/2008 Übungsblatt 5 Präsenzaufgaben: 11, 12, 13 Hausaufgabe: 14 Aufgabe 11 STRING- UND OBJEKT-VERGLEICH String s1 = new String("Test String");
Einstieg in die Informatik mit Java
1 / 34 Einstieg in die Informatik mit Java Klassen mit Instanzmethoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 34 1 Definition von Klassen 2 Methoden 3 Methoden
Organisatorisches. drei Gruppen Gruppe 1: 10:10-11:40, Gruppe 2: 11:45-13:15 Gruppe 3: 13:20-14:50
Organisatorisches Vorlesung Donnerstag 8:35 bis 10:05 Übung drei Gruppen Gruppe 1: 10:10-11:40, Gruppe 2: 11:45-13:15 Gruppe 3: 13:20-14:50 Tutorium (Mehr oder weniger) abwechselnd Mo und Mi 10-11:30 Termine
Schlussendlich geben wir die Listen aus. Es kommt zu folgender Ausgabe:
Musterlösung Übung 7 Aufgabe 1 Sehen wir uns zu allererst das gegebene Forth Programm an: 0 3 new - list constant list1 list1 5 new - list constant list2 list1 6 new - list constant list3 list2 2 new -
Ü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
EPROG 2.Teilprüfung. Aufgabe 1:
EPROG 2.Teilprüfung Dauer 50min. Keine Unterlagen erlaubt. Loginname ist q (also x.b. q0697801). Passwort ist Ihre Matrikelnummer. Speichern Sie Ihre Lösungen in den dafür vorgesehenen
Verkettete Datenstrukturen: Bäume
Verkettete Datenstrukturen: Bäume 1 Graphen Gerichteter Graph: Menge von Knoten (= Elementen) + Menge von Kanten. Kante: Verbindung zwischen zwei Knoten k 1 k 2 = Paar von Knoten (k 1, k 2 ). Menge aller
Organisatorisches. Neue Übungsblätter: Nur mehr elektronisch? Abgabe Di, , 14 Uhr bis Do, , 8Uhr
Organisatorisches Neue Übungsblätter: Nur mehr elektronisch? Abgabe Di, 14.10., 14 Uhr bis Do, 23.10., 8Uhr. 14.10.2014 IT I - VO 1 1 IT I: Heute Wiederholung CuP ctd: this Arrays, ArrayLists Schleifen:
Folge 19 - Bäume. 19.1 Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12
Grundlagen: Folge 19 - Bäume 19.1 Binärbäume - Allgemeines Unter Bäumen versteht man in der Informatik Datenstrukturen, bei denen jedes Element mindestens zwei Nachfolger hat. Bereits in der Folge 17 haben
PIWIN 1 Übung Blatt 5
Fakultät für Informatik Wintersemester 2008 André Gronemeier, LS 2, OH 14 Raum 307, [email protected] PIWIN 1 Übung Blatt 5 Ausgabedatum: 19.12.2008 Übungen: 12.1.2009-22.1.2009 Abgabe:
Datenstrukturen. einfach verkettete Liste
einfach verkettete Liste speichert Daten in einer linearen Liste, in der jedes Element auf das nächste Element zeigt Jeder Knoten der Liste enthält beliebige Daten und einen Zeiger auf den nächsten Knoten
Fortgeschrittene Programmiertechnik Klausur SS 2015 Angewandte Informatik Bachelor
Fortgeschrittene Programmiertechnik Klausur SS 2015 Angewandte Informatik Bachelor Name Matrikelnummer Aufgabe Punkte Aufgabe Punkte Zwischensumme 1 6 2 8 3 12 4 18 5 20 64 6 9 7 17 8 18 9 12 Summe 120
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
Klausur "ADP" SS 2015
PD Dr. J. Reischer 20.7.2015 Klausur "ADP" SS 2015 Nachname, Vorname Abschluss (BA, MA, FKN etc.) Matrikelnummer, Semester Versuch (1/2/3) Bitte füllen Sie zuerst den Kopf des Angabenblattes aus! Die Klausur
Datenstrukturen und Algorithmen D-INFK
Eidgenössische Technische Hochschule Zürich Ecole polytechnique fédérale de Zurich Politecnico federale di Zurigo Federal Institute of Technology at Zurich Institut für Theoretische Informatik Peter Widmayer
Datenstrukturen & Algorithmen
Datenstrukturen & Algorithmen Matthias Zwicker Universität Bern Frühling 2010 Übersicht Binäre Suchbäume Einführung und Begriffe Binäre Suchbäume 2 Binäre Suchbäume Datenstruktur für dynamische Mengen
Algorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Dipl. Inform. Andreas Wilkens [email protected] Elementare Datenstrukturen Array Linked List Stack Queue Tree (Feld) (Verkettete Liste) (Stapel) (Warteschlange) (Baum) Einschub:
06 While-Schleifen. While-Schleifen 1/7 Wiederholung: Schleifen
06 While-Schleifen While-Schleifen 1/7 Wiederholung: Schleifen Eine Schleife ist eine Struktur, welche den Computer anweist, eine Liste von Befehlen mehrmals auszuführen. Falls Du ein Verfahren hast, das
Tutoren Simon Andermatt Lukas Beck. Alexis Peter Thomas Ritter
UNIVERSITÄT BASEL Dozent Prof. Dr. Thomas Vetter Departement Informatik Assistenten Brian Amberg Andreas Forster Tutoren Simon Andermatt Lukas Beck Webseite http://informatik.unibas.ch/lehre/hs10/cs101/index.html
// Objekt-Methoden: public void insert(int x) { next = new List(x,next); } public void delete() { if (next!= null) next = next.next; } public String
// Objekt-Methoden: public void insert(int x) { next = new List(x,next); } public void delete() { if (next!= null) next = next.next; } public String tostring() { String result = "["+info; for(list t=next;
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
Teil 1: Suchen. Ausgeglichene Bäume B-Bäume Digitale Suchbäume. M.O.Franz, Oktober 2007 Algorithmen und Datenstrukturen - Binärbäume 1-1
Teil : Suchen Problemstellung Elementare Suchverfahren Hashverfahren Binäre Suchbäume (Wiederholung aus Prog 2) Bäume: Begriffe, Eigenschaften und Traversierung Binäre Suchbäume Gefädelte Suchbäume Ausgeglichene
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
Informatik II, SS 2014
Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 10 (3.6.2014) Binäre Suchbäume I Algorithmen und Komplexität Zusätzliche Dictionary Operationen Dictionary: Zusätzliche mögliche Operationen:
Institut für Programmierung und Reaktive Systeme 26. April 2013. Programmieren II. 10. Übungsblatt
Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 26. April 2013 Programmieren II 10. Übungsblatt Hinweis: Insgesamt werden in diesem Semester fünf
Grundlagen der Programmierung
Grundlagen der Programmierung Algorithmen und Datenstrukturen Die Inhalte der Vorlesung wurden primär auf Basis der angegebenen Literatur erstellt. Darüber hinaus sind viele Teile direkt aus der Vorlesung
Programmieren, Wintersemester 13/14 Übungsleiter: Sebastian Ebers Aufgabenblatt 3
Übung zur Vorlesung Programmieren, Wintersemester 13/14 Übungsleiter: Sebastian Ebers Allgemeines Aufgabenblatt 3 Abgabe: 10.12.2013, vor der Vorlesung (14:15 Uhr, AM 1) Max.
Programmierung 1 (Wintersemester 2015/16) Wiederholungstutorium Lösungsblatt 13 (Queues, Binary Search)
Fachrichtung 6.2 Informatik Universität des Saarlandes Tutorenteam der Vorlesung Programmierung 1 Programmierung 1 (Wintersemester 2015/16) Wiederholungstutorium Lösungsblatt 13 (Queues, Binary Search)
Tutoren Jan Ebbe Pat Mächler Valentino Rugolo Sascha Scherrer. Grundlagen der Programmierung (CS101) - Blatt 8 Theorie [4 Punkte] - Praxis [12 Punkte]
UNIVERSITÄT BASEL Dozent Prof. Dr. Thomas Vetter Departement Informatik Bernoullistrasse 16 CH 4056 Basel Assistenten Bernhard Egger Andreas Forster Tutoren Jan Ebbe Pat Mächler Valentino Rugolo Sascha
1.) Zahlensysteme (10 Punkte)
1.) Zahlensysteme (10 Punkte) (a) Stellen Sie die folgenden zur Basis 8 (oktal) angegebenen Ganzzahlen als vorzeichenbehaftete Binärzahlen in 7 Bit dar. Negative Binärzahlen sollen im Zweierkomplement
Algorithmen und Datenstrukturen Balancierte Suchbäume
Algorithmen und Datenstrukturen Balancierte Suchbäume Matthias Teschner Graphische Datenverarbeitung Institut für Informatik Universität Freiburg SS 12 Überblick Einführung Einfügen und Löschen Einfügen
Algorithmen und Datenstrukturen 1
Algorithmen und Datenstrukturen 1 7. Vorlesung Peter F. Stadler Universität Leipzig Institut für Informatik [email protected] aufbauend auf den Kursen der letzten Jahre von E. Rahm, G. Heyer,
Institut für Programmierung und Reaktive Systeme 20. November Programmieren I. 4. Übungsblatt
Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 20. November 2017 Programmieren I 4. Übungsblatt Hinweis: Auf diesem und den folgenden Übungsblättern
Algorithmen und Datenstrukturen
Universität Innsbruck Institut für Informatik Zweite Prüfung 16. Oktober 2008 Algorithmen und Datenstrukturen Name: Matrikelnr: Die Prüfung besteht aus 8 Aufgaben. Die verfügbaren Punkte für jede Aufgabe
! 1. Rekursive Algorithmen.! 2. Rekursive (dynamische) Datenstrukturen. II.3.2 Rekursive Datenstrukturen - 1 -
! 1. Rekursive Algorithmen! 2. Rekursive (dynamische) Datenstrukturen II.3.2 Rekursive Datenstrukturen - 1 - Ausdruck Ausdruck Grundwert ( Typ ) Präfix-Operator Name Methodenaufruf [ Ausdruck ] ( Ausdruck
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
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,
Algorithmen und Datenstrukturen I AVL-Bäume
Algorithmen und Datenstrukturen I AVL-Bäume Prof. Dr. Oliver Braun Letzte Änderung: 01.12.2017 14:42 Algorithmen und Datenstrukturen I, AVL-Bäume 1/38 Balancierte Bäume in einem zufällig erzeugten Binärbaum
Abstrakter Datentyp (ADT): Besteht aus einer Menge von Objekten, sowie Operationen, die auf diesen Objekten wirken.
Abstrakte Datentypen und Datenstrukturen/ Einfache Beispiele Abstrakter Datentyp (ADT): Besteht aus einer Menge von Objekten, sowie Operationen, die auf diesen Objekten wirken. Datenstruktur (DS): Realisierung
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,
TECHNISCHE UNIVERSITÄT MÜNCHEN. Abgabe: (vor der Vorlesung)
TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen WS 2008/09 Einführung in die Informatik 2 Übungsblatt 6 Prof. Dr. Helmut Seidl, T. M. Gawlitza,
Folienpaket 7 Themenschwerpunkte: Methoden in OOP /2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4
Folienpaket 7 Themenschwerpunkte: Methoden in OOP 284 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4 Eine Klasse entwerfen Eine Klasse enthält folgende Information: Name der Klasse (ist auch der
(a, b)-bäume / 1. Datenmenge ist so groß, dass sie auf der Festplatte abgespeichert werden muss.
(a, b)-bäume / 1. Szenario: Datenmenge ist so groß, dass sie auf der Festplatte abgespeichert werden muss. Konsequenz: Kommunikation zwischen Hauptspeicher und Festplatte - geschieht nicht Byte für Byte,
Umsetzung einer Klassenkarte in einer Programmiersprache
Klassen in Java Umsetzung einer Klassenkarte in einer Programmiersprache Objektorientierte Programme bestehen (nur) aus Klassendefinitionen In Klassendefinitionen wird die Struktur der Objekte festgelegt,
Übung: Algorithmen und Datenstrukturen SS 2007
Übung: Algorithmen und Datenstrukturen SS 2007 Prof. Lengauer Sven Apel, Michael Claÿen, Christoph Zengler, Christof König Blatt 5 Votierung in der Woche vom 04.06.0708.06.07 Aufgabe 12 Manuelle Sortierung
Allgemeine Informatik 2 im SS 2007 Programmierprojekt
v05 30.06.2007 Technische Universität Darmstadt Fachbereich Informatik Prof. Dr. Johannes Fürnkranz Allgemeine Informatik 2 im SS 2007 Programmierprojekt Bearbeitungszeit: 04.06. bis 13.07.2007 Die Formalitäten
1 Der Baum. Informatik I: Einführung in die Programmierung 11. Bäume. Bäume in der Informatik. Bäume in der Informatik - Definition.
1 Informatik I: Einführung in die Programmierung 11. Bäume e e Albert-Ludwigs-Universität Freiburg Bernhard Nebel 13. November 2015 13. November 2015 B. Nebel Info I 3 / 33 Bäume in der Informatik Bäume
Vorlesung Informatik 2 Algorithmen und Datenstrukturen
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (21 - Balancierte Bäume, AVL-Bäume) Prof. Dr. Susanne Albers Balancierte Bäume Eine Klasse von binären Suchbäumen ist balanciert, wenn jede der drei
Kapitel 12: Induktive
Kapitel 12: Induktive Datenstrukturen Felix Freiling Lehrstuhl für Praktische Informatik 1 Universität Mannheim Vorlesung Praktische Informatik I im Herbstsemester 2009 Folien nach einer Vorlage von H.-Peter
Institut für Programmierung und Reaktive Systeme 24. Juni Programmieren II. 14. Übungsblatt
Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 2. Juni 2016 Programmieren II 1. Übungsblatt Hinweis: Auf diesem Übungsblatt finden Sie die fünfte,
