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

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

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

In C und Java müssen Variablen und Methodenergebnisse durch Typangaben erläutert werden. Welche der folgenden Aussagen sind korrekt und welche nicht:

Grundlagen Java. Name: Seite 2

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

Algorithmen und Datenstrukturen

Klausur Informatik B April Teil I: Informatik 3

Stud.-Nummer: Datenstrukturen & Algorithmen Seite 1

Übungen zu Algorithmen

13. Bäume: effektives Suchen und Sortieren

Muster. Informatik 3 (Februar 2004) Name: Matrikelnummer: Betrachten Sie den folgenden Suchbaum. A G H J K M N

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme

Klausur Sommersemester 2012 Datenstrukturen und Algorithmen 24. September 2012

NAME, VORNAME: Studiennummer: Matrikel:

EndTermTest PROGALGO WS1516 A

Musterlösung Stand: 5. Februar 2009

Informatik Abitur Bayern 2017 / II - Lösung

Institut für Programmierung und Reaktive Systeme 17. Juli Programmieren II. Übungsklausur

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

Aufgabe 1 (12 Punkte)

Klausur Software-Entwicklung März 01

Inhaltsverzeichnis. Teil 1 Grundlagen 21. Teil 2 Datenstrukturen 85

C# - Einführung in die Programmiersprache Methoden. Leibniz Universität IT Services

Probeklausur Informatik 2 Sommersemester 2013

Prof. H. Herbstreith Fachbereich Informatik. Leistungsnachweis. Informatik 1 WS 2001/2002

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

Punkte. Teil 1. Teil 2. Summe. 1. Zeigen Sie, dass der untenstehende Suchbaum die AVL-Bedingung verletzt und überführen Sie ihn in einen AVL-Baum.

Fortgeschrittene Programmiertechnik Klausur WS 2014/15 Angewandte Informatik Bachelor

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

Informatik II Prüfungsvorbereitungskurs

Sommersemester Jewgeni Rose. Technische Universität Braunschweig

pue13 January 28, 2017

Programmierkurs Java

Einführung in die Programmierung

Die Klasse java.lang.object. Thorsten Treffer

Pro Informatik 2009: Objektorientierte Programmierung Tag 18. Marco Block-Berlitz, Miao Wang Freie Universität Berlin, Institut für Informatik

Beispiele für Ausdrücke. Der imperative Kern. Der imperative Kern. Imperativer Kern - Kontrollstrukturen. Deklarationen mit Initialisierung

Robert Sedgewick. Algorithmen in Java. Teil 1-4 Grundlagen Datenstrukturen Sortieren Suchen. Java-Beratung durch Michael Schidlowsky

Aufgabe 1 (Programmanalyse, Punkte)

Algorithmen und Datenstrukturen VO 3.0 Vorlesungsprüfung 19. Oktober 2007

Inhaltsverzeichnis. Teil 1 Grundlagen 23

Algorithmen & Datenstrukturen 1. Klausur

Übung Datenstrukturen. Sortieren

Primitive Datentypen

7. Sortieren Lernziele. 7. Sortieren

Robert Sedgewick. Algorithmen in Java. »il 1-4 Grundlagen Datenstrykturen Sortleren Suchen. java-beratung durch Michael Schidlowsky

Probeklausur: Programmierung WS04/05

Test-Klausuraufgaben Softwaretechnik Fachbereich BW, für WINFO

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

Klassenvariablen, Klassenmethoden

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme

JAVA für Nichtinformatiker - Probeklausur -

Binärbäume. Prof. Dr. E. Ehses,

Objektorientierte Programmierung Studiengang Medieninformatik

Umsetzung einer Klassenkarte in einer Programmiersprache

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme

Universität zu Lübeck Institut für Telematik. Prof. Dr. Stefan Fischer

Übung Algorithmen und Datenstrukturen

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

Methoden und Wrapperklassen

EINI LogWing/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 17/18

JAVA - Methoden

Bäume. Text. Prof. Dr. Margarita Esponda SS 2012 O4 O5 O6 O ALP2-Vorlesung, M. Esponda

Fragen zur OOP in Java

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme

13. Binäre Suchbäume

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

Fragenkatalog ESOP WS 16/17

Programmiertechnik II Klausur WS 15/16 Angewandte Informatik Bachelor

Klausur "ADP" SS 2015

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

Informatik II Übung 06. Benjamin Hepp 5 April 2017

Aufgabenblatt: Methoden - rekursiv

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

Parallele und funktionale Programmierung Wintersemester 2015/ Übung Abgabe bis , 10:00 Uhr

Wiederholung. Bäume sind zyklenfrei. Rekursive Definition: Baum = Wurzelknoten + disjunkte Menge von Kindbäumen.

Einführung in die Programmierung I. 2.0 Einfache Java Programme. Thomas R. Gross. Department Informatik ETH Zürich

Sortieralgorithmen. Inhalt: InsertionSort BubbleSort QuickSort. Marco Block

1 Abstrakte Klassen, finale Klassen und Interfaces

Tutoraufgabe 1 (Sortieren): Lösung: Datenstrukturen und Algorithmen SS14 Lösung - Übung 4

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2017/18. Vorbereitende Aufgaben

Datenstrukturen & Algorithmen

Softwaretechnologie - Wintersemester 2012/ Dr. Günter Kniesel

Anweisungen zur Ablaufsteuerung

Heute. Nachbetrachtung Wissensüberprüfung. Sortieren Interface Comparable TreeSet Sortieren von Arrays: Arrays.sort() 3.12.

Wintersemester 2004/ Januar Aus der Vorlesung sind Datenstrukturen zur Repräsentation von Wäldern disjunkter Mengen bekannt.

lim log 2n n = > 0 Da es einen Limes gibt, gibt es auch einen Limes inferior, der gleich diesem Limes ist.

Abgabe: (vor 12 Uhr)

Klausur Software-Entwicklung September 00

Algorithmen und Datenstrukturen 1 VL Übungstest WS November 2007

Programmieren II. Innere Klassen. Heusch 10, Ratz 5.2.1, Institut für Angewandte Informatik

Prof. Dr. Uwe Schmidt. 30. Januar 2017

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Institut für Programmierung und Reaktive Systeme 7. Juli Programmieren II. Übungsklausur

3 Objektorientierte Konzepte in Java

Datenstrukturen und Algorithmen D-INFK

Aufgabenblatt: Arrays

5. Tutorium zu Programmieren

Informatik 11 Kapitel 2 - Rekursive Datenstrukturen

Klausur Einführung in die Informatik I für Elektrotechniker 16. Juli 2003

Transkript:

Name: Seite 2 Beantworten Sie die Fragen in den Aufgaben 1 und 2 mit einer kurzen, prägnanten Antwort. Aufgabe 1 (8 Punkte) 1. Wie sieht -5 in der 4Bit 2-er Komplementdarstellung aus? 2. Berechnen Sie den Collatz-Wert von 32. 3. Welche Traversierung entspricht der Tiefensuche in einem Baum? 4. Nennen Sie eine Kollisionsstrategie beim geschlossenen Hashing. 5. Welche Operationen stellt der ADT Schlange zur Verfügung? 6. An welcher Stelle wird mit der Operation insert ein Objekt in eine Liste eingefügt? 7. Wieviel Knoten hat ein binärer Baum der Höhe h maximal? 8. Sei b ein VerweisBaum mit nur einem Knoten, der Wurzel. Was liefert der Ausdruck b.left()?

Name: Seite 3 Aufgabe 2 (8 Punkte) Alle Fragen beziehen sich auf die Programmiersprache Java 5. 1. Was bedeutet this(...) innerhalb eines Konstruktors? 2. Sei double d = 1.8 und int i = 1. Welchen Wert hat der Ausdruck (d + i)/2? 3. Mit welchem Ausdruck lässt sich unter der Verwendung des?:-operators der Betrag der Variablen a berechnen? 4. Was kennzeichnet das Schlüsselwort void in der Signatur einer Methode? 5. Wie kann man innerhalb einer Instanzmethode public int foo() die überschriebene Methode foo() aus der Oberklasse aufrufen? 6. Mit welcher Anweisung weisen Sie der Variablen float f den Wert 0,8 zu? 7. Wie nennt man das Ermitteln der aufzurufenden Methode zur Laufzeit bei Instanzmethoden? 8. Wieviele Interfaces kann eine Klasse implementieren?

Name: Seite 4 Beantworten Sie die Aufgabe 3, indem Sie unten genau ein Kreuz machen. Ist Ihre Antwort richtig, erhalten Sie alle Punkte. Ist sie falsch, erhalten Sie keinen Punkt. Aufgabe 3 (4 Punkte) Welche Ausgabe hat die Methode main der folgenden Java-Klasse? import AlgoTools.IO; public class VerweisBox { int pos; VerweisBox unten; VerweisBox oben; VerweisBox(int pos) { this.pos = pos; VerweisBox(int pos, VerweisBox eins, VerweisBox zwei) { this.pos = pos; this.unten = eins; this.oben = zwei; this.unten.oben = this; this.oben.unten = this; public static void main(string argv[]) { VerweisBox a = new VerweisBox(1); VerweisBox b = new VerweisBox(2); VerweisBox c = new VerweisBox(3, a, b); VerweisBox d = a.oben; VerweisBox e = new VerweisBox(4); e.oben = d.unten; e.unten = d; IO.println(e.unten.oben.pos); Antwort: 1 2 3 4

Name: Seite 5 Tragen Sie bei den Aufgaben 4bis 13 Ihre Lösungen in den vorgesehenen Platz ein. Aufgabe 4 (4 Punkte) Gegeben sei folgende Java-Klasse: import AlgoTools.IO; public class SwitchCase { public static void main(string args[]) { for(int i = 0; i < 30; i *= 2) { switch(i) { case 1: IO.print("ein"); case 2: IO.print("wei"); break; case 3: IO.print("vier"); i = i == 1? 2 : 3; case 4: IO.print("und"); break; case 6: IO.print("s"); break; case 8: i -= 2; case 9: IO.print("acht"); i--; break; case 10: default: IO.print("z"); i++; break; case 20: IO.print("ieben"); case 21: IO.print("fuenf"); break; case 22: case 23: IO.print("ig"); break; case 24: IO.print("echs"); case 27: i/=2; break; Welche Ausgabe hat die Methode main dieser Klasse?

Name: Seite 6 Aufgabe 5 (3 Punkte) Gegeben sei folgende Java-Klasse: import AlgoTools.IO; public class Fraglich { public static void main(string[] argv) { IO.println(fraglich(34)); public static String fraglich(int n) { if (n<8) return (new Integer(n)).toString(); else return fraglich(n/8) + n % 8; Was ist die Ausgabe der Methode main() der Klasse Fraglich?

Name: Seite 7 Aufgabe 6 (6 Punkte) Gegeben sei folgende Java-Klasse: public class Foo { public static double bar(double g, int r) { if (r < 0) throw new IllegalArgumentException("does not work"); if (r == 0) return 1; else { double w = bar(g, r / 2); if (r % 2!= 0) return w * w * g; else return w * w; a) Was berechnet die Methode public static double bar(double g, int r) der Klasse Foo? (4 Punkte) b) Wie ist die Laufzeit der Methode public static double bar(double g, int r) in der O-Notation in Abhängigkeit von r? (2 Punkte)

Name: Seite 8 Aufgabe 7 (8 Punkte) Sie befüllen eine Kaffeemaschine, um eine Tasse Kaffee zu kochen. Dazu müssen Sie einen Kaffeefilter einsetzen und anschließend einen Löffel Kaffeepulver einfüllen. Außerdem müssen sie einmalig Wasser in die Maschine einfüllen. Erstellen Sie einen endlichen Automaten, der den Ablauf des Kaffee Kochens modelliert. Zeichnen Sie dazu den Zustandsüberführungsgraphen des Automaten. Markieren Sie den Start- und den oder die korrekten Endzustände.

Name: Seite 9 Aufgabe 8 (4 Punkte) Sortieren Sie die Zahlenfolge 8 4 6 1 3 2 5 7 nach der Methode des iterativen MergeSort. Stellen Sie die Arbeitsweise des Algorithmus dar, indem Sie die Gesamtfolge immer dann in eine neue Zeile schreiben, wenn alle Teilfolgen einer Länge fertig sortiert sind. Verwenden Sie senkrechte Striche ( ), um die Grenzen der Teilfolgen zu markieren. Aufgabe 9 (4 Punkte) Nennen Sie für die Sortierverfahren in der Tabelle jeweils die Komplexitätsklasse in der O-Notation. Legen Sie jeweils die beste Implementation des Sortieralgorithmus zugrunde. best case average case worst case SelectionSort HeapSort BubbleSort QuickSort

Name: Seite 10 Aufgabe 10 (6 Punkte) Sie analysieren eine Methode und erstellen eine Rekursionsgleichung mit einer Funktion f(n), die das Laufzeitverhalten der Methode charakterisiert. Tragen Sie an den entsprechenden Stellen die Laufzeit in der O-Notation ein. Hinweis: Hilfreich ist es, zunächst eine Wertetabelle anzulegen. Laufzeit in O-Notation : { 0, falls n = 0; n = 1 f(n) = 1 + f( n ) sonst 2 f(n) = { 1, falls n = 0 2 n 1 + f(n 1) sonst Laufzeit in O-Notation :

Name: Seite 11 Aufgabe 11 (3 Punkte) Gegeben sei folgender Baum. C G F A E D B Traversieren Sie diesen Baum mit den folgenden Traversierungen: inorder: preorder: postorder:

Name: Seite 12 Bei den Aufgaben 12 und 13 müssen Sie selber etwas zeichnen. Nutzen Sie den dafür vorgesehenen Platz. Aufgabe 12 (5 Punkte) a) Fügen Sie nacheinander die Zahlen 7, 2, 16, 12, 5, 10 und 17 in einen Suchbaum ein. Zeichnen Sie den Baum nach dem Einfügen der 17. (3 Punkte) b) Löschen Sie aus dem Baum die Zahl 12 und zeichnen Sie den Baum erneut. (1 Punkt) c) Löschen Sie aus dem Baum die Zahl 7 und zeichnen Sie den Baum eneut. (1 Punkt)

Name: Seite 13 Aufgabe 13 (6 Punkte) Sei für einen gerichteten, bewerteten Graph G folgende Adjazenzmatrix gegeben: A B C D E F A 0 2 4 B 8 0 4 3 7 C 5 0 5 2 D 0 6 E 0 F 4 0 a) Zeichnen Sie den durch die Adjazenzmatrix erzeugten Graphen G. (4 Punkte) A B C F E D b) Mit welchem Knoten beginnt eine topologische Sortierung des Graphen? (1 Punkt) c) Welche Eigenschaft besitzt dieser Knoten notwendigerweise? (1 Punkt)

Name: Seite 14 Aufgabe 14 (5 Punkte) Gegeben sei eine Hashfunktion in folgender Form: f(x) = x modulo 10 = x%10 Beispiel : f(38) = 8 Betrachten Sie die Hashtabelle mit den eingetragenen Werten. f(x) x 0 36 1 20 2 62 3 22 4 5 6 42 7 37 8 12 9 a) Durch welche Art von Hashing wurde obige Hashtabelle erzeugt? (2 Punkte) b) Schreiben Sie die Zahlen in einer Reihenfolge auf, in der sie eingefügt wurden. (3 Punkte)

Name: Seite 15 Bei den Aufgaben 15 bis 17 müssen Sie selbst einige Zeilen Java-Code schreiben. Nutzen Sie den vorgesehenen Platz zwischen den geschweiften Klammern. Aufgabe 15 (10 Punkte) Eine natürliche Zahl wird perfekte Zahl genannt, wenn sie genauso groß ist wie die Summe ihrer echten positiven Teiler. Beispiel: 28 = 1 + 2 + 4 + 7 + 14 Ergänzen Sie in der gegebenen Klasse IntTools die Methode isperfect, die den übergebenen Parameter int n auf Perfektheit überprüft. Achten Sie auf eine geeignete Fehlerbehandlung. public class IntTools { public static boolean isperfect(int n) {

Name: Seite 16 Aufgabe 16 (8 Punkte) Ein aus Kugeln aufgebauter Tetraeder der Höhe 1 (1 Ebene) besteht aus 1 Kugel, einer der Höhe 2 (2 Ebenen) besteht aus 4, einer der Höhe 3 (3 Ebenen) aus 10 Kugeln usw.: von oben: von vorn: 1 Ebene 2 Ebenen 3 Ebenen import AlgoTools.IO; Die Methode anzahliterativ der unten gegebenen Klasse KugelTetraeder liefert die Anzahl der Kugeln in einem Kugeltetraeder in Abhängigkeit von der Tetraederhöhe angegeben in Ebenen. a) Ergänzen Sie den Code der Methode anzahlrekursiv der Klasse KugelTetraeder, so dass sie ebenfalls die Anzahl der Kugeln im Tetraeder berechnet und zurückliefert. Verwenden Sie dabei Rekursion. Rufen Sie nicht die Methode anzahliterativ auf und achten Sie auf eine geeignete Fehlerbehandlung, die in der Methode anzahliterativ fehlt. (5 Punkte) public class KugelTetraeder { public static void main(string[] argv) { IO.println( (anzahlrekursiv(3) + anzahlrekursiv(2)) * 3 ); public static int anzahliterativ(int hoehe) { int anzahl = 0; for(int i = 1; i <= hoehe; i++) anzahl += i * (i + 1) / 2; return anzahl; public static int anzahlrekursiv(int hoehe) { b) Welche Ausgabe hat die Methode main der Klasse KugelTetraeder? (3 Punkte)

Name: Seite 17 Aufgabe 17 (8 Punkte) Eine DrehSchlange arbeitet nach dem Prinzip einer Schlange. Man kann Objekte wie in einer normalen Schlange am Ende einfügen. Zusätzlich gibt es noch die Möglichkeit, die Reihenfolge aller Elemente der DrehSchlange umzudrehen. Implementieren Sie die von VerweisSchlange abgeleitete Klasse DrehSchlange, indem Sie die Methode public void umdrehen() ergänzen, die alle Elemente aus der DrehSchlange löscht, dabei in einem geeigneten ADT zwischenspeichert und sie anschließend in umgekehrter Reihenfolge wieder in die ursprüngliche DrehSchlange einfügt. Greifen Sie auf die abgeleitete DrehSchlange und auf den Hilfs-ADT nur mit den bekannten ADT-Operationen zu und implementieren Sie keine weiteren Methoden. public class DrehSchlange extends VerweisSchlange { public void umdrehen() {