Klausur Programmieren 2 SS 2016

Ähnliche Dokumente
Klausur Programmieren 2 WS2016/17

Klausur Informatik I WS 2006/2007

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

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

C++-Zusammenfassung. H. Schaudt. August 18, 2005

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

Klausur Grundlagen der Programmierung

Einführung in die Programmierung Vorlesungsprüfung

01. Grundprinzipien der Vererbung

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

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

Probeklausur: Programmierung WS04/05

Probeklausur Programmieren in C Sommersemester 2007 Dipl. Biol. Franz Schenk 12. April 2007, Uhr Bearbeitungszeit: 105 Minuten

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

FH Ravensburg-Weingarten Schriftlich Prüfung Programmieren

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

Programmieren in C. Rekursive Strukturen. Prof. Dr. Nikolaus Wulff

Aufbau von Klassen. class punkt {...

Allgemeine Informatik II SS :30-13:30 Uhr

FB Informatik. Fehler. Testplan

Praktikum Betriebssysteme 1. Aufgabe (1)

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

Vorkurs C++ Programmierung

MB2-ALG, SS15 Seite 1 Hauptklausur, geschrieben am

Name: Klausur Informatik III WS 2003/04

1 Aufgaben 1.1 Umgebungsvariable setzen: CLASSPATH

C++ Notnagel. Ziel, Inhalt. Programmieren in C++

Große Übung Praktische Informatik 1

Technische Universität München WS 2004/2005 Fakultät für Informatik 11. Dezember 2004 Prof. Dr. Seidl

ALP II Dynamische Datenmengen Datenabstraktion (Teil 2)

Einstieg in die Informatik mit Java

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

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

Beispiele für Ausdrücke. Der imperative Kern. Der imperative Kern. Imperativer Kern - Kontrollstrukturen. Deklarationen mit Initialisierung

1.) Behandlung von Laufzeitfehlern in Visual Basic

Programmieren I + II Regeln der Code-Formatierung

Name: Klausur Programmierkonzepte SS 2011

Inhalt Streams Eingabe / Ausgbe in C Dateizugriff in C Eingabe / Ausgabe in C++ Dateizugriff in C++ Error Handling

5.4 Klassen und Objekte

Einstieg in die Informatik mit Java

Praxis der Programmierung

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

3. Semester : 1. Prüfung

8. Funktionen mit Arrays

Klausur zur Vorlesung Grundlagen der C++-Programmierung

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

Einstieg in die Informatik mit Java

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

Objektorientierung Grundlagen

3. Klassen Statische Komponenten einer Klasse. Klassenvariablen

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

Kapitel 8: Abstrakte Datentypen. Inhalt. Definition ADT Keller ADT Schlange

Repetitorium Informatik (Java)

JAVA für Nichtinformatiker - Probeklausur -

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.

Vorname: Nachname: Matrikelnummer: Klausur. Betriebssysteme

Prof.Dr. Alfred Irber Dies ist keine Musterprüfung, sondern eine Sammlung von Aufgaben aus früheren Prüfungen "Programmieren"

Java I Vorlesung Vererbung und Sichtbarkeit

1 Stückweise konstante Funktionen (ca =10 Punkte)

Java Einführung Methoden in Klassen

HS Ravensburg-Weingarten Schriftlich Prüfung Programmieren

OOP und Angewandte Mathematik. Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik

Verwendung von Klassen in C++

Musterlösungen zur Klausur Informatik 3

Methoden (fortgeschritten) in C# - 1

Computeranwendung und Programmierung (CuP)

Musterlösung Stand: 5. Februar 2009

Elementare Datentypen in C++

Hochschule Augsburg, Fakultät für Informatik Name:... Prüfung "Programmieren 1", IN1bac, WS 10/11 Seite 1 von 6

Java-Schulung Grundlagen

Algorithmen und Datenstrukturen

Probeklausur: Programmierung WS04/05

Einführung in die Programmierung für Wirtschaftsinformatik

Arbeitsblätter für die Lehrveranstaltung OOP JAVA 1

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

Variablen. Deklaration: «Datentyp» «Variablenname» Datentyp bestimmt Größe in Bytes: sizeof Beispiel: long int v; Größe: 4 Bytes

Grundlagen der Programmierung Prof. H. Mössenböck. 10. Klassen

Klausur Programmieren in C Sommersemester 2007 Dipl. Biol. Franz Schenk 13. April 2007, Uhr Bearbeitungszeit: 105 Minuten

Nachname: Vorname: Matr.-Nr.: Punkte: 1. Aufgabe: ( / 25 Pkt.) Gegeben ist das folgende Struktogramm zur Berechnung von sin(x) mit Hilfe einer Reihe.

Zusammenfassung: Programmieren 2 (C#)

1.2 Attribute und Methoden Aufbau einer Java-Klasse:

Einführung in die Programmierung

Propädeutikum zur Programmierung

Einstieg in die Informatik mit Java

Programmierkurs C++ Kapitel 9, Überladen Seite 1

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

Lösungsvorschläge. zu den Aufgaben im Kapitel 4

DHBW Karlsruhe, Vorlesung Programmieren, Events Musterlösung

public class SternchenRechteckGefuellt {

Transkript:

Klausur Programmieren 2 SS 2016 Name Gruppe 1 Vorname Dauer 90 min Matrikelnummer Hilfsmittel keine Die Klausur ist mit 50 Punkten sicher bestanden. Hinweise: Formulieren Sie Ihre Lösungen auf dem Aufgabenblatt und nicht auf zusätzlichen Blättern. Sofern Sie die Rückseite eines Blattes verwenden vermerken sie dies auf der Vorderseite. Prüfen sie das Exemplar auf Vollständigkeit (8 Aufgaben) und Druckqualität. Lesen Sie zunächst alle Aufgaben durch und beginnen Sie dann mit der einfachsten. Schreiben Sie deutlich und sauber. Unleserlichkeiten werden nicht korrigiert!! Voraussetzung für die Zulassung zur Klausur ist das erfolgreich testierte, zugehörige Praktikum. Nr. Punkte Aufgabe 1 15 Beantworten Sie die folgenden Fragen. a) Welcher Fehler ist in den folgenden beiden Zeilen enthalten? int x, *px; *px=1; px wurde nicht initialisiert. Daher ist *px=1 ein Fehler b) Welcher Fehler ist in den folgenden beiden Zeilen enthalten? int x,*px; float f=2.5, *pf=&x; pf ist ein Zeiger auf float und kann daher keine Adresse auf int speichern c) Was versteht man unter einer Queue? Eine sequenzielle Liste, wo einfügen nur an einem Ende und löschen nur an dem anderen Ende möglich ist. d) Was bewirkt das flag ios::out? In eine Datei können Daten geschrieben werden. Die Datei wird ggf. neu angelegt. e) Was bewirkt die Verwendung des Schlüsselworts friend? Einer Funktion oder anderen Klasse wird der Zugriff auf die Privat- Elemente einer Klasse ermöglicht. 1/10

Nr. Punkte Text 2 15 Gegeben seien die folgenden Deklarationen: int a=3, b[]=2,4,6,8,10,*pa=&a,*pb=&b[2]; fstream file("datei.txt"); //jetzt kommen die Ausdrücke Bestimmen Sie Typ und Wert der angegebenen Ausdrücke. Ausdruck Typ Wert *(pb-1) int 4 file<<b[2] fstream file a&3 int 3 file.eof() bool false 2/10

Nr. Punkte 3 15 Die Klasse Spiel dient zum Management der Organisation der Fußball- Europameisterschaft. Dabei ist jede teilnehmende Mannschaft einer Gruppe zugeordnet. Innerhalb einer Gruppe spielen dann die zugeordneten Mannschaften gegeneinander. Die Daten (Eigenschaften) aller gespielten Spiele stehen zeilenweise in einer Datei. class Spiel private: char gruppe;//bezeichnung der Gruppe unsigned int nummer;//nummer des Spiels string team1,team2;//beteiligte Mannschaften unsigned int tore1,tore2;//jeweils erzielte Tore public: //erforderliche Konstruktoren, get- und set-methoden ; a) Geben Sie die Klassendefinition einer von der Systembasisklasse abgeleiteten Fehlerklasse an. Damit soll es möglich sein, mittels Exception-Handling folgenden Fehler zu melden: eine der beteiligten Mannschaften spielt nicht in der angegebenen Gruppe. b) Wie kann ein zu diesem Fehler gehörender Meldungstext erzeugt werden? Betroffene Mannschaft und Gruppe sollen genannt werden. c) Programmieren Sie zu diesem Fehler einen dazu passenden Exception-Handler. a) class GruppenFehler:public exception private: unsigned int nr;//nummer des falschen Teams string text;//meldungstext public: GruppenFehler(unsigned int n, Spiel s); string message();//liefert Meldungstext ; b) z.b. im Konstruktor GruppenFehler(unsigned int n, Spiel s) nr=n; stringstream ss;//meldungstext erstellen if ( nr==1 ) //Team 1 ist betroffen ss<<s.getteam1(); else ss<<s.getteam2();//team 2 ist betroffen ss<<" gehoert nicht zu Gruppe "<<s.getgruppe(); text=ss.str(); c) catch (GruppenFehler e) cout<<e.message(); exit(1); 3/10

Nr. Punkte Text 4 15 Gegeben sei die Klasse Fahrzeug class Fahrzeug public: Fahrzeug(string,int);//Konstruktor void anzeige(); //alle notwendigen get-/set-methoden //weitere bei Bedarf private: string kennzeichen; int insassen ;//Anzahl der Insassen Fahrzeug *next; ; a) Fahrzeug kann als Basisklasse einer Reihe von Spezialisierungen angesehen werden. Geben Sie die Definition einer möglichen abgeleiteten Klasse davon an. b) Geben Sie das UML-Diagramm der beiden Klassen an inkl. Beziehung. Get-/Set-Methoden können weggelassenwerden. c) Programmieren Sie für die abgeleitete Klasse einen Konstruktor (nicht Default-Konstruktor), welcher alle Werte sinnvoll belegt. d) Programmieren Sie für die abgeleitete Klasse eine Methode void anzeige() als Redefinition zur Bildschirmausgabe aller Daten. a) class LKW: public Fahrzeug private: bool anhaenger;//hat Anhaenger public: LKW(string k,int i, bool a); void anzeige();//redefinition ; b) Fahrzeug -insassen: unsigned int -kennzeichen: string -next: Fahrzeug* +Fahrzeug(unsigned int, string) +anzeige(): void LKW -anhaenger: bool +LKW(unsigned int, string, bool) +anzeige(): void 4/10

c) LKW::LKW(string k,int i, bool a): Fahrzeug(k,i) anhaenger=a; d) void LKW::anzeige() Fahrzeug::anzeige();//aus Basisklasse cout<<" mit Anhaenger "<<anhaenger<<endl; 5/10

Nr. Punkte Aufgabe 5 15 Es soll eine Studie über Staus auf einspurigen Straßen durchgeführt werden. Hierzu ist eine Klasse Stau als verkettete Liste von Fahrzeugen zu implementieren. Diese soll eine Bezeichnung (z.b. Straßenname) haben, sowie auch Angaben zu Stauanfang und Stauende. a) Geben Sie eine Klassendefinition von Stau an. Dabei sollen alle in den Aufgaben 5 bis 7 genannten Methoden aufgeführt sein. b) Programmieren Sie einen zugehörigen Konstruktor. c) Programmieren Sie eine Methode, wo ein neues Fahrzeug zum Stau dazukommt. d) Programmieren Sie eine Methode, wo ein Fahrzeug sich aus dem Stau entfernt ( wenn er sich auflöst ). a) class Stau private: string bezeichnung; Fahrzeug *stauanfang,*stauende; public: Stau(string) bool hinzufuegen(fahrzeug *); void anzeigeg(unsigned int i) void entfernen(); ; b) Stau::Stau(string b) bezeichnung=b; stauanfang=null; stauende=null; c) void Stau::hinzufuegen(Fahrzeug *w) if ( stauanfang==null )//war leer stauanfang=w; stauende=w; else stauende->setnext(w); stauende=w; w->setnext(null);//da jetzt stauende d) void entfernen(); if ( stauanfang==null )//leer return; else stauanfang=stauanfang->getnext(); if (stauanfang==null)//jetzt leer stauende=null; 6/10

Nr. Punkte Text 6 15 Formulieren Sie für die Klasse Fahrzeug eine Überladung des < Operators: Es gilt Fahrzeug a < Fahrzeug b wenn Fahrzeug a im Stau vor Fahrzeug b steht. bool Fahrzeug::operator <(Fahrzeug w) Fahrzeug*aktuell=getNext();//erstes danach while (aktuell!=null) if (aktuell->getkennzeichen()==w.getkennzeichen() ) return true;//gefunden aktuell=aktuell->getnext(); return false; Nr. Punkte Text 7/10

7 15 Programmieren Sie eine Methode, welche alle Fahrzeuge am Bildschirm anzeigt, wo die Anzahl der Insassen größer ist als ein mittels Parameter vorgegebenen Wert. Geben Sie einen zugehörigen Testplan an. void Stau::anzeigeG(unsigned int i) cout<<" Stauuebersicht "<<bezeichnung<<endl; cout<<" mehr als "<<i<<" Insassen"<<endl; Fahrzeug *aktuell=stauanfang; while (aktuell!=null) if (aktuell->getinsassen()>i )//passt aktuell->anzeige(); aktuell=aktuell->getnext(); Testplan Verwendete Fahrzeuge: f1 F-XY-14 3 f2 DA-XY-34 2 f3 MIL-XY-34 4 f4 OBB-XY-124 1 f5 DA-XY-14 4 f6 F-XY-1234 2 Nr. Text Param. Fahrzeuge Ergebnisliste 1 leer 1 / / 2.1 1 Fahrzeug passt 1 f1 f1 2.1 1 Fahrzeug nicht 4 f1 / 3.1 6 Fahrzeuge-keiner 4 f1,f2,f3,f4,f5,f6 / 3.2 6 Fahrzeuge-gemischt 2 f1,f2,f3,f4,f5,f6 f1,f3,f5 3.3 6 Fahrzeuge-alle 0 f1,f2,f3,f4,f5,f6 f1,f2,f3,f4,f5,f6 8/10

Nr. Punkte Text 8 15 Erstellen Sie ein Programm main, welches - zuerst die Daten aller im Stau befindlichen Fahrzeuge aus einer Datei liest und jeweils ein zugehöriges Objekt vom Typ Fahrzeug in den Stau einfügt. - Alle Fahrzeuge mit mehr als 2 Insassen anzeigt. Auf Plausibilitätskontrollen und das Abfangen von Fehleingaben kann verzichtet werden. void main() fstream ein("input.txt",ios::in); string kz; int in; Stau s("schoefferstrasse");//deklaration Stau ein>>kz>>in;//erste Zeile while (!ein.eof() )//kein Dateiende Fahrzeug *w=new Fahrzeug(kz,in); s.hinzufuegen(w);//neues Fahrzeug einfuegen ein>>kz>>in;//naechste Zeile lesen s.anzeigeg(2);//mehr als 2 Insassen 9/10

10/10