Aufgabe 2 (Collections):
|
|
- Petra Becker
- vor 5 Jahren
- Abrufe
Transkript
1 Prof. aa Dr. J. Giesl 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 nden 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öentlichten 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 (Collections): In dieser Aufgabe sollen Sie nach Möglichkeit vordenierte Klassen aus dem Collections Framework verwenden, welches Sie im Package java.util nden. Auÿerdem benötigen Sie die Klassen Term und Variable von unserer Homepage. Dabei ist die Klasse Term eine Oberklasse von Variable. Diese Klassen modellieren mathematische Terme. Dabei hat jeder Term einen Namen und eine Liste von Argumenten, die wiederum Terme sind. Eine Variable hat immer eine leere Argumentliste. Ergänzen Sie die Klasse Term um eine Methode Set<Variable> createsetofvariables(), welche eine Menge von Objekten des Typs Variable zurückliefert. Diese Menge soll genau alle Variablen enthalten, die im aktuellen Term vorkommen. Falls der aktuelle Term also eine Variable ist, so enthält diese Menge genau diese Variable. Ansonsten enthält sie die Vereinigung aller Variablenmengen der Argumente des aktuellen Terms. Nutzen Sie die Möglichkeit, die Methode createsetofvariables() in der Unterklasse Variable zu überschreiben, sodass sie sowohl auf Variablen als auch auf anderen Termen korrekt arbeitet. Schauen Sie sich die API des Collections Frameworks an, um sich über das Set Interface und passende Implementierungen zu informieren. Hierbei dürfen Sie zur Erzeugung konkreter Objekte, die einen Interface- Typ haben, beliebige Implementierungen dieses Interfaces nutzen. Aufgabe 2 (Collections): (3 Punkte) In dieser Aufgabe sollen Sie nach Möglichkeit vordenierte Klassen aus dem Collections Framework verwenden, welches Sie im Package java.util nden. Auÿerdem benötigen Sie die Klassen Term und Variable aus Aufgabe 1. Ergänzen Sie die Klasse Term um eine Methode Term applysubstitution(map<variable,term> substitution), welche einen Term zurück liefert. Dieser Term entsteht aus dem ursprünglichen Term, indem alle Vorkommen von Variablen in der übergebenen Map durch die ihnen zugeordneten Terme ersetzt wurden. Eine Map modelliert also eine mathematische Abbildung als Menge von Paaren. Der ursprüngliche Term (genauer das Objekt, das den ursprünglichen Term repräsentiert) soll dabei nicht modiziert werden. Nehmen wir zum Beispiel an, dass der Term t den mathematischen Term f(x,a,y,g(x,z)) repräsentiert, bei dem X, Y und Z Variablen sind. Ferner nehmen wir an, dass die Map m lediglich die Einträge X b und Y c enthält. Dann liefert der Aufruf t.applysubstitution(m) den Term f(b,a,c,g(b,z)) zurück. 1
2 Sie können ausnutzen, dass die vorgegebene Datenstruktur für Term und Variable unveränderlich (immutable) ist. Nutzen Sie die Möglichkeit, Methoden in Unterklassen zu überschreiben. Schauen Sie sich die API des Collections Frameworks an, um sich über das Map Interface zu informieren. Wenn Sie konkrete Objekte erzeugen möchten, die einen Interface-Typ haben, dürfen Sie beliebige Implementierungen der entsprechenden Interfaces verwenden. Sie können die Klasse TermTest.java von unserer Homepage benutzen, um Ihre Implementierung zu testen. Tutoraufgabe 3 (Generics): Wir wollen in dieser Aufgabe eine bestehende Datenstruktur um Generics erweitern. Laden Sie dazu die Datei GenericTrees.zip von der Homepage herunter. Darin nden Sie die Klassen Tree.java, TreeTest.java und TreeSum.java. a) Ändern Sie Tree so ab, dass ein Typparameter der Klasse den Typ der gespeicherten Elemente festlegt und dieser nicht mehr auf int festgelegt ist. Passen Sie auch den Konstruktor und alle Methoden der Klasse an. Sie können testen, ob Ihre Implementierung korrekt ist, indem Sie die mit a) markierten Anweisungen in TreeTest auskommentieren und das Programm ausführen. Der in TreeTest denierte Baum sollte als (1, (23, (42, (), ()), ()), (65, (), ())) ausgegeben werden. b) Passen Sie nun auch die Klasse TreeSum an, damit Sie mit der neuen Denition von Tree umgehen kann. Sie soll dabei weiterhin nur mit Bäumen umgehen können, die Integer enthalten. Sie können testen, ob Ihre Implementierung korrekt ist, indem Sie die mit b) markierten Anweisungen in TreeTest auskommentieren und das Programm ausführen. Die ausgegebene Summe der Elemente des Baumes sollte 131 sein. c) Denieren Sie ein Interface TreePredicate, das einen generischen Parameter V hat und eine Methode isok zur Verfügung stellt, die einen Tree mit Werten vom Typ V bekommt und einen booleschen Wert zurückgibt. d) Das Interface Comparable<T> ist in der Java-Standardbibliothek java.lang vordeniert. Klassen, die Comparable<T> implementieren, müssen eine nicht-statische Methode int compareto(t o) zum Vergleichen zur Verfügung stellen. Das heiÿt, dass wenn man o1.compareto(o2) aufruft, der Rückgabewert -1 sein soll, wenn o1 kleiner als o2 ist, 0 wenn o1 gleich o2 ist und 1, wenn o1 gröÿer als o2 ist. Implementieren Sie eine Klasse ComparePredicate<V>, die TreePredicate<V> implementiert. Der Typparameter V von ComparePredicate soll so eingeschränkt werden, dass er nur Klassen erlaubt, die Comparable<V> implementieren. Die Klasse ComparePredicate<V> soll zwei Attribute minele und maxele vom Typ V haben. Der Konstruktor der Klasse soll zwei entsprechende Argumente bekommen und sie in diesen Attributen speichern. Die Methode isok soll nun so implementiert werden, dass true zurückgegeben wird, wenn der im Feld value gespeicherte Wert des übergebenen Baumelementes gröÿer als minele und kleiner als maxele ist. Verwenden Sie die Methode compareto, um dies zu überprüfen. Sie können testen, ob Ihre Implementierung korrekt ist, indem Sie die mit d) markierten Anweisungen in TreeTest und die Methode filterelements auskommentieren und das Programm ausführen. Die ausgegebenen Elemente sollten 23 und 42 sein. e) Implementieren Sie nun eine Klasse IntTree, die Tree so erweitert, dass nur Integer-Elemente gespeichert werden. Auÿerdem soll IntTree das Interface Comparable so implementieren, dass IntTree-Objekte miteinander verglichen werden können, indem in compareto die Summe Ihrer Elemente verglichen wird. Sie können testen, ob Ihre Implementierung korrekt ist, indem Sie die mit e) markierten Anweisungen in TreeTest auskommentieren und das Programm ausführen. Der ausgegebene Baum sollte (12, (17, (), (23, (), ())), (65, (104, (), ()), ())) sein. 2
3 Aufgabe 4 (Generics und Collections): (1, ,5 = 16 Punkte) Um den Umgang mit generischen Datentypen zu üben, entwerfen wir in dieser Aufgabe eine einfache Datenstruktur für Graphen. Ein Graph besteht aus beliebig vielen Knoten und Kanten, wobei jede Kante zwei Knoten verbindet. In dieser Aufgabe hat jeder Knoten einen Wert, auÿerdem hat jede Kante eine Beschriftung. Laden Sie die Datei Generics.zip von der Vorlesungs-Homepage herunter. Darin nden Sie eine unvollständige Kanten-Implementierung Edge.java, einen vorgefertigen Test (als.class-datei) und das enum Color. a) Als Einstimmung auf den Umgang mit Generics entwerfen wir in dieser Teilaufgabe ein allgemeines Prädikat. Ein konkretes Prädikat für bestimmte Arten von Eingaben kann für jede solche Eingabe entscheiden, ob diese OK ist oder nicht. Beispielsweise könnte ein Prädikat, das auf Zahlen arbeitet, nur positive Zahlen akzeptieren. Ein Prädikat, das Aussagen über Menschen treen kann, könnte beispielsweise nur schöne blauäugige Blondinen akzeptieren. Entwerfen Sie ein Interface namens Predicate mit einem generischen Typ-Parameter. Geben Sie in diesem Interface vor, dass jede Implementierung von Predicate eine Methode isok hat. Die Methode isok soll ein Objekt vom Typ des generischen Parameters als Eingabe bekommen und als Rückgabe einen boolean-wert liefern. Schreiben Sie anschlieÿend eine Prädikatklasse NotRed als Implementierung von Predicate<Color>. Implementieren Sie die Methode isok so, dass für alle Farben auÿer Color.RED der Wert true zurückgegeben wird. Implementieren Sie das Interface Predicate auch durch die Klasse PredicateTrue mit einem generischem Parameter. Die Methode isok soll nun immer true zurückgeben. Verwenden Sie hierfür den (einzigen) generischen Parameter, um den Typ der zu überprüfenden Objekte festzulegen. b) Die (heruntergeladene) Klasse Edge wird benutzt, um einzelne Kanten im Graphen zu repräsentieren. Jede Kante hat eine Beschriftung sowie einen Zielknoten (am Ende der Kante). Die aktuelle Implementierung ist allerdings noch nicht generisch, weshalb nur Kanten repräsentiert werden können, die einen Integer-Wert als Kantenbeschriftung haben. Ergänzen Sie die Klasse um einen generischen Parametern, so dass der Typ der Kantenbeschriftung beliebig ist. Passen Sie hierfür die gesamte Klasse an. c) Schreiben Sie nun eine Klasse Node zur Darstellung von Knoten im Graphen. Um einen Graphen mit den vorhandenen Verbindungen darzustellen, speichern wir pro Knoten eine Menge von ausgehenden Kanten. Die Klasse Node soll zwei generische Parameter haben. Ein Parameter gibt den Typen der Knotenwerte an, der andere den Typen der Kantenbeschriftungen. Deklarieren bzw. implementieren Sie in der Klasse Node ein Attribut, in dem der (generische) Wert des Knotens gespeichert wird ein Attribut, das die ausgehenden Kanten (vom Typ Edge) speichert einen Konstruktor, der eine Knotenbeschriftung als Argument übergeben bekommt und diese im entsprechenden Attribut speichert. Der Konstruktor initialisiert das Attribut der ausgehenden Kanten so, dass der neu erzeugte Knoten keine ausgehende Kante hat. Als Datenstruktur für die ausgehenden Kanten bietet sich hier der Datentyp Set aus dem Collections- Framework von Java an. Als konkrete Implementierung können Sie die mit Java mitgelieferte Implementierung LinkedHashSet benutzen. Die Dokumentation dieser Datenstrukturen nden Sie in der Java API. d) In der Klasse Edge ist der Verweis auf den Zielknoten mittels private Node target noch nicht generisch. Ergänzen Sie die Klasse Edge um einen zweiten generischen Parameter, der für den Typ der Knotenwerte benutzt wird und passen Sie die Klasse entsprechend an. Passen Sie auch die Klasse Node an, so dass diese beide generischen Parameter der Klasse Edge benutzt. 3
4 e) Implementieren Sie in der Klasse Node die nicht-statische Methode addout. Diese Methode soll eine weitere ausgehende Kante (zu einem Knoten) in das Attribut des aktuellen Knotens hinzufügen. Das erste Argument der Methode addout ist ein Knoten, der den Zielknoten der neuen ausgehenden Kante darstellt. Das zweite Argument ist die Beschriftung der neuen Kante. Erzeugen Sie aus diesen Informationen ein neues Edge-Objekt und fügen Sie dieses in das Attribut für die ausgehenden Kanten hinzu. f) Ähnlich zur Methode addout soll Node auch eine Methode addedge zur Verfügung stellen. Diese erstellt zwischen zwei gegebenen Knoten eine neue Kante (mit gegebener Beschriftung). Da diese Methode unabhängig vom aktuellen Knoten arbeitet (also beim Aufruf eine Kante zwischen zwei anderen Knoten erstellt werden könnte), ist die Methode statisch. Implementieren Sie die Methode, unter Zuhilfenahme von addout, so dass das erste Argument der Startknoten der neuen Kante ist, das zweite Argument der Zielknoten und das dritte Argument die Kantenbeschriftung. g) Eine bei Graphen interessante Frage ist, welche Knoten ausgehend von einem bestimmten Knoten erreichbar sind. Ein Knoten ist dann erreichbar, wenn man durch Entlanglaufen beliebig vieler Kanten zu diesem Knoten gelangen kann. Schreiben Sie die nicht-statische Methode getreachablenodes in der Klasse Node, die alle vom aktuellen Knoten erreichbaren Knoten in einem Set zurückgibt. Um diese Menge zu berechnen, empehlt sich die Verwendung einer rekursiven Hilfsmethode. Übergeben Sie dieser Hilfsmethode die (anfangs leere) Ergebnismenge und fügen Sie nach und nach alle erreichbaren Knoten hinzu. Fügen Sie hierfür zuerst den aktuellen Knoten zu der Menge hinzu und rufen Sie anschlieÿend die Methode rekursiv auf allen direkten Nachfolgern auf. Da ein Graph auch zyklisch sein kann, terminiert dieser naive Algorithmus dann nicht. Passen Sie Ihre Implementierung so an, dass die Methode auch auf zyklischen Graphen terminiert und das korrekte Ergebnis zurückgegeben wird. Überprüfen Sie hierfür, ob Sie den aktuellen Knoten schon einmal besucht haben, indem Sie nach einem Vorkommen in der Menge suchen. Nutzen Sie hierfür die vom Interface Set zur Verfügung gestellte Funktionalität. h) Erweitern Sie getreachablenodes um ein Eingabeargument, in dem ein Prädikat für Kantenbeschriftungen übergeben wird. Passen Sie Ihre Implementierung so an, dass für die Berechnung der erreichbaren Knoten nur die Kanten durchlaufen werden, bei deren Beschriftungen die Überprüfung mittels isok des Prädikats true zurückgibt. Sie dürfen davon ausgehen, dass das Prädikat nicht null ist. i) Schreiben Sie eine nicht-statische Methode getcontents in der Klasse Node, die für alle erreichbaren Knoten die Knoteninhalte in einem Set zurückgibt. Die Methode getcontents soll hier einen Kantenlter übergeben bekommen, der bei der Berechnung der erreichbaren Knoten benutzt wird. Sie dürfen davon ausgehen, dass das Prädikat nicht null ist. j) Stellen Sie auÿerdem eine Methode getcontents zurück, die kein Argument hat. Diese Methode soll die Beschriftungen aller erreichbaren Knoten zurückgeben. Verwenden Sie hierfür die Implementierung von getcontents mit Prädikat aus der vorherigen Teilaufgabe, indem Sie ein Prädikat der Klasse PredicateTrue benutzen. Testen Sie Ihre Implementierung mit der mitgelieferten Test-Klasse. Der Aufruf der main-methode sollte folgende Ausgabe geben: Erzeuge neuen Knoten mit String "a" als Wert Erzeuge neuen Knoten mit String "b" als Wert Erzeuge neuen Knoten mit String "c" als Wert Erzeuge neuen Knoten mit String "d" als Wert 4
5 Erzeuge neuen Knoten mit String "e" als Wert Verbinde a-knoten mit b-knoten durch Kante mit Beschriftung Color.GREEN Verbinde b-knoten mit c-knoten durch Kante mit Beschriftung Color.BLUE Verbinde c-knoten mit d-knoten durch Kante mit Beschriftung Color.RED Verbinde c-knoten mit e-knoten durch Kante mit Beschriftung Color.GREEN Verbinde e-knoten mit c-knoten durch Kante mit Beschriftung Color.GREEN (mit statischer Methode) Erzeuge NotRed-Praedikat Erreichbare Inhalte von a-knoten: [a, b, c, d, e] Ueber nicht-rote Kanten von a-knoten erreichbare Inhalte: [a, b, c, e] Tutoraufgabe 5 (Listen in Haskell): Seien x, y, z ganze Zahlen vom Typ Int. und xs und ys Listen der Längen n und m vom Typ [int] Welche der folgenden Gleichungen zwischen Listen sind richtig und welche nicht? Begründen Sie Ihre Antwort. Falls es sich um syntaktisch korrekte Ausdrücke handelt, geben Sie für jede linke und rechte Seite auch an, wie viele Elemente in der jeweiligen Liste enthalten sind und welchen Typ sie hat. Beispiel: Die Liste [[1,2,3],[1,4]] hat den Typ [[Int]] und enthält 2 Elemente. (i) x:[] = [x] (ii) (x,y):xs = x:y:xs (iii) (x:([y] ++ xs)) ++ ys = ([x] ++ (y:xs)) ++ ys (iv) x:[xs] = [x:xs] (v) (x:[y,z]):[] = [[x] ++ (y:[z])] Hierbei steht ++ für den Verkettungsoperator für Listen. Das Resultat von xs ++ ys ist die Liste, die entsteht, wenn die Elemente aus ys in der Reihenfolge wie sie in ys stehen an das Ende von xs angefügt werden. Beispiel: [1,2] ++ [1,2,3] = [1,2,1,2,3] Falls linke und rechte Seite gleich sind, genügt eine Angabe des Typs und der Elementzahl Aufgabe 6 (Listen in Haskell): (5 Punkte) Seien x, y, z ganze Zahlen vom Typ Int. und xs und ys Listen der Längen n und m vom Typ [int] Welche der folgenden Gleichungen zwischen Listen sind richtig und welche nicht? Begründen Sie Ihre Antwort. Falls es sich um syntaktisch korrekte Ausdrücke handelt, geben Sie für jede linke und rechte Seite auch an, wie viele Elemente in der jeweiligen Liste enthalten sind und welchen Typ sie hat. Beispiel: Die Liste [[1,2,3],[1,4]] hat den Typ [[Int]] und enthält 2 Elemente. (i) x:xs = [x] ++ xs (ii) (x:y):xs = x:y:xs (iii) [x,y,xs] = x:y:xs (iv) x:y:(x:[x] ++ xs) = [x,y,x] ++ (x:xs) (v) []:[[],[[1]]] = [[],[]]:[[[1]]] 5
6 Falls linke und rechte Seite gleich sind, genügt eine Angabe des Typs und der Elementzahl. Obwohl Ihnen ein Haskell Compiler hier sehr hilfreich sein kann, sollten Sie diese Aufgabe von Hand lösen um einen Übungseekt zu erzielen. Gehen Sie davon aus, dass die Zahl 1 den Typ Int hat. Tutoraufgabe 7 (Programmieren mit Haskell): Implementieren Sie alle der im folgenden beschriebenen Funktionen in Haskell. Geben Sie dabei die entsprechenden Typdeklarationen an. Verwenden Sie auÿer Listenkonstruktoren (und deren Kurzschreibweise) und Vergleichsoperatoren wie <=, ==,... keine vordenierten Funktionen (dies schlieÿt auch arithmetische Operatoren ein), auÿer denen, die in den jeweiligen Teilaufgaben explizit erlaubt werden. a) stunden w d h Gibt die Anzahl der Stunden zurück, die in w Wochen, d Tagen und h Stunden vergehen. So berechnet zum Beispiel stunden den Wert 939. Die Funktion darf sich auf negativen Eingaben beliebig verhalten. Sie dürfen hier + und * verwenden. b) mult x y Berechnet x y. Sie dürfen dazu + und - verwenden. Die Funktion darf sich auf negativen Eingaben beliebig verhalten. c) blog x Berechnet den aufgerundeten Logarithmus zur Basis 2 von x. Somit liefert blog 1 den Wert 1, blog 5 den Wert 3 und blog 32 den Wert 5. Sie dürfen hier + und * verwenden. d) getlasttwo xs Berechnet die Teilliste der letzten zwei Elemente der Int-Liste xs. Beispielsweise berechnet getlasttwo [12, 7, 23] den Wert [7, 23]. Die Funktion darf sich auf Listen der Länge 0 und 1 beliebig verhalten. e) schachtel xs Berechnet für eine Int-Liste eine Liste von Int-Listen, die jedes Element in einer eigenen Teilliste enthält. Zum Beispiel liefert der Aufruf schachtel [1, 5, 2] den Wert [[1],[5],[2]]. f) appendend x ys Berechnet die Int-Liste, die entsteht, wenn man die Zahl x x-mal an das Ende der Int-Liste ys anfügt. Beispielsweise berechnet appendend 3 [12, 7, 23] die Liste [12, 7, 23, 3, 3, 3]. Sie dürfen hier - verwenden. Falls x negativ ist, darf sich Ihre Funktion beliebig verhalten. g) kleinstes xs Berechnet das kleinste Element, das in der Int-Liste xs vorkommt. Zum Beispiel liefert der Aufruf kleinstes [42, 7, 23] den Wert 7. h) loesche x ys Berechnet die Int-Liste, die entsteht, wenn man das erste Vorkommen von x aus der Int-Liste ys entfernt. Zum Beispiel liefert der Aufruf loesche 5 [1,3,5,5,7] den Wert [1,3,5,7]. i) minsort xs Sortiert die Int-Liste xs aufsteigend. Verwenden Sie dabei die Funktionen kleinstes und loesche. Der Aufruf minsort [5,3,1,8] liefert dann beispielweise den Wert [1,3,5,8]. j) prodlist xs ys Berechnet die Liste der Produkte der korrespondierenden Elemente der beiden Int-Listen xs und ys. Das heiÿt, dass das Ergebnis zuerst das Produkt des ersten Elements von xs und des ersten Element von ys 6
7 enthält, dann das Produkt der zweiten Elemente, u.s.w. Wenn die Listen unterschiedlich lang sind, soll die Ergebnisliste nur so lang wie die kürzere der beiden Eingabelisten sein. Beispielsweise berechnet prodlist [2,1,4,5] [6,2,7] die Liste [12,2,28]. Sie dürfen hier * verwenden. Aufgabe 8 (Programmieren mit Haskell): ( = 10 Punkte) Implementieren Sie alle der im folgenden beschriebenen Funktionen in Haskell. Geben Sie dabei die entsprechenden Typdeklarationen an (wobei alle vorkommenden Listen den Typ [Int haben sollen). Verwenden Sie auÿer Listenkonstruktoren (und deren Kurzschreibweise) und den Funktionen <= und - (Minus) keine vordenierten Funktionen, auÿer denen, die in den jeweiligen Teilaufgaben explizit erlaubt werden. a) anhaengen xs ys Gibt die Liste der Elemente von xs zurück, an die die Elemente der Liste ys angehängt wurden. Die Funktion entspricht also der Funktion ++. Ein Aufruf anhaengen [1,2] [3,4] liefert das Ergebnis [1,2,3,4]. b) umdrehen xs Gibt eine Variante der Liste xs zurück, bei der die Reihenfolge der Elemente umgedreht wurde. Ein Aufruf umdrehen [1,2,3] liefert als Ergebnis [3,2,1]. Verwenden Sie hierbei die Funktion anhaengen. c) mischen xs Die Funktion mischen soll eine Liste mischen, indem abwechselnd das erste und letzte Element der verbleibenden Liste an die Ergebnisliste angehängt werden. So liefert ein Aufruf mischen [1,2,3,4,5] das Ergebnis [1,5,2,4,3]. Verwenden Sie hierbei die Funktionen anhaengen und umdrehen. d) first n xs Die Funktion bekommt eine natürliche Zahl n und eine Liste xs übergeben und liefert die ersten n Elemente der Liste zurück. Falls n kleiner als die Länge der Liste xs ist, darf sich ihr Programm beliebig verhalten. Ein Aufruf first 2 [1,2,3] liefert als Ergebnis [1,2]. e) teilliste xs n l Die Funktion bekommt eine Liste xs und zwei natürliche Zahlen n und l übergeben. Nun soll eine Teilliste von xs der Länge l ab dem n-ten Element der Liste zurückgegeben werden. Die Elemente einer Liste werden von 0 an nummeriert. Verwenden Sie hierbei die Funktion first. Ein Aufruf teilliste 1 2 [1,2,3,4] liefert also [2,3] als Ergebnis. Falls der Index n nicht in der Liste enthalten ist oder die Länge l über das Ende der Liste hinausragt, darf sich ihre Funktion beliebig verhalten. f) merge xs ys Die Funktion bekommt zwei aufsteigend sortierte Listen xs und ys als Argumente und gibt eine aufsteigend sortierte Liste zurück, die alle Elemente von xs und ys enhält. Ein Aufruf merge [1,3,5] [2,4,4,8] liefert somit [1,2,3,4,4,5,8]. Ein Aufruf merge [] [1,2,3,4] liefert hingegen [1,2,3,4]. Vergleichen Sie Listenelemente mit der Funktion <=. g) split xs Die Funktion bekommt eine Liste xs als Argument und gibt ein Tupel von zwei Listen zurück. Hierbei werden die Elemente der Liste xs abwechselnd auf die beiden Ergebnislisten verteilt, so dass das erste Element der Liste xs das erste Element der ersten Ergebnisliste ist und das zweite Element der xs das erste Element der zweiten Ergebnisliste ist. Ein Aufruf split [1,2,3,4,5] liefert das Ergebnis ([1,3,5],[2,4]). Konstruieren Sie 3 Fälle: Die Liste xs hat kein, ein oder mindestens zwei Elemente. Im dritten Fall hilft es, erst den Rest der Liste (ohne die ersten zwei Elemente) aufzuteilen. 7
8 h) sort xs Die Funktion bekommt eine Liste xs und gibt ihre Elemente in aufsteigend sortierter Reihenfolge aus. Listen der Länge höchstens eins sind schon sortiert. Ansonsten soll die Liste mit der Funktion split in zwei kleinere Listen zerteilt werden, diese dann rekursiv sortiert und mit der Funktion merge zu einer sortierten Liste zusammengefasst werden. 8
Tutoraufgabe 1 (Auswertungsstrategie):
Prof. aa Dr. M. Müller C. Aschermann, J. Hensel, J. Protze, P. Reble Allgemeine ˆ Die Hausaufgaben sollen in Gruppen von je 3 Studierenden aus der gleichen Kleingruppenübung (Tutorium) bearbeitet werden.
MehrTutoraufgabe 1 (Auswertungsstrategie):
Prof. aa Dr. J. Giesl Programmierung WS12/13 M. Brockschmidt, F. Emmes, C. Otto, T. Ströder Tutoraufgabe 1 (Auswertungsstrategie): Gegeben sei das folgende Haskell-Programm: absteigend :: Int - > [ Int
MehrTutoraufgabe 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
MehrTutoraufgabe 1 (Listen):
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
MehrTutoraufgabe 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
MehrTutoraufgabe 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
MehrTutoraufgabe 1 (Casting): Programmierung WS17/18 Übungsblatt 2 (Abgabe ) Allgemeine Hinweise:
Prof. aa Dr. J. Giesl Programmierung WS17/18 M. Hark, J. Hensel, D. Korzeniewski Allgemeine Die Hausaufgaben sollen in Gruppen von je 2 Studierenden aus der gleichen Kleingruppenübung (Tutorium) bearbeitet
MehrTutoraufgabe 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
MehrTutoraufgabe 1 (Verifikation):
Prof. aa Dr. M. Müller C. Aschermann, J. Hensel, J. Protze, P. Reble Allgemeine Die Hausaufgaben sollen in Gruppen von je 3 Studierenden aus der gleichen Kleingruppenübung (Tutorium) bearbeitet werden.
MehrTutoraufgabe 1 (Seiteneekte):
Prof. aa Dr. M. Müller C. Aschermann, J. Hensel, J. Protze, P. Reble Allgemeine Hinweise: Die Hausaufgaben sollen in Gruppen von je 3 Studierenden aus der gleichen Kleingruppenübung (Tutorium) bearbeitet
MehrTutoraufgabe 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
MehrTutoraufgabe 1 (Seiteneekte):
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
MehrTutoraufgabe 1 (SCC):
Prof. aa Dr. E. Ábrahám Datenstrukturen und Algorithmen SS F. Corzilius, S. Schupp, T. Ströder Allgemeine Hinweise: Die Hausaufgaben sollen in Gruppen von je bis Studierenden aus der gleichen Kleingruppenübung
MehrTutoraufgabe 1 (Klassenhierarchie):
Prof. aa Dr. M. Müller Programmierung WS15/16 C. Aschermann, J. Hensel, J. Protze, P. Reble Allgemeine Die Hausaufgaben sollen in Gruppen von je 3 Studierenden aus der gleichen Kleingruppenübung (Tutorium)
MehrTutoraufgabe 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
MehrTutoraufgabe 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
MehrTutoraufgabe 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
MehrProgrammierung WS14/15 Lösung - Präsenzübung C. Aschermann, F. Frohn, J. Hensel, T. Ströder
Prof. aa Dr. J. Giesl C. Aschermann, F. Frohn, J. Hensel, T. Ströder Aufgabe 1 (Programmanalyse): (14 + 6 = 20 Punkte) a) Geben Sie die Ausgabe des Programms für den Aufruf java M an. Tragen Sie hierzu
MehrÜ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
MehrTutoraufgabe 1 (Programmanalyse): Programmierung WS17/18 Übungsblatt 5 (Abgabe ) Allgemeine Hinweise:
Prof. aa Dr. J. Giesl M. Hark, J. Hensel, D. Korzeniewski Allgemeine Hinweise: Die Hausaufgaben sollen in Gruppen von je 2 Studierenden aus der gleichen Kleingruppenübung (Tutorium) bearbeitet werden.
MehrTutoraufgabe 1 (Programmanalyse):
Prof. aa Dr. J. Giesl F. Frohn, J. Hensel, D. Korzeniewski Allgemeine Hinweise: Die Hausaufgaben sollen in Gruppen von je 2 Studierenden aus der gleichen Kleingruppenübung (Tutorium) bearbeitet werden.
MehrTutoraufgabe 1 (Code-Analyse):
Prof. aa Dr. J. Giesl 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
MehrVorname: Nachname: Matrikelnummer: Studiengang (bitte ankreuzen): Informatik Bachelor Informatik Lehramt Mathematik Bachelor Sonstige:
Prof. aa C. Bischof, Ph.D. M. Brockschmidt, F. Emmes, M. Lülfesmann, J. Willkomm Vorname: Nachname: Studiengang (bitte ankreuzen): Informatik Bachelor Informatik Lehramt Mathematik Bachelor Sonstige: Anzahl
MehrProgrammierung WS18/19 Übungsblatt 9 (Abgabe Freitag, den um 12 Uhr)
Prof. aa Dr. J. Giesl S. Dollase, M. Hark, D. Korzeniewski Aufgabe 2 (Datenstrukturen in Haskell): (2 + 1 + 2 + 2.5 + 3.5 = 11 Punkte) In dieser Aufgabe geht es darum, arithmetische Ausdrücke auszuwerten.
MehrÜbung Programmierung WS 2007/08 - Blatt 6
RHEINISCH- WESTFÄLISCHE TECHNISCHE HOCHSCHULE AACHEN LEHR- UND FORSCHUNGSGEBIET INFORMATIK 2 RWTH Aachen D-52056 Aachen GERMANY http://programmierung.informatik.rwth-aachen.de LuFG Informatik II Prof.
MehrAufgabe 1 (Programmanalyse):
Prof. aa C. Bischof, Ph.D. M. Brockschmidt, F. Emmes, M. Lülfesmann, J. Willkomm Aufgabe 1 (Programmanalyse): (18 Punkte) Gegeben sei das folgende Java-Programm. Dieses Programm gibt sechs Zeilen Text
MehrTutoraufgabe 1 (Implementierung eines ADTs):
Prof. aa Dr. E. Ábrahám Datenstrukturen und Algorithmen SS Übungsblatt (Abgabe.05.0) F. Corzilius, S. Schupp, T. Ströder Allgemeine Hinweise: Die Hausaufgaben sollen in Gruppen von je bis Studierenden
MehrInstitut für Programmierung und Reaktive Systeme 7. Mai Programmieren II. 11. Übungsblatt
Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 7. Mai 2018 Programmieren II 11. Übungsblatt Hinweis: Auf diesem und den folgenden Übungsblättern
MehrProgrammierung WS12/13 Lösung - Präsenzübung M. Brockschmidt, F. Emmes, C. Otto, T. Ströder
Prof. aa Dr. J. Giesl M. Brockschmidt, F. Emmes, C. Otto, T. Ströder Aufgabe 1 (Programmanalyse): (9 + 1 = 10 Punkte) a) Geben Sie die Ausgabe des Programms für den Aufruf java M an. Tragen Sie hierzu
MehrTutoraufgabe 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)
MehrAnzahl Punkte Erreichte Punkte Aufgabe 1 10 Aufgabe 2 14 Aufgabe 3 16 Aufgabe 4 26 Aufgabe 5 15 Aufgabe 6 19 Summe 100
Prof. aa Christian Bischof, Ph.D. Programmierung WS 09/10 Klausur 24.02.2010 Jonathan Heinen, Michael Lülfesmann, Carsten Otto Vorname: Nachname: Matrikelnummer: Studiengang (bitte ankreuzen): Informatik
MehrAufgabe 2 (Unendliche Listen in Haskell):
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 Studierenden aus der gleichen Kleingruppenübung (Tutorium)
MehrKlausur Programmierung WS 2011/2012
Prof. aa Dr. J. Giesl M. Brockschmidt, F. Emmes, Dr. C. Fuhs, C. Otto, T. Ströder Klausur Programmierung WS 2011/2012 Vorname: Nachname: Studiengang (bitte genau einen markieren): Informatik Bachelor Informatik
MehrTutoraufgabe 1 (Datenstrukturen in Haskell):
Prof. aa Dr. J. Giesl S. Dollase, M. Hark, D. Korzeniewski Allgemeine Die Hausaufgaben sollen in Gruppen von je 2 Studierenden aus der gleichen Kleingruppenübung (Tutorium) bearbeitet werden. Namen und
MehrWie man das Problem der Macht des Mondes in Java löst (Programmierung)
Prof. aa C. Bischof, Ph.D. M. Brockschmidt, F. Emmes, M. Lülfesmann, J. Willkomm Vorname: Nachname: Studiengang (bitte ankreuzen): Informatik Bachelor Informatik Lehramt Mathematik Bachelor Sonstige: Anzahl
MehrHeute. Nachbetrachtung Wissensüberprüfung. Sortieren Interface Comparable TreeSet Sortieren von Arrays: Arrays.sort() 3.12.
Heute Nachbetrachtung Wissensüberprüfung Sortieren Interface Comparable TreeSet Sortieren von Arrays: Arrays.sort() 3.12.2015 IT I - VO 9 1 Organisatorisches Zwischentest findet am 16.12. von 17:30 bis
MehrParallele und funktionale Programmierung Sommersemester Übung Abgabe bis , 18:00 Uhr
Hinweise:. Übung Abgabe bis 3.07.206, 8:00 Uhr Verwenden Sie zur Lösung der Aufgaben nur die aus der Vorlesung bekannten, sowie die in den Übungen bekannt gegebenen Methoden und Funktionen der Scala-Standardbibliothek.
MehrEinführung in die Informatik 2
Technische Universität München Fakultät für Informatik Prof. Tobias Nipkow, Ph.D. Lars Hupel, Lars Noschinski, Dr. Jasmin Blanchette Wintersemester 2013/14 Wiederholungsklausur 24. März 2014 Einführung
MehrTutoraufgabe 1 (Datenstrukturen in Haskell):
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
MehrObjektorientierung 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
MehrAllgemeine Hinweise:
TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen WS 11/12 Einführung in die Informatik I Probe-Klausur Prof. Dr. Helmut Seidl, M. Schwarz, A. Herz,
MehrInstitut für Programmierung und Reaktive Systeme 10. Mai Programmieren II. 11. Übungsblatt
Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 10. Mai 2013 Programmieren II 11. Übungsblatt Hinweis: Dieses Übungsblatt enthält die zweite Pflichtaufgabe.
MehrTutoraufgabe 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)
MehrGrundlagen der Informatik
Grundlagen der Informatik Klausur 1. August 2008 1. Dynamische Datenstrukturen und objektorientierte Programmierung (45 Punkte) Gegeben sei eine Datenstruktur mit folgendem Aufbau struct lelem { int w;
MehrInstitut für Programmierung und Reaktive Systeme 24. April Programmieren II. 10. Übungsblatt
Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 24. April 2018 Programmieren II 10. Übungsblatt Hinweis: Auf diesem und den folgenden Übungsblättern
MehrProbeklausur Java Einführung in die Informatik. Wintersemester 2016/2017
Fakultät IV NI & CV Java Einführung in die Informatik Wintersemester 2016/2017 Hinweis: Diese ist eine kleine Aufgabensammlung, die etwa dem Schwierigkeitsgrad der schriftlichen Prüfung des Moduls Einführung
MehrÜbung Informatik I - Programmierung - Blatt 8
RHEINISCH- WESTFÄLISCHE TECHNISCHE HOCHSCHULE AACHEN LEHR- UND FORSCHUNGSGEBIET INFORMATIK II RWTH Aachen D-5056 Aachen GERMANY http://programmierung.informatik.rwth-aachen.de LuFG Informatik II Prof.
MehrAlgorithmen und Programmieren 1 Funktionale Programmierung - Musterlösung zu Übung 9 -
Algorithmen und Programmieren 1 Funktionale Programmierung - Musterlösung zu Übung 9 - Dozent: Prof. Dr. G. Rote Tutoren: J. Fleischer, T. Haimberger, N. Lehmann, C. Pockrandt, A. Steen 10.01.2012 Ziele
MehrObjektorientierte Programmierung. Kapitel 22: Aufzählungstypen (Enumeration Types)
Stefan Brass: OOP (Java), 22. Aufzählungstypen 1/20 Objektorientierte Programmierung Kapitel 22: Aufzählungstypen (Enumeration Types) Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester
MehrEinführung in die Informatik 2 9. Übung
Technische Universität München WS 2012/13 Institut für Informatik 11.11.2012 Prof. Tobias Nipkow, Ph.D. Abgabe: 18.12.2012, 15:30 Lars Noschinski, Dr. Jasmin Blanchette, Dmitriy Traytel Einführung in die
MehrTutoraufgabe 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 =
MehrProgrammierkurs 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
MehrInstitut für Programmierung und Reaktive Systeme 28. Mai Programmieren II. 12. Übungsblatt
Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 28. Mai 208 Programmieren II 2. Übungsblatt Hinweis: Auf diesem und den folgenden Übungsblättern
MehrTutoraufgabe 1 (Rekursive Datenstrukturen): Programmierung WS17/18 Übungsblatt 6 (Abgabe ) Allgemeine Hinweise:
Prof. aa Dr. J. Giesl M. Hark, J. Hensel, D. Korzeniewski Allgemeine Die Hausaufgaben sollen in Gruppen von je 2 Studierenden aus der gleichen Kleingruppenübung (Tutorium) bearbeitet werden. Namen und
MehrProgrammieren 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
MehrPräsenzübung Programmierung WS 2016/2017
Prof. aa Dr. J. Giesl F. Frohn, J. Hensel, D. Korzeniewski Vorname: Präsenzübung Programmierung WS 2016/2017 Nachname: Studiengang (bitte genau einen markieren): Informatik Bachelor Informatik Lehramt
MehrGrundlagen der Informatik
Grundlagen der Informatik Musterklausur 1. Dynamische Datenstrukturen und objektorientierte Programmierung Zur Verwaltung einer digitalen Fotogalerie sollen Techniken der objektorientierten Programmierung
MehrEinführung in die Informatik 2 5. Übung
Technische Universität München WS 2014/15 Institut für Informatik 07.11.2014 Prof. Tobias Nipkow, Ph.D. Abgabe: 14.11.2014 L. Noschinski, L. Hupel, Dr. J. Blanchette, M. Eberl Einführung in die Informatik
MehrTECHNISCHE 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,
MehrTutoraufgabe 1 (Programmieren in Prolog):
Prof. aa Dr. J. Giesl S. Dollase, M. Hark, D. Korzeniewski Tutoraufgabe 1 (Programmieren in Prolog): In dieser Aufgabe sollen einige Abhängigkeiten im Übungsbetrieb Programmierung in Prolog modelliert
MehrPräsenzübung Programmierung WS 2017/2018
Prof. aa Dr. J. Giesl M. Hark, J. Hensel, D. Korzeniewski Vorname: Präsenzübung Programmierung WS 2017/2018 Nachname: Studiengang (bitte genau einen markieren): Informatik Bachelor Informatik Lehramt (Bachelor)
MehrAufgabenblatt 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
Mehr2. Klausur Programmierung WS 2014/2015
Prof. aa Dr. J. Giesl C. Aschermann, F. Frohn, J. Hensel, T. Ströder Vorname: 2. Klausur Programmierung WS 2014/2015 Nachname: Studiengang (bitte genau einen markieren): Informatik Bachelor Informatik
MehrProbeklausur zur Vorlesung
Dr. Jochen Hoenicke Alexander Nutz Probeklausur zur Vorlesung Einführung in die Informatik Sommersemester 2014 Die Klausur besteht aus diesem Deckblatt und elf Blättern mit den Aufgaben, sowie einem Blatt
MehrKlausur Programmierung WS 2012/2013
Prof. aa Dr. J. Giesl Vorname: M. Brockschmidt, F. Emmes, C. Otto, T. Ströder Klausur Programmierung WS 2012/2013 Nachname: Studiengang (bitte genau einen markieren): Informatik Bachelor Informatik Lehramt
MehrProbeklausur Java Einführung in die Informatik. Wintersemester 2017/2018
Fakultät IV NI & CV Java Einführung in die Informatik Wintersemester 2017/2018 Hinweis: Diese ist eine kleine Aufgabensammlung, die etwa dem Schwierigkeitsgrad der schriftlichen Prüfung des Moduls Einführung
MehrTutoraufgabe 1 (Fraktale): Programmierung WS18/19 Übungsblatt 5 (Abgabe Freitag, den um 12:00) Allgemeine Hinweise:
Prof. aa Dr. J. Giesl S. Dollase, M. Hark, D. Korzeniewski Allgemeine Hinweise: Die Hausaufgaben sollen in Gruppen von je 2 Studierenden aus der gleichen Kleingruppenübung (Tutorium) bearbeitet werden.
MehrInstitut 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");
MehrWissenschaftliches Rechnen
Institut für Numerische und Angewandte Mathematik 11.04.2012 FB Mathematik und Informatik der Universität Münster Prof. Dr. Christian Engwer, Dipl. Math. Dipl. Inf. Sebastian Westerheide Übung zur Vorlesung
MehrTutoraufgabe 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
MehrInstitut 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
MehrProgrammierung für Mathematik HS10
Department of Informatics software evolution & architecture lab Programmierung für Mathematik HS10 Übung 5 1 Aufgabe: Eclipse IDE 11 Lernziele 1 Die Entwicklungsumgebung Eclipse kennen lernen 12 Aufgabenstellung
MehrUniversität Augsburg, Institut für Informatik Sommersemester 2001 Prof. Dr. Martin Ester 16. Juli Klausur
Universität Augsburg, Institut für Informatik Sommersemester 2001 Prof. Dr. Martin Ester 16. Juli 2001 Stefan Holland Informatik II Hinweise: Klausur Verwenden Sie für Ihre Lösungen ausschließlich den
MehrEPROG 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
MehrAlgorithmen und Programmieren 1 Funktionale Programmierung - Musterlösung zur Übungsklausur -
Algorithmen und Programmieren 1 Funktionale Programmierung - Musterlösung zur Übungsklausur - Punkte: A1: 30, A2: 20, A3: 20, A4: 20, A5: 10, A6: 20 Punkte: /120 12.02.2012 Hinweis: Geben Sie bei allen
MehrSchlussendlich 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 -
MehrProgrammierkurs (Java) 30. Oktober 2017 Institut für Informatik ÜBUNGBLATT 02. Dieses Übungsblatt wird in der Woche des 06. November besprochen.
Programmierkurs (Java) 30. Oktober 2017 Institut für Informatik Winter 2017/18 Dr. V. Weil ÜBUNGBLATT 02 Online-Abgabe bis spätestens 06.11.2017 um 14:00 Uhr; Online-Abgabe nur mit Benutzernamen und Passwort.
MehrAbiturprüfung Informatik, Grundkurs
Seite 1 von 12 Abiturprüfung 2014 Informatik, Grundkurs Aufgabenstellung: In dem neugegründeten Staat Infonien haben alle Autos ein Kennzeichen, das sich aus zwei Großbuchstaben gefolgt von einer positiven
MehrProgrammierung WS17/18 Lösung - Präsenzübung 09./
Prof. aa Dr. J. Giesl M. Hark, J. Hensel, D. Korzeniewski Aufgabe 1 (Programmanalyse): (11.5 + 4.5 = 16 Punkte) a) Geben Sie die Ausgabe des Programms für den Aufruf java M an. Tragen Sie hierzu jeweils
MehrTutoraufgabe 1 (Implementierung eines ADTs):
Prof. aa Dr. E. Ábrahám Datenstrukturen und Algorithmen SS Tutoriumslösung - Übung (Abgabe.05.0) F. Corzilius, S. Schupp, T. Ströder Tutoraufgabe (Implementierung eines ADTs): Wir spezifizieren den ADT
MehrProbeklausur Java Einführung in die Informatik. Wintersemester 2014/2015
Fakultät IV NI & CV Probeklausur Java Einführung in die Informatik Wintersemester 2014/2015 Hinweis: Diese Probeklausur ist eine kleine Aufgabensammlung, die etwa dem Schwierigkeitsgrad der schriftlichen
MehrKlausur "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
MehrTutoraufgabe 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
MehrKlausur Software-Entwicklung März 01
Aufgabe 1: minimaler Punktabstand ( 2+5 Punkte ) Matrikelnr : In einem Array punkte sind Koordinaten von Punkten gespeichert. Ergänzen Sie in der Klasse Punkt eine Klassen-Methode (=static Funktion) punktabstand,
MehrTutoraufgabe 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)
MehrEinführung in die Informatik 2
Technische Universität München Fakultät für Informatik Prof. Tobias Nipkow, Ph.D. Lars Hupel, Lars Noschinski, Dr. Jasmin Blanchette Wintersemester 2013/14 Abschlussklausur 21. Februar 2014 Einführung
MehrPrüfung A Informatik D-MATH/D-PHYS :15 14:55
Prüfung A Informatik D-MATH/D-PHYS 17. 12. 2013 13:15 14:55 Prof. Bernd Gartner Kandidat/in: Name:. Vorname:. Stud.-Nr.:. Ich bezeuge mit meiner Unterschrift, dass ich die Prufung unter regularen Bedingungen
MehrProbeklausur 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
MehrTutoraufgabe 1 (Seiteneffekte):
Prof. aa Dr. J. Giesl 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 (Tutorium) bearbeitet
MehrTutoraufgabe 1 (Datenstrukturen in Haskell):
Prof. aa Dr. M. Müller Programmierung WS15/16 C. Aschermann, J. Hensel, J. Protze, P. Reble Allgemeine Die Hausaufgaben sollen in Gruppen von je 3 Studierenden aus der gleichen Kleingruppenübung (Tutorium)
MehrÜbungsblatt 13. Abgabe / Besprechung in Absprache mit dem Tutor
Albert-Ludwigs-Universität Freiburg Institut für Informatik Einführung in die Informatik Sommersemester 2013 PD Dr. Cyrill Stachniss Dr. Rainer Kümmerle Übungsblatt 13 Abgabe / Besprechung in Absprache
MehrInformatik II Übung 2
Informatik II Übung 2 Florian Scheidegger florsche@student.ethz.ch Folien mit freundlicher Genehmigung adaptiert von Gábor Sörös und Simon Mayer gabor.soros@inf.ethz.ch, simon.mayer@inf.ethz.ch 7.3.2013
MehrVerkettete 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
MehrAnzahl Punkte Erreichte Punkte Aufgabe 1 11 Aufgabe 2 14 Aufgabe 3 15 Aufgabe 4 26 Aufgabe 5 16 Aufgabe 6 18 Summe 100
Prof. aa Christian Bischof, Ph.D. Programmierung WS 09/10 Klausur 24.03.2010 Jonathan Heinen, Michael Lülfesmann, Carsten Otto Vorname: Nachname: Matrikelnummer: Studiengang (bitte ankreuzen): Informatik
MehrEinstieg 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
MehrProgrammierung für Mathematik (HS13)
software evolution & architecture lab Programmierung für Mathematik (HS13) Übung 11 1 Aufgabe: Codeverständnis 1.1 Aufgabenstellung Notieren Sie, was der folgende Code ausgeben würde, wenn er so in einer
MehrAlgorithmen und Datenstrukturen Sommersemester Übung Abgabe bis , 10:00 Uhr
4. Übung Abgabe bis 24.05.2010, 10:00 Uhr Aufgabe 4.1: Referenzen Geben Sie Ihre Lösung als Referenzen.pdf ab. 16 Punkte a) Führen Sie einen Schreibtischlauf des folgenden Java-Programms durch. Es werden
MehrOrganisatorisches. 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Übungsserie Nr. 6. Ausgabe: 1. April 2015 Abgabe: 15. April Hinweise
Informatik II (D-ITET) Frühjahrssemester 2015 Prof. Friedemann Mattern Christian Beckel (beckel@inf.ethz.ch) ETH Zürich Institut für Pervasive Computing Gruppe für Verteilte Systeme http://vs.inf.ethz.ch
MehrSoftware Entwicklung 1. Fallstudie: Arithmetische Ausdrücke. Rekursive Klassen. Überblick. Annette Bieniusa / Arnd Poetzsch-Heffter
Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter Fallstudie: Arithmetische Ausdrücke AG Softech FB Informatik TU Kaiserslautern Bieniusa/Poetzsch-Heffter Software Entwicklung 1 2/ 33 Überblick
Mehr