Tutoraufgabe 1 (Fibonacci-Zahlen):

Größe: px
Ab Seite anzeigen:

Download "Tutoraufgabe 1 (Fibonacci-Zahlen):"

Transkript

1 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 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. Die Lösungen müssen bis Donnerstag, den um 17:30 Uhr in den entsprechenden Übungskasten eingeworfen werden. Sie finden die Kästen am Eingang Halifaxstr. des Informatikzentrums (Ahornstr. 55). Alternativ können Sie die Lösungen direkt im Tutorium abgeben. Beachten Sie die auf der Webseite veröffentlichten Code-Konventionen in Ihren Programmen. Grobe Verstöße werden mit Punktabzügen von bis zu 50% geahndet. In einigen Aufgaben müssen Sie in Java programmieren und.java-dateien anlegen. Drucken Sie diese aus und schicken Sie sie per vor Donnerstag, den um 17:30 Uhr an Ihre Tutorin/Ihren Tutor. Stellen Sie sicher, dass Ihr Programm von javac akzeptiert wird, ansonsten werden keine Punkte vergeben. Tutoraufgabe 1 (Fibonacci-Zahlen): Die Folge der Fibonacci-Zahlen ist folgendermaßen definiert: F 0 = 0 F 1 = 1 F n = F n 1 + F n 2 für n > 1 Somit ist der Wert der Fibonacci-Zahlen mit den Indizes 0 und 1 genau ihr Index und jede weitere Fibonacci-Zahl entspricht der Summe ihrer beiden Vorgänger. a) Die direkte Implementierung zur Berechnung der Fibonacci-Zahlen mittels Rekursion ist leider sehr ineffizient, da viele Berechnungen mehrmals ausgeführt, statt als Zwischenergebnis wiederverwendet zu werden. Schreiben Sie eine statische Methode mit einem int Argument n, welche die Fibonacci-Zahl mit Index n berechnet und als int zurück liefert. Für diese Aufgabe dürfen Sie keine Rekursion verwenden (der Einsatz von Schleifen ist hingegen erlaubt). b) Der Goldene Schnitt ist ein in der Kunst häufig verwendetes Verhältnis zweier Größen zueinander und beträgt Dieser Wert lässt sich mithilfe von Fibonacci-Zahlen annähern, denn das Verhältnis zweier aufeinander folgender Fibonacci-Zahlen konvergiert genau gegen diesen Wert. Schreiben Sie eine ausführbare main-methode, welche den kleinsten Index i ermittelt, sodass das Verhältnis der Fibonacci-Zahl mit Index i zu ihrem Vorgänger den Goldenen Schnitt so weit annähert, wie dies für einen double-wert möglich ist. Dieser Index soll ausgegeben werden. Verwenden Sie eine while-schleife, eine int-variable i und zwei double-variablen altgold und neugold. Verwenden Sie i als einen Zähler, sodass Sie das Verhältnis der Fibonacci-Zahlen mit den Indizes i und i-1 in jedem Schleifendurchlauf berechnen können. Dieses Verhältnis speichern Sie in der Variablen neugold. Die Variable altgold dient dazu, den Wert von neugold aus dem vorigen Schleifendurchlauf zu speichern. Die Schleifenbedingung ist dann ein Vergleich zwischen altgold und neugold. 1

2 Aufgabe 2 (Die McCarthy-Funktion): (1 + 1 = 2 Punkte) Die McCarthy-Funktion M berechnet zu einer positiven ganzen Zahl n den Wert M(n) nach folgender Definition: { n 10 falls n > 100 M(n) = M(M(n + 11)) sonst a) Schreiben Sie eine statische Methode mit einem int Argument n, welche den Wert M(n) berechnet und als int zurück liefert. b) Die McCarthy-Funktion wird auch die 91-Funktion genannt, weil sie für alle Werte 0 n 100 den Wert 91 berechnet. Beweisen Sie dies, indem Sie eine ausführbare main-methode schreiben, welche für alle Zahlen zwischen 0 und 100 den Funktionswert der McCarthy-Funktion berechnet und falls eine Zahl nicht den Funktionswert 91 hat, diese Zahl ausgibt. Falls alle Zahlen den Funktionswert 91 haben, soll ausgegeben werden, dass M(n) = 91 für alle 0 n 100 gilt. Tutoraufgabe 3 (Listen): In dieser Aufgabe geht es um einfach verkettete Listen und den Unterschied zwischen veränderbaren und unveränderbaren dynamischen Datenstrukturen (Mutables und Immutables). Beachten Sie, dass die hier verwendete Datenstruktur für Listen von der in der Vorlesung vorgestellten abweicht. Für diese Aufgabe benötigen Sie die Klassen ListExercise.java und ImmutableListExercise.java, welche Sie von unserer Webseite herunter laden können. a) Schreiben Sie eine Klasse List mit zwei Attributen next vom Typ List und value vom Typ int. Alle Attribute sollen private sein. Diese Klasse soll genau einen Konstruktor enthalten, welcher nur ein int- Argument zur Belegung des value-attributs erhält und das next-attribut auf den Wert null setzt. Versehen Sie diese Klasse mit Getter- und Setter-Methoden (d.h. mit Selektoren) für beide Attribute. Fügen Sie darüber hinaus noch eine Methode length und eine Methode tostring jeweils ohne Argumente hinzu. Die Methode length soll die Länge der Liste als int zurück liefern. Die Methode tostring soll eine textuelle Repräsentation der Liste als String 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". In dieser Teilaufgabe dürfen Sie keine Schleifen verwenden (die Verwendung von Rekursion ist hingegen erlaubt). b) Vervollständigen Sie die Methode divide in der Klasse ListExercise.java. Diese Methode erhält eine Liste als Eingabe und soll ein zweielementiges Array von Listen zurückliefern, sodass die erste Liste die erste Hälfte der ursprünglichen Liste enthält und die zweite Liste die zweite Hälfte der ursprünglichen Liste (bei ungerader Länge der Eingabeliste dürfen Sie wählen, welche der beiden Ausgabelisten ein Element mehr enthält). Dabei soll die ursprüngliche Liste nicht modifiziert werden und nicht durch Modifikationen der beiden Ergebnislisten modifizierbar sein. In dieser Teilaufgabe dürfen Sie Schleifen verwenden. c) 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, und soll eine Liste zurück liefern, die alle Elemente der beiden übergebenen Listen in aufsteigender Reihenfolge enthält. Auch hier sollen die ursprünglichen Listen weder modifiziert werden noch durch Modifikationen an der Ergebnisliste modifizierbar sein. In dieser Teilaufgabe dürfen Sie Schleifen verwenden. 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. 2

3 d) Vervollständigen Sie die Methode mergesort in der Klasse ListExercise.java. Diese Methode erhält eine Liste als Eingabe und soll eine Liste mit den gleichen Elementen in aufsteigender Reihenfolge zurückliefern. Falls die übergebene Liste leer (d.h. null) ist, soll null zurück geliefert werden. Enthält die Liste nur ein Element, soll eine Kopie der Liste zurückgegeben werden. Ansonsten soll die übergebene Liste mit divide in zwei kleinere Listen aufgespalten werden, welche dann mit mergesort sortiert und mit merge danach wieder zusammengefügt werden. Achten Sie auch hier wieder darauf, dass die ursprüngliche Liste weder modifiziert wird noch durch Modifikationen an der Ergebnisliste modifizierbar ist. In dieser Teilaufgabe dürfen Sie keine Schleifen verwenden (die Verwendung von Rekursion ist hingegen erlaubt). Sie können die ausführbare main-methode verwenden, um das Verhalten Ihrer Implementierung zu überprüfen. Um beispielsweise die Liste [2,4,3] sortieren zu lassen, rufen Sie die main-methode durch java ListExercise auf. e) In den vorigen Teilaufgaben haben wir eine veränderbare Datenstruktur benutzt, welche durch Setter modifiziert werden konnte, nachdem Sie durch einen Konstruktor erzeugt wurde. Nun wollen wir die gleiche Aufgabe mithilfe einer unveränderbaren Datenstruktur lösen. Schreiben Sie dazu eine Klasse ImmutableList mit zwei Attributen next vom Typ ImmutableList und value vom Typ int. Alle Attribute sollen private und final sein. Diese Klasse soll genau einen Konstruktor enthalten, welcher genau zwei Argumente vom Typ ImmutableList und int zur Belegung der beiden Attribute erhält. Versehen Sie diese Klasse mit Getter-Methoden für beide Attribute, aber Sie dürfen weder Setter-Methoden hinzufügen noch die Attribute außerhalb des Konstruktors modifizieren. Fügen Sie wie in der ersten Teilaufgabe noch eine Methode length und eine Methode tostring jeweils ohne Argumente mit der gleichen Semantik wie in der ersten Teilaufgabe hinzu. Ergänzen Sie diese Klasse darüber hinaus noch um eine Methode getsublist, welche ein Argument vom Typ int erhält und eine unveränderliche Liste zurück liefert, welche die ersten i Elemente der aktuellen Liste enthält, wobei i der übergebene int Wert ist. Sollte die aktuelle Liste nicht genügend Elemente besitzen, wird einfach eine Liste mit allen Elementen der aktuellen Liste zurück gegeben. In dieser Teilaufgabe dürfen Sie keine Schleifen verwenden (die Verwendung von Rekursion ist hingegen erlaubt). f) Vervollständigen Sie die Methode divide in der Klasse ImmutableListExercise.java. Diese Methode erhält eine unveränderliche Liste als Eingabe und soll ein zweielementiges Array von solchen Listen zurückliefern, sodass die erste Liste die erste Hälfte der ursprünglichen Liste enthält und die zweite Liste die zweite Hälfte der ursprünglichen Liste (bei ungerader Länge der Eingabeliste dürfen Sie wählen, welche Ausgabeliste ein Element mehr enthält). Da Sie diesmal mit unveränderlichen Datenstrukturen arbeiten, brauchen Sie nicht auf Seiteneffekte bzgl. der übergebenen Liste zu achten, sondern sollten möglichst wenig neue Objekte erzeugen (dies gilt auch für die folgenden Aufgabenteile). In dieser Teilaufgabe dürfen Sie Schleifen verwenden. g) Vervollständigen Sie die Methode merge in der Klasse ImmutableListExercise.java. Diese Methode erhält zwei unveränderliche Listen als Eingabe, von denen wir annehmen, dass diese bereits aufsteigend sortiert sind, und soll eine unveränderliche Liste zurück liefern, die alle Elemente der beiden übergebenen Listen in aufsteigender Reihenfolge enthält. In dieser Teilaufgabe dürfen Sie Schleifen verwenden. h) Vervollständigen Sie die Methode mergesort in der Klasse ImmutableListExercise.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 divide in zwei kleinere Listen aufgespalten werden, welche dann mit mergesort sortiert und mit merge danach wieder zusammengefügt werden. In dieser Teilaufgabe dürfen Sie keine Schleifen verwenden (die Verwendung von Rekursion ist hingegen erlaubt). 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 ImmutableListExercise auf. 3

4 Aufgabe 4 (Bäume): ( = 13 Punkte) In dieser Aufgabe geht es um einfach verkettete Bäume und den Unterschied zwischen veränderbaren und unveränderbaren dynamischen Datenstrukturen (Mutables und Immutables). In der gesamten Aufgabe dürfen Sie keine Schleifen verwenden (die Verwendung von Rekursion ist hingegen erlaubt). Sie können Ihre Implementierung mit den auf der Webseite zur Verfügung gestellten Klassen TreeExercise.java und ImmutableTreeExercise.java testen. a) Schreiben Sie eine Klasse Tree mit drei Attributen value vom Typ int, left vom Typ Tree und right vom Typ Tree. Alle Attribute sollen private sein. Diese Klasse soll genau einen Konstruktor enthalten, welcher nur ein int-argument zur Belegung des value-attributs erhält und die Attribute left und right jeweils auf den Wert null setzt. Versehen Sie diese Klasse mit Getter- und Setter-Methoden (d.h. mit Selektoren) für alle Attribute. Fügen Sie darüber hinaus noch die Methoden tostring, copy und getmin jeweils ohne Argumente hinzu. Die Methode copy soll eine Kopie des aktuellen Baumes liefern, sodass Modifikationen an der Kopie keine Modifikationen am ursprünglichen Baum verursachen können. Die Methode tostring soll eine textuelle Repräsentation des Baums als String zurück liefern, wobei die Elemente des Baums durch Kommata separiert hintereinander stehen. Die Reihenfolge der Elemente ist dabei die sogenannte depth-first left-to-right Reihenfolge, d.h. linke Nachfolger kommen vor dem aktuellen Wert und rechte Nachfolger erst danach. Als Beispiel ist hier eine grafische und die zugehörige textuelle Repräsentation eines Baums gegeben "4,2,5,1,6,3,7" Die Methode getmin soll das linkeste Element des Baumes liefern (in obigem Beispiel ist dies 4). b) Ergänzen Sie die Klasse Tree um eine Methode sortedinsert, welche ein Argument vom Typ int als Eingabe erhält und diesen Wert so in den aktuellen Baum einfügt, dass dieser in seiner textuellen Repräsentation aufsteigend sortiert ist, falls er dies vorher schon war. Da diese Methode nur den Baum modifiziert, ohne etwas zurück zu liefern, hat sie den Rückgabetyp void. Nehmen Sie in dieser Teilaufgabe keine Umstrukturierung des Baums vor (d.h. der einzige Unterschied zwischen dem Zustand des Baums vor und nach dem Aufruf von sortedinsert ist das neu eingefügte Element). c) Nun wollen wir auch eine Methode zum Löschen von Werten schreiben. Dabei stellt sich uns allerdings das Problem, dass ein Objekt sich nicht selbst auf null setzen kann, sodass das Löschen des letzten Elements aus einem Baum nicht vom Baum-Objekt selbst erledigt werden kann. In der Vorlesung haben Sie zur Lösung dieses Problems bei Listen die Verwendung zweier Klassen kennen gelernt. Hier verwenden wir stattdessen eine statische Methode. Ergänzen Sie die Klasse Tree um eine statische Methode sorteddelete, welche zwei Argumente vom Typ Tree und int als Eingabe erhält und einen neuen Baum zurück liefert, in welchem ein Element mit dem übergebenen Wert aus dem übergebenen Baum gelöscht wurde (bei mehreren Vorkommen dieses Wertes wird nur einer gelöscht und falls kein solches Element existiert, wird einfach kein Element gelöscht). Dabei soll die textuelle Repräsentation des resultierenden Baums aufsteigend sortiert sein, falls sie es vorher war. Achten Sie darauf, dass der übergebene Baum nicht modifiziert wird und dass Modifikationen am Ergebnisbaum keine Modifikationen am übergebenen Baum verursachen können. Verwenden Sie die Methoden getmin und copy aus der ersten Teilaufgabe. d) In den vorigen Teilaufgaben haben wir eine veränderbare Datenstruktur benutzt, welche durch Setter modifiziert werden konnte, nachdem Sie durch einen Konstruktor erzeugt wurde. Nun wollen wir die gleiche Aufgabe mithilfe einer unveränderbaren Datenstruktur lösen. Schreiben Sie dazu eine Klasse ImmutableTree mit drei Attributen value vom Typ int, left vom Typ ImmutableTree und right vom Typ ImmutableTree. Alle 4

5 Attribute sollen private und final sein. Diese Klasse soll genau einen Konstruktor enthalten, welcher genau drei Argumente vom Typ int, ImmutableTree und ImmutableTree zur Belegung der Attribute erhält. Versehen Sie diese Klasse mit Getter-Methoden für alle Attribute. Sie dürfen allerdings weder Setter-Methoden hinzufügen noch die Attribute außerhalb des Konstruktors modifizieren. Fügen Sie darüber hinaus noch die Methoden tostring und getmin jeweils ohne Argumente hinzu. Diese haben die gleiche Semantik wie in der ersten Teilaufgabe. Eine copy-methode wird diesmal nicht benötigt, da die Datenstruktur unveränderlich ist. e) Ergänzen Sie die Klasse ImmutableTree um eine Methode sortedinsert, welche ein Argument vom Typ int als Eingabe erhält und einen neuen unveränderlichen Baum zurück liefert, in welchen dieser Wert vom aktuellen Baum ausgehend so eingefügt wurde, dass der resultierende Baum in seiner textuellen Repräsentation aufsteigend sortiert ist, falls der aktuelle Baum dies vorher schon war. Nehmen Sie in dieser Teilaufgabe keine Umstrukturierung des Baums vor (d.h. der einzige Unterschied zwischen dem alten und neuen Baum ist das neu eingefügte Element). f) Ergänzen Sie die Klasse ImmutableTree um eine nicht-statische Methode sorteddelete, welche ein Argument vom Typ int als Eingabe erhält und einen neuen unveränderlichen Baum zurück liefert, in welchem ein Element mit dem übergebenen Wert aus dem aktuellen Baum gelöscht wurde (bei mehreren Vorkommen dieses Wertes wird nur einer gelöscht und falls kein solches Element existiert, wird einfach kein Element gelöscht). Dabei soll die textuelle Repräsentation des resultierenden Baums aufsteigend sortiert sein, falls sie es beim aktuellen Baum vorher war. Tutoraufgabe 5 (Drachenkurve): Ziel dieser Aufgabe ist es, ein Programm zur Visualisierung der Drachenkurve zu schreiben. Die Drachenkurve erhält man, indem man einen Papierstreifen wie folgt faltet: Man falte die beiden Enden des Papierstreifens so aufeinander, dass sich die Länge des Streifens halbiert. Den so verkürzten Streifen faltet man wieder auf die selbe Art (und wichtig in die selbe Richtung). Nach ein paar Wiederholungen faltet man den Streifen wieder auseinander und richtet ihn dann so aus, dass jeder Knick genau rechtwinklig verläuft. Hat man den Streifen anfänglich n-mal halbiert, erhält man durch diese Anleitung eine Drachenkurve der n-ten Ordnung. 1 Diese Drachenkurve n-ter Ordnung lässt sich auch durch ihre Folge von Rechts- bzw. Linksknicken beschreiben: Ordnung Folge 1 R 2 R R L 3 R R L R R L L 4 R R L R R L L R R R L L R L L Hierbei ergibt sich folgende Konstruktionsvorschrift: Eine Drachenkurve der 1-ten Ordnung hat nur einen Rechtsknick. Um eine Drachenkurve der Ordnung (n + 1) zu erhalten, führt man erst die Folge von Knicken einer Kurve der 1 Bild lizenziert unter CC BY-SA 3.0, Quelle: 5

6 Ordnung n durch, dann einen Rechtsknick und dann wieder die Knicke einer Folge der Ordnung n, wobei man in deren Mitte anstelle eines Rechtsknicks einen Linksknick macht. Für Ihre Implementierung benötigen Sie die Datei Staffelei.java von der Homepage. Verwenden Sie das Programm Javadoc, um die Schnittstellendokumentation dieser Klasse zu erzeugen. Ergänzen Sie die Datei Drachenkurve.java um zwei statische Methoden kurvel und kurver, die jeweils eine Drachenkurve beliebiger Ordnung mit einem Links- bzw. Rechtsknick in der Mitte darstellen. Diese Methoden bekommen als Argumente jeweils ein Objekt der Klasse Staffelei sowie eine Ordnung als int-wert. Mit Hilfe der Methoden des Staffelei-Objektes kann die Zeichnung gefertigt werden. Verwenden Sie die Methode drawforward der Klasse Staffelei um einen Strich zu malen. Als Länge eignen sich 10 Pixel. Rotationen können Sie mit der Methode rotate der Klasse Staffelei erreichen, die eine Gradzahl als Parameter bekommt. Implementieren Sie die Methoden kurvel und kurver rekursiv. Aufgabe 6 (Kochkurve): (5 Punkte) Ziel dieser Aufgabe ist es, ein Programm zur Visualisierung der Kochkurve zu programmieren, die sich ähnlich beschreiben lässt wie die Drachenkurve der vorhergehenden Aufgabe: Eine Kochkurve der Ordnung 0 ist eine gerade Linie einer bestimmten Länge. Eine Kochkurve der Ordnung n+1 sind vier Kochkurven der Ordnung n, die nacheinander gezeichnet werden. Nach der ersten und dritten Kurve wird ein Knick um 60 nach links gemacht und nach der zweiten Kurve ein Knick um 120 nach rechts. Kochkurven der Ordnung 0, 1 und 2. Für Ihre Implementierung benötigen Sie die Datei Staffelei.java von der Homepage. Verwenden Sie das Programm Javadoc, um die Schnittstellendokumentation dieser Klasse zu erzeugen. Ergänzen Sie die Datei Kochkurve.java um eine statische Methode kochkurve. Diese Methode soll eine Kochkurve beliebiger Ordnung darstellen können. Als Eingabeparameter bekommt die Methode ein Objekt der Klasse Staffelei sowie die Ordnung der darzustellenden Kurve als int-wert. Die (fertige) main-methode in der Klasse Kochkurve erstellt erst ein Objekt der Klasse Staffelei und verwendet dann die Funktion kochkurve, um drei Kochkurven der Ordnung 3 zu malen, die jeweils durch eine Rechtsrotation von 120 verbunden sind. Verwenden Sie die Methode drawforward der Klasse Staffelei um einen Strich zu malen. Als Länge eignen sich 10 Pixel. Rotationen können Sie mit der Methode rotate der Klasse Staffelei erreichen, die eine Gradzahl als Parameter bekommt. Unterscheiden Sie in Ihrer Methode kochkurve zwei Fälle: Entweder ist die Ordnung 0 (oder kleiner) oder die Ordnung ist mindestens 1. Im zweiten Fall soll die Methode kochkurve rekursiv verwendet werden. 6

Tutoraufgabe 1 (Programmanalyse):

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

Mehr

Tutoraufgabe 1 (Hoare-Kalkül):

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

Mehr

Tutoraufgabe 1 (2 3 4 Bäume):

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

Mehr

Tutoraufgabe 1 (Vollständige Induktion): Tutoraufgabe 2 (Rotationen): Datenstrukturen und Algorithmen SS15 Übungsblatt 5 (Abgabe 3.6.

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

Mehr

Tutoraufgabe 1 (Programmanalyse):

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

Mehr

Tutoraufgabe 1 (Klassenhierarchie):

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)

Mehr

Übungen zu Programmierung I - Blatt 8

Ü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

Mehr

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

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

Mehr

Programmierkurs Java

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

Mehr

Übungen zur Vorlesung EidP (WS 2015/16) Blatt 6

Übungen zur Vorlesung EidP (WS 2015/16) Blatt 6 Andre Droschinsky Ingo Schulz Dortmund, den 0. Dezember 2015 Übungen zur Vorlesung EidP (WS 2015/16) Blatt 6 Block rot Es können 4 + 1 Punkte erreicht werden. Abgabedatum: 10. Dezember 2015 2:59 Uhr Hinweise

Mehr

C# - Einführung in die Programmiersprache Arrays, Enumeration und Collections. Leibniz Universität IT Services Anja Aue

C# - Einführung in die Programmiersprache Arrays, Enumeration und Collections. Leibniz Universität IT Services Anja Aue C# - Einführung in die Programmiersprache Arrays, Enumeration und Collections Leibniz Universität IT Services Anja Aue Arrays... speichern mehrere Werte vom gleichen Datentyp. fassen zusammenhängende Werte

Mehr

Organisatorisches. drei Gruppen Gruppe 1: 10:10-11:40, Gruppe 2: 11:45-13:15 Gruppe 3: 13:20-14:50

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

Mehr

Tutoraufgabe 1 (2 3 4 Bäume):

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

Mehr

Klausur Grundlagen der Programmierung

Klausur Grundlagen der Programmierung Klausur Grundlagen der Programmierung Aufgabenstellung: Martin Schultheiß Erreichte Punktzahl: von 60 Note: Allgemeine Hinweise: Schreiben Sie bitte Ihren Namen auf jedes der Blätter Zugelassene Hilfsmittel

Mehr

5. Tutorium zu Programmieren

5. Tutorium zu Programmieren 5. Tutorium zu Programmieren Dennis Ewert Gruppe 6 Universität Karlsruhe Institut für Programmstrukturen und Datenorganisation (IPD) Lehrstuhl Programmierparadigmen WS 2008/2009 c 2008 by IPD Snelting

Mehr

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

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

Mehr

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 10

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 10 Gudrun Fischer Sascha Kriewel programmierung@is.informatik.uni-duisburg.de Übungsblatt Nr. 10 Aufgabe 20: Code Verständnis Löse diese Aufgabe selbständig als Vorbereitung zur Übung auf dem Papier. a) Gib

Mehr

Einstieg in die Informatik mit Java

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

Mehr

Objektorientierung II

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

Mehr

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

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

Mehr

Java Kurs für Anfänger Einheit 5 Methoden

Java Kurs für Anfänger Einheit 5 Methoden Java Kurs für Anfänger Einheit 5 Methoden Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 22. Juni 2009 Inhaltsverzeichnis Methoden

Mehr

Allgemeine Informatik 2 im SS 2007 Programmierprojekt

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

Mehr

Praxis der Programmierung

Praxis der Programmierung Dynamische Datentypen Institut für Informatik und Computational Science Universität Potsdam Henning Bordihn Einige Folien gehen auf A. Terzibaschian zurück. 1 Dynamische Datentypen 2 Dynamische Datentypen

Mehr

Android will doch nur spielen. Java Übung

Android will doch nur spielen. Java Übung Android will doch nur spielen Java Übung Vorbereitung: Erstellen Sie mit Eclipse zunächst ein neues Java Projekt JavaUebungen. Lassen Sie die restlichen Einstellungen unverändert. Erzeugen Sie das Projekt

Mehr

1.) Zahlensysteme (10 Punkte)

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

Mehr

Institut für Programmierung und Reaktive Systeme 24. Juni Programmieren II. 14. Übungsblatt

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,

Mehr

Wie entwerfe ich ein Programm?

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

Mehr

PIWIN 1 Übung Blatt 5

PIWIN 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:

Mehr

3. Übungsblatt zu Algorithmen I im SoSe 2017

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

Mehr

Tutoraufgabe 1 (Entwerfen von Klassenhierarchien):

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)

Mehr

Tutoraufgabe 1 (Datenstrukturen in Haskell):

Tutoraufgabe 1 (Datenstrukturen in Haskell): Prof. aa Dr. J. Giesl Programmierung WS12/13 M. Brockschmidt, F. Emmes, C. Otto, T. Ströder Allgemeine Die Hausaufgaben sollen in Gruppen von je 2 Studierenden aus der gleichen Kleingruppenübung (Tutorium)

Mehr

Tutoraufgabe 1 (Überladen von Methoden):

Tutoraufgabe 1 (Überladen von Methoden): Prof. aa Dr. J. Giesl Programmierung WS12/13 M. Brockschmidt, F. Emmes, C. Otto, T. Ströder Tutoraufgabe 1 (Überladen von Methoden): Lösen Sie die folgende Aufgabe ohne Einsatz eines Computers. Bedenken

Mehr

Effiziente verkettete Listen

Effiziente verkettete Listen Gilbert Beyer und Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik http://www.pst.ifi.lmu.de/lehre/wise-11-12/infoeinf WS11/12 Verkettete Listen: Wiederholung Einführung in die Informatik

Mehr

Aufgabenblatt 2 Suchen und Sortieren. Aufgabe 1: Vergleiche und Sortieren in Java

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

Mehr

188.154 Einführung in die Programmierung Vorlesungsprüfung

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

Mehr

Bearbeitungszeit: 120 Minuten. Kommentare kosten Zeit; kommentieren Sie ihr Programm nur da, wo der Code alleine nicht verständlich wäre.

Bearbeitungszeit: 120 Minuten. Kommentare kosten Zeit; kommentieren Sie ihr Programm nur da, wo der Code alleine nicht verständlich wäre. Fakultät IV Elektrotechnik/Informatik Klausur Einführung in die Informatik I für Elektrotechniker Name:... Matr.-Nr.... Bearbeitungszeit: 120 Minuten Bewertung (bitte offenlassen : ) Aufgabe Punkte Erreichte

Mehr

Informatik II, SS 2014

Informatik II, SS 2014 Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 7 (21.5.2014) Binäre Suche, Hashtabellen I Algorithmen und Komplexität Abstrakte Datentypen : Dictionary Dictionary: (auch: Maps, assoziative

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Wintersemester 2013/14 1. Vorlesung Kapitel 1: Sortieren Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I Das Problem Eingabe Gegeben: eine Folge A = a 1, a 2,..., a

Mehr

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

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

Mehr

1. Typen und Literale (6 Punkte) 2. Zuweisungen (6 = Punkte)

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

Mehr

Algorithmen & Programmierung. Rekursive Funktionen (1)

Algorithmen & Programmierung. Rekursive Funktionen (1) Algorithmen & Programmierung Rekursive Funktionen (1) Berechnung der Fakultät Fakultät Die Fakultät N! einer nichtnegativen ganzen Zahl N kann folgendermaßen definiert werden: d.h. zur Berechnung werden

Mehr

Praktikum zur Vorlesung Einführung in die Programmierung WS 14/15 Blatt 3

Praktikum zur Vorlesung Einführung in die Programmierung WS 14/15 Blatt 3 Michael Jugovac Dominik Kopczynski Jan Quadflieg Till Schäfer Stephan Windmüller Dortmund, den 30. Oktober 2014 Praktikum zur Vorlesung Einführung in die Programmierung WS 14/15 Blatt 3 Es können 12 (+5

Mehr

Folge 19 - Bäume. 19.1 Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12

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

Mehr

Tutoraufgabe 1 (ɛ-produktionen):

Tutoraufgabe 1 (ɛ-produktionen): Prof aa Dr J Giesl Formale Systeme, Automaten, Prozesse SS 2010 M Brockschmidt, F Emmes, C Fuhs, C Otto, T Ströder Hinweise: Die Hausaufgaben sollen in Gruppen von je 2 Studierenden aus dem gleichen Tutorium

Mehr

Java: Eine kurze Einführung an Beispielen

Java: Eine kurze Einführung an Beispielen Java: Eine kurze Einführung an Beispielen Quellcode, javac und die JVM Der Quellcode eines einfachen Java-Programms besteht aus einer Datei mit dem Suffix.java. In einer solchen Datei wird eine Klasse

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE38-Generics (Stand 28.09.2012) Aufgabe 1: Schauen Sie sich die generischen Klassen des Paketes java.util an. Aufgabe 2: Ausgangslage sind die folgenden

Mehr

Probeklausur Programmieren in C Sommersemester 2007 Dipl. Biol. Franz Schenk 12. April 2007, Uhr Bearbeitungszeit: 105 Minuten

Probeklausur Programmieren in C Sommersemester 2007 Dipl. Biol. Franz Schenk 12. April 2007, Uhr Bearbeitungszeit: 105 Minuten Probeklausur Programmieren in C Sommersemester 2007 Dipl. Biol. Franz Schenk 12. April 2007, 13.00-14.45 Uhr Bearbeitungszeit: 105 Minuten Schalten Sie ihr Mobiltelefon aus. Bei der Klausur ist als einziges

Mehr

13. Bäume: effektives Suchen und Sortieren

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

Mehr

Übungsblatt 3: Algorithmen in Java & Grammatiken

Übungsblatt 3: Algorithmen in Java & Grammatiken Humboldt-Universität zu Berlin Grundlagen der Programmierung (Vorlesung von Prof. Bothe) Institut für Informatik WS 15/16 Übungsblatt 3: Algorithmen in Java & Grammatiken Abgabe: bis 9:00 Uhr am 30.11.2015

Mehr

Fortgeschrittene Programmiertechnik Klausur WS 2014/15 Angewandte Informatik Bachelor

Fortgeschrittene Programmiertechnik Klausur WS 2014/15 Angewandte Informatik Bachelor Fortgeschrittene Programmiertechnik Klausur WS 2014/15 Angewandte Informatik Bachelor Name Matrikelnummer Aufgabe Punkte Aufgabe Punkte Zwischensumme 1 6 2 8 3 16 4 14 5 12 56 6 16 7 18 8 20 9 10 Summe

Mehr

Institut für Informatik und Angewandte Kognitionswissenschaften

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");

Mehr

Programmierung WS12/13 Lösung - Übung 1 M. Brockschmidt, F. Emmes, C. Otto, T. Ströder

Programmierung WS12/13 Lösung - Übung 1 M. Brockschmidt, F. Emmes, C. Otto, T. Ströder Prof. aa Dr. J. Giesl Programmierung WS12/13 M. Brockschmidt, F. Emmes, C. Otto, T. Ströder Tutoraufgabe 1 (Syntax und Semantik): 1. Was ist Syntax? Was ist Semantik? Erläutern Sie den Unterschied. 2.

Mehr

Name: Matrikelnr : Aufgabe 1: (ca. 8 Punkte )

Name: Matrikelnr : Aufgabe 1: (ca. 8 Punkte ) Name: Aufgabe 1: (ca. 8 Punkte ) Matrikelnr : In einem Array int a = new int[1000] ; befinden sich 1000 verschiedene Zahlen. Schreiben Sie eine Funktion, die das Array als Parameter übergeben bekommt und

Mehr

Sie müssen den Test bis 20:00 Uhr am Abgabetag dieses Übungszettels absolviert haben.

Sie müssen den Test bis 20:00 Uhr am Abgabetag dieses Übungszettels absolviert haben. Informatik I Wintersemester 2013/14 Prof. Dr. Carsten Damm Georg-August-Universität Göttingen Dr. Henrik Brosenne Institut für Informatik Übung 6 Abgabe bis Dienstag, 10.12., 18:00 Uhr. Werfen Sie Ihre

Mehr

Institut für Programmierung und Reaktive Systeme 26. April 2013. Programmieren II. 10. Übungsblatt

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

Mehr

Große Übung Praktische Informatik 1

Groß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,

Mehr

! 1. Rekursive Algorithmen.! 2. Rekursive (dynamische) Datenstrukturen. II.3.2 Rekursive Datenstrukturen - 1 -

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

Mehr

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

Schwerpunkte. Verkettete Listen. Verkettete Listen: 7. Verkettete Strukturen: Listen. Überblick und Grundprinzip. Vergleich: Arrays verkettete Listen Schwerpunkte 7. Verkettete Strukturen: Listen Java-Beispiele: IntList.java List.java Stack1.java Vergleich: Arrays verkettete Listen Listenarten Implementation: - Pascal (C, C++): über Datenstrukturen

Mehr

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 16/17. Kapitel 14. Bäume. Bäume 1

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

Mehr

ALP II Dynamische Datenmengen Datenabstraktion (Teil 2)

ALP II Dynamische Datenmengen Datenabstraktion (Teil 2) ALP II Dynamische Datenmengen Datenabstraktion (Teil 2) O1 O2 O3 O4 SS 2012 Prof. Dr. Margarita Esponda 49 Einfach verkettete Listen O1 O2 O3 50 Einführung Einfach verkettete Listen sind die einfachsten

Mehr

Allgemeine Hinweise:

Allgemeine Hinweise: TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen WS 12/13 Einführung in die Informatik I Wiederholungsklausur Prof. Dr. Helmut Seidl, A. Lehmann,

Mehr

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung Ludwig-Maximilians-Universität München WS 2013/14 Institut für Informatik Übungsblatt 10 Prof. Dr. R. Hennicker, A. Klarl Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung

Mehr

To know recursion, you must first know recursion. Borchers: Programmierung für Alle (Java), WS 06/07 Kapitel 17 1

To know recursion, you must first know recursion. Borchers: Programmierung für Alle (Java), WS 06/07 Kapitel 17 1 To know recursion, you must first know recursion. Borchers: Programmierung für Alle (Java), WS 06/07 Kapitel 17 1 Rekursion: Beispiele Bier trinken 8-Damen-Problem ipod Shuffle für alle Mitarbeiter Karten

Mehr

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

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

Mehr

Übung Datenstrukturen. Objektorientierung in C++

Übung Datenstrukturen. Objektorientierung in C++ Übung Datenstrukturen Objektorientierung in C++ Aufgabe 1a - Farben Schreiben Sie eine Klasse COLOR zur Beschreibung von Farben. Eine Farbe werde hierbei additiv durch ihren Rot-, Grün- und Blauanteil

Mehr

Name: Seite 1. Beantworten Sie die Fragen in den Aufgaben 1 und 2 mit einer kurzen, prägnanten Antwort.

Name: Seite 1. Beantworten Sie die Fragen in den Aufgaben 1 und 2 mit einer kurzen, prägnanten Antwort. Name: Seite 1 Beantworten Sie die Fragen in den Aufgaben 1 und 2 mit einer kurzen, prägnanten Antwort. Aufgabe 1 (8 Punkte) 1. Wie wird bei der Zusicherungsmethode die Zusicherung genannt, die vor Eintritt

Mehr

Institut für Programmierung und Reaktive Systeme 25. August 2014. Programmier-Labor. 04. + 05. Übungsblatt. int binarysearch(int[] a, int x),

Institut 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

Mehr

Funktionen in PHP 1/7

Funktionen in PHP 1/7 Funktionen in PHP 1/7 Vordefinierte Funktionen in PHP oder vom Entwickler geschriebene Funktionen bringen folgende Vorteile: gleiche Vorgänge müssen nur einmal beschrieben und können beliebig oft ausgeführt

Mehr

FH Ravensburg-Weingarten Schriftlich Prüfung Programmieren

FH Ravensburg-Weingarten Schriftlich Prüfung Programmieren FH Ravensburg-Weingarten Schriftlich Prüfung Programmieren Prof. Dr. M. Zeller Datum, Zeit Aufgabenblätter erreichbare Punktzahl zugelassene Hilfsmittel, 0800 1000 Uhr (120 min) 16 Seiten (einschl. Deckblatt)

Mehr

Tag 4 Repetitorium Informatik (Java)

Tag 4 Repetitorium Informatik (Java) Tag 4 Repetitorium Informatik (Java) Dozent: Patrick Kreutzer Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2016/2017 Willkommen zum Informatik-Repetitorium!

Mehr

Programmieren in C. Rekursive Strukturen. Prof. Dr. Nikolaus Wulff

Programmieren in C. Rekursive Strukturen. Prof. Dr. Nikolaus Wulff Programmieren in C Rekursive Strukturen Prof. Dr. Nikolaus Wulff Rekursive Strukturen Häufig müssen effizient Mengen von Daten oder Objekten im Speicher verwaltet werden. Meist werden für diese Mengen

Mehr

Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny

Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny 7. Funktionen Einleitung Nach dem Prinzip Divide and Conquer bietet es sich an, größere Aufgaben in kleinere Teile zu unterteilen. Anweisungsblöcke,

Mehr

Tutoren Simon Andermatt Lukas Beck. Alexis Peter Thomas Ritter

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

Mehr

188.154 Einführung in die Programmierung für Wirtschaftsinformatik

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

Mehr

1. Aufgabe (6 Punkte): Java-Programmierung (Arrays)

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

Mehr

Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen

Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen Kapitel 9 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Attribute von Klassen, Methoden und Variablen Interfaces WS 07/08 1/ 18 2/ 18

Mehr

C++ Teil 2. Sven Groß. 16. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Apr / 22

C++ Teil 2. Sven Groß. 16. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Apr / 22 C++ Teil 2 Sven Groß IGPM, RWTH Aachen 16. Apr 2015 Sven Groß (IGPM, RWTH Aachen) C++ Teil 2 16. Apr 2015 1 / 22 Themen der letzten Vorlesung Hallo Welt Elementare Datentypen Ein-/Ausgabe Operatoren Sven

Mehr

Standardkonstrukte in Java

Standardkonstrukte in Java Robert Buchholz, Sven Schneider JavaKurs 2006 1. Tag Freitagsrunde / Tutoren 03. April 2006 Was lernen wir heute noch kennen? 1 Methoden Definition einer Methode Aufruf einer Methode 2 Datenstruktur Array

Mehr

6 Speicherorganisation

6 Speicherorganisation Der Speicher des Programms ist in verschiedene Speicherbereiche untergliedert Speicherbereiche, die den eigentlichen Programmcode und den Code der Laufzeitbibliothek enthalten; einen Speicherbereich für

Mehr

Tutoren Jan Ebbe Pat Mächler Valentino Rugolo Sascha Scherrer. Grundlagen der Programmierung (CS101) - Blatt 8 Theorie [4 Punkte] - Praxis [12 Punkte]

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

Mehr

Repetitorium Informatik (Java)

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

Mehr

Übungsblatt 4. Java Vorkurs (WS 2015)

Übungsblatt 4. Java Vorkurs (WS 2015) Übungsblatt 4 Java Vorkurs (WS 2015) Aufgabe 1 Übungsblock In dieser Aufgabe soll ein kleines Programm zur verwaltung von Studenten erstellt werden. Gehe davon aus, dass nicht mehr 100 Studenten durch

Mehr

8. A & D - Heapsort. Werden sehen, wie wir durch geschicktes Organsieren von Daten effiziente Algorithmen entwerfen können.

8. A & D - Heapsort. Werden sehen, wie wir durch geschicktes Organsieren von Daten effiziente Algorithmen entwerfen können. 8. A & D - Heapsort Werden sehen, wie wir durch geschicktes Organsieren von Daten effiziente Algorithmen entwerfen können. Genauer werden wir immer wieder benötigte Operationen durch Datenstrukturen unterstützen.

Mehr

Datenstrukturen & Algorithmen Lösungen zu Blatt 5 FS 14

Datenstrukturen & Algorithmen Lösungen zu Blatt 5 FS 14 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 26. März

Mehr

Informatik II, SS 2014

Informatik II, SS 2014 Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 13 (18.6.2014) Binäre Suchbäume IV (Rot Schwarz Bäume) Algorithmen und Komplexität Rot Schwarz Bäume Ziel: Binäre Suchbäume, welche immer

Mehr

Grundlagen der Programmierung WS 15/16 (Vorlesung von Prof. Bothe)

Grundlagen der Programmierung WS 15/16 (Vorlesung von Prof. Bothe) Humboldt-Universität zu Berlin Institut für Informatik Grundlagen der Programmierung WS 15/16 (Vorlesung von Prof. Bothe) Übungsblatt 4: Felder und Rekursion Abgabe: bis 9:00 Uhr am 14.12.2015 über Goya

Mehr

Javakurs 2013 Objektorientierung

Javakurs 2013 Objektorientierung Javakurs 2013 Objektorientierung Objektorientierte Programmierung I Armelle Vérité 7 März 2013 Technische Universität Berlin This work is licensed under the Creative Commons Attribution-ShareAlike 3.0

Mehr

Einstieg in die Informatik mit Java

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

Mehr

AuD-Tafelübung T-B5b

AuD-Tafelübung T-B5b 6. Übung Sichtbarkeiten, Rekursion, Javadoc Di, 29.11.2011 1 Blatt 5 2 OOP Klassen Static vs. Instanzen Sichtbarkeit 3 Stack und Heap Stack Heap 4 Blatt 6 1 Blatt 5 2 OOP Klassen Static vs. Instanzen Sichtbarkeit

Mehr

Informatik II Vorlesung am D-BAUG der ETH Zürich

Informatik II Vorlesung am D-BAUG der ETH Zürich Informatik II Vorlesung am D-BAUG der ETH Zürich Vorlesung 9, 2.5.2016 [Nachtrag zu Vorlesung : Numerische Integration, Zusammenfassung Objektorientierte Programmierung] Dynamische Datenstrukturen II:

Mehr

Aufgabe 1 ZUFÄLLIGES ENGLISCH. »Programmieren«, WS 2006/2007. Nino Simunic M.A.

Aufgabe 1 ZUFÄLLIGES ENGLISCH. »Programmieren«, WS 2006/2007. Nino Simunic M.A. »Programmieren«, WS 2006/2007 Nino Simunic (nino.simunic@uni-due.de) Übungsblatt 5 Aufgabe 1 ZUFÄLLIGES ENGLISCH Der folgende Quelltext zeigt Ihnen, wie man Zufallszahlen erzeugen kann. Dazu benötigt wird

Mehr

Beispiellösung zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 5

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

Mehr

Ausgabe: :00 Abgabe: :00. Sie müssen bei Ihren Lösungen eine maximale Zeilenbreite von 120 Zeichen einhalten.

Ausgabe: :00 Abgabe: :00. Sie müssen bei Ihren Lösungen eine maximale Zeilenbreite von 120 Zeichen einhalten. Programmieren Wintersemester 2015/16 Software-Design und Qualität (SDQ) https://sdqweb.ipd.kit.edu/wiki/programmieren Prof. Dr. Ralf H. Reussner Kiana Rostami Michael Langhammer Übungsblatt 2 Ausgabe:

Mehr

Klausur Algorithmen und Datenstrukturen II 10. August 2015

Klausur Algorithmen und Datenstrukturen II 10. August 2015 Technische Universität Braunschweig Sommersemester 2015 Institut für Betriebssysteme und Rechnerverbund Abteilung Algorithmik Prof. Dr. Sándor P. Fekete Dr. Christian Scheffer Klausur Algorithmen und Datenstrukturen

Mehr

Datenstrukturen. einfach verkettete Liste

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

Mehr

Informatik B von Adrian Neumann

Informatik B von Adrian Neumann Musterlösung zum 7. Aufgabenblatt vom Montag, den 25. Mai 2009 zur Vorlesung Informatik B von Adrian Neumann 1. Java I Schreiben Sie ein Java Programm, das alle positiven ganzen Zahlen 0 < a < b < 1000

Mehr

WiMa-Praktikum 1. Woche 8

WiMa-Praktikum 1. Woche 8 WiMa-Praktikum 1 Universität Ulm, Sommersemester 2017 Woche 8 Lernziele In diesem Praktikum sollen Sie üben und lernen: Besonderheiten der For-Schleife in Matlab Wiederholung des Umgangs mit Matrizen und

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 09: Vererbung Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil Einführung in die Vererbung Motivation Das Schlüsselwort extends Einführendes

Mehr

Allgemeine Hinweise. Einführung von Checkstyle

Allgemeine Hinweise. Einführung von Checkstyle Programmieren Wintersemester 0/ Software-Design und Qualität (SDQ) https://sdqweb.ipd.kit.edu/wiki/programmieren Prof. Dr. Ralf H. Reussner Kiana Rostami Philipp Merkle Übungsblatt Ausgabe:..0 :00 Abgabe:

Mehr

368 4 Algorithmen und Datenstrukturen

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

Mehr