Programmentwicklung I für Hörer anderer Fachrichtungen -Wintersemester 2003/04- Abschlussklausur 20.02.2004



Ähnliche Dokumente
Java: Vererbung. Teil 3: super()

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Programmierkurs Java

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005

Prof. Dr. Uwe Schmidt. 21. August Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252)

Kapitel 6. Vererbung

Klausurteilnehmer. Wichtige Hinweise. Note: Klausur Informatik Programmierung, Seite 1 von 8 HS OWL, FB 7, Malte Wattenberg.

BEISPIELKLAUSUR Softwareentwicklung:

Programmieren in Java

Einführung in die Programmierung für Wirtschaftsinformatik

Informatik 2 Labor 2 Programmieren in MATLAB Georg Richter

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

Klausur zur Einführung in die objektorientierte Programmierung mit Java

Kapitel 6. Vererbung

3 Objektorientierte Konzepte in Java

Einführung in die Java- Programmierung

Übung Grundlagen der Programmierung. Übung 03: Schleifen. Testplan Testergebnisse

Klausur zur Einführung in die objektorientierte Programmierung mit Java

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

Diplomvorprüfung in Datenverarbeitung EBS Sommersemester 2002

Klausur WS 2006/07 Programmiersprache Java Objektorientierte Programmierung II 15. März 2007

Kapitel 6. Vererbung

Institut für Programmierung und Reaktive Systeme 25. August Programmier-Labor Übungsblatt. int binarysearch(int[] a, int x),

Java Kurs für Anfänger Einheit 5 Methoden

Übungen Programmieren 1 Felix Rohrer. Übungen

Kapiteltests zum Leitprogramm Binäre Suchbäume

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = Euro ergeben.

Testklausur 1 zur Vorlesung. Modellierung und Programmierung I. Dr. Monika Meiler Zeit: 60 Minuten

Arrays von Objekten. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Sichtbarkeit & statische Methoden. Einsatz von Sichtbarkeit Einsatz statischer Methoden programmatische Realisierung 2 Beispielaufgaben

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 22

SEP 114. Design by Contract

Übungsblatt 3: Algorithmen in Java & Grammatiken

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Programmieren I. Strategie zum Entwurf von Klassen. Beispiele. Design von Klassen. Dr. Klaus Höppner. Beispiel: Bibliothek

Objektorientierte Programmierung

Objektorientierte Programmierung

5 Projekt Bankverwaltung

Einführung in die Programmierung

Objektorientierte Programmierung. Kapitel 12: Interfaces

Prinzipien Objektorientierter Programmierung

Java Einführung Abstrakte Klassen und Interfaces

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

Übungskomplex Felder (1) Eindimensionale Felder Mehrdimensionale Felder

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Einführung in die Java- Programmierung

Arrays von Objekten. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.

Vorkurs C++ Programmierung

Einführung in die Programmierung

Arrays Fortgeschrittene Verwendung

Übungen zu C++ Kapitel 1

Algorithmen und Datenstrukturen

5. Übung: PHP-Grundlagen

Professionelle Seminare im Bereich MS-Office

Klausur in Programmieren

Tangentengleichung. Wie lautet die Geradengleichung für die Tangente, y T =? Antwort:

Softwareentwicklung Schrittweise Verfeinerung, Programmieren üben: Tic-Tac-Toe in Raten

1 Vom Problem zum Programm

Fachdidaktik der Informatik Jörg Depner, Kathrin Gaißer

5. Tutorium zu Programmieren

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Erwin Grüner

Informatik für Schüler, Foliensatz 23 Konstruktor, String-Methode und Heldenklassse

Probeklausur: Programmierung WS04/05

Einführung in die Programmierung

Programmieren II Vererbung. Programmieren II Vererbung. Programmieren II Vererbung. Programmieren II Vererbung. Einleitende Bemerkungen

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

DHBW Karlsruhe, Vorlesung Programmieren, Klassen (2)

Java 7. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Dezember 2011 JAV7

C-Probeklausur (Informatik 1; Umfang: C, Teil 1; SS07)

3. Konzepte der objektorientierten Programmierung

Ingenieurinformatik Diplom-FA (Teil 2, C-Programmierung)

Objektorientierte Programmierung OOP

Entscheidungsbäume. Definition Entscheidungsbaum. Frage: Gibt es einen Sortieralgorithmus mit o(n log n) Vergleichen?

2. Semester, 2. Prüfung, Lösung

U08 Entwurfsmuster (II)

Erstellen von x-y-diagrammen in OpenOffice.calc

Programmierkurs Java

Analysis I für Studierende der Ingenieurwissenschaften

Typumwandlungen bei Referenztypen

Prüfungszeuch im Fach Objektorientierte Programmierung WS 2000

Modulklausur Konstruktion und Analyse ökonomischer Modelle

Client-Server-Beziehungen

Operationalisierbare Qualitätskriterien für die Programmierung mit Erfahrungen aus PRÜ1 und PRÜ2

Vorlesung Dokumentation und Datenbanken Klausur

Überblick. Lineares Suchen

M. Graefenhan Übungen zu C. Blatt 3. Musterlösung

Das Modul ARTIKEL-BARCODE ermöglicht den Druck von Barcode-Etiketten der EAN-Codes 8 und 13.

Excel Funktionen durch eigene Funktionen erweitern.

Excel Pivot-Tabellen 2010 effektiv

SS Björn Berezowski B.Sc. Marco Münch B.Sc. Michael Roth B.Sc. Repetitorium PG 1. Übungsblatt. 1 Übung - Probeklausur SS 2010 Typ Prof.

Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005

Einführung in die Programmierung (EPR)

4. AuD Tafelübung T-C3

Innere Klassen in Java

Einfache Arrays. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Computeranwendung und Programmierung (CuP)

1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage:

Transkript:

Programmentwicklung I für Hörer anderer Fachrichtungen -Wintersemester 2003/04- Abschlussklausur 20.02.2004 Name : Vorname : Matrikelnummer : Hauptfach : Nebenfach/Fachrichtung Hinweise : 1. Überprüfen Sie anhand der aufgedruckten Seitennummern 1-17 die Vollständigkeit Ihres Klausurtextes. 2. Hilfsmittel: bis zu 4 Seiten DIN A4 mit Notizen nach Wahl. Aufgabe Thema maximale Punktzahl erreichte Punktzahl 1 Basiswissen (allgemein) 5 2 Applikationen, Methoden 7 3 Methoden (einfache Variable) 8 4 Methoden, Felder 11 5 Rekursion 9 6 Basiswissen (Objektorientierung) 9 7 Klassen, Vererbung 11 60 1. Klausur Übung/Praktikum Summe - 1 -

Aufgabe 1 (5 Punkte ) Kennzeichnen Sie die folgenden Aussagen durch Ankreuzen als wahr oder falsch. Bewertung: keine Antwort: 0 Punkte richtige Antwort: +0.5 Punkte falsche Antwort: -0.5 Punkte Minimal können 0 Punkte erreicht werden. wahr falsch Bei der mit for ( i = 1,...) beginnenden for-schleife muss i eine ganzzahlige Variable sein. Bei einem logischen Ausdruck der Form A B werden immer sowohl A als auch B ausgewertet. Der Aufruf einer Methode mit Ergebnistyp void muss innerhalb eines Ausdrucks geschehen. Eine Schleife wird mit continue verlassen. Ein Objekt ist die Erweiterung einer Klasse und erbt deren Eigenschaften. Klassenvariable werden durch das Schlüsselwort static gekennzeichnet. Eine Klasse muss Attribute enthalten. Die abstrakten Methoden eines Interface werden von einer Klasse implementiert, indem im Kopf der Klassendeklaration das Schlüsselwort extended gefolgt vom Namen des Interface angegeben wird. In einer abstrakten Klasse sind alle Methoden abstrakt. Innerhalb einer Klasse können weitere Klassen definiert werden. - 2 -

Aufgabe 2 ( 3 + 4 = 7 Punkte ) a) Schreiben Sie eine Java-Applikation A2a, die sowohl die Anzahl als auch die Gesamtlänge ihrer Kommandozeilenargumente ermittelt und auf dem Bildschirm ausgibt. Beispiel: java A2a Das ist ein Beispiel liefert Anzahl: 4 Gesamtlaenge: 17-3 -

Aufgabe 2 (Fortsetzung) b) (i) Schreiben Sie eine Java-Methode a2b entsprechend folgender Spezifikation, die exakt den durch nebenstehendes Flussdiagramm gegebenen Algorithmus realisiert. Name: a2b Parameter: ganze Zahl n Rückgabewert: - (ii) Welche Ausgabe wird für n = 24 und n = -100 erzeugt? start n n z 2 n > 1? ja n = 24 n = - 100 Ausgabe(n) ja z teilt n? nein n n / z Ausgabe(z) z z+1 solange n > 0 Hinweis: Es werden ausschließlich die Angaben in dieser Tabelle gewertet. stop - 4 -

Aufgabe 2 ( Fortsetzung) - 5 -

Aufgabe 3 ( 3 + 5 = 8 Punkte ) a) Schreiben Sie eine Java-Methode a3a, die für eine als Parameter übergebene ganze Zahl z die Anzahl der Dezimalziffern in der Dezimaldarstellung von z liefert. Beispiele: z = 12341234 a3a(z) = 8; z = -123 a3a(z) = 3-6 -

Aufgabe 3 ( Fortsetzung) b) Die Zahl S(k) ist (für k 1) definiert durch n 1 1 1 (-1) S(k) =1- + - +...= 3 5 7 (2n+1) 2k+1 2k+1 2k+1 2k+1 n=0 Entwerfen Sie eine Java-Methode entsprechend folgender Spezifikation: Name: a3b Parameter: k (int-zahl), e (double-zahl) Rückgabewert: eine Näherung für S(k), falls k 1. Für k <1 soll 0 zurückgereicht werden. Verfahren: Berechnen Sie einen Näherungswert für S(k) durch Aufsummieren genügend vieler Glieder obiger Reihe. Die Summation wird beendet, sobald der Betrag n (-1) des Summanden 2k+1 (2n+1) < e wird. Hinweise: 1. Sie können e > 0 beim Schreiben der Methode voraussetzen. 2. Die Standardfunktion Math.pow darf hier nicht verwendet werden. - 7 -

Aufgabe 4 (3 + 4 + 4 = 11 Punkte) a) Gehen Sie davon aus, dass die (hier nicht weiter spezifizierte) Methode ausgeben bei Übergabe eines eindimensionalen Feldes die Komponenten der Reihe nach ausgibt. Was wird unter dieser Voraussetzung bei folgendem Programmstück ausgegeben? int[] feld = {1,2,3,4; int[][] matrix = {{5,6,{7,8,9,{10,11,12,13; System.out.print("a : ");ausgeben(feld); System.out.print("b : ");ausgeben(matrix[2]); feld[1] = 0; feld = matrix[1]; matrix[1] = matrix[2]; System.out.print("c : ");ausgeben(feld); System.out.print("d : ");ausgeben(matrix[1]); matrix[0] = feld; feld[0] = 99; matrix[2][1] = 88; System.out.print("e : ");ausgeben(matrix[0]); System.out.print("f : ");ausgeben(matrix[1]); System.out.print("g : ");ausgeben(matrix[2]); a: 1 2 3 4 b: c: d: e: f: g: - 8 -

Aufgabe 4 (Fortsetzung ) b) Entwerfen Sie eine Java-Methode a4b, die bei Übergabe eines zweidimensionalen double- Feldes A den maximalen Eintrag in A ermittelt und als Ergebnis zurückreicht. Beachten Sie dabei, dass die Zeilenlängen unterschiedlich sein können. Sie können beim Entwurf dieser Methode ohne Überprüfung davon ausgehen, dass das Feld mindestens eine Komponente enthält. - 9 -

Aufgabe 4 (Fortsetzung ) c) Entwerfen Sie eine Java-Methode a4c, die bei Eingabe einer positiven ganzen Zahl n ein zweidimensionales ganzzahliges Feld in Dreiecksform mit n Zeilen erzeugt und zurückreicht. Für n 0 soll der null-zeiger zurückgereicht werden. Genauer: die k-te Zeile soll genau k Komponenten haben. In den Komponenten sollen beginnend mit 1 fortlaufend die natürlichen Zahlen eingetragen werden. 1 2 3 Beispiel: a4c ( 4 ) erzeugt nebenstehendes Feld: 4 5 6 7 8 9 10-10 -

Aufgabe 5 ( 4 + 5 = 9 Punkte ) a) Betrachten Sie folgende Java-Methoden: int a(int aa) { System.out.println("in a: "+aa); if (aa==0) return 0; switch ( aa % 3) { case 0: return a(b(aa/2)); case 1: return b(aa/3+1); case 2: return c(aa-2); return 0; int b(int bb) { System.out.println("in b: "+bb); if (bb==0) return 0; switch ( bb % 2) { case 0: return b(a(bb/2)); case 1: return c(bb/2+1); return 0; int c(int cc) { System.out.println("in c: "+cc); if (cc==0) return 0; switch ( cc % 3) { case 0: return b(a(cc/2)); case 1: return c(cc/2); case 2: return a(b(cc+3)); return 0; Was wird beim Aufruf a(23) ausgegeben? - 11 -

Aufgabe 5 ( Fortsetzung) b) Ist die (stetige) Funktion f auf dem Intervall [a,b] definiert und hat sie an den Intervallenden unterschiedliches Vorzeichen, so besitzt sie in diesem Intervall (mindestens) eine Nullstelle. Diese Nullstelle kann durch folgendes Bisektionsverfahren beliebig genau berechnet werden: - bestimme die Mitte mitte des Intervalls [a,b] - ist f(mitte)= 0, so ist mitte die gesuchte Nullstelle - ist f(mitte) 0, so sind entweder die Vorzeichen von f(mitte)und f(a) oder von f(mitte) und f(b) unterschiedlich. Das Verfahren wird jetzt rekursiv auf das a mitte b entsprechende Teilintervall angewendet, bis die Intervalllänge klein genug ist. Die Mitte des zuletzt bestimmten Intervalls ist die gesuchte Näherung.. Gegeben sei eine Java-Methode double fkt(double x) zur Berechnung einer Funktion. Entwerfen Sie unter dieser Voraussetzungeine rekursive Java-Methode bisektion zur Realisierung des oben beschriebenen Verfahrens. Genauer: Name: bisektion Parameter: a, b, eps ( double-zahlen) Rückgabewert: double-zahl (die berechnete Näherung für die Nullstelle) Wirkung: Hinweis: Zuerst wird getestet, ob fkt(a) und fkt(b) unterschiedliche Vorzeichen haben. Ist dies nicht der Fall, so wird eine entsprechende Meldung ausgegeben und 0 zurückgereicht. Ansonsten wird die Mitte mitte des Intervalls bestimmt. Ist fkt(mitte)= 0 oder ist die Länge des Intervalls eps, so ist mitte die gesuchte Näherung. Andernfalls wird das Verfahren erneut auf die passende Intervallhälfte angewendet. Beim Entwurf dieser Methode können Sie ohne weitere Überprüfung von a < b und eps > 0 ausgehen. f(x) - 12 -

Aufgabe 6 (4 + 5 = 9 Punkte ) a) Gehen Sie von folgenden Klassendeklarationen aus: public class A6a { public int a; private int b; private C c1; protected C c2; class C { private int d; void setze(int c) { b = c; // (1) public void setze(int c) { b = c; // (2) c1.d = 2; // (3) class B { void test1() { A6a A = new A6a();// (4) A.a = 1; // (5) A.b = 1; // (6) A.setze(1); // (7) A.c1.setze(1); // (8) class X extends A6a { void test2() { A6 B = new A6a(); // (10) B.a = 1; // (11) B.b = 1; // (12) a = 1; // (13) b = 1; // (14) setze(1); // (15) c2.setze(1); // (16) Geben Sie (mit kurzer Begründung) an, welche der mit //(..) markierten Anweisungen fehlerhaft sind. Achtung! Falschangaben führen zu Punktabzügen!!! Markierung Begründung - 13 -

Aufgabe 6 (Fortsetzung) b) Gegeben seien folgende Java-Klassen: (die erste Spalte gehört nicht zum Programm und dient nur der Nummerierung der Zeilen): 1. class K1 { 2. int i; 3. static int j=0; 4. public int f() 5. { return i; 6. 7. class K2 { 8. int j; 9. K1 k; 10. 11. public class K3 extends K1 { 12. K3 (int j) { 13. this.j += 1; 14. i = j+1; 15. 16. public int f(int j) 17. { return this.j+j; 18. public static void main (String args[]) { 19. K3 k = new K3(2); 20. System.out.println(k.f()); 21. System.out.println(k.f(3)); 22. k = new K3(2); 23. System.out.println(k.f()); 24. System.out.println(k.f(3)); 25. 26. (i) Welche Zahlen druckt das Programm nach Aufruf von java K3 aus? (ii) Kreuzen Sie bei den folgenden Aussagen die jeweils korrekte Vervollständigung an. Achtung!!! Falsche Kreuze geben Punktabzug. K3 ist eine Unterklasse von Der Bezeichner j in Zeile 3 ist Der Bezeichner K3 in Zeile 22 ist Der Bezeichner k in Zeile 9 ist Die Klasse K3 hat keine(n) K1 K2 nichts davon Klassenvariable Instanzvariable Parameter Klasse Parameter Konstruktor Attribut Klasse Attribut nichts davon Unterklasse Klassenvariable Instanzvariable Klassenvariablen sind j in Zeile 8 k in Zeile 22 keine davon - 14 -

Aufgabe 7 (6 + 5 = 11 Punkte ) a) Entwerfen Sie eine abstrakte Klasse Konto entsprechend folgender Spezifikation: Attribute: Konstruktor: Methoden: Kontonummer (int-zahl) Inhaber (String) Kontostand (double) erhält die Kontonummer und den Inhaber als Parameter; der Kontostand wird mit 0 initialisiert. Zur Vereinfachung ist keine Überprüfung erforderlich, ob die Kontonummer > 0 ist. void einzahlen (double wieviel) Ist wieviel 0, so wird der Kontostand entsprechend angepasst. Ist wieviel < 0, so wird nichts getan. void zeigen () Diese Methode gibt die Daten auf dem Bildschirm aus boolean abheben (double wieviel) Diese Methode ist abstrakt Auf die Attribute Kontonummer und Inhaber darf nur mit Methoden der Klasse, auf den Kontostand darf nur mit den Methoden dieser und eventueller abgeleiteter Klassen zugegriffen werden. Auf die Methoden darf von überall her zugegriffen werden. - 15 -

Aufgabe 7 (Fortsetzung ) b) Entwerfen Sie Subklassen Girokonto und Sparkonto von Konto entsprechend folgenden Spezifikationen: (i) Girokonto: Attribute: wie bei Konto, zusätzlich dispokredit (double-zahl), Konstruktor: wie bei Konto; zusätzlich wird der Dispokredit als Parameter übergeben und gesetzt. Zur Vereinfachung ist keine Überprüfung erforderlich, ob der Dispokredit 0 ist. Methoden: abheben Ist wieviel < 0 oder sind Kontostand + dispokredit < wieviel, so wird nichts getan. Ansonsten wird der gewünschte Betrag abgehoben (d.h. der Kontostand wird entsprechend verringert). Der Rückgabewert zeigt an, ob tatsächlich ausgezahlt wurde. zeigen Alle Daten werden auf dem Bildschirm ausgegeben. (ii) Sparkonto: Attribute: wie bei Konto, zusätzlich Zinssatz (double-zahl), Konstruktor: wie bei Konto; zusätzlich wird der Zinssatz als Parameter übergeben und gesetzt. Zur Vereinfachung ist keine Überprüfung erforderlich, ob der Zinssatz > 0 ist. Methoden: abheben Ist wieviel < 0 oder ist derkontostand < wieviel, so wird nichts getan. Ansonsten wird der gewünschte Betrag abgehoben (d.h. der Kontostand wird entsprechend verringert). Der Rückgabewert zeigt an, ob tatsächlich ausgezahlt wurde. zeigen Alle Daten werden auf dem Bildschirm ausgegeben. - 16 -

Zusatzblatt - 17 -