Vorlesung Objektorientierte Programmierung Klausur

Ähnliche Dokumente
Vorlesung Objektorientierte Programmierung Probeklausur

Vorlesung Datenbanken II A Klausur

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

Übungspaket 19 Programmieren eigener Funktionen

Einführung in die Informatik für Hörer aller Fakultäten II. Andreas Podelski Stephan Diehl Uwe Waldmann

5.4 Klassen und Objekte

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

Klausur in Programmieren

Klausur C++ #1 Jahr: 2001; Dozent: Dipl.Ing. Sorber

Programmiersprachen Einführung in C. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm

Modul 122 VBA Scribt.docx

Objektorientierte Programmierung. Kapitel 12: Interfaces

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein

Klausur zur Einführung in die objektorientierte Programmierung mit Java

Studentische Lösung zum Übungsblatt Nr. 7

Hochschule Ravensburg-Weingarten Schriftliche Prüfung Programmieren Prof. Dr. M. Zeller

Objektorientierte Programmierung mit C++ Zusammenfassung der wichtigsten Topics rund um die objektorientierte Programmierung mit C++11

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2

Probeklausur: Programmierung WS04/05

L6. Operatoren und Ausdrücke

Universität Augsburg, Institut für Informatik Sommersemester 2005 Prof. Dr. Werner Kießling 15. Oktober 2005 Dr. Alfons Huhn, Timotheus Preisinger

"Einführung in die Programmierung" Krefeld, den 24. September 2013

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

Primitive Datentypen

Programmierkurs Java

Hochschule Darmstadt Informatik-Praktikum (INF 1) WS 2015/2016 Wirtschaftsingenieur Bachelor 5. Aufgabe Datenstruktur, Dateieingabe und -ausgabe

C++ - Operatoren. Eigene Klassen mit neuen Funktionen

1 Polymorphie (Vielgestaltigkeit)

10. Klassen. Prof. Dr. Markus Gross Informatik I für D-ITET (WS 03/04)

Klausur in Programmieren

Name: Klausur Programmierkonzepte SS 2011

Wirtschaftsinformatik I

Objektorientierte Programmierung

Einführung in die Programmierung für Wirtschaftsinformatik

Klausur zur Einführung in die objektorientierte Programmierung mit Java

Propädeutikum zur Programmierung

Objektorientiertes Programmieren für Ingenieure

Hochschule Darmstadt Informatik-Praktikum (INF 1) WS 2014/2015 Wirtschaftsingenieur Bachelor 4. Aufgabe Datenstruktur, Dateieingabe und -ausgabe

PIWIN I. Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I. Vorlesung 3 SWS WS 2007/2008

Vorkurs C++ Programmierung

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

Klausur zur Vorlesung Grundlagen der C++-Programmierung

1 Vom Problem zum Programm

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

Tutorium Rechnerorganisation

Übungen zur Vorlesung Einführung in die Informatik Wintersemester 2010/11

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.

Kurzeinführung in C. Johannes J. Schneider

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

Objektorientierte Programmierung

Einführung in die Java- Programmierung

Test zu Grundlagen der Programmierung Leitung: Michael Hahsler. 21. November 2003

5. Tutorium zu Programmieren

Modellierung und Programmierung 1

Jetzt sollt ihr von der Vorlage der Grundversion 1.0 ein eigenes Textadventure erstellen.

Kurzeinführung in C++

Kontrollstrukturen, Pseudocode und Modulo-Rechnung

Einführung in die Programmiersprache C

Praktikum Betriebssysteme 1. Aufgabe (1)

Meeting C++ C++11 R-Value Referenzen

Javakurs für Anfänger

Ein erstes Java-Programm

ubasic Port für STM32F4 von Uwe Becker

Objektorientierte Programmierung

In der Computersprache C ist die Standardmethode zur Behandlung von Matrizen durch

Einführung in die Programmierung

Grundlagen. Kapitel 1

Methoden. von Objekten definiert werden, Methoden,, Zugriffsmethoden und Read-Only

Klausur zu Objektorientierter Softwareentwicklung in C++ 4. Februar 2003 (WS 2002/2003) Beispiellösung

Funktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Gute Lösung:

Nachholklausur (9 ECTS) Einführung in die Informatik: Programmierung und Software-Entwicklung. Nachname... Vorname... Matrikelnummer... Studienfach...

Objektorientierte Programmierung. Objektorientierte Programmierung. Klasse. Objekt. Beispiel: Sportfest1. Methode. Eine Einführung mit BlueJ

IT-Zertifikat: Allgemeine Informationstechnologien II PHP

Propädeutikum zur Programmierung

Java: Vererbung. Teil 3: super()

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

1. Übung zu "Numerik partieller Differentialgleichungen"

Teil IV. Grundlagen der Programmierung

Nachholklausur Informatik II

Programmierung in C. Grundlagen. Stefan Kallerhoff

3 Objektorientierte Konzepte in Java

13 OOP MIT DELPHI. Records und Klassen Ein Vergleich

C# 2000 Expression Beispielcodes für Konsolen- und Formularanwendung

Algorithmen und Datenstrukturen

Programmieren in Java

FB Informatik. Fehler. Testplan

Klausur vom 14. Juni Informatik 4

Fakultät Wirtschaftswissenschaft

C++ - Einführung in die Programmiersprache Polymorphismus und Vererbung. Eltern

Software Engineering Klassendiagramme Einführung

Übung zur Vorlesung Programmieren in C

Bachelor-Klausur im WiSe 2013 / Grundlagen der Informatik

Programmieren in C/C++ und MATLAB

Übersicht. Informatik 2 Teil 3 Anwendungsbeispiel für objektorientierte Programmierung

Effizientes Memory Debugging in C/C++

Nachholklausur (6 ECTS) Einführung in die Informatik: Programmierung und Software-Entwicklung. Nachname... Vorname... Matrikelnummer... Studienfach...

Klausur in Programmieren

Einführung in die C++ Programmierung für Ingenieure

Dr. Monika Meiler. Inhalt

Computeranwendung und Programmierung (CuP)

Transkript:

Prof. Dr. Stefan Brass 16. Februar 2007 Dipl.-Inform. Annett Thüring Institut für Informatik MLU Halle-Wittenberg Vorlesung Objektorientierte Programmierung Klausur Name: Matrikelnummer: Studiengang: Aufgabe Punkte von (Max.) Zeit 1 (Arithmetischer Ausdruck, Zeiger) 1 3 min 2 (Logische Bedingung) 1 3 min 3 (Schleife) 1 3 min 4 (Array, C-String, Pointer) 1 3 min 5 (Globale und lokale Variablen) 1 3 min 6 (Rekursion) 1 3 min 7 (Klasse) 1 3 min 8 (Programm: Klasse für lange Zahlen) 10 30 min 9 (Fehlersuche) 3 5 min 10 (Verschiedene Fragen) 4 4 min Zusatzaufgabe 0 (+1) 5 min Summe 24 65 min Hinweise: Bearbeitungsdauer: 90 Minuten Skript, Bücher, Notizen sind erlaubt. Notebooks, PDAs, etc. dürfen nicht verwendet werden. Mobiltelefone bitte ausschalten (oder mit Aufsicht besprechen). Die Klausur hat 13 Seiten. Bitte prüfen Sie die Vollständigkeit. Bitte benutzen Sie den vorgegebenen Platz. Wenn Sie auf die Rückseite ausweichen müssen, markieren Sie klar, daß es eine Fortsetzung gibt. Tauschen Sie keinesfalls irgendwelche Dinge mit den Nachbarn aus. Notfalls rufen Sie eine Aufsichtsperson zur Kontrolle. Fragen Sie, wenn Ihnen eine Aufgabe nicht klar ist! Zum (garantierten) Bestehen benötigen Sie 60% der Punkte (15/24).

Objektorientierte Programmierung Klausur 2 Aufgabe 1 (Arithmetischer Ausdruck, Zeiger) Was gibt das folgende Programm aus? int i = 2; int j = 10; int* p = &j; j += 5; int n = i++ * *p + 4; cout << n; Hier nochmal die Tabelle mit den Prioritätsstufen der Operatoren: 18 :: Gültigkeitsbereich 17 ++ (Postfix),., ->, [], f(),... Postfix-Operatoren 16 - (unär),!, * (deref), ++ (Präfix),... Präfix-Operatoren 15.*, ->* Zeiger auf Komp. 14 *, /, % Multiplikation etc. 13 +, - Addition, Subtraktion 12 <<, >> Shift etc. 11 <, <=, >, >= kleiner etc. 10 ==,!= gleich, verschieden 9 & Bit-und 8 ^ Bit-xor 7 Bit-oder 6 && und 5 oder 4?: Bedingter Ausdruck 3 =, +=, -=, *=, /=,... Zuweisungen 2 throw Exception auslösen 1, Sequenz Bei gleicher Priorität sind alle Operatoren (außer Präfixoperatoren und Zuweisungen) implizit von links geklammert (linksassoziativ).

Objektorientierte Programmierung Klausur 3 Aufgabe 2 (Logische Bedingung) Was gibt das folgende Programm aus? int i = 2; int j = 3; if(i!= j && i > 5) cout << 10; else if(i > j j <= 2) cout << 20; i++; if(i == j) cout << 30; else cout << 40;

Objektorientierte Programmierung Klausur 4 Aufgabe 3 (Schleife) Was gibt das folgende Programm aus? int i = 2; int j = 3; while( i < 4) i++; j++; cout << i * j;

Objektorientierte Programmierung Klausur 5 Aufgabe 4 (Array, C-String, Pointer) Was gibt dieses Programm aus? int i = 0; char s[5] = "abc"; for(char* p = s; *p; p++) i++; cout << i;

Objektorientierte Programmierung Klausur 6 Aufgabe 5 (Globale und lokale Variablen) Was gibt dieses Programm aus? int n = 5; int f(int i) i = i + n; return i; int n = 2; int j = f(n); cout << n * 10 + j;

Objektorientierte Programmierung Klausur 7 Aufgabe 6 (Rekursion) Was gibt dieses Programm aus? int n = 0; void f(int i) n++; if(i > 1) f(i/2); else cout << n <<. ; n--; f(8); cout << n;

Objektorientierte Programmierung Klausur 8 Aufgabe 7 (Klasse) Was gibt dieses Programm aus? class C int n; public: int f() n = n * 10; int g() return n; C(int i) n = i; ; C a(1); C* b = new C(2); a.f(); a.f(); b->f(); cout << a.g() + b->g();

Objektorientierte Programmierung Klausur 9 Aufgabe 8 (Programm: Klasse für lange Zahlen) 10 Punkte Definieren Sie eine Klasse BigInt für 100-stellige Zahlen, wobei Sie die Ziffern bitte in einem int-array der Größe 100 abspeichern. Definieren Sie folgende Methoden für die Klasse: Konstruktor: Er soll die Zahl auf 0 initialisieren (alle Ziffern). void set_digit(int i, int d): Diese Funktion soll die Ziffer i auf den Wert d setzen, sofern i zwischen 0 und 99 und d zwischen 0 und 9 liegt. Andernfalls soll die Methode Fehler! auf cerr ausgeben. void print(): Diese Methode soll den aktuellen Wert der Zahl ausgeben, und dabei die Ziffern von Position 99 (höchstwertige Ziffer) bis Position 0 (niedrigstwertige Ziffer) nacheinander auf cout ausgeben. Dabei sollen allerdings führende Nullen unterdrückt werden, d.h. es sollen nicht immer alle 100 Ziffern ausgegeben werden, sondern nur die Ziffern ab der maximalen Indexposition, die von 0 verschieden ist. Allerdings muß mindestens eine Ziffer ausgegeben werden, d.h. die Indexposition 0 muß in jedem Fall gedruckt werden. Schreiben Sie dann bitte noch ein Hauptprogramm zum Testen. Im Hauptprogramm soll ein Objekt der Klasse angelegt werden, die Ziffer an der Stelle 3 auf 5 gesetzt werden, und die Zahl anschließend ausgegeben werden. Versuchen Sie Syntaxfehler zu vermeiden und Ihr Programm leicht verständlich zu gestalten. Es können Punkte für schlechten Stil abgezogen werden. Es ist Platz für die Lösung dieser Aufgabe auf der nächsten Seite.

Objektorientierte Programmierung Klausur 10 Platz für die Lösung von Aufgabe 8

Objektorientierte Programmierung Klausur 11 Aufgabe 9 (Fehlersuche) 3 Punkte Das folgende Programm enthält (mindestens) 5 Fehler. Bitte geben Sie drei dieser Fehler an (es ist möglicherweise schwierig, alle fünf zu entdecken). Falls Sie mehr als drei Fehler angeben, werden nur die ersten drei gewertet (es gibt keine Extrapunkte). Geben Sie bitte jeweils die Zeilennummer mit an, in der sich der Fehler befindet. Es zählt auch nicht als Fehler, daß das Programm nichts Sinnvolles tut. Direkte Folgefehler zählen auch nicht. (1) (2) (3) (4) class C (5) private: (6) int a; (7) public: (8) int f() return a; (9) C(int n) a = n; (10) (11) (12) (13) (14) C x; (15) int i; (16) x.a = 5; (17) int n = x; (18) cout << n + i; (19) (20) 1. Zeile: Begründung: 2. Zeile: Begründung: 3. Zeile: Begründung:

Objektorientierte Programmierung Klausur 12 Aufgabe 10 (Verschiedene Fragen) 4 Punkte Bitte kreuzen Sie jeweils die richtige Antwort an (es ist genau eine Antwort pro Teilaufgabe richtig). Wenn Sie nichts ankreuzen, ist der Punkt auf jeden Fall verloren. Sie sollten daher notfalls raten. a) Was passiert, wenn in einer Klasse kein Konstruktor definiert wird? Der Compiler meldet einen Fehler. Der Compiler legt automatisch einen Konstruktor an, der alle Komponenten auf 0 initialisiert. Der Compiler legt automatisch einen an, der die Konstruktoren von objektwertigen Komponenten aufruft. Normale Komponenten (z.b. vom Typ int) werden nicht initialisiert. b) Was ist der Unterschied zwischen = und ==? = ist die Zuweisung, == der Vergleich. = vergleicht Strukturen Komponente für Komponente, == vergleicht die Adressen. = funktioniert für in C++ eingebaute Typen, == muß für selbstdefinierte Typen verwendet werden. c) Was ist der Unteschied zwischen call by value und call by reference? Das ist nur ein internes Detail bei der Implementierung der Sprache, aus Programmierersicht macht es keinen Unterschied. Für rekursive Prozeduren kann man nur call by value verwenden. Ansonsten ist call by reference effizienter. Man muß call by reference verwenden, wenn man will, daß die aufgerufene Prozedur die übergebene Variable ändern kann. d) Was bedeutet const char* p;? Das ist ein Syntaxfehler. Der Zeiger p kann verändert werden, aber der Speicherbereich, auf den p zeigt, wird nicht verändert. Der Zeiger p ist konstant.

Objektorientierte Programmierung Klausur 13 Zusatzaufgabe (Vererbung) 1 Extrapunkt Was gibt dieses Programm aus? class C public: int f() return 1; int g() return 2; ; class D : public C public: int g() return 5; ; D d; C* c = &d; cout << c->f() + c->g();