Klausur Algorithmen und Datenstrukturen I SS 03

Ähnliche Dokumente
Klausur Algorithmen und Datenstrukturen I WS 05/06

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

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

Technische Universität Braunschweig

CoMa 04. Java II. Paul Boeck. 7. Mai Humboldt Universität zu Berlin Institut für Mathematik. Paul Boeck CoMa 04 7.

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

Interfaces und Generics

Arrays. Gilbert Beyer und Annabelle Klarl. Einführung in die Informatik. Zentralübung zur Vorlesung Einführung in die Informatik

Klausur zur Vorlesung. Grundlagen der Informatik und Numerik. Dr. Monika Meiler Mo , Beginn: Uhr, Ende Uhr

II. Grundlagen der Programmierung. Beispiel: Merge Sort. Beispiel: Merge Sort (Forts. ) Beispiel: Merge Sort (Forts. )

Algorithmen und Datenstrukturen. Übersicht. Interfaces und Generics. InsertionSort für Punkte. InsertionSort für Punkte

Probeklausur zur Vorlesung

Übersicht. Berechnung der Potenz für zwei ganze Zahlen Klausuraufgabe SS 2010! Berechnung der Cosinus-Funktion Klausuraufgabe WS 2010/2011!

Technische Universität Braunschweig

Übungsblatt 13. Abgabe / Besprechung in Absprache mit dem Tutor

Einführung in die Programmierung. (K-)II/Wb17

Basispruefung Herbst 2016/ Einführung in die Programmierung

Aufgabe11. Methode test1. import java.util.hashmap; import java.util.arraylist; public class Aufgabe11 {

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

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

Abschlussklausur Lösung. Bitte in Druckschrift leserlich ausfüllen!

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

1. Rekursive Algorithmen 2. Rekursive (dynamische) Datenstrukturen

Einführung in die Programmierung

12 Abstrakte Klassen, finale Klassen und Interfaces

Institut für Programmierung und Reaktive Systeme 25. Januar Programmieren I. Übungsklausur

Übungsblatt 13. Abgabe / Besprechung in Absprache mit dem Tutor

Lösung der Klausur zur Vorlesung. Grundlagen der Informatik und Numerik. Dr. Monika Meiler. Jedes Blatt ist mit der Matrikelnummer zu versehen.

Die Schnittstelle Comparable

Name:... Matr.-Nr... Bearbeitungszeit: 120 Minuten. Lesen Sie die Aufgaben jeweils bis zum Ende durch; oft gibt es hilfreiche Hinweise!

Technische Universität Braunschweig

Institut für Programmierung und Reaktive Systeme 2. Februar Programmieren I. Übungsklausur

Probeklausur Java Einführung in die Informatik. Wintersemester 2016/2017

Prüfung Algorithmen und Datenstrukturen I

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

Name:... Matr.-Nr... Bearbeitungszeit: 120 Minuten

Probeklausur Java Einführung in die Informatik. Wintersemester 2017/2018

Probeklausur: Programmierung WS04/05

! 1. Unterklassen und Vererbung! 2. Abstrakte Klassen und Interfaces! 3. Modularität und Pakete. II.4.2 Abstrakte Klassen und Interfaces - 1 -

Aufgabenblatt 4. Aufgabe 3. Aufgabe 1. Aufgabe 2. Prof. Dr. Th. Letschert Algorithmen und Datenstrukturen

1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen

Übung 09: Vererbung und Dynamische Bindung

Semestralklausur Informatik I - Programmierung

Nachklausur Bitte in Druckschrift leserlich ausfüllen!

Aufbau eines "B-Baums" der Ordnung 3, Teil 1

n 1. Grundzüge der Objektorientierung n 2. Methoden, Unterprogramme und Parameter n 3. Datenabstraktion n 4. Konstruktoren n 5. Vordefinierte Klassen

Bachelorprüfung: Objektorientierte Softwareentwicklung

Klausur Software-Entwicklung März 01

Klausur "ADP" SS 2015

Einführung in die Informatik 1

Test-Klausuraufgaben Softwaretechnik Fachbereich BW, für WINFO

Methoden. Gerd Bohlender. Einstieg in die Informatik mit Java, Vorlesung vom

Einführung in die Programmierung Vorlesungsprüfung

Die abstrakte Klasse Expression:

Einführung in die Informatik. Lösung zu Übungsblatt 6

Klausur zur Lehrveranstaltung. Technische Informatik für Ingenieure WS 2009/10

Klausur zur Vorlesung Algorithmen und Datenstrukturen

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

Algorithmen und Datenstrukturen 07

II.4.2 Abstrakte Klassen und Interfaces - 1 -

Prüfung Softwareentwicklung II (IB)

Probeklausur Informatik 2 Sommersemester 2013

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

Programmieren 2 Java Überblick

CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik)

Programmieren in Java -Eingangstest-

Physikalisch Technische Lehranstalt Wedel 31. Januar 2004 Prof. Dr. Uwe Schmidt

Abschlussklausur. Lösung

1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen

14 Abstrakte Klassen, finale Klassen, Interfaces

Klausur zur Lehrveranstaltung. Technische Informatik für Ingenieure WS 2008/09

14 Abstrakte Klassen, finale Klassen, Interfaces. Auswertung von Ausdrücken. Beispiel. Abstrakte Methoden und Klassen

Einführung in die Informatik 1

PK-Einstufungstest. 1. Allgemeine Multiple-Choice-Aufgaben. Alle Aufgaben beziehen sich auf Java.

MB2-ALG, SS15 Seite 1 Hauptklausur, geschrieben am

Aufgabe 1 (12 Punkte)

14 Abstrakte Klassen, finale Klassen, Interfaces

Prüfung Softwareentwicklung I (IB)

Konstruktor. public Rational(int i) { Zaehler = i; Nenner = 1; }

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

Matrikelnummer:

Übungs-Klausur zur Vorlesung. Digitale Informationsverarbeitung (Magister)

// Objekt-Methoden: public void insert(int x) { next = new List(x,next); } public void delete() { if (next!= null) next = next.next; } public String

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

Klassenvariablen, Klassenmethoden

Städtisches Gymnasium Olpe Java Ht Informatik - Q1 Die Klasse List im Abitur Methoden und Beispielcode Hier alle wichtigen Methoden. Ein Beispielcode

1. Teilklausur Gruppe A. Bitte in Druckschrift leserlich ausfüllen!

Variablenarten. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java

Scheinklausur zur Vorlesung Praktische Informatik I. 12. November Punkteübersicht

Einstieg in die Informatik mit Java

Informatik 1 für Nebenfachstudierende Beispiele für Klausuraufgaben

Algorithmen und Datenstrukturen

Transkript:

FH Braunschweig/Wolfenbüttel Fachbereich Informatik Prof Dr R Rüdiger Wolfenbüttel, den 18 Juni 2003 Klausur Algorithmen und Datenstrukturen I SS 03 Hinweise: Es sind beliebige schriftliche Unterlagen als Hilfsmittel zugelassen, jedoch keine Rechner, auch keine Taschenrechner (also keine Elektronik ) Die Klausur besteht aus 6 Aufgaben Beantworten Sie die gestellten Fragen auf dieser und der folgenden Seite Die Anzahl der vorgedruckten Kästchen muß nicht unbedingt gleich der Zahl der einzutragenden Ergebnisse sein Auf die genaue Wiedergabe von Leerzeichen (blanks) brauchen Sie nicht zu achten Name: Vorname: Mat-Nr: Freiversuch (F0) oder F1/F2/F3-Prüfung? bitte ankreuzen: F0 F1 F2 F3 erreichte Punktzahl/Note: WICHTIG: Entscheidend für die Bewertung sind die Ergebnisse, die Sie auf den ersten beiden Blättern eingetragen haben; Geben Sie aber bitte alle Blätter mit ab, die Ihre Vorüberlegungen und Zwischenergebnisse zeigen (jedes Blatt mit Namen, Vornamen und Matrikelnummer versehen) Ihre Ergebnisse: Aufgabe 1 (Punktzahl: 5/32) Aufgabe 2 (Punktzahl: 6/32) a) Die ausgegebenen Werte sind: einzutragen im Format F F F F F F F F a) b) c) d) e) b) Der gefragte Begriff lautet: f)

Aufgabe 3 (Punktzahl: 4/32) Die Zustände des B-Baumes sind: Aufgabe 5 (Punktzahl: 6/32) a) b) Der Name lautet: c) Komplexität: count 1 (n) = O( ) count 2 (n) = O( ) d) explizite Form: count 1 (n) = count 2 (n) = Aufgabe 6 (Punktzahl: 7/32) a) Die ausgegebenen Werte sind: Aufgabe 4 (Punktzahl: 4/32) Das gesuchte k N hat den Wert bzw existiert nicht ( ): a) b) c) d) b) Die Erklärung (je knapper umso besser):

Aufgabe 1 1 /* Klausuraufgabe 1 */ 2 public class KlausurAufgabe1 { 3 public static void main (String [ ] args) { 4 int 5 l = IntegerparseInt(args[0]), 6 r = IntegerparseInt(args[1]), 7 h = IntegerparseInt(args[2]); 8 X x = new X(l, r, h); 9 xmethod(); 10 Systemoutprint(x); 11 } 12 } 13 class X { 14 private int l, r, h; 15 private String s = ; 16 X(int l, int r, int h) { 17 thisl = l; thisr = r; thish = h; 18 } (Punktzahl: 5/32) 19 public void method () { 20 method(l, r, h); 21 } 22 private void method(int l, int r, int h){ 23 int m; 24 if (h > 0) { 25 m = (l + r)/2; 26 s = s + m + + h + \n ; 27 method(l, m, h 1); 28 method(m, r, h 1); 29 } 30 } 31 public String tostring () { 32 return s; 33 } 35 a) Was gibt das oben abgedruckte Programm aus, wenn es mit den folgenden 3 Parametern durch java KlausurAufgabe1 2 12 3 gestartet wird? b) Die Methoden in den Zeilen 19 und 22 haben den gleichen Namen Wie wird der Mechanismus genannt, der eine solche Konstruktion zuläßt? Zu nennen ist nur der Begriff (deutsch oder englisch) Aufgabe 2 (Punktzahl: 6/32) Die Methode printhex(x) gibt ihr Argument x vom Typ int aus als 32 bit String in der Form von 8 Hexaziffern So ergibt z B printhex(1024) den String 00 00 04 00 Was ergibt sich dann bei den folgenden Aufrufen? a) printhex(1023) b) printhex(511 & 3) c) printhex(127 15) d) printhex(15 >> 1) e) printhex( 4 >>> 2) f) printhex( 7 << 3) Es sind stets alle 8 Stellen auszuschreiben, einschließlich eventuell auftretender führender Nullen Hinweis: Rechner sind auch hier nicht zugelassen Alle Werte sind in der Nähe von 2er-Potenzen, was den Einsatz eines Rechners überflüssig macht Aufgabe 3 (Punktzahl: 4/32) Die abgedruckten Werte werden sukzessive in einen B-Baum der Ordnung n = 1 eingefügt Gesucht sind die jeweiligen Zustände des B-Baumes während des Einfügens an den durch (!) markierten Stellen 2 9 1 (!) 3 8 7 (!) 5 (!) Die Zustände sollen in Tabellenform angegeben werden wie in der Vorlesung bzw im Vorlesungsskript angegeben: zunächst werden die Werte der Wurzelseite in einer Zeile angegeben, dann eingerückt die Werte der ersten Seite auf der nächsten Stufe, dann erneut eingerückt die Werte der ersten Seite auf der darauffolgenden Stufe usw, bis alle Seiten durchlaufen und die letzte Seite rechts unten erreicht ist Schreiben Sie eine Zahl in ein Tabellenkästchen, und wählen Sie für jedes Einrücken jeweils ein Kästchen; alle Seiten gleicher Stufe müssen gleich tief eingerückt werden

Aufgabe 4 (Punktzahl: 4/32) Existiert in den folgenden Aussagen jeweils ein kleinster Wert k N 0 = {0, 1, 2, }, für den die Aussage richtig ist? Falls ja, geben Sie ihn an; andernfalls tragen Sie einen Strich ( ) in die Tabelle ein a) (n 2 + n!) 2 = O(n k ) b) 1 1 + n 3 = O(nk ) c) n2 + cos 4 n 1 + cos 4 n = O(nk ) d) (1 + n 6 + n 3 ) 2 = O(n k ) Aufgabe 5 1 2 /* Klausuraufgabe 5 */ 3 4 class XX { 5 private double a[ ]; 6 private int n; 7 private int count1, count2; 8 public XX (double [ ] a) { 9 thisa = a; 10 n = alength; 11 } 12 13 public double g1(double x) { 14 double y = a[0]; 15 count1 = 0; 16 for (int i = 1; i < n; i++) { 17 double p = 10; 18 for (int k = 0; k < i; k++) { 19 p = p*x; 20 count1++; 21 } 22 23 } y = y + a[i]*p; 24 return y; 25 } 26 27 (Punktzahl: 6/32) 28 public double g2(double x) { 29 double y = a[n 1]; 30 count2 = 0; 31 for (int i = n 2; i >= 0; i ) { 32 y = y*x + a[i]; 33 count2++; 35 return y; 36 } 37 public int getcount1() { 38 return count1; 39 } 40 public int getcount2() { 41 return count2; 42 } 43 } 44 45 public class KlausurAufgabe5 { 46 public static void main (String [ ] args) { 47 /* 48 Initialisierung eines Objektes der Klasse XX 49 mit einem Array der Größe n 50 und Aktivierung von g1 und g2 51 */ 52 53 } 54 } a) In der Klasse XX sind die beiden Methoden g1 und g2 Implementierungen von Funktionen g 1 : R R und g 2 : R R In welcher mathematischen Beziehung stehen diese beiden Funktionen zueinander? (Eine Formel oder ein kurzer Satz!) b) Die Berechnung von g2 erfolgt nach einem Algorithmus, welcher mit einem Namen verknüpft ist Wie lautet dieser Name? c) Die beiden Klassenattribute count1 und count2 zählen die Anzahl der Durchläufe, die zur Berechnung der Werte von g 1 und g 2 erforderlich sind (Problem ist etwas vereinfacht für die Klausuraufgabe) Diese hängen ab von der Größe n des Arrays a Geben Sie die Komplexität der Funktionen count 1 (n) = O() und count 2 (n) = O() an d) In diesem (besonders einfachen) Fall kann man die beiden Funktionen count 1 (n) und count 2 (n) explizit in allgemeiner Form angeben Wie lautet diese jeweils? Hinweis: Explizite Funktionswerte von g 1 und g 2 sind nicht gefragt, und ihre Berechnung ist auch an keiner Stelle erforderlich

Aufgabe 6 1 /* Klausuraufgabe 6 */ 2 import javautil*; 3 4 abstract class Item implements Comparable { 5 public boolean lessthan(item p) { 6 return compareto(p) == 1; 7 } 8 } 9 10 11 12 class IntItem extends Item { 13 private int val; 14 public IntItem (int val) { 15 setval(val); 16 } 17 public String tostring() { 18 return + thisgetval(); 19 } 20 public int getval() { 21 return thisval; 22 } 23 public void setval(int val) { 24 thisval = val; 25 } 26 public int compareto(object o){ 27 int cmp = 0; 28 if (thisval < ((IntItem)o)val) 29 cmp = 1; 30 else if (thisval > ((IntItem)o)val) 31 cmp = +1; 32 return cmp; 33 } 35 36 (Punktzahl: 7/32) 37 class Array { 38 private Item [ ] a; 39 public Array (Item [ ] a) { 40 thisa = a; 41 } 42 public void sort () { 43 for (int i = 1; i < alength; i++) { 44 Item x = a[i]; 45 int j = i; 46 while (j >= 1 && xlessthan(a[j 1])) { 47 a[j] = a[j 1]; 48 j ; 49 } 50 a[j] = x; 51 Systemoutprintln(this); 52 } 53 } 54 public String tostring () { 55 String s = ; 56 for (int pos = 0; pos < alength; pos++) { 57 s = s + + a[pos]; 58 } 59 return s; 60 } 61 } 62 public class KlausurAufgabe6 { 63 public static void main (String [ ] args) { 64 Item [ ] a 65 = {new IntItem(10), new IntItem(8), 66 new IntItem(9), new IntItem(2), 67 new IntItem(1)}; 68 Array x = new Array(a); 69 Systemoutprintln(x); 70 xsort(); 71 } 72 } a) Welches sind die Zahlenwerte, die beim Durchlaufen des Programms ausgegeben werden? Hinweis: Ausgabeanweisungen stehen in den Zeilen 51 und 69 b) Beide Ausgabeanweisungen beziehen sich auf die Klasse Array, die sich ihrerseits auf die abstrakte Klasse Item bezieht Wieso wird dann überhaupt etwas Konkretes sortiert und ausgegeben? (Ein kurzer Satz!)