Klausur in Programmieren

Ähnliche Dokumente
Klausur in Programmieren

Klausur in Programmieren

Klausur in Programmieren

Klausur in Programmieren

Klausur in Programmieren

Klausur in Programmieren

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

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

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

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

Klausur: Grundlagen der Informatik I, am 05. Februar 2008 Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.: Punkte:

Klausur: Informatik, am 11. Juli 2013 Gruppe: B Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.: Punkte:

Praktikum zur Vorlesung Einführung in die Programmierung WS 14/15 Blatt 3

Einführung in die Programmierung Wintersemester 2011/12

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

Kontrollstrukturen -- Schleifen und Wiederholungen

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 1. Teil

Klausur Informatik I WS 2006/2007

5. Elementare Befehle und Struktogramme

Klausur. 2. Aufgabe (3 Punkte) Ergänzen Sie die leeren Zellen derart, dass sich in einer Zeile die selben Zahlenwerte ergeben.

Grundlagen der Informatik 5. Kontrollstrukturen II

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

C++ Teil 4. Sven Groß. 30. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Apr / 16

Variablen in C++ Einfache Variablen Strukturen Arrays und Zeichenketten Zeiger und Referenzen Parameter Dynamische Speicherverwaltung

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

C++ Teil 2. Sven Groß. 16. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Apr / 22

Kurze Einführung in die Programmiersprache C++ und in Root

Informatik für Elektrotechnik und Informationstechnik

Algorithmen und Datenstrukturen

Einführung in die Programmierung

Konzepte der Programmiersprachen

9. Vektoren. (auch Felder/array)

Grundlagen der Informatik 6. Arrays I

Pseudo-Programmiersprache

Programmieren in C/C++ und MATLAB

Klausur Programmieren 1 SS 2017

Einführung in die Programmierung

Grundlagen der Informatik 11. Zeiger

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

Algorithmen zur Datenanalyse in C++

2. Aufgabe (3 Punkte) Ergänzen Sie die leeren Zellen derart, dass sich in einer Zeile die selben Zahlenwerte ergeben.

Objektorientierte Programmierung mit C++ SS 2007

PVK Informatik I 1.Teil. Grundlagen Variablen Operatoren Fallunterscheidung Schleifen Kurzschreibweise Pointer Array Dynamische Strukturen Funktionen

Vorlesungsprüfung Programmiersprache 1

Programmieren II Abstrakte Klassen / Virtuelle Methoden. Programmieren II Abstrakte Klassen / Virtuelle Methoden

Übungen zur Vorlesung EidP (WS 2015/16) Blatt 6

Klausur: Grundlagen der Informatik I, am 05. Februar 2008 Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.: Punkte:

Grundlagen der Informatik 2. Typen

Funktionales C++ zum Ersten

Klausur Grundlagen der Programmierung

Kap 9. Bitoperationen und -strukturen

Es ist für die Lösung der Programmieraufgabe nicht nötig, den mathematischen Hintergrund zu verstehen, es kann aber beim Verständnis helfen.

3 Grundstrukturen eines C++ Programms anhand eines Beispiels

Kapitel 2/3: Darstellung von Information / Kontrollstrukturen. Inhalt. Zusammengesetzte Datentypen Wiederholungen (in Programmen)

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

1.8.5 Wiederholungen. Beispiele Unendliche Schleife: 1.8 Kontrollstrukturen 75. ( Bedingung ) AnweisungOderBlock. ja Anweisung. Bedingung erfüllt?

Schleifen in C/C++/Java

3. Semester : 1. Prüfung

In C++ kann man fünf Teilsprachen, die bezüglich Syntax und Semantik differieren, unterscheiden. Objektorientierte Erweiterungen von C

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

Organisatorisches. Algorithmen und Datenstrukturen (für ET/IT) Programm heute. Definition Datenstruktur. Nächste Woche keine Vorlesung!

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

Klausur Informatik WS 2012/13

Unterlagen. CPP-Uebungen-08/

Klausur "C#" WS 2012/2013

Ziel, Inhalt. Programmieren in C++ Wir lernen wie man Funktionen oder Klassen einmal schreibt, so dass sie für verschiedene Datentypen verwendbar sind

Angewandte Mathematik und Programmierung

Organisatorisches. drei Gruppen Gruppe 1: 10:10-11:40, Gruppe 2: 11:45-13:15 Gruppe 3: 13:20-14:50

3D Programmierpraktikum: Einführung in C++ - Teil 1

Einführung in die Programmierung (EPR)

Auswahlen (Selektionen)

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

DAP2 Praktikum Blatt 1

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

Übungen zur Vorlesung EINI (WS 2010) Blatt 11

Gestrige Themen. Benutzung des Compilers und Editors. Variablen. Ein- und Ausgabe mit cin, cout (C++) Verzweigungen. Schleifen

4 Schleifen und Dateien

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

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

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

Escape-Sequenzen. Dr. Norbert Spangler

Viel Erfolg bei der Bearbeitung der Aufgaben!

Informatik 1 ( ) D-MAVT F2010. Pointer, Structs, Sortieren. Yves Brise Übungsstunde 6

8. Referenzen und Zeiger

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

Programmierkurs C++ Lösungen zum Übungsblatt 3. Nils Eissfeldt und Jürgen Gräfe. 2. November Aufgabe 5

Organisatorisches. Neue Übungsblätter: Nur mehr elektronisch? Abgabe Di, , 14 Uhr bis Do, , 8Uhr

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

Objektorientierte Programmierung

FH München, FB 03 FA WS 06/07. Ingenieurinformatik. Name Vorname Matrikelnummer Sem.Gr.: Hörsaal Platz

Einführung in den Einsatz von Objekt-Orientierung mit C++ I

EINI LW/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 16/17

Objektorientierung Grundlagen

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

Unterprogramme. Funktionen. Bedeutung von Funktionen in C++ Definition einer Funktion. Definition einer Prozedur

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

Ein- und Ausgabe (I/O)

C++ Teil Schleifen. Man kann bestimme Anweisungen in einem Programm mehrfach ausführen lassen. Dazu gibt es in C++ verschiedene Schleifen.

Klausurvorbereitung Lösung

Grundlagen der Programmierung Teil1 Einheit III Okt. 2010

Transkript:

Studiengang Sensorik/Sensorsystemtechnik Note / normierte Punkte Klausur in Programmieren Sommer 2009, 16. Juli 2009 Dauer: 1,5h Hilfsmittel: Keine (Wörterbücher sind auf Nachfrage erlaubt) Name: Matrikelnr.: Aufgabe 1 2 3 4 5 6 Summe Punkte max 12 6 20 16 26 15 95 Punkte Alle Fragen beziehen sich auf den Stoff der Vorlesung. Somit sind sie z.b. bezogen auf die Programmiersprache C++. Auch sonst gelten die Konventionen wie in unserer Vorlesung. 1. Aufgabe: Grundlagen Welche Ergebnisse haben die folgenden Operationen auf den gegebenen Definitionen? Die Operationen der einzelnen Teilaufgaben bauen nicht aufeinander auf! int a = 5; int b = 18; 1. int c = b++; Variablenwerte: b = 19_, c = 18_ (2 Pkte) 2. int c = ++a; Variablenwerte: a = 6, c = 6 (2 Pkte) 3. int c = --a / 5; Variablenwerte: a = 4, c = 0 (2 Pkte) 4. int c = b % a++; Variablenwerte: a = 6, b = 18_, c = 3 (3 Pkte) 5. int c = ++b % a; Variablenwerte: a = 5, b = 19_, c = 4 (3 Pkte) - Bitte beachten Sie auch die Rückseite - Seite 1 von 7

2. Aufgabe: Datentypen Welche Ausgabe produzieren die folgenden Programmfragmente (6P): a) I short int a = 32767; // short int 2 Byte a++; if(a > 0) std::cout << "Wert groesser 0. " << endl; else std::cout << "Wert kleiner oder gleich 0. " << endl; Ausgabe: Wert...kleiner oder gleich...0. b) short int b = -32768; // short int 2 Byte b++; if(b > 0) std::cout << "Wert groesser 0. " << endl; else std::cout << "Wert kleiner oder gleich 0. " << endl; Ausgabe: Wert... kleiner oder gleich...0. - Bitte beachten Sie auch die Rückseite - Seite 2 von 7

3. Aufgabe: Array/Feld, Indizierung a) Für Zeichenketten gibt es unterschiedliche Handhabungen. Die üblichsten Vorgehensweisen bauen auf Arrays mit dem Datentyp char auf. Meist füllen die Zeichenketten jedoch nicht das gesamte Array, sodass die Länge oder das Ende einer Zeichenkette gesondert betrachtet werden muss. Es sind dabei zwei Varianten üblich: 1. die Markierung des Endes einer Zeichenkette mit einer 0. 2. die Speicherung der Länge an der 1. Stelle des Arrays. a) Nennen Sie je Methode einen Vor- und einen Nachteil bei der jeweiligen Vorgehensweise: (4P) Vorteil bei 1: Unbegrenzte Länge Nachteil bei 1: 0 als Zeichen ist nicht verfügbar, die Länge muss durch Suchen der Endemarkierung festgestellt werden. Vorteil bei 2: Länge der Zeichenkette ist sofort verfügbar, alle Zeichen können verwendet werden. Nachteil bei 2: maximale Länge der Zeichenkette ist auf 255 begrenzt b) Schreiben Sie eine Funktion, die eine Zeichenkette der Variante 2 (acinstringv2) in eine Zeichenkette der Variante 1 (acoutstringv1) umwandelt. Verwenden Sie dabei den nachfolgend vordefinierten Funktionskopf und ergänzen Sie den Funktionsrumpf: (16P) void convertstring(char* acoutstringv1, char* acinstringv2) int ilength = (int)acinstringv2[0]; for(int li=0; li < ilength; ++li) acoutstringv1[li] = acinstringv2[li+1]; acoutstringv1[ilength] = 0; - Bitte beachten Sie auch die Rückseite - Seite 3 von 7

4. Aufgabe: Schleifen a) Welche Schleifentypen gibt es in C/C++? Umreißen Sie in kurzen Stichworten die Unterschiede. (6P) 1. while-schleife, kopfgetestete Schleife, Schleifenbedingung wird geprüft bevor der Schleifenrumpf ausgeführt wird. 2. do-while-schleife, endegetestete Schleife, Schleifenbedingung wird nach der Ausführung des Schleifenrumpfes getestet 3. for-schleife, Zählschleife, meist Verwendung, wenn die Anzahl der Durchläufe vor dem Start der Schleife bekannt ist. b) Schreiben Sie nachfolgende while-schleife als for-schleife mit derselben Bedeutung (10P): int li = 10; int lsumme = 0; while(li >= 0) std::cout << "Zwischensumme: " << lsumme << endl; lsumme += li; li--; ------------------------------------------------------------ int lsumme = 0; for(int li = 10; li >= 0; li--) std::cout << "Zwischensumme: " << lsumme << endl; lsumme += li; - Bitte beachten Sie auch die Rückseite - Seite 4 von 7

5. Aufgabe: Ganzes Programm (26 P) Ergänzen Sie die Lücken im nachfolgenden Programmtext zu einem lauffähigen C++- Programm. Es hat die Aufgabe meteorologische Temperaturangaben einzulesen, daraus den Mittelwert und die Varianz zu bestimmen und auf die Konsole auszugeben. Der Mittelwert und die Varianz bestimmen sich durch 1 1 n x i n i= 0 1 1 n mw =, varianz = n i= #include <math.h> #include <iostream> 0 ( x i mw ) 2 using namespace std; Kommentar [KM1]: 1 P // Messwerte von der Konsole einlesen void eingebenmesswerte(unsigned int& ruioutmesswerteanzahl, double*& rpdoutmesswerte) cout << Anzahl Messwerte: ; cin >> ruioutmesswerteanzahl; rpdoutmesswerte = new double[ruioutmesswerteanzahl]; for(unsigned int li=0; li<ruioutmesswerteanzahl; ++li ) cout << Messwert: ; cin >> rpdoutmesswerte[ li ]; // Mittelwert bestimmen double rechnemittelwert(unsigned int uiinmesswerteanzahl, double* adinmesswerte) double dmittelwert = 0.0; for(unsigned int li=0; li<uiinmesswerteanzahl; ++li) dmittelwert += adinmesswerte[ li ]; return dmittelwert / uiinmesswerteanzahl; Kommentar [KM2]: 1 P Kommentar [KM3]: 1 P Kommentar [KM4]: 2 P Kommentar [KM5]: 1 P Kommentar [KM6]: 1 P Kommentar [KM7]: 1 P Kommentar [KM8]: 2 P Kommentar [KM9]: 1 P Kommentar [KM10]: 3 P Kommentar [KM11]: 2 P - Bitte beachten Sie auch die Rückseite - Seite 5 von 7

// Varianz bestimmen double rechnevarianz(double dinmittelwert, unsigned int uiinmesswerteanzahl, double* adinmesswerte) double dsumme = 0.0; for(unsigned int li=0; li < uiinmesswerteanzahl; ++li ) double ddiff = dinmittelwert adinmesswerte[ li ]; dsumme += ddiff * ddiff ; Kommentar [KM12]: 1 P Kommentar [KM13]: 1 P Kommentar [KM14]: 1 P Kommentar [KM15]: 1 P Kommentar [KM16]: 1 P return sqrt(dsumme) / uiinmesswerteanzahl ; Kommentar [KM17]: 1 P int main() double* admesswerte; unsigned int uimesswerteanzahl; eingebenmesswerte( uimesswerteanzahl, admesswerte ); double dmittelwert = rechnemittelwert( uimesswerteanzahl, admesswerte ) ; double dvarianz = rechnevarianz(dmittelwert, uimesswerteanzahl, admesswerte ); cout << Mittelwert: << dmittelwert << endl ; cout << Varianz: << dvarianz << endl ; Kommentar [KM18]: 0,5 0,5 Kommentar [KM19]: 1 P Kommentar [KM20]: 1 P Kommentar [KM21]: 0,5 Kommentar [KM22]: 0,5 delete [] admesswerte ; // Freigabe dynamisches Array Kommentar [KM23]: 1 P return 0; - Bitte beachten Sie auch die Rückseite - Seite 6 von 7

6. Aufgabe: Algorithmus Was berechnet die nachfolgende Funktion bzw. was macht sie? Bitte beschreiben Sie die Funktionsweise möglichst abstrakt. (15 P) Hinweis: Testen Sie den Algorithmus anhand eines kleinen Arrays und beobachten Sie die Variablenwerte. void unknown(int* aiinoutarray, unsigned int uiinanzahl) for(unsigned int uiindex=0; uiindex < uiinanzahl; ++uiindex) bool bnoswap = true; for(unsigned int uiindex2=0; uiindex2 < uiinanzahl uiindex - 1; ++uiindex2) if(aiinoutarray[uiindex2] > aiinoutarray[uiindex2+1] int itmp = aiinoutarray[uiindex2]; aiinoutarray[uiindex2] = aiinoutarray[uiindex2+1]; aiinoutarray[uiindex2+1] = itmp; bnoswap = false; if(bnoswap) return; Die Zahlen im Array werden aufsteigend sortiert. - Bitte beachten Sie auch die Rückseite - Seite 7 von 7