hue08 December 16, 2016
|
|
- Sebastian Morgenstern
- vor 5 Jahren
- Abrufe
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 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
Mehrhue12 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
Mehrhue13 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
Mehrhue10 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
Mehrhue04 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
Mehrhue07 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
Mehrhue05 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
Mehrpue08 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 >
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)
Mehrhue03 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
Mehrpue09 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,
MehrAufgabe 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
Mehrpue02 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
MehrKapitel 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...............................
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
MehrInstitut 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
MehrB6.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
MehrAnwendungsbeispiel 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
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.
Mehrclass 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):
Mehr1 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
Mehr18. 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
Mehrpue13 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
Mehr1 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
MehrInformatik 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
Mehrf 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
MehrAlgorithmen 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
Mehr1 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
MehrDie 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:
Mehr1 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
Mehr1 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
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 -
MehrPrä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
MehrDatenstrukturen 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
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,
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
Mehr9. 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
MehrAlgorithmen 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 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
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
MehrWiederholungsklausur "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
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
MehrZwei 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
MehrPrü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
Mehra) 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
MehrEinfü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
Mehr13. 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),
MehrVorlesung 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) 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
Mehr1 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
MehrDatenstruktur 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
MehrLö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)
MehrZwei 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,
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
MehrVorlesung 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
MehrImplementierung 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
Mehr3.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
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.
MehrTeil 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
MehrAlgorithmen 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
MehrAlgorithmen 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
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
MehrSoftware 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,
MehrNachtrag: 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
Mehr11 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
MehrGrundlagen 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)
MehrJavakurs 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
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
MehrDatenstrukturen 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
MehrDiskrete 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
MehrProgrammierkurs 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
MehrIT 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).
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
MehrBinä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
MehrSoftware 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
MehrObjektorientierte 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)
MehrAufgaben, 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
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
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;
MehrProbeklausur: 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,
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
MehrBä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
MehrC++ 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
Mehr3. Ü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
MehrBä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
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:
MehrAbgabe: (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,
MehrProgramm 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
Mehr1. 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
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
MehrInformatik 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