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

Ähnliche Dokumente
Name:... Matr.-Nr... Bearbeitungszeit: 120 Minuten

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

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

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

Bearbeitungszeit: 120 Minuten. Kommentare kosten Zeit; kommentieren Sie ihr Programm nur da, wo der Code alleine nicht verständlich wäre.

Musterlösung Stand: 5. Februar 2009

Aufgabe 1 (Programmanalyse, Punkte)

Fakultät IV Elektrotechnik/Informatik. Klausur Einführung in die Informatik I (Technikorientierung) 28. März Bearbeitungszeit: 120 Minuten

Klausur zur Vorlesung Einführung in die Programmierung

Fakultät IV Elektrotechnik/Informatik

public static void replace(stringbuffer b) { for (int i = 0; i < b.length(); i++) { char replacechar; switch( b.charat(i) ) {

Probeklausur Java Einführung in die Informatik. Wintersemester 2014/2015. Musterlösung

Probeklausur Java Einführung in die Informatik. Wintersemester 2014/2015

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

Nachholklausur zur Vorlesung: Einführung in die objektorientierte Programmierung mit Java WS1415

Semestralklausur Informatik I - Programmierung

Probeklausur Informatik 2 Sommersemester 2013

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Referenzen. Referenzen

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

Programmierung

Klausur Algorithmen und Datenstrukturen I SS 03

Prüfung Softwareentwicklung II (IB)

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

II.4.2 Abstrakte Klassen und Interfaces - 1 -

Probeklausur zur Vorlesung

12 Abstrakte Klassen, finale Klassen und Interfaces

Prüfung Softwareentwicklung II (IB)

Vorname: Nachname: Matrikelnummer: Studiengang (bitte ankreuzen): Informatik Bachelor Informatik Lehramt Mathematik Bachelor Sonstige:

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

Prüfung Softwareentwicklung I (IB)

Universität Augsburg, Institut für Informatik Sommersemester 2001 Prof. Dr. Martin Ester 16. Juli Klausur

Klausur zur Vorlesung Algorithmen und Datenstrukturen

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

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

Vorlesung Objektorientierte Programmierung Klausur

14 Abstrakte Klassen, finale Klassen, Interfaces

Einführung in die Programmierung Vorlesungsprüfung

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

Fortgeschrittene Programmiertechnik Klausur SS 2015 Angewandte Informatik Bachelor

14 Abstrakte Klassen, finale Klassen, Interfaces

Allgemeine Informatik II SS :30-13:30 Uhr

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

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

Klausur: Java (Liste P)

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

Institut für Informatik

Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen

Klausur Software-Entwicklung März 01

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

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

Klausur Einführung in die Programmierung

Vorkurs Informatik WiSe 15/16

Klausur "ADP" SS 2015

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Erste Java-Programme (Arrays und Schleifen)

Objektorientierte Programmierung Studiengang Medieninformatik

Prüfung Algorithmen und Datenstrukturen I

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

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

hue13 January 30, 2017

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

Institut für Informatik. Endterm Klausur zu Informatik I 20. Februar 2010

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

Klausur Softwaretechnik / JAVA Fachbereich BW, für WINFO

Institut für Informatik

Programmieren in Java -Eingangstest-

Institut für Programmierung und Reaktive Systeme 5. Dezember Programmieren I. 5. Übungsblatt

Institut für Programmierung und Reaktive Systeme 4. Dezember Programmieren I. 5. Übungsblatt

Algorithmen und Datenstrukturen 07

Algorithmen und Datenstrukturen

3 Objektorientierte Konzepte in Java

Einfache Arrays. Dr. Philipp Wendler. Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung

Prof. Dr. Uwe Schmidt. 30. Januar 2017

Das Interface-Konzept am Beispiel der Sprache Java

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 16/17. Kapitel 13. Listen. Listen 1

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 15/16. Kapitel 12. Listen. Listen 1

(08 - Einfache Sortierverfahren)

Datenstrukturen. Mariano Zelke. Sommersemester 2012

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

Test zu Grundlagen der Programmierung Leitung: Michael Hahsler. 21. Juni 2004

Umsetzung einer Klassenkarte in einer Programmiersprache

Klausur zur Vorlesung Algorithmen und Datenstrukturen

Tutorial zu Einführung in die Informatik für LogWi- Ings und WiMas Wintersemester 2015/16. 1 Zauberer und Zwerge, Aufgabenteil 1

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

Vorbereitende Aufgaben

Die Welt in unseren Programmen false -1.4E-12. false. Klassen

Technische Universität Braunschweig

Anregungen zu Übung 2

16. Dezember 2004 Dr. M. Schneider, P. Ziewer

1. Testklausur Sommersemester 2013 Datenstrukturen und Algorithmen 24. Mai 2013

Grundlagen der Informatik 0

Allgemeine Hinweise:

Wiederholungsblatt Einführung in die Programmierung Lösungen

Klausur zur Vorlesung: Einführung in die objektorientierte Programmierung mit Java im Wintersemester 2015/16

Programmiermethodik 3. Klausur Lösung

Objektorientierte Programmierung Studiengang Medieninformatik

Einführung in die Programmierung

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

Transkript:

Fakultät IV Elektrotechnik/Informatik Klausur Einführung in die Informatik II für Elektrotechniker Name:.................................... Matr.-Nr..................................... Bearbeitungszeit: 120 Minuten Bewertung (bitte offenlassen : ) Aufgabe Punkte Erreichte Punkte 1 7 2 7 3 5 4 9 5 8 6 8 Summe 44 Spielregeln (Jetzt lesen!): Benutzen Sie für die Lösung der Aufgaben nur das mit diesem Deckblatt ausgeteilte Papier. Lösungen, die auf anderem Papier geschrieben werden, können nicht bewertet werden. Schreiben Sie ihre Lösung auch auf die Rückseiten der Blätter; benötigen Sie für eine Lösung mehr als ein Blatt, finden Sie am Ende der Klausur Leerblätter. Zusätzliches Papier können Sie von den Tutoren bekommen. Tragen Sie jetzt (vor Beginn der eigentlichen Bearbeitungszeit!!!) auf allen Blättern ihren Namen und ihre Matrikelnummer ein. Schreiben Sie deutlich! Unleserliche oder zweideutige Lösungen können nicht gewertet werden. Schreiben Sie nicht mit Bleistift und nicht mit rotem oder grünem Stift (das sind die Farben für die Korrektur). Lesen Sie die Aufgaben jeweils bis zum Ende durch; oft gibt es hilfreiche Hinweise! Kommentare kosten Zeit; kommentieren Sie ihr Programm nur da, wo der Code alleine nicht verständlich wäre. Wir weisen noch einmal darauf hin, daß die Benutzung von Taschenrechnern und anderen elektronischen Hilfsmitteln nicht gestattet ist. Viel Erfolg!

A1 Aufgabe 1 (7 Punkte) Theorie. 1. (1 Punkt) Was verstehen Sie unter Rekursion? 2. (1 Punkt) Was verstehen Sie unter dem Verfahren der schrittweisen Approximation? 3. (2 Punkte) Nennen Sie zwei Möglichkeiten, eine große Anzahl von Daten so in Datenstrukturen zu speichern, dass effizient nach einzelnen Daten gesucht werden kann. Aufgabe 1 Seite 1

A1 4. (2 Punkte) Tragen Sie die folgenden Zahlen so in die Blätter des unten stehenden Baumes ein, dass ein sortierter Baum entsteht: 4, 8, -1, 12, 9, 2, 0. Für die inneren Knoten sind geeignete Schlüssel einzutragen. 5. (1 Punkt) Was verstehen Sie unter einer abstrakten Methode und wozu dient sie? Aufgabe 1 Seite 2

A2 Aufgabe 2 (7 Punkte) Java. 1. (1 Punkt) Welche Klassen dürfen auf das Attribut x einer Klasse namens K zugreifen, das folgendermaßen definiert ist: package p; class K { protected int x = 42; } 2. (1 Punkt) Welche Klassen dürfen auf das Attribut x einer Klasse namens K zugreifen, das folgendermaßen definiert ist: package p; class K { final int x = 42; } 3. (2 Punkte) Nennen Sie mindestens zwei Anwendungsfälle für Attribute und Methoden, die mit dem Schlüsselwort static definiert werden. Aufgabe 2 Seite 3

A2 4. (3 Punkte) Welche Fehler enthält folgende Java-Klasse? Geben Sie jeweils die Zeilennummer an und beschreiben Sie den Fehler. Folgefehler (also Fehler, die aus anderen Fehlern resultieren) sollen ignoriert werden. 1 abstract class Algorithm { 2 3 } 4 5 class Sortieren implements Algorithm { 6 public void sort(int[] a) { 7 for (int i = 0; i < a.length; i++) { 8 int j = i - 1; 9 a[j] = a[i]; 10 } 11 this.a = a; 12 } 13 public static void main(string[] args) { 14 int[] a = Terminal.askIntArray("a="); 15 Quick q = new Quick(); 16 q.sort(a); 17 } 18 } 19 20 class Quick extends Sortieren { 21 public int[] a; 22 Quick() { 23 this.a = new int[2]; 24 } 25 } Aufgabe 2 Seite 4

A3 Aufgabe 3 (5 Punkte) Numerik. Die Exponentialfunktion e x steht in normalen Java-Systemen mit der Methode double Math.exp(double x) zur Verfügung. Wenn diese nicht verwendet werden kann oder soll, kann man stattdessen eine eigene Approximation programmieren. Folgende Reihenformeln für e x lassen sich alleine mit den Grundrechenoperationen + und * umsetzen: e x = k k=0 i=1 1. (2 Punkte) Schreiben Sie eine Methode double approx(double x, int n), welche die n-te Teilsumme nach folgender Formel berechnet: n k x approx(x, n) = i x i k=0 i=1 Aufgabe 3 Seite 5

A3 2. (3 Punkte) Schreiben Sie eine Methode double exp(double x, double eps), welche den Wert e x unter Verwendung von approx mit Genauigkeit eps berechnet. Aufgabe 3 Seite 6

A4 Aufgabe 4 (9 Punkte) Abstrakte Datentypen. In dieser Aufgabe soll ein abstrakter Datentyp FlexArray erstellt werden, der ähnlich den normalen Java-Arrays Werte speichern kann, auf die dann mit einem Index zugegriffen wird. Ein FlexArray kann auf zwei Arten eingesetzt werden: Für dichte Arrays, wenn also wenig Nullen enthalten sind, speichert es die Werte in einem Array, für dünn besetzte Arrays, wenn viele Nullen enthalten sind, speichert es die Werte in einer einfach verketteten Liste. Dabei müssen nur von Null verschiedene Werte tatsächlich gespeichert werden, so dass die Liste wesentlich kürzer sein kann. Bei der Erzeugung eines FlexArray-Objektes gibt man an, ob es für dichte oder dünne Arrays eingesetzt werden soll. Wenn auf ein Element zugegriffen wird, das noch nicht mit einem Wert belegt wurde, dann soll der Wert 0 zurückgegeben werden. Die folgende Klasse für einfach verkettete Listenzellen ist bereits gegeben: class LongCell { int index; long value; LongCell next; LongCell (int index, long value, LongCell next) { this.index = index; this.value = value; this.next = next; } // Konstruktor } // LongCell Beispiel: Ein Array mit wenigen Nullen, z.b. das Array {3L, 9L, -1L, 12L, 0L, 3L, 6L} wird in der Klasse FlexArray als folgendes Array dargestellt: 3L 9L -1L 12L 0L 3L 6L Ein Array mit vielen Nullen, z.b. {0L, 0L, 0L, 8L, 0L, 0L, 4L} wird durch diese Liste dargestellt: 3 8L 6 4L oder durch diese nicht optimale Liste: 6 4L 1 0L 3 8L Aufgabe 4 Seite 7

A4 1. (3 Punkte) Schreiben Sie eine Klasse FlexArray, die die folgenden Attribute besitzt: Die Länge des Arrays (als int-wert), einen Wahrheitswert, der angibt, ob ein dichtes oder dünnes Array dargestellt wird, den eigentlichen Inhalt des Arrays. Dieser wird über zwei Attribute dargestellt, von denen das nicht benutzte null ist: Ein long-array der richtigen Länge, welches für dichte Arrays eingesetzt wird, der Anfang der Liste, die für dünn besetzte Arrays benutzt wird. Die Attribute sollen von außen nicht zugreifbar sein. Schreiben Sie außerdem einen geeigneten Konstruktor, dem die Länge des Arrays und ein Wahrheitswert übergeben wird, der false für ein dicht besetztes Array und true für ein dünn besetztes Array sein soll. 2. (1 Punkt) Schreiben Sie für die Klasse FlexArray eine Methode int length (), die die Länge des Arrays zurückgibt. Aufgabe 4 Seite 8

A4 3. (2 Punkte) Schreiben Sie für die Klasse FlexArray eine Methode long get (int index), die das gespeicherte Element am gegebenen Index zurückliefert. Diese Methode muss die zwei möglichen internen Darstellungen berücksichtigen. Gehen Sie davon aus, dass die Methode immer mit einem gültigen Index aufgerufen wird. 4. (3 Punkte) Schreiben Sie für die Klasse FlexArray eine Methode void set (int index, long value), die das Element mit dem gegebenen Index auf den Wert value setzt. Diese Methode muss die zwei möglichen internen Darstellungen berücksichtigen. Gehen Sie davon aus, dass die Methode immer mit einem gültigen Index aufgerufen wird. Aufgabe 4 Seite 9

A4 Diese Seite wurde absichtlich freigelassen. Aufgabe 4 Seite 10

A5 Aufgabe 5 (8 Punkte) Matrixdiffusion. Durch ein einfaches numerisches Verfahren kann simuliert werden, wie sich eine Meßgröße (zum Beispiel Temperatur oder elektrische Ladung) im Lauf der Zeit in einem leitenden Medium verteilt. Dazu werden Meßpunkte in einem rechteckigen Raster angeordnet. Der Zustand zu einem Zeitpunkt wird als Matrix von Meßwerten dargestellt. Der Übergang zum nächsten Zeitpunkt kann durch das Verrechnen benachbarter Matrixelemente simuliert werden. Beispiel: Eine grafische Darstellung dieses Verfahrens liefert folgende Momentaufnahmen: Anfangszustand nach 80 Schritten nach 640 Schritten nach 5120 Schritten 1. (4 Punkte) Den Randelementen der Matrix fehlen einige Nachbarelemente. Damit diese nicht als Sonderfall behandelt werden müssen, kann man die Matrix mit zusätzlichen Randelementen ausstatten. Schreiben Sie eine Methode double[][] extend(double[][] a, double r) welche die Matrix a rechts, links, oben und unten mit je einer Reihe von Elementen erweitert, die alle mit dem Wert r besetzt sind. Sie können davon ausgehen, dass a tatsächlich eine rechteckige, nichtleere Matrix darstellt. Beispiel: a 11 a 1m..... a n1 a nm wird zu r r r r r a 11 a 1m r....... r a n1 a nm r r r r r Aufgabe 5 Seite 11

A5 2. (4 Punkte) Ein Simulationsschritt besteht darin, dass jedes Matrixelement durch eine gewichtete Summe seiner Nachbarn ersetzt wird. Sei die Anordnung eines Elementes m und seiner Nachbarn l, r, o, u wie folgt:. o l m r u.. Dann ersetze m durch den Wert m = d (l + r + o + u) + (1 4d) m. Die Konstante d hängt von der konkreten Anwendung ab. Das Element m darf nicht am Rand der Matrix liegen. Dabei ist es unerheblich, ob die Nachbarn von m bereits ersetzt wurden oder nicht. Schreiben Sie eine Methode void step(double[][] a, double d) welche die Ersetzung für alle inneren Elemente der Matrix a mit dem gegebenen d genau einmal durchführt. Aufgabe 5 Seite 12

A6 Aufgabe 6 (8 Punkte) Vererbung. In dieser Aufgabe sollen Klassen zur Darstellung von Gewässern, Flüssen und Meeren definiert werden. Gegeben ist folgende Klasse, die die Gemeinsamkeiten aller Gewässer beschreibt. abstract class Gewaesser { protected String name; // kann von Schiffen befahren werden abstract boolean schiffbar (); // von diesem Gewaesser kann ein Schiff ein Meer erreichen abstract boolean meererreichbar (); } // class Gewaesser 1. (2 Punkte) Schreiben Sie eine Klasse Meer. Diese Klasse soll von Gewaesser abgeleitet sein und ein zusätzliches Attribut flaeche von geeignetem Typ besitzen. Schreiben Sie einen Konstruktor zur Initialisierung aller Attribute und programmieren Sie auch die geerbten abstrakten Methoden. Dabei gilt: Alle Meere sind schiffbar und offensichtlich ist auch ein Meer erreichbar. Aufgabe 6 Seite 13

A6 2. (6 Punkte) Schreiben Sie eine Klasse Fluss. Diese Klasse ist ebenfalls von Gewaesser abgeleitet und besitzt zwei weitere, von außen nicht zugängliche Attribute: ein Gewässer, in das der Fluss mündet ein Wahrheitswert, der angibt, ob der Fluss schiffbar ist. Schreiben Sie außerdem eine Methode Meer ziel(), die das Meer bestimmt, in das der Fluss letztendlich mündet. Schreiben Sie einen Konstruktor zur Initialisierung aller Attribute und programmieren Sie auch die geerbten abstrakten Methoden. Für die Methode meererreichbar gilt: Der Fluss muss schiffbar sein und von dem Gewässer, in das er mündet, muss ein Meer erreichbar sein. Aufgabe 6 Seite 14

A6 Diese Seite wurde absichtlich freigelassen. Aufgabe 6 Seite 15

Diese Seite wurde absichtlich freigelassen. Seite 16

Diese Seite wurde absichtlich freigelassen. Seite 17