hue08 December 16, 2016

Größe: px
Ab Seite anzeigen:

Download "hue08 December 16, 2016"

Transkript

1 hue08 December 16, 2016 YOUR ANSWER HERE 1 Abgabehinweise Beachten Sie unbedingt diese Hinweise, sonst erhalten Sie keine Punkte aus dieser Abgabe! Für Details siehe z.b. Folien der nullten Zentralübung 1.1 Namen und Matrikelnummern Tragen Sie Ihre Matrikelnummern und -Adressen zeilenweise in die Zelle oberhalb dieser Zelle ein. Achten Sie dabei streng auf die Formatierung, denn die Auswertung erfolgt automatisch. Benutzen Sie keine Leerzeilen. Zwischen Matrikelnummer und -Adresse muss genau ein Leerzeichen stehen; sonst keine Leerzeichen, Tabs, Spiegelstriche, oder ähnliches in einer Zeile. Wir empfehlen dringend die Benutzung der Uni-Paderborn -Adressen! Format: MatrikelNummer -Adresse MatrikelNummer2 -Adresse2 z.b.: teststudent@mail.upb.de teststudent2@mail.upb.de vorname.nachname@mail.upb.de Hinweis: Wenn Sie das so in die obere Zelle eingeben, wird in der ausgeführten Markdownzelle (Strg+Enter) alles in einer Zeile angezeigt. Das ist egal; wichtig ist Formatierung der Eingabe. 1.2 Abgabe mit Gruppenaccount Die Abgabe muss mit Ihrem Gruppenaccount erfolgen (gp1_16_... ), den Sie in der Präsenzübung erhalten haben! Abgaben, die über Ihren Einzelaccount erfolgen, werden ignoriert. 1.3 Abgabe: Submit Es reicht nicht, nur das Übungsblatt zu verändern. Sie müssen unter Assignments auf Submit clicken (oder entsprechend über die Kommandozeile), für das entsprechende Übungsblatt! (Wenn Sie Blatt 8 abgeben wolllen hilft es nicht, bei Blatt 1 auf Submit zu drücken!) Für Details siehe Beschreibung Abgabeprozess. 1

2 1.4 Dateinamen Geben Sie Ihre Lösung in der vom Server erhaltenen Datei hue08.ipynb ab (nicht umbenennen, keine Kopie erstellen, keine anderen Dateien in das Verzeichnis legen, auch nicht Dateiname hue8.ipynb!). Sonst kann eine Bewertung nicht stattfinden. 1.5 Struktur des Notebooks Fügen Sie keine Zellen hinzu und löschen Sie keine Zellen. Ändern Sie nicht den Typ einer Zelle. Geben Sie Lösungen nur in den Lösungszellen ab. Änderungen in den anderen Zellen werden nach Abgabe automatisch rückgängig gemacht. 1.6 Code-Zellen Entfernen Sie die Zeilen mit Inhalt raise NotImplementedError() aus den Zellen, in die Sie Ihre Lösungen schreiben. Ersetzen Sie diese Zeilen durch Ihre eigene Lösungen. 1.7 Nie input Benutzen Sie niemals die Funktion input(). Das verhindert die automatische Auswertung Ihrer Abgabe und führt zu 0 Punkten für das gesamte Blatt! 1.8 Kommentare Kommentieren Sie Code-Abgaben! Insbesondere muss jede Funktion (Klasse, Methode,... ) einen sinnvollen docstring haben! Bei fehlendem docstring werden automatisch Punkte abgezogen! 2 Abgabetermin: um 23:59 Uhr 3 Aufgabe 1: Vererbung Für diese Aufgabe betrachten Sie den Code in der nachfolgenden Code-Zelle. In [ ]: class A: def init (self, x, y): self.x = x self.y = y def to_string(self): return "x, y = (" + str(self.x) + ", " + str(self.y) + ")" def str (self): return self.to_string() class B(A): def init (self, z, *args): A. init (self, *args) self.z = z 2

3 def str (self): return super(). str () class C(A): def init (self, *args): super(). init (*args) def to_string(self): return "Klasse C, " + super().to_string() 3.1 a) Nennen Sie die beiden Möglichkeiten, den Konstruktor einer Oberklasse aufzurufen und argumentieren Sie anhand von DRY, welche der beiden Möglichkeiten sinnvoller erscheint. YOUR ANSWER HERE 3.2 b) Warum kann man im Konstruktor der Klasse B den Aufruf A. init (self, *args) nicht zu A. init (*args) vereinfachen? In der Klasse C kann man schließlich auch den Konstruktor von A ohne die Angabe des Parameters self fehlerfrei durchführen. YOUR ANSWER HERE 3.3 c) Verwenden Sie in der nachfolgenden Code-Zelle die eingebaute Funktion isinstance, um zu überprüfen, ob die Objekte, welche von den Variablen a, b und c referenziert werden, Instanzen der obigen Klassen A, B und C sind. Geben Sie das Ergebnis (True oder False) jedes einzelnen Aufrufs mittles print aus (Sie erhalten 9 Ausgaben, für jede mögliche Kombination von Objekt und Klasse eine). In [ ]: a = A(1,2) b = B(1,2,3) c = C(4,5) # YOUR CODE HERE raise NotImplementedError() 3

4 3.4 d) Betrachten Sie nochmals die Objekte aus der vorherigen Code-Zelle. Geben Sie für die beiden folgenden Befehle an, welche Methoden der Klassen A, B oder C in welcher Reihenfolge aufgerufen werden. 1. print(b) 2. print(c) Beispielsweise soll dies für die Anweisung b = B(1,2,3) in dem folgenden Format geschehen: b = B(1,2,3) B. init A. init YOUR ANSWER HERE 4 Aufgabe 2: Löschen in einem binären Suchbaum In dieser Aufgabe sollen Sie die Operation remove() der Klasse BinaryTree aus der Vorlesung implementieren. 4.1 a) Beantworten Sie zunächst die folgenden Fragen: 1. Bevor Sie den Knoten mit dem zu löschenden Schlüssel aus dem Baum entfernen können, müssen Sie diesen zunächst einmal (mittels eines rekursiven Algorithmus) suchen. Welche Zustandsinformationen müssen Sie sich in den rekursiven Aufrufen des Suchalgorithmus merken? 2. Nehmen Sie an, Sie kennen bereits den Knoten, welcher den zu löschenden Schlüssel enthält. Zwischen welchen drei Fällen müssen Sie beim Entfernen dieses Knotens aus dem Baum unterscheiden? 3. Es gibt einen Knoten, dessen Löschung eine Sonderbehandlung erfordert (unabhängig, welcher der drei obigen Fälle vorliegt). Welcher Knoten ist das? Begründung! YOUR ANSWER HERE 4.2 b) Implementieren Sie nun die Methode remove(self, key) in der unten angegebenen Klasse BinaryTree, sodass sich nach Ablauf der Methode der übergebene Schlüssel nicht mehr im Baum befindet. Beachten Sie dabei, dass der Baum auch noch sortiert sein muss, nachdem der Schlüssel aus dem Baum entfernt wurde. Sie dürfen dabei annehmen, dass der zu löschende Schlüssel im Baum vorhanden ist, unter der Bedingung, dass der Baum nicht leer ist. Tipp: Zunächst einmal müssen Sie Knoten mit dem zu löschenden Schlüssel im Baum finden. Überlegen Sie sich dann eine geschickte Variante, um Schlüssel, deren Knoten zwei Kindknoten haben, ohne unnötiges Verschieben von Knotenreferenzen zu löschen. Hinweis: Es ist Ihnen nicht erlaubt, die Methoden der Klassen TreeNode und BinaryTree zu ändern! Beachten Sie außerdem, dass die Lösung dieser Aufgabe im Vergleich zu bisherigen Lösungen auf anderen Übungsblättern um einiges länger ausfällt. Sie dürfen selbstverständlich Hilfsmethoden (z.b. _search) schreiben, um Ihre Lösung etwas strukturierter zu machen. In [ ]: class TreeNode: Knoten eines Binärbaums 4

5 def init (self, key, val): Konstruktor Args: key: Schlüssel des Knotens (int) val: Datenelement des Knotens (object) self.key = key self.value = val self.left_child = None self.right_child = None def is_leaf(self): Liefert True, falls dieser Knoten ein Blattknoten ist. Returns: bool Wenn dieser Knoten keine Kindknoten hat return ((self.left_child is None) and (self.right_child is None)) class BinaryTree: Der Binäre Suchbaum aus der Vorlesung def init (self): Konstruktor self.root = None self.size = 0 def add(self, key, value): Füge einen Eintrag unter key an die richtige Stelle ein Args: key: Der einzufügende Schlüssel (int) value: Der zum Schlüssel zugehörige Wert (object) if self.root is None: # Baum ist leer, wir erzeugen den ersten Eintrag self.root = TreeNode(key, value) else: # Versuche, den Eintrag unter dem Knoten self.root einzufuegen self._add(key, value, self.root) self.size += 1 def _add(self, key, value, current_node): Hilfsmethode für add if key < current_node.key: # fuege im linken Teil ein 5

6 if current_node.left_child is None: # hier muss der neue Knoten hin! current_node.left_child = TreeNode(key, value) else: # es gibt schon Kinder, suche dort weiter: self._add(key, value, current_node.left_child) elif key > current_node.key: # der Fall ist ganz symmetrisch if current_node.right_child is None: current_node.right_child = TreeNode(key, value) else: self._add(key, value, current_node.right_child) else: # wenn key schon existiert: aktualisiere Wert current_node.value = value def iterate(self): Traversiere den Baum 'preorder'. Returns: list Eine Liste, welche die besuchten Schlüssel in preorder Rei if self.root == None: return [] return self._iterate(self.root, []) def _iterate(self, node, visited): Hilfsmethode für iterate visited.append(node.key) if node.left_child!= None: self._iterate(node.left_child, visited) if node.right_child!= None: self._iterate(node.right_child, visited) return visited # YOUR CODE HERE raise NotImplementedError() # Erzeuge Baum: t = BinaryTree() # Teste Löschversuch für leeren Baum: t.remove(1) assert(t.size == 0) t.add(2, "value") t.add(7, "value") t.add(5, "value") 6

7 t.add(1, "value") t.add(6, "value") t.add(9, "value") t.add(3, "value") t.add(11,"value") t.add(4, "value") assert(t.iterate() == [2, 1, 7, 5, 3, 4, 6, 9, 11]) # Lösche Elemente: t.remove(11) assert(t.iterate() == [2, 1, 7, 5, 3, 4, 6, 9]) t.remove(2) assert(t.iterate() == [1, 7, 5, 3, 4, 6, 9]) # Erzeuge Baum: t = BinaryTree() t.add(2, "value") t.add(7, "value") t.add(5, "value") t.add(1, "value") t.add(0, "value") t.add(6, "value") t.add(9, "value") t.add(3, "value") t.add(11,"value") t.add(4, "value") assert(t.iterate() == [2, 1, 0, 7, 5, 3, 4, 6, 9, 11]) # Lösche Elemente: t.remove(9) assert(t.iterate() == [2, 1, 0, 7, 5, 3, 4, 6, 11]) t.remove(0) assert(t.iterate() == [2, 1, 7, 5, 3, 4, 6, 11]) # Erzeuge Baum: t = BinaryTree() t.add(2, "value") t.add(1, "value") t.add(7, "value") t.add(4, "value") t.add(6, "value") t.add(5, "value") t.add(3, "value") t.add(9, "value") t.add(11,"value") 7

8 assert(t.iterate() == [2, 1, 7, 4, 3, 6, 5, 9, 11]) # Lösche Elemente: t.remove(7) assert(t.iterate() == [2, 1, 6, 4, 3, 5, 9, 11]) t.remove(2) assert(t.iterate() == [1, 6, 4, 3, 5, 9, 11]) 5 Aufgabe 3: Arztpraxis Gegeben ist die Klasse Patient (in komplexerer Form bereits bekannt aus Hausübungsblatt 7). Stellen Sie sich vor, Sie arbeiten in einer Arztpraxis und sollen ein System zur Verwaltung der Patienten im Wartezimmer implementieren. Das System soll Patienten, die in die Praxis kommen, ins Wartezimmer verweisen. Im Büro des Arztes darf sich maximal ein Patient gleichzeitig befinden (der Patient, der gerade vom Arzt behandelt wird). Sobald das Büro des Arztes wieder frei wird (d.h. die Behandlung abgeschlossen ist), kann nun ein Patient im Wartezimmer aufgerufen und in das Büro des Arztes gebeten werden. Für jeden Aufruf wird immer der Patient gewählt, der die längste Zeit im Wartezimmer verbracht hat. In [ ]: class Patient: Modelliert einen Patienten in einfacher Form def init (self, name, alter): Konstruktor Args: name: Name des Patienten (str) alter: Alter des patienten (int) self.name = name self.alter = alter def get_name(self): Gibt den Namen des Patienten zurück Returns: str Name des Patienten return self.name def get_alter(s): Gibt das Alter des Patienten zurück Returns: str Alter des Patienten return s.alter 8

9 def str (self): Packt die Informationen zu diesem Patient in einen String Returns: str Patienteninfos return "Name: " + self.name + ", Alter: " + str(self.alter) a) Implementieren Sie eine Klasse Arztpraxis, welche die folgenden Methoden bereitstellt: - Einen Konstruktor, welcher die Arztpraxis initialisiert. Zu Beginn ist das Wartezimmer leer und im Büro des Arztes befindet sich kein Patient. - betrete_praxis(self, p): Der gegebene Patient p betritt die Praxis und wird in das Wartezimmer gebeten. - naechster_patient_zum_arzt(self): Entfernt den Patienten aus dem Wartezimmer, welcher die längste Zeit dort verbracht hat, schickt diesen zum Arzt und gibt diesen zurück. Falls das Wartezimmer leer ist oder sich noch ein Patient in Behandlung befindet, werden keine Aktionen ausgeführt und lediglich None zurückgegeben. - beim_arzt(self): Gibt den Patienten zurück, welcher sich gerade beim Arzt befindet. Falls sich gerade kein Patient beim Arzt befindet, wird None zurückgegeben. - behandlung_abgeschlossen(self): Der Patient, der sich aktuell in Behandlung befindet, verlässt die Praxis, sodass das Zimmer des Arztes nun wieder leer ist. In [ ]: # YOUR CODE HERE raise NotImplementedError() praxis = Arztpraxis() patienten = [Patient("Max M", 26), Patient("Ulrike Eustermann", 13), Patien # Patienten betreten die Praxis: praxis.betrete_praxis(patienten[0]) praxis.betrete_praxis(patienten[1]) praxis.betrete_praxis(patienten[2]) assert(praxis.beim_arzt() == None) # Rufe Patienten auf: praxis.naechster_patient_zum_arzt() assert(praxis.beim_arzt() == patienten[0]) praxis.behandlung_abgeschlossen() assert(praxis.beim_arzt() == None) # Rufe nächsten Patienten auf: praxis.naechster_patient_zum_arzt() assert(praxis.beim_arzt() == patienten[1]) 9

10 Unsere Arztpraxis soll nun zwischen Kassen- und Privatpatienten unterscheiden: - Für Privatpatienten soll zusätzlich zu deren Namen und Alter auch noch die Anschrift (als String) gespeichert werden. - Privatpatienten werden von der Praxis bevorzugt behandelt, d.h. für die Auswahl des als nächstes zu behandelden Patienten wird immer erst geprüft, ob sich ein Privatpatient im Wartezimmer befindet. Ist dies der Fall, so wird dieser den Kassenpatienten vorgezogen, unabhängig von der Zeit, die er im Wartezimmer verbracht hat. - Falls sich mehrere Privatpatienten im Wartezimmer befinden, so wird der sich am längsten im Wartezimmer befindliche Privatpatient als nächstes aufgerufen. 5.1 b) Erweitern Sie zunächst mittels Vererbung die Klasse Patient zu einer Klasse Privatpatient, welche über ein Attribut anschrift sowie eine Methode get_anschrift(self) verfügt. Überschreiben Sie auch die Methode str (self), sodass die Tests korrekt laufen. In [ ]: # YOUR CODE HERE raise NotImplementedError() p = Privatpatient("Flotowstr. 52", "Daniela L", 28) assert(isinstance(p, Patient)) assert(isinstance(p, Privatpatient)) assert(p. str () == "<Privatpatient> Name: Daniela L, Alter: 28 Anschrift 5.2 c) Erweitern Sie nun mittels Vererbung Ihre Klasse Arztpraxis aus Aufgabenteil a) zu einer Klasse Arztpraxisunfair, sodass diese nun Privatpatienten wie oben beschrieben bevorzugt behandelt. In [ ]: # YOUR CODE HERE raise NotImplementedError() praxis = Arztpraxisunfair() patienten = [Patient("Max M", 26), Patient("Ulrike E", 13), Patient("Michae Privatpatient("Flotowstr. 52", "Daniela L", 28), Privatpatient # Patienten betreten die Praxis: praxis.betrete_praxis(patienten[0]) praxis.betrete_praxis(patienten[1]) praxis.betrete_praxis(patienten[2]) praxis.betrete_praxis(patienten[3]) praxis.betrete_praxis(patienten[4]) assert(praxis.beim_arzt() == None) # Rufe Patienten auf: praxis.naechster_patient_zum_arzt() assert(praxis.beim_arzt() == patienten[3]) 10

11 praxis.behandlung_abgeschlossen() assert(praxis.beim_arzt() == None) # Rufe nächsten Patienten auf: praxis.naechster_patient_zum_arzt() assert(praxis.beim_arzt() == patienten[4]) praxis.behandlung_abgeschlossen() assert(praxis.beim_arzt() == None) # Rufe nächsten Patienten auf: praxis.naechster_patient_zum_arzt() assert(praxis.beim_arzt() == patienten[0]) # Alle Dokumentationen vorhanden? l = [] # Aufgabe 2: l.append(("binarytree", "remove")) # Aufgabe 3 l.append(("arztpraxis", "betrete_praxis")) l.append(("arztpraxis", "naechster_patient_zum_arzt")) l.append(("arztpraxis", "beim_arzt")) l.append(("arztpraxis", "behandlung_abgeschlossen")) l.append(("privatpatient", " init ")) l.append(("privatpatient", "get_anschrift")) l.append(("privatpatient", " str ")) l.append(("arztpraxisunfair", "betrete_praxis")) l.append(("arztpraxisunfair", "naechster_patient_zum_arzt")) l.append(("arztpraxisunfair", "beim_arzt")) l.append(("arztpraxisunfair", "behandlung_abgeschlossen")) for a in l: try: attr = getattr(eval(a[0]), a[1]) assert(attr. doc!= None) print(attr. doc!= None, "-->", a[0] + "." + a[1]) except AttributeError: print("not Implemented", "-->", a[0] + "." + a[1]) except AssertionError: print(attr. doc!= None, "-->", a[0] + "." + a[1]) 11

hue06 December 2, 2016

hue06 December 2, 2016 hue06 December 2, 2016 1 Abgabehinweise Beachten Sie unbedingt diese Hinweise, sonst erhalten Sie keine Punkte aus dieser Abgabe! Für Details siehe z.b. Folien der nullten Zentralübung 1.1 Namen und Matrikelnummern

Mehr

hue12 January 24, 2017

hue12 January 24, 2017 hue12 January 24, 2017 1 Abgabehinweise Beachten Sie unbedingt diese Hinweise, sonst erhalten Sie keine Punkte aus dieser Abgabe! Für Details siehe z.b. Folien der nullten Zentralübung 1.1 Namen und Matrikelnummern

Mehr

hue13 January 30, 2017

hue13 January 30, 2017 hue13 January 30, 2017 1 Abgabehinweise Beachten Sie unbedingt diese Hinweise, sonst erhalten Sie keine Punkte aus dieser Abgabe! Für Details siehe z.b. Folien der nullten Zentralübung 1.1 Namen und Matrikelnummern

Mehr

hue10 January 15, 2017

hue10 January 15, 2017 hue10 January 15, 2017 1 Abgabehinweise Beachten Sie unbedingt diese Hinweise, sonst erhalten Sie keine Punkte aus dieser Abgabe! Für Details siehe z.b. Folien der nullten Zentralübung 1.1 Namen und Matrikelnummern

Mehr

hue04 November 18, 2016

hue04 November 18, 2016 hue04 November 18, 2016 1 Abgabehinweise Beachten Sie unbedingt diese Hinweise, sonst erhalten Sie keine Punkte aus dieser Abgabe! Für Details siehe z.b. Folien der nullten Zentralübung 1.1 Namen und Matrikelnummern

Mehr

hue07 December 9, 2016

hue07 December 9, 2016 hue07 December 9, 2016 YOUR ANSWER HERE 1 Abgabehinweise Beachten Sie unbedingt diese Hinweise, sonst erhalten Sie keine Punkte aus dieser Abgabe! Für Details siehe z.b. Folien der nullten Zentralübung

Mehr

hue05 November 25, 2016

hue05 November 25, 2016 hue05 November 25, 2016 1 Abgabehinweise Beachten Sie unbedingt diese Hinweise, sonst erhalten Sie keine Punkte aus dieser Abgabe! Für Details siehe z.b. Folien der nullten Zentralübung 1.1 Namen und Matrikelnummern

Mehr

pue08 December 9, 2016

pue08 December 9, 2016 pue08 December 9, 2016 1 Aufgabe 1: Ein einfaches Zeichenprogramm 1.1 a) Erstellen Sie eine Klasse Square mit den folgenden Eigenschaften: Objektvariablen: - width: Seitenlänge (default: 0) - color: Füllfarbe

Mehr

<br > <br >

<br > <br > YOUR ANSWER HERE Abgabehinweise Beachten Sie unbedingt diese Hinweise, sonst erhalten Sie keine Punkte aus dieser Abgabe! Für Details siehe z.b. Folien der nullten Zentralübung (http://groups.uni-paderborn.de/fgkarl/lehre/ws1617/gp1/hue/gp1-zue0.pdf)

Mehr

hue03 November 11, 2016

hue03 November 11, 2016 hue03 November 11, 2016 Bitte tragen Sie Ihre Matrikelnummern und E-Mail-Adressen zeilenweise in die Zelle oberhalb dieser Zelle ein. Beachten Sie: Die Abgabe muss mit Ihrem Gruppenaccount erfolgen, den

Mehr

pue09 December 16, 2016

pue09 December 16, 2016 pue09 December 16, 2016 1 Aufgabe 1: Zeichenprogramm revisited Betrachten Sie die folgende Implementierung des Zeichenprogramms aus PÜ8 (Anmerkung: Kommentare und Docstrings wurden hier bewusst weggelassen,

Mehr

Aufgabe 1. Implementieren Sie die beiden Klassen Möbelstück und Behälter. Diese sollen Folgendes können: Möbelstück:

Aufgabe 1. Implementieren Sie die beiden Klassen Möbelstück und Behälter. Diese sollen Folgendes können: Möbelstück: Aufgabe 1 Implementieren Sie die beiden Klassen Möbelstück und Behälter. Diese sollen Folgendes können: Möbelstück: Ein Möbelstück hat einen Preis, einen Modellnamen und einen Hersteller Das Möbelstück

Mehr

pue02 October 28, 2016

pue02 October 28, 2016 pue02 October 28, 2016 Generell gilt: Bei Fragen wenden Sie sich bitte an Ihren Tutor 1 Aufgabe 1 1.1 a) Python im Notebook Die nächste Zelle ist nicht vom Typ Markdown sondern Code, in ihr steht Quellcode

Mehr

Kapitel 8: Klassen und Objekte. Grundlagen der Programmierung 1. Holger Karl. Wintersemester 2018/2018. Inhaltsverzeichnis 1. Abbildungsverzeichnis 2

Kapitel 8: Klassen und Objekte. Grundlagen der Programmierung 1. Holger Karl. Wintersemester 2018/2018. Inhaltsverzeichnis 1. Abbildungsverzeichnis 2 Kapitel 8: Klassen und Objekte Grundlagen der Programmierung 1 Holger Karl Wintersemester 2018/2018 Inhaltsverzeichnis Inhaltsverzeichnis 1 Abbildungsverzeichnis 2 Liste von Definitionen u.ä. 3 8.1 Überblick...............................

Mehr

Tutoraufgabe 1 (Implementierung eines ADTs):

Tutoraufgabe 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

Mehr

Institut für Programmierung und Reaktive Systeme. Java 6. Markus Reschke

Institut für Programmierung und Reaktive Systeme. Java 6. Markus Reschke Institut für Programmierung und Reaktive Systeme Java 6 Markus Reschke 13.10.2014 OOP Objekte = Verhalten (durch Methoden) + Daten (durch Attribute) Klassen = Baupläne für Objekte Kapselung von Programmteilen

Mehr

B6.1 Introduction. Algorithmen und Datenstrukturen. Algorithmen und Datenstrukturen. B6.1 Introduction. B6.3 Analyse. B6.4 Ordnungsbasierte Methoden

B6.1 Introduction. Algorithmen und Datenstrukturen. Algorithmen und Datenstrukturen. B6.1 Introduction. B6.3 Analyse. B6.4 Ordnungsbasierte Methoden Algorithmen und Datenstrukturen 11. April 2018 B6. Binäre Suchbäume a Algorithmen und Datenstrukturen B6. Binäre Suchbäume 1 Marcel Lüthi and Gabriele Röger Universität Basel 11. April 2018 a Folien basieren

Mehr

Anwendungsbeispiel MinHeap

Anwendungsbeispiel MinHeap Anwendungsbeispiel MinHeap Uns seien n ganze Zahlen gegeben und wir möchten darin die k größten Zahlen bestimmen; zudem gelten, dass n deutlich größer als k ist Wir können das Problem mit Laufzeit in O(n

Mehr

Übung Informatik I - Programmierung - Blatt 8

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

Mehr

class PrintNode(object): def init ( self, param ):... def visit( self, treenode ): print treenode.getitem()

class PrintNode(object): def init ( self, param ):... def visit( self, treenode ): print treenode.getitem() aumtraversierungen Allg.: häufig müssen alle Knoten eines aumes besucht werden, um bestimmte Operationen auf ihnen durchführen zu können Operation in Visitor-Klasse verpacken, z.. class PrintNode(object):

Mehr

1 Der Baum. Informatik I: Einführung in die Programmierung 11. Bäume. Bäume in der Informatik. Bäume in der Informatik - Definition.

1 Der Baum. Informatik I: Einführung in die Programmierung 11. Bäume. Bäume in der Informatik. Bäume in der Informatik - Definition. 1 Informatik I: Einführung in die Programmierung 11. Bäume e e Albert-Ludwigs-Universität Freiburg Bernhard Nebel 13. November 2015 13. November 2015 B. Nebel Info I 3 / 33 Bäume in der Informatik Bäume

Mehr

18. Natürliche Suchbäume

18. Natürliche Suchbäume Wörterbuchimplementationen 1. Natürliche Suchbäume [Ottman/Widmayer, Kap..1, Cormen et al, Kap. 12.1-12.] Hashing: Implementierung von Wörterbüchern mit erwartet sehr schnellen Zugriffszeiten. Nachteile

Mehr

pue13 January 28, 2017

pue13 January 28, 2017 pue13 January 28, 2017 1 Aufgabe 1 (Klammern und Anweisungsblöcke) Wie Sie in der Vorlesung gelernt haben, werden Anweisungsblöcke in Java nicht durch Einrückung, sondern mithilfe von geschweiften Klammern

Mehr

1 Berechnung von Summen (ca = 10 Punkte)

1 Berechnung von Summen (ca = 10 Punkte) Einführung in die wissenschaftliche Programmierung Klausur 26.02.2013 Seite 1/8 Name, Vorname, Unterschrift: Matrikelnummer: 1 Berechnung von Summen (ca. 5 + 4 + 1 = 10 Punkte) Gegeben sind natürliche

Mehr

Informatik I: Einführung in die Programmierung. Übungsblatt 3. Abgabe: Freitag, 15. November 2013, 18:00 Uhr

Informatik I: Einführung in die Programmierung. Übungsblatt 3. Abgabe: Freitag, 15. November 2013, 18:00 Uhr Informatik I: Einführung in die Programmierung Prof. Dr. Bernhard Nebel Dr. Christian Becker-Asano, Dr. Stefan Wölfl Wintersemester 2013/2014 Universität Freiburg Institut für Informatik Übungsblatt 3

Mehr

f 1 (n) = log(n) + n 2 n 5 f 2 (n) = n 3 + n 2 f 3 (n) = log(n 2 ) f 4 (n) = n n f 5 (n) = (log(n)) 2

f 1 (n) = log(n) + n 2 n 5 f 2 (n) = n 3 + n 2 f 3 (n) = log(n 2 ) f 4 (n) = n n f 5 (n) = (log(n)) 2 Prof. aa Dr. E. Ábrahám Datenstrukturen und Algorithmen SS Lösung - Präsenzübung.05.0 F. Corzilius, S. Schupp, T. Ströder Aufgabe (Asymptotische Komplexität): (6 + 0 + 6 = Punkte) a) Geben Sie eine formale

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Universität Innsbruck Institut für Informatik Zweite Prüfung 16. Oktober 2008 Algorithmen und Datenstrukturen Name: Matrikelnr: Die Prüfung besteht aus 8 Aufgaben. Die verfügbaren Punkte für jede Aufgabe

Mehr

1 Bizz Buzz Woof (ca =18 Punkte) def read file(file_in): fp = open(file_in, r ) l = fp.read() fp.close() return l

1 Bizz Buzz Woof (ca =18 Punkte) def read file(file_in): fp = open(file_in, r ) l = fp.read() fp.close() return l Einführung in die wissenschaftliche Programmierung Klausur 1. März 2010 Seite 1/7 Name, Vorname, Unterschrift: Matrikelnummer: 1 Bizz Buzz Woof (ca. 3+9+6=18 Punkte) In dieser Aufgabe sollen Zahlen codiert

Mehr

Die Klasse java.lang.object. Thorsten Treffer

Die Klasse java.lang.object. Thorsten Treffer Die Klasse java.lang.object Thorsten Treffer 6. Dezember 2003 1 java.lang.object Die Klassenhierarchie von Java kann als Baum aufgezeichnet werden, dessen Wurzel die Klasse Object ist. Mit anderen Worten:

Mehr

1 Stückweise konstante Funktionen (ca =10 Punkte)

1 Stückweise konstante Funktionen (ca =10 Punkte) Einführung in die wissenschaftliche Programmierung Klausur Seite 1/5 Name, Vorname, Unterschrift: Matrikelnummer: 1 Stückweise konstante Funktionen (ca. 4+2+4=10 Punkte) In dieser Aufgabe soll eine Klasse

Mehr

1 Der Baum. Informatik I: Einführung in die Programmierung 11. Bäume. Bäume in der Informatik. Bäume in der Informatik - Definition.

1 Der Baum. Informatik I: Einführung in die Programmierung 11. Bäume. Bäume in der Informatik. Bäume in der Informatik - Definition. 1 Informatik I: Einführung in die Programmierung 11. Bäume e e Albert-Ludwigs-Universität Freiburg Bernhard Nebel 17. November 2017 17. November 2017 B. Nebel Info I 3 / 33 Bäume in der Informatik Bäume

Mehr

Schlussendlich geben wir die Listen aus. Es kommt zu folgender Ausgabe:

Schlussendlich geben wir die Listen aus. Es kommt zu folgender Ausgabe: Musterlösung Übung 7 Aufgabe 1 Sehen wir uns zu allererst das gegebene Forth Programm an: 0 3 new - list constant list1 list1 5 new - list constant list2 list1 6 new - list constant list3 list2 2 new -

Mehr

Präsenzübung Datenstrukturen und Algorithmen SS 2014

Präsenzübung Datenstrukturen und Algorithmen SS 2014 Prof. aa Dr. E. Ábrahám F. Corzilius, S. Schupp, T. Ströder Präsenzübung Datenstrukturen und Algorithmen SS 2014 Vorname: Nachname: Studiengang (bitte genau einen markieren): Informatik Bachelor Informatik

Mehr

Datenstrukturen Teil 2. Bäume. Definition. Definition. Definition. Bäume sind verallgemeinerte Listen. Sie sind weiter spezielle Graphen

Datenstrukturen Teil 2. Bäume. Definition. Definition. Definition. Bäume sind verallgemeinerte Listen. Sie sind weiter spezielle Graphen Bäume sind verallgemeinerte Listen Datenstrukturen Teil 2 Bäume Jeder Knoten kann mehrere Nachfolger haben Sie sind weiter spezielle Graphen Graphen bestehen aus Knoten und Kanten Kanten können gerichtet

Mehr

Allgemeine Hinweise:

Allgemeine 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,

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

9. Natürliche Suchbäume

9. Natürliche Suchbäume Bäume Bäume sind. Natürliche Suchbäume [Ottman/Widmayer, Kap..1, Cormen et al, Kap. 12.1-12.] Verallgemeinerte Listen: Knoten können mehrere Nachfolger haben Spezielle Graphen: Graphen bestehen aus Knoten

Mehr

Algorithmen und Datenstrukturen. Algorithmen und Datenstrukturen. B6.1 Einführung. B6.2 Symboltabellen. B6.3 Einfache Implementationen

Algorithmen und Datenstrukturen. Algorithmen und Datenstrukturen. B6.1 Einführung. B6.2 Symboltabellen. B6.3 Einfache Implementationen Algorithmen und Datenstrukturen 03. April 2019 B6. Symboltabellen a Algorithmen und Datenstrukturen B6. Symboltabellen 1 Marcel Lüthi and Gabriele Röger Universität Basel 03. April 2019 a Folien basieren

Mehr

Übung Algorithmen und Datenstrukturen

Übung Algorithmen und Datenstrukturen Übung Algorithmen und Datenstrukturen Sommersemester 216 Patrick Schäfer, Humboldt-Universität zu Berlin Agenda Vorstellung des 6. Übungsblatts. Hashing Binäre Suchbäume AVL-Bäume 2 Aufgabe: Hashing mit

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

Wiederholungsklausur "ADP" WS 2016/2017

Wiederholungsklausur ADP WS 2016/2017 PD Dr. J. Reischer 23.02.2017 Wiederholungsklausur "ADP" WS 2016/2017 Nachname, Vorname Abschluss (BA, MA, FKN etc.) Matrikelnummer, Semester Versuch (1/2/3) Bitte füllen Sie zuerst den Kopf des Angabenblattes

Mehr

Tutoraufgabe 1 (Implementierung eines ADTs):

Tutoraufgabe 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

Mehr

Zwei Arten von Attributen

Zwei Arten von Attributen Zwei Arten von Attributen Die Daten, die von einem Objekt gespeichert werden und keine Methoden sind, heißen Attribute. Es gibt zwei Arten: Instanzattribute ( = Instanzvariablen): Variable, die einer bestimmten

Mehr

Prüfung Informatik D-MATH/D-PHYS :00 17:00

Prüfung Informatik D-MATH/D-PHYS :00 17:00 Prüfung Informatik D-MATH/D-PHYS 9. 8. 0 5:00 7:00 Prof. Bernd Gartner Kandidat/in: Name:. Vorname:. Stud.-Nr.:. Ich bezeuge mit meiner Unterschrift, dass ich die Prufung unter regularen Bedingungen ablegen

Mehr

a) Fügen Sie die Zahlen 39, 38, 37 und 36 in folgenden (2, 3)-Baum ein:

a) Fügen Sie die Zahlen 39, 38, 37 und 36 in folgenden (2, 3)-Baum ein: 1 Aufgabe 8.1 (P) (2, 3)-Baum a) Fügen Sie die Zahlen 39, 38, 37 und 36 in folgenden (2, 3)-Baum ein: Zeichnen Sie, was in jedem Schritt passiert. b) Löschen Sie die Zahlen 65, 70 und 100 aus folgendem

Mehr

Einführung in die Informatik

Einführung in die Informatik Einführung in die Informatik Jochen Hoenicke Software Engineering Albert-Ludwigs-University Freiburg Sommersemester 2014 Jochen Hoenicke (Software Engineering) Einführung in die Informatik Sommersemester

Mehr

13. Binäre Suchbäume

13. Binäre Suchbäume 1. Binäre Suchbäume Binäre Suchbäume realiesieren Wörterbücher. Sie unterstützen die Operationen 1. Einfügen (Insert) 2. Entfernen (Delete). Suchen (Search) 4. Maximum/Minimum-Suche 5. Vorgänger (Predecessor),

Mehr

Vorlesung Datenstrukturen

Vorlesung Datenstrukturen Vorlesung Datenstrukturen Binärbaum Suchbaum Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 356 Datenstruktur Binärbaum Strukturrepräsentation des mathematischen Konzepts Binärbaum

Mehr

Übungsblatt 1. Java Vorkurs (WS 2017)

Übungsblatt 1. Java Vorkurs (WS 2017) Übungsblatt 1 Java Vorkurs (WS 2017) Aufgabe 1 Hallo-Welt Erstelle ein neues Projekt mit dem Namen HelloJava. Erzeuge in diesem Projekt eine neue Klasse HelloJava. (a) Schreibe die main-methode in die

Mehr

1 14. Vorlesung: Klassen, Vererbung

1 14. Vorlesung: Klassen, Vererbung #!/usr/bin/env python3 # -*- coding: utf-8 -*- # """ # Created on Mon Jan 22 10:06:38 2018 # # @author: christianehelzel # """ 1 14. Vorlesung: Klassen, Vererbung Wir betrachten Beispiele aus dem Buch

Mehr

Datenstruktur Baum Software Entwicklung 1

Datenstruktur Baum Software Entwicklung 1 Datenstruktur Baum Software Entwicklung 1 Annette Bieniusa, Mathias Weber, Peter Zeller Bäume gehören zu den wichtigsten in der Informatik auftretenden Datenstrukturen. [Ottmann, Widmayer: Algorithmen

Mehr

Lösungshinweise/-vorschläge zum Übungsblatt 13: Software-Entwicklung 1 (WS 2017/18)

Lösungshinweise/-vorschläge zum Übungsblatt 13: Software-Entwicklung 1 (WS 2017/18) Dr. Annette Bieniusa Mathias Weber, M. Sc. Peter Zeller, M. Sc. TU Kaiserslautern Fachbereich Informatik AG Softwaretechnik Lösungshinweise/-vorschläge zum Übungsblatt 13: Software-Entwicklung 1 (WS 2017/18)

Mehr

Zwei Arten von Attributen. Klassenvariablen. Introspektion. getattr(object_instance, string)

Zwei Arten von Attributen. Klassenvariablen. Introspektion. getattr(object_instance, string) Zwei Arten von Attributen Klassenvariablen Die Daten, die von einem Objekt gespeichert werden und keine Methoden sind, heißen Attribute. Es gibt zwei Arten: Instanzattribute ( = Instanzvariablen): Variable,

Mehr

Institut für Programmierung und Reaktive Systeme 7. Mai Programmieren II. 11. Übungsblatt

Institut 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

Mehr

Vorlesung PRG-1, WS 06/07 6. Übung

Vorlesung PRG-1, WS 06/07 6. Übung Fachbereich Informatik & Mathematik (12) Professur Graphische Datenverarbeitung Prof. Dr. Detlef Krömker Jörg Demmer Ashraf Abu Baker Robert-Mayer-Str. 10 60325 Frankfurt am Main Tel.: +49 (0)69 798-24610

Mehr

Implementierung eines Baumes (in Python)

Implementierung eines Baumes (in Python) Satz: in maximal vollständiger binärer aum der Höhe h enthält 2 h-1 lätter und 2 h -1 Knoten und 2 h-1-1 inneren Knoten. eweis: 1. nduktionsanfang: h= 1 Der aum besteht nur aus der Wurzel, die auch das

Mehr

3.3 Entwurf von Datentypen

3.3 Entwurf von Datentypen 3.3 Entwurf von Datentypen Durch das Erzeugen von Datentypen entwickelt der Programmierer eine eigene Sprache, mit der über die Daten gesprochen werden kann. Deshalb muss man beim Entwickeln einer Idee

Mehr

Institut für Programmierung und Reaktive Systeme 10. Mai Programmieren II. 11. Übungsblatt

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

Mehr

Teil 1: Suchen. Ausgeglichene Bäume B-Bäume Digitale Suchbäume. M.O.Franz, Oktober 2007 Algorithmen und Datenstrukturen - Binärbäume 1-1

Teil 1: Suchen. Ausgeglichene Bäume B-Bäume Digitale Suchbäume. M.O.Franz, Oktober 2007 Algorithmen und Datenstrukturen - Binärbäume 1-1 Teil : Suchen Problemstellung Elementare Suchverfahren Hashverfahren Binäre Suchbäume (Wiederholung aus Prog 2) Bäume: Begriffe, Eigenschaften und Traversierung Binäre Suchbäume Gefädelte Suchbäume Ausgeglichene

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Übung 3: Die generische Klasse BinärerSuchbaum in Java 1 Datenelemente der Klasse BinaererSuchbaum Das einzige Datenelelement in dieser Klasse ist die Wurzel vom Typ BinaerBaumknoten. Die Klasse BinaerBaumknoten

Mehr

Algorithmen und Datenstrukturen 07

Algorithmen und Datenstrukturen 07 (7. Juni 2012) 1 Besprechung Blatt 6 Fragen 2 Referenzen Referenzsemantik 3 Vererbung Allgemein abstract Interfaces Vererbung in UML 4 Vorbereitung Blatt 7 Anmerkungen Fragen Fragen zu Blatt 6? Referenzsemantik

Mehr

Software Entwicklung 1. Fallstudie: Arithmetische Ausdrücke. Rekursive Klassen. Überblick. Annette Bieniusa / Arnd Poetzsch-Heffter

Software 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

Software Entwicklung 1

Software Entwicklung 1 Software Entwicklung 1 Annette Bieniusa AG Softech FB Informatik TU Kaiserslautern Lernziele Die Definition wichtiger Begriffe im Zusammenhand mit Bäumen zu kennen. Markierte Bäumen, insbesondere Suchbäume,

Mehr

Nachtrag: Vergleich der Implementierungen von Stack

Nachtrag: Vergleich der Implementierungen von Stack Nachtrag: Vergleich der Implementierungen von Stack In der letzten Vorlesung hatten wir zwei Implementierung der Klasse Stack: eine Implementierung als Liste (Array): liststack eine Implementierung als

Mehr

11 Objektorientierte Programmierung, Teil 2

11 Objektorientierte Programmierung, Teil 2 11 Objektorientierte Programmierung, Teil 2 Ein wesentliches Konzept der objektorientierten Programmierung fehlt uns noch: die Vererbung 203 Programmcode wiederverwenden Wenn wir einige Klassen geschrieben

Mehr

Grundlagen der Informatik / Algorithmen und Datenstrukturen. Aufgabe 139

Grundlagen der Informatik / Algorithmen und Datenstrukturen. Aufgabe 139 Aufgabe 139 Aufgabe 139 Aufgabenstellung Stellen Sie den folgenden in Feldbaum-Darstellung beschriebenen Binärbaum a) graphisch (welcher Knoten ist die Wurzel?), b) in halbsequentieller Darstellung, c)

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 11: 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

Universitä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 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

Mehr

Datenstrukturen sind neben Algorithmen weitere wichtige Bausteine in der Informatik

Datenstrukturen sind neben Algorithmen weitere wichtige Bausteine in der Informatik 5. Datenstrukturen Motivation Datenstrukturen sind neben Algorithmen weitere wichtige Bausteine in der Informatik Eine Datenstruktur speichert gegebene Daten und stellt auf diesen bestimmte Operationen

Mehr

Diskrete Modellierung

Diskrete Modellierung Diskrete Modellierung Wintersemester 2018/19 Martin Mundhenk Uni Jena, Institut für Informatik 13. November 2018 3.3.1 3.3 Entwurf von Datentypen Durch das Erzeugen von Datentypen entwickelt der Programmierer

Mehr

Programmierkurs Python I

Programmierkurs Python I Programmierkurs Python I Michaela Regneri 2009-11-19 (Folien basieren auf dem gemeinsamen Kurs mit Stefan Thater) Objektorientierte Programmierung Prozedurale / imperative Programmierung: Daten und Operationen

Mehr

IT I: Heute. Nachbetrachtung Wissensüberprüfung. Einführung Vererbung. Roboter in becker.robots. Filialenbelieferung 4.11.

IT I: Heute. Nachbetrachtung Wissensüberprüfung. Einführung Vererbung. Roboter in becker.robots. Filialenbelieferung 4.11. IT I: Heute Nachbetrachtung Wissensüberprüfung Einführung Vererbung Roboter in becker.robots Filialenbelieferung 4.11.2014 IT I - VO 4 1 Organisatorisches Tutorium am Mi, 12.11. schon um 11 Uhr (bis 12:30).

Mehr

Informatik II Übung 2

Informatik 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

Mehr

Binärbäume: Beispiel

Binärbäume: Beispiel Binärbäume Als Beispiel für eine interessantere dynamische Datenstruktur sehen wir uns jetzt Binärbäume an Ein Binärbaum wird rekursiv definiert: Er ist leer oder besteht aus einem Knoten (die Wurzel des

Mehr

Software Entwicklung 1

Software Entwicklung 1 Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter AG Softech FB Informatik TU Kaiserslautern Fallstudie: Arithmetische Ausdrücke Bieniusa/Poetzsch-Heffter Software Entwicklung 1 2/ 33 Überblick

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Universität der Bundeswehr Fakultät für Informatik Institut 2 Priv.-Doz. Dr. Lothar Schmitz FT 2006 Übungsblatt 5 Objektorientierte Programmierung 22. 05. 2006 Aufgabe 9 (SMS-Eingabe am Handy mit Tries)

Mehr

Aufgaben, Hilfestellungen und Musterlösungen zum Modul 5 Druckversion

Aufgaben, Hilfestellungen und Musterlösungen zum Modul 5 Druckversion Abschnitt 1 Aufgaben, Hilfestellungen und Musterlösungen zum Modul 5 Druckversion Aufgabe 1: Binäre Suchbäume: Iteratives Suchen/Einfügen/Löschen Das Material dieser Übung enthält in der Klasse Tree0 die

Mehr

Tutoraufgabe 1 (Listen):

Tutoraufgabe 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

Mehr

Grundlagen der Informatik

Grundlagen 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;

Mehr

Probeklausur: Programmierung WS04/05

Probeklausur: Programmierung WS04/05 Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,

Mehr

Abiturprüfung Informatik, Grundkurs

Abiturprü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

Mehr

Bäume. Martin Wirsing. Ziele. Implementierung von Knoten. Bäume (abstrakt) Standardimplementierungen für Bäume kennen lernen

Bäume. Martin Wirsing. Ziele. Implementierung von Knoten. Bäume (abstrakt) Standardimplementierungen für Bäume kennen lernen 2 Ziele Bäume Standardimplementierungen für Bäume kennen lernen Martin Wirsing in Zusammenarbeit mit Michael Barth, Philipp Meier und Gefei Zhang 02/0 4 Bäume (abstrakt) Implementierung von Knoten Bäume

Mehr

C++ Bit-Access. Detlef Wilkening

C++ Bit-Access. Detlef Wilkening http://www.wilkening-online.de Seite 1 / 30 C++ Bit-Access Detlef Wilkening 10.03.2016 http://www.wilkening-online.de Seite 2 / 30 Einfache Aufgabe: Klasse, die ein Int kapselt Genau genommen hier-und-heute

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

Bäume. Prof. Dr. Christian Böhm. in Zusammenarbeit mit Gefei Zhang. WS 07/08

Bäume. Prof. Dr. Christian Böhm. in Zusammenarbeit mit Gefei Zhang.   WS 07/08 Bäume Prof. Dr. Christian Böhm in Zusammenarbeit mit Gefei Zhang http://www.dbs.ifi.lmu.de/lehre/nfinfosw WS 07/08 2 Ziele Standardimplementierungen für Bäume kennen lernen 3 Bäume (abstrakt) Bäume sind

Mehr

Übung zur Vorlesung Programmierung

Übung zur Vorlesung Programmierung RWTH Aachen Lehrgebiet Theoretische Informatik Frohn Reidl Rossmanith Sánchez Ströder WS 2013/14 Übungsblatt 8 16.12.2013 Übung zur Vorlesung Programmierung Aufgabe T15 Betrachten Sie folgende Klassen:

Mehr

Abgabe: (vor der Vorlesung) Aufgabe 7.1 (P) Binomial Heap

Abgabe: (vor der Vorlesung) Aufgabe 7.1 (P) Binomial Heap TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen SS 2009 Grundlagen: Algorithmen und Datenstrukturen Übungsblatt 7 Prof. Dr. Helmut Seidl, S. Pott,

Mehr

Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Suchen. Lineare Suche. Such-Algorithmen. Sommersemester Dr.

Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Suchen. Lineare Suche. Such-Algorithmen. Sommersemester Dr. Programm heute Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 0 Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München Fortgeschrittene Datenstrukturen Such-Algorithmen

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

Klausur "ADP" SS 2015

Klausur ADP SS 2015 PD Dr. J. Reischer 20.7.2015 Klausur "ADP" SS 2015 Nachname, Vorname Abschluss (BA, MA, FKN etc.) Matrikelnummer, Semester Versuch (1/2/3) Bitte füllen Sie zuerst den Kopf des Angabenblattes aus! Die Klausur

Mehr

Informatik II - Übung 07

Informatik II - Übung 07 Informatik II - Übung 07 Katja Wolff katja.wolff@inf.ethz.ch Besprechung Übungsblatt 6 Informatik II Übung 07 12.04.2017 2 Übungsblatt 6 1.) Klassen, Schnittstellen, Typumwandlung 2.) Schnittstellen und

Mehr