Klausur in Programmieren

Ähnliche Dokumente
Klausur in Programmieren

Klausur in Programmieren

Klausur in Programmieren

Klausur in Programmieren

Klausur in Programmieren

Klausur in Programmieren

Klausur in Programmieren

Klausur in Programmieren

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.

Klausur: Grundlagen der Informatik I, am 06. Februar 2009 Gruppe: A 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:

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

Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny

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

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

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

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

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

Hochschule Darmstadt Informatik-Praktikum SS 2018 EIT Bachelor 3. Aufgabenblatt Funktionen - Unterprogramme

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

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

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

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

Informatik. Wiederholung Felder (Arrays), string. Vorlesung

Grundlagen der Informatik 11. Zeiger

Programmierung und Angewandte Mathematik

Angewandte Mathematik und Programmierung

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

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

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

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

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

Variablen, Konstanten und Datentypen

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

C++ - Einführung in die Programmiersprache Funktionen. Leibniz Universität IT Services Anja Aue

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

Übung zur Vorlesung EidP (WS 2018/19) Blatt 4

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

8. Referenzen und Zeiger

Algorithmen und Datenstrukturen

Klausur Informatik I WS 2006/2007

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

DAP2 Praktikum Blatt 1

Klausur Informatik WS 2012/13

Name: Klausur Informatik III WS 2003/04

Ein kleiner Blick auf die generische Programmierung

Repetitorium Programmieren I + II

Grundlagen der Informatik

2. Programmierung in C

Grundlagen der Informatik 2. Typen

Funktionen. mehrfach benötigte Programmteile nur einmal zu schreiben und mehrfach aufzurufen

Entwickeln Sie ein C/C++-Programm für die Verwaltung einer Artikeldatei gemäß folgender Vorgaben!

Pseudo-Programmiersprache

7.2 Dynamischer Speicher in Objekten/Kopierkonstruktor

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

Klausur Programmieren 1 SS 2017

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

3. Semester : 1. Prüfung

Programmierwerkstatt. Arrays, Pointer und Referenzen

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

Algorithmen zur Datenanalyse in C++

Funktionen: Rückgabewert

Programmieren mit C++ Zeiger (pointer) und Text (string) Inhalt

Einführung in die Programmierung Wintersemester 2008/09

Wissenschaftliches Rechnen

Kontrollfragen Mikrocontroller Programmiersprache C H1203 Felix Rohrer

Vererbung I. Kfz Eigenschaften und Methoden der Klasse Kfz Lkw. Pkw. Eigenschaften und Methoden der Klasse Kfz

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

Klausur: Programmieren II

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

C++ - Einführung in die Programmiersprache Header-Dateien und Funktionen. Leibniz Universität IT Services Anja Aue

Zeiger: Der Adressoperator &

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

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

Klausur "C#" WS 2012/2013

Übungen zur Vorlesung EINI (WS 2010) Blatt 11

Klausur Grundlagen der Programmierung

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

Vorlesung Objektorientierte Programmierung Klausur

Objektorientierte Programmierung mit C++ SS 2007

Transkript:

Studiengang Sensorik/Sensorsystemtechnik Note / normierte Punkte Klausur in Programmieren Sommer 2010, 19. Juli 2010 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 9 15 19 30 15 100 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 Kreuzen Sie an, was in der Sprache C/C++ ohne zusätzliche Definitionen zutrifft. Falsche Aussagen geben einen Punkt Abzug. (0 12P): korrekt / nicht korrekt a) int x := 4; O X b) char* z = Hello ; X O c) constant e = 2.1; O X d) int i = 8 > 7? 6 % 3 : 1; X O e) long int li = (int) 9.123; X O f) real c = 2.1; O X g) short int si = 417365876 >> 4; X O h) char c = 044; X O i) double d = 3,4; O X j) int h = 0xABCdEF; X O k) const int x = (8 * 8) * ((2 + 5) 6 * 3 + (2+2); O X l) int hex = 0#acbef; O X - Bitte beachten Sie auch die Rückseite - Seite 1 von 7

2. Aufgabe: Grundlagen Schreiben Sie ein Hauptprogramm, das die Kantenlänge a eines Quadrates und den Radius r eines Kreises beides als reellen Wert von der Konsole (über cin) einliest. Berechnen Sie anschließend beide Flächen (a 2, π r 2 ) zumindest näherungsweise (definieren Sie π als globale Konstante) und geben Sie anschließend nur die eine Meldung aus, welche der beiden Flächen größer ist (Gleichheit brauchen Sie nicht zu berücksichtigen). (9P) #include <iostream> using namespace std; const double pi = 3.1415926536; int main() double a; double r; cout << Kantenlaenge a: ; cin >> a; cout << Radius r: ; cin >> r; if(a * a > pi * r * r) cout << Quadratflaeche ist groesser als Kreisflaeche. << endl; else cout << Kreisflaeche ist grosser oder gleich zur Quadratflaeche. << endl; return 0; - Bitte beachten Sie auch die Rückseite - Seite 2 von 7

3. Aufgabe: Funktionen a) Erklären Sie den Unterschied zwischen call by value und call by reference beim Aufruf einer Funktion, wenn ein Parameter vom Datentyp int verwendet werden soll. Machen Sie ein Beispiel, in dem Sie die Funktionsköpfe mit beiden Aufrufmethoden vervollständigen und einen Aufruf der jeweiligen Funktion beschreiben. Der Variablenname des Parameters im Funktionskopf soll param sein: (6 P) 1. call by value: void democallbyvalue( int param ); Bei einem Aufruf democallbyvalue( 2 ) oder democallbyvalue( x ) wird der Wert 2 oder der Wert von x in die Variable param kopiert. Eine Änderung der Variablen param ändert x beispielsweise nicht. 2. call by reference: void democallbyreference( int & param ); Beim Aufruf von democallbyreference kann nur eine Variable z.b. x übergeben werden: democallbyreference( x ). Dabei ist innerhalb der Funktion democallbyreference die Variable x in als Variablen param verfügbar. Änderungen von param ändern auch x. b) Schreiben Sie eine Funktion mult, der zwei integer-parameter start und ende übergeben werden. Berechnen Sie die Multiplikation aller Zahlen zwischen start und ende (inklusive start und ende). Geben Sie das Ergebnis als Rückgabewert von mult zurück und berücksichtigen Sie das im Funktionskopf. (9 P): int mult(int start, int ende) int iergebnis = start; for(int li=start+1; li<=ende; ++li) iergebnis *= li; return iergebnis; - Bitte beachten Sie auch die Rückseite - Seite 3 von 7

4. Aufgabe: Array/Feld, Indizierung a) Erklären Sie den Unterschied zwischen einem statischen und einem dynamischen Feld und was dabei generell zu beachten ist. Geben Sie jeweils ein einfaches Beispiel mit der Deklaration eines Feldes mit 10 int-feldelementen: (10 P) Statisches Feld: int feld[10]; Bei einem statischen Feld wird die Größe einmalig mit einer Konstanten festgelegt. Das Bereitstellen und Freigeben von Speicher wird automatisch im Hintergrund erledigt. Ein Feld ist wie jede andere Variable auch entweder global oder nur innerhalb eines Anweisungsblocks verfügbar. Dynamisches Feld: int* feld = new int[10];. delete [ ] feld; Der Speicher eines dynamischen Feldes muss mittels new angefordert und mittels delete [ ] wieder freigegeben werden. Die Anzahl der Feldelemente kann aber zur Laufzeit festgelegt werden und muss nicht konstant sein. b) Gegeben ist folgender Funktionskopf: int maximum(int* aiindaten, unsigned int uiinanzahl) Schreiben Sie den dazu passenden Funktionsrumpf, der als Rückgabewert den größten Wert des Feldes zurück gibt. Der Parameter uiinanzahl ist dabei immer größer 0 und enthält die Anzahl der Feldelemente. Sie können davon ausgehen, dass das Feld aiindaten auch genau so viele Feldelemente enthält, wie uiinanzahl angibt. (9 P) int maximum(int* aiindaten, unsigned int uiinanzahl) int imax =aiindaten[ 0 ]; for(unsigned int li=1; li < uiinanzahl; ++li) if(imax < aiindaten[ li ]) imax = aiindaten[ li ]; return imax; - Bitte beachten Sie auch die Rückseite - Seite 4 von 7

5. Aufgabe: Ganzes Programm / Automatische Tests Ergänzen Sie die Lücken im nachfolgenden Programmtext zu einem lauffähigen C++- Programm. Es hat die Aufgabe, eine Funktion zu testen numberof -, die die Anzahl eines Zeichens in einer Zeichenkette zählt. Die Zeichenkette ist durch eine abschließende 0 begrenzt. Falls alle Testfälle ohne Fehler durchlaufen werden, soll die Anzahl aller Kleinbuchstaben in einem dazu passenden Array gespeichert und anschließend ausgegeben werden. (30P) #include <iostream> using namespace std; // Anzahl des Buchstaben cinchar in der Zeichenkette acinstring zählen // und als Funktionswert zurückgeben int numberof(char* acinstring, char cinchar) int icount = 0; for(int li=0; acinstring[li]!= 0; ++li) if(acinstring[li] == cinchar) ++icount; return icount; // Funktion zur Anwendung eines Testfalls um die Korrektheit von numberof // zu prüfen. Gibt numberof den erwarteten Wert zurück, wird von // testcasenumberof true zurück gegeben, false im Fehlerfalle bool testcasenumberof(char* acinstring, char cinchar, int iinexpectedresult) int iresult = numberof(acinstring, cinchar); cout << "Test: Anzahl " << cinchar << " in " << acinstring << ": " << iresult << " "; bool bcheck = (iresult == iinexpectedresult); if(bcheck) cout << "OK!" << endl; else cout << "NICHT OK! Erwartet: " << iinexpectedresult << endl; return bcheck; - Bitte beachten Sie auch die Rückseite - Seite 5 von 7

// Festlegung aller Testfälle für die Funktion numberof // Rückgabewert: Anzahl aller.fehlgeschlagenen Tests int testnumberof() int ierrorcount = 0; // Anzahl aller aufgetretenen Fehlerfälle // Anzahl des Buchstaben 'l' mit testcasenumberof testen, // nur bei Rückgabe von false ierrorcount hochzählen if(! testcasenumberof("hallole liebe Leut!", 'l', 4)) ierrorcount++; // Anzahl des Buchstaben 'e' mit testcasenumberof testen, // nur bei Rückgabe von false ierrorcount hochzählen if(! testcasenumberof("hallole liebe Leut!", 'e', 4)) ierrorcount++; cout << endl; cout << "Aufgetretene Fehler gesamt: " << ierrorcount << endl; return ierrorcount; // Zählen aller Kleinbuchstaben in der angegebenen Zeichenkette void countcharacters() const int cisize = 'z' - 'a' + 1; int aicount[cisize]; for(char cfind='a'; cfind <= 'z'; ++cfind) // Anzahl des Buchstaben cfind mit numberof zählen aicount[cfind - 'a'] = numberof("anzahl der Kleinbuchstaben.", cfind); for(int li=0; li<cisize; ++li) cout << "'" << (char)('a'+li) << "': " << aicount[li] << endl; int main() if(testnumberof() == 0) // alle Tests ok! rufe countcharacters auf countcharacters(); // Programm erst nach Betätigen der Enter-Taste beenden cin.get(); return 0; - Bitte beachten Sie auch die Rückseite - Seite 6 von 7

6. Aufgabe: Algorithmus Was berechnen die nachfolgenden Funktionen unknown1 und unknown2 bzw. wann liefert unknown2 den Wert true und wann den Wert false? Bitte beschreiben Sie die Funktionsweise möglichst abstrakt. (15 P) Hinweis: Testen Sie den Algorithmus anhand einer Zeichenkette, z.b. Beatles, Abba, Scooter und beobachten Sie die Variablenwerte. char unknown1(char cinchar) const int cidiff = 'a' - 'A'; if('a' <= cinchar && cinchar <= 'z') return cinchar - cidiff; return cinchar; bool unknown2(char* acinstring) int ivalue = 0; while(acinstring[ivalue]!= 0) ++ivalue; for(int li=0; li<ivalue/2; ++li) if(unknown1(acinstring[li])!= unknown1(acinstring[ivalue - li - 1])) return false; return true; unknown1 ändert Kleinbuchstaben in Großbuchstaben. Andere Zeichen bleiben unverändert. unknow2 liefert true, wenn es sich um ein Palindrom handelt, also eine Zeichenkette, die vorwärts und rückwärts dasselbe Wort ergibt. False, wenn es sich um kein Palindrom handelt. - Bitte beachten Sie auch die Rückseite - Seite 7 von 7