Klausur Programmieren / Algorithmen und Datenstrukturen 1

Ähnliche Dokumente
Übungsklausur Programmieren / Algorithmen und Datenstrukturen 1

Übungsklausur Programmieren / Algorithmen und Datenstrukturen 2

Nachklausur Programmieren / Algorithmen und Datenstrukturen 1

Übungsklausur Programmieren / Algorithmen und Datenstrukturen 2

Prüfung Programmieren / Algorithmen & Datenstrukturen 1 Belegnummer , Wintersemester

11. Vektoren und Pointer Programmieren / Algorithmen und Datenstrukturen 1 Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt

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.

7. Einführung in C++ Programmieren / Algorithmen und Datenstrukturen 1 Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt

Klausur: Grundlagen der Informatik I, am 06. Februar 2009 Gruppe: B Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.

Klausur: Grundlagen der Informatik I, am 06. Februar 2009 Gruppe: A Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.

Grundlagen der Informatik

16. Ausnahmebehandlung Programmieren / Algorithmen und Datenstrukturen 2

15. Ausnahmebehandlung Programmieren / Algorithmen und Datenstrukturen 2

7. Klassenmethoden Einführung in die Programmierung (fbw) Sommersemester 2008 Prof. Dr. Bernhard Humm Hochschule Darmstadt, fbi

Objektorientierung III

9. Vererbung Einführung in die Programmierung (fbw) Sommersemester 2008 Prof. Dr. Bernhard Humm Hochschule Darmstadt, fbi

Probeklausur: Programmierung WS04/05

Klausur: Grundlagen der Informatik I, am 06. Februar 2009 Gruppe: A Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.

Klassen. C++ Übung am 02. Juni 2016

Probeklausur zur Vorlesung: Einführung in die objektorientierte Programmierung mit Java im Wintersemester 2017/18

Dies ist eine Probeklausur, die keine formalen Schlüsse auf die Form, die Struktur oder den Inhalt der endgültigen Klausur zulässt.

Algorithmen und Datenstrukturen

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

Prüfung Softwareentwicklung II (IB)

Institut für Informatik

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

Objektorientierte Programmierung mit C++ SS 2007

Grundlagen C und C++ Einheit 04: Weitere Grundlagen in C++ Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme

c) Zur Ausgabe der Transaktion soll statt print der Operator << verwendet werden.geben Sie die dazu nötigen Änderungen an.

Klausur Advanced Programming Techniques

Algorithmen und Datenstrukturen 07

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

Polymorphismus 179. Function.h. #include <string>

7. Übung Informatik II - Objektorientierte Programmierung

Programmierung und Angewandte Mathematik

Programmierstarthilfe SS 2008 Fakultät für Ingenieurwissenschaften und Informatik 8. Blatt Für den 16. und

Ziele sind das Arbeiten mit Funktionen (Modularisierung, Parameterübergabe), sowie - Reihentyp (Array)

Objektorientierung Grundlagen

Softwareentwicklung II (IB) Blatt 4. Prof. Dr. Oliver Braun. Fakultät für Informatik und Mathematik Hochschule München

Objektorientierte Programmierung

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

UE Algorithmen und Datenstrukturen 1 UE Praktische Informatik 1. Übung 3

Programmierung für Mathematik HS12 Übung 1

Variablen. int Flugzeug. float. I write code Hund. String. long. Borchers: Programmierung für Alle (Java), WS 06/07 Kapitel

Probeklausur. Musterlösung

Schriftlicher Test (120 Minuten) VU Einführung ins Programmieren für TM. 23. Januar 2017

SS Stephan Gimbel. Repetitorium PG 1. Übungsblatt. Original Klausur von Prof. Dr. Johannes Arz

Computergrundkenntnisse und Programmieren, WS 07/08, Übung 11: Klassen der Standardbibliothek 2

Polymorphismus 44. Function.hpp. #include <string>

Klausur: Grundlagen der Informatik I, am 05. Februar 2008 Dirk Seeber, h_da, Fb Informatik

Programmieren in Java -Eingangstest-

Hochschule München, FK 03 SS Masterstudiengang Technische Berechnung und Simulation. Programmierung von CAx-Systemen Teil 1

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

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

Hochschule München, FK03 SS Masterstudiengang Technische Berechnung und Simulation. Programmierung von CAx-Systemen Teil 1

Softwareentwicklung Lösungen zu Programmierung von Klassen mit BlueJ

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

Einführung in die Programmierung Wintersemester 2008/09

Klausur: Informatik, am 13. August 2015 Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.: Punkte:

Programmiertechnik Klassenvariablen & Instantiierung

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Einstieg in die Informatik mit Java

Klausur Kompaktkurs Einführung in die Programmierung Dr. T. Weinzierl & M. Sedlacek 25. März 2011

Angewandte Mathematik und Programmierung

3. Dokumentieren und Testen Advanced Programming Techniques Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt

C/C++ - Programmierung. Vererbung Seite 1 von 6. Eine einfache Klasse für eine Personenbeschreibung hat die folgende UML: CPerson.

Hochschule Darmstadt Informatik-Praktikum WS 2017/2018 EIT Bachelor 5. Aufgabenblatt Datenstruktur, Dateieingabe und -ausgabe

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

Einführung in die Programmierung

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

Fakultät IV Elektrotechnik/Informatik

Hochschule Darmstadt Informatik-Praktikum SS 2017 EIT Bachelor 5. Aufgabenblatt Datenstruktur, Dateieingabe und -ausgabe

Musterlösung Stand: 5. Februar 2009

Nachklausur: Grundlagen der Informatik I, am 02. April 2008 Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.

Nachklausur: Grundlagen der Informatik I, am 02. April 2008 Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.

Hochschule München, FK03 SS Masterstudiengang Technische Berechnung und Simulation. Programmierung von CAx-Systemen Teil 1

Inoffizielle Lösung zur Informatik I Prüfung Frühlingssemester 2010 Freitag, 13. August May 23, 2011

Institut für Informatik

Informatik II. Woche 13, Giuseppe Accaputo

Objektorientierte Anwendungsentwicklung

Klausur: Grundlagen der Informatik I, am 27. März 2009 Gruppe: F Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.

Übung Programmierung WS 2007/08 - Blatt 6

Vorlesung Objektorientierte Programmierung Klausur

Kap. 11 Objektorientierung: ein Beispiel

Klausur Informatik I WS 2006/2007

1 Berechnung von Summen (ca = 10 Punkte)

1 Klassen und Objekte

Hochschulprüfung in "Objektorientiertem Programmieren" WS 2016/17

Klausur: Grundlagen der Informatik I, am 27. März 2009 Gruppe: E Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.

Übung HP Musterlösung zu Aufgabe 9:

Einstieg in die Informatik mit Java

Klausur Grundlagen der Programmierung

Übungen zur Vorlesung EINI (WS 2010) Blatt 11

Nachname:... Vorname:... MatrNr.:... Klausur PR2. Erstellen Sie eine Struktur für eine Komplexe Zahl mit den Elementen real und imag vom Typ double.

Schriftlicher Test (120 Minuten) VU Einführung ins Programmieren für TM. 25. Jänner 2016

Übungen zu Computeranwendung und Programmierung WS 17/18

Versuchsziele Konzepte der parallelen Programmierung am Beispiel von Threads anwenden können. Einbau von Kontrollmechanismen mittels Semaphore.

Transkript:

Programmieren / Algorithmen und Datenstrukturen Autor: Prof. Dr. Bernhard Humm, FB Informatik, Hochschule Darmstadt Datum: 3. Juli 200 Klausur Programmieren / Algorithmen und Datenstrukturen Spielregeln zur Klausur Allgemeines Die Bearbeitungszeit beträgt 3 Zeitstunden. Bitte halten Sie Ihren Studenten- und Personalausweis bereit Erfüllen Sie die Aufgabenstellung genau: machen Sie nicht weniger, aber auch nicht mehr! Arbeiten Sie zügig in der Reihenfolge der Aufgaben Implementieren Sie in kleinen Schritten und sorgen Sie dafür, dass Sie jederzeit eine lauffähige Anwendung haben Speichern Sie regelmäßig Als Ergebnis der Klausur sind abzugeben alle zum System gehörigen Dateien durch Kopieren auf den Server (genauere Informationen zu Beginn der Klausur). Zugelassene Hilfsmittel Ausgedruckte Vorlesungsunterlagen und Bücher Persönliche Notizen auf Papier U. Breymann C++ Einführung und professionelle Programmierung (PDF auf Klausurrechner) Seite

Online Hilfe in NetBeans Verboten ist die Benutzung eigener Datenträger (Diskette, USB-Stick etc.); insbesondere dürfen keine Programme oder sonstige Daten auf Datenträger mitgebracht werden. die Benutzung eines anderen Rechners (Taschenrechner, PDA, Notebook,...) als des zur Verfügung gestellten jegliche Kommunikation (mündlich, schriftlich, elektronisch, per Handy, übers Netz, wie auch immer...) mit anderen Personen, ausgenommen die Aufsichtführenden. Login unter einem anderen Account als dem für die Klausur angegebenen. Zugriff auf andere Verzeichnisse eines Servers, als die ausdrücklich zugelassenen. Beurteilungskriterien (in Reihenfolge der Wichtigkeit). Funktion des Systems: das Programm soll fehler- und warnungsfrei kompilieren und alle Tests erfolgreich durchlaufen 2. Qualität des Programmcodes: Übersichtlichkeit, Einhaltung von Programmierrichtlinien 3. Qualität der Dokumentation: knapp, aber verständlich und vollständig 2 Vorbereitung Legen Sie ein neues NetBeans Projekt benannt nach Ihrem Nachnamen an. Tipp: File New Project C/C++ C/C++ Application Seite 2

3 Aufgabe: Bibliotheksanwendung In dieser Klausur werden Sie prototypisch eine Bibliotheksanwendung entwickeln, z.b. für das Entleihen von Büchern aus der Hochschulbibliothek. Das folgende UML Diagramm gibt eine Übersicht über die gesamte zu erstellende Anwendung. Library +books_: vector<book> +customers_: vector<customer> -loans_: vector<loan> customers_ +addbook(author: string, title: string): Book +addcustomer(name: string): Customer +borrow(customer: Customer, book: Book): Loan +getborrower(book: Book): Customer +getborrowedbooks(customer: Customer): vector<book> +isborrowed(book: Book): bool +getavailablebooks(): vector<book> loans_ books_ Loan -customer_: Customer -book_: Book <<create>>-loan(customer: Customer, book: Book) +getbook(): Book +getcustomer(): Customer -name_: string Customer customer_ <<create>>-customer(name: string) +getname(): string book_ -author_: string -title_: string Book <<create>>-book(author: string, title: string) +gettitle(): string +getauthor(): string Entwickeln Sie die Anwendung Schritt für Schritt in der angegebenen Reihenfolge. Insgesamt gibt es 00 Punkte zu erreichen. Seite 3

4 Klasse Customer (0 Punkte). Erstellen Sie eine neue Klasse Customer (Kunde). Tipp: File New File C++ C++ Class 2. Erstellen Sie eine private Instanzvariable name_ vom Typ string. Tipp: #include <string> using namespace std; 3. Entwickeln Sie die Funktion string getname() mit der üblichen Getter-Semantik. 4. Entwickeln Sie einen Konstruktor Customer(string name), in dem die Instanzvariable name_ initialisiert wird. 5. Stellen Sie sicher, dass Ihr Code fehler- und warnungsfrei kompiliert. 5 Klasse Book (0 Punkte). Erstellen Sie eine neue Klasse Book (Buch). Tipp: File New File C++ C++ Class 2. Erstellen Sie die privaten Instanzvariablen author_ und title_ vom Typ string. Tipp: #include <string> using namespace std; 3. Entwickeln Sie die Funktionen string getauthor() und string gettitle()mit der üblichen Getter-Semantik. 4. Entwickeln Sie einen Konstruktor Book(string author, string title), in dem die Instanzvariablen author_ und title_ initialisiert werden. 5. Stellen Sie sicher, dass Ihr Code fehler- und warnungsfrei kompiliert. 6 Klasse Loan (0 Punkte). Erstellen Sie eine neue Klasse Loan (Ausleihe). Tipp: File New File C++ C++ Class Seite 4

2. Erstellen Sie die privaten Instanzvariablen customer_ als Zeiger auf ein Customer Objekt und book_ als Zeiger auf ein Book Objekt. 3. Entwickeln Sie die Funktionen Book getbook()und Customer getcustomer() mit der üblichen Getter-Semantik. 4. Entwickeln Sie einen Konstruktor Loan(Customer customer, Book book), in dem die Instanzvariablen customer_ und book_ initialisiert werden. 5. Stellen Sie sicher, dass Ihr Code fehler- und warnungsfrei kompiliert. 7 Klasse Library (40 Punkte). Erstellen Sie eine neue Klasse Library. Tipp: File New File C++ C++ Class 2. (2,5 Punkte) Erstellen Sie die privaten Instanzvariablen books_, customers_ und loans_ als Vektoren von Zeigern auf Book, Customer, bzw. Loan Objekte. Tipp: #include <vector> using namespace std; 3. (2,5 Punkte) Entwickeln Sie die Funktion Book addbook(string author, string title) (Buch hinzufügen). In ihr wird ein neues Book Objekt angelegt und author und title gesetzt. Das Book Objekt wird dem Vektor books_ hinzugefügt und zurückgegeben. Tipp: verwenden Sie vector::push_back 4. (2,5 Punkte) Entwickeln Sie die Funktion Customer addcustomer(string name) (Kunde hinzufügen). In ihr wird ein neues Customer Objekt angelegt und name gesetzt. Das Customer Objekt wird dem Vektor customers_ hinzugefügt und zurückgegeben. Tipp: verwenden Sie vector::push_back 5. (2,5 Punkte) Entwickeln Sie die Funktion Loan borrow(customer customer, Book book) (ausleihen). In ihr wird ein neues Loan Objekt angelegt, welches auf die als Parameter übergebenen Customer und Book Objekte verweist. Das Loan Objekt wird dem Vektor loans_ hinzugefügt und zurückgegeben. Tipp: verwenden Sie vector::push_back Seite 5

6. (0 Punkte) Entwickeln Sie die Funktion Customer getborrower(book book) (Ausleihender). Sie liefert den ersten Customer, der book ausgeliehen hat. Falls es keine Ausleihe für book gibt, wird NULL zurückgeliefert. 7. (0 Punkte) Entwickeln Sie die Funktion vector<book> getborrowedbooks(customer customer) (entliehene Bücher). Sie liefert für einen customer alle Book Objekte, die er geliehen hat. Falls customer aktuelle keine Ausleihen hat, wird ein leerer Vektor zurückgeliefert. 8. (0 Punkte für 8. und 9. zusammen) Entwickeln Sie die Funktion bool isborrowed(book book) (ist entliehen). Sie testet, ob book derzeit entliehen ist. Tipp: verwenden Sie getborrower 9. Entwickeln Sie die Funktion vector<book> getavailablebooks() (verfügbare Bücher). Sie liefert alle Bücher zurück, die derzeit nicht entliehen sind. Gibt es keine verfügbaren Bücher, so wird ein leerer Vektor zurückgegeben. 0. Stellen Sie sicher, dass Ihr Code fehler- und warnungsfrei kompiliert. 8 Tests (20 Punkte). Entwickeln Sie in der Datei main.cpp die Prozedur void test(bool testresult) Hat testresult den Wert true, so wird eine neue Zeile mit dem Text "" auf der Konsole ausgegeben, andernfalls "Failure". Tipp: #include <iostream> using namespace std; 2. Erstellen Sie im Hauptprogramm die folgenden Testobjekte und speichern Sie diese in entsprechenden Variablen: a. Ein Library Objekt b. Book Objekte via addbook mit Autor / Titel "Breymann" / "C++", "Gosling" / "Java" und "Goldberg" / "Smalltalk". c. Customer Objekte via addcustomer mit Namen "Huber" und "Müller" Seite 6

3. Führen Sie die folgenden Ausleihen mittels borrow durch und speichern Sie die Loan Objekte in entsprechenden Variablen: a. "Huber" leiht "Breymann" / "C++" b. "Huber" leiht "Gosling" / "Java" 4. Entwickeln Sie die nachfolgenden Tests unter Verwendung Ihrer Prozedur test: 5. Der Autor des Buchs der ersten Ausleihe ist "Breymann" Tipp: verwenden Sie zum Vergleich die String-Methode compare der Rückgabewert 0 zeigt String-Gleichheit an 6. Der Titel des Buchs der ersten Ausleihe ist "C++" 7. Der Kundenname der ersten Ausleihe ist "Huber" 8. getborrower liefert für das erste Buch (Autor / Titel: "Breymann" / "C++") den ersten Kunden (Name: "Huber") Tipp: vergleichen Sie nicht die Strings, sondern die Zeiger auf das Customer Objekt. 9. getborrower liefert für das zweite Buch (Autor / Titel: Gosling" / "Java") auch den ersten Kunden (Name: "Huber") 0. getborrower liefert für das dritte Buch (Autor / Titel: "Goldberg" / "Smalltalk") NULL (derzeit nicht verliehen).. getborrowedbooks liefert für den ersten Kunden (Name: "Huber") einen Ergebnisvektor der Länge 2 (Huber hat zwei Ausleihen) Tipp: verwenden Sie die Vector-Methode size 2. getborrowedbooks liefert für den zweiten Kunden (Name: "Müller") einen Ergebnisvektor der Länge 0 (Müller hat derzeit keine Ausleihe). 3. isborrowed liefert für das erste Buch (Autor / Titel: "Breymann" / "C++") true 4. isborrowed liefert für das zweite Buch Buch (Autor / Titel: Gosling" / "Java") true 5. isborrowed liefert für das dritte Buch Buch (Autor / Titel: "Goldberg" / "Smalltalk") false 6. getavailablebooks liefert einen Ergebnisvektor der Länge (derzeit ein verfügbares Buch) Seite 7

7. Stellen Sie sicher, dass Ihr Code fehler- und warnungsfrei kompiliert. 8. Führen Sie alle Tests aus. Das Ergebnis auf der Konsole sollte wie folgt aussehen: Press [Enter] to close the terminal 9 Dokumentation (0 Punkte) Dokumentieren Sie die Außensicht Ihrer Anwendung, also alle öffentlichen Operationen in den.h-dateien in deutscher oder englischer Sprache. Beispiel- Dokumentation für Library::borrow : / Performs a new loan Parameters: - customer: reference to Customer object representing the borrowing customer - book: reference to the Book object representing the borrowed book Returns: reference to new Loan object / Loan borrow(customer customer, Book book); Viel Erfolg! Seite 8