Klausur in Programmieren

Ähnliche Dokumente
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.

Viel Erfolg bei der Bearbeitung der Aufgaben!

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

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 05. Februar 2008 Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.: Punkte:

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

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

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

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

Angewandte Mathematik und Programmierung

Wissenschaftliches Rechnen

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

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

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

Grundlagen der Informatik 2. Typen

Einführung in die Programmierung Wintersemester 2011/12

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

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

Kontrollstrukturen -- Schleifen und Wiederholungen

Klausur Informatik WS 2012/13

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

Grundlagen der Informatik 6. Arrays I

Objektorientiertes Programmieren für Ingenieure

Pseudo-Programmiersprache

einlesen n > 0? Ausgabe Negative Zahl

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

Ein- und Ausgabe (I/O)

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

Klausur Informatik I WS 2006/2007

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

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

3 Grundstrukturen eines C++ Programms anhand eines Beispiels

Einführung in die Programmierung

Annehmende Schleife do while

Vorlesungsprüfung Programmiersprache 1

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

Einführung in die Programmierung

Variablen, Konstanten und Datentypen

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme

Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung)

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

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

Hochschule Darmstadt Informatik-Praktikum WS 2017/2018 WIng Bachelor 6. Aufgabenblatt Zeiger, verkettete Liste, Dateieingabe und -ausgabe

Test-Klausuraufgaben Softwaretechnik Fachbereich BW, für WINFO

Grundlagen der Informatik 4. Kontrollstrukturen I

Klausur Grundlagen der Programmierung

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

Informatik Repetitorium SS Volker Jaedicke

Übungen zur Vorlesung EINI (WS 2010) Blatt 11

Objektorientierte Programmierung mit C++ SS 2007

Geoinformatik und Vermessung Prüfung 502 : Informatik (JAVA)

Teil III: Evaluationstest

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

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

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

Unterlagen. CPP-Uebungen-08/

5. Elementare Befehle und Struktogramme

Objektorientierung Grundlagen

Klausur Programmieren 1 SS 2017

Programmieren in C/C++ und MATLAB

C-Probeklausur (Informatik 1; Umfang: C, Teil 1; SS07)

Grundlagen der Informatik 5. Kontrollstrukturen II

Lesen Sie alle Aufgabenstellungen sorgfältig durch, bevor Sie mit der Bearbeitung der ersten Aufgabe beginnen.

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

Klausurvorbereitung Lösung

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

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

FH Ravensburg-Weingarten Schriftlich Prüfung Programmieren

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

Institut für Mathematik Universität zu Köln. C++ Eine Einführung. Skript zur C++ Vorlesung für Flüchtlinge

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

Klausur Informatik Programmierung, Seite 1 von 8 HS OWL, FB 7, Malte Wattenberg

Algorithmen und Datenstrukturen

Hochschule Darmstadt Informatik-Praktikum WS 2016/2017 WIng Bachelor 4. Aufgabenblatt Modularisierung, Funktionen, Unterprogramme

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

Programmieren in C/C++ und MATLAB

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

Programmieren in C/C++ und MATLAB

Kap 7. Funktionen und Arrays

C++ Teil 1. Sven Groß. 9. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil 1 9. Apr / 19

Einführung in die Programmierung

Einführung in C ++ und die Objektorientierte Programierung

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

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

Transkript:

Studiengang Sensorik/Sensorsystemtechnik Note / normierte Punkte Klausur in Programmieren Winter 2009/2010, 18. Februar 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 16 20 26 17 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 Stellen Sie die nachfolgenden Zahlen in den jeweiligen Zahlensystemen dar (12P): a) 1011 1110 1010 1111 (binär) hex: BEAF (1P) oktal: 137257 (3P) b) 254 (dezimal) hex: FE (2P) binär: 1111 1110 (2P) c) 6A (hex) dezimal: 106 (3P) binär: 0110 1010 (1P) - Bitte beachten Sie auch die Rückseite - Seite 1 von 7

2. Aufgabe: Grundlagen Schreiben Sie ein Hauptprogramm, das die Kantenlänge eines Rechtecks von der Konsole (über cin) als reelle Zahl einliest und sowohl Umfang als auch Fläche als Ergebnis ausgibt (9P). #include <iostream> using namespace.std; int main() double a, b; cout << Kantenlaenge a: ; cin >> a; cout << Kantenlaenge b: ; cin >> b; cout << Umfang: << 2 * (a + b) << endl << Flaeche: << a * b << endl; return 0; 3 P für die Syntax 3 P für die richtige Verwendung der C++ Konstrukte (Semantik) 3 P für die Korrektheit des Programms - Bitte beachten Sie auch die Rückseite - Seite 2 von 7

3. Aufgabe: Schleifen a) Kreuzen Sie an, welche Schleifen es in C/C++ gibt (6P): (Falsche Antworten geben 1 Punkt Abzug; minimale Punktzahl dieser Aufgabe sind 0 P) 1. for...x 2. repeat. until...o 3. do while...x 4. if...o 5. foreach...o 6. when...o 7. else...o 8. while...x 9. forget...o 10. loop...o b) Schreiben Sie nachfolgend eine Schleife, in der die Quadrate aller Zahlen von 100 bis 199 summiert werden und das Ergebnis nach der Schleife in einer unsigned int-variablen steht. Verwenden Sie für die Bestimmung der Quadrate ein Makro SQR und definieren Sie dieses Makro vor Beginn des Programmfragments (10P): #define SQR(x).((x)*(x)) unsigned int uisumme = 0; for(unsigned int uiindex=100; uiindex<200; uiindex++) uisumme += SQR(uiIndex); 3 P für die richtige Makrodefinition 2 P für die Initialisierung der Ergebnisvariablen 3 P für den korrekten Schleifenkopf 2 P für den korrekten Schleifenrumpf - Bitte beachten Sie auch die Rückseite - Seite 3 von 7

4. Aufgabe: Array/Feld, Indizierung Gegeben ist ein globales Feld mit den Monatstagen im Jahr: unsigned int monatstage[12] = 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ; a) Schreiben Sie eine Funktion berechnetagimjahr, der Sie ein Datum mittels dreier Parameter tag, monat, jahr übergeben. Der Rückgabewert der Funktion soll die Anzahl der bis zu diesem Datum vergangenen Tage (inklusive des angegebenen Datums) bestimmen. Beachten Sie dabei, dass alle durch 4 teilbaren Jahre im Februar 29 Tage besitzen (Ausnahmen von dieser Regel sollen nicht berücksichtigt werden) (18P). b) Skizzieren Sie eine Idee, wie man mit diesem Wert die Kalenderwoche bestimmen könnte (2P). Beispiele: berechnetagimjahr(20, 1, 2010) liefert den Wert 20. berechnetagimjahr(10, 3, 2008) liefert den Wert 70. a) unsigned int berechnetagimjahr(unsigned int tag, unsigned int monat, unsigned int jahr) unsigned int tagimjahr = tag; for(unsigned int li=0; li<(monat-1); ++li) tagimjahr += monatstage[ li ]; if( jahr % 4 == 0 && monat > 2) tagimjahr++; return tagimjahr; 4 P für den richtigen Funktionskopf 2 P für die Initialisierung der Ergebnisvariablen 4 P für den korrekten Schleifenkopf 4 P für den korrekten Schleifenrumpf 3 P für die richtige Berücksichtigung des Schaltjahres 1 P für den richtigen Rückgabewert b) Der Tag im Jahr dividiert durch 7 ergibt (ungefähr) die Kalenderwoche. - 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, zwei Zeichenketten, die mit dem Wert 0 enden, auf Gleichheit zu prüfen. Dabei soll die Groß- und Kleinschreibung keine Rolle spielen (Da jedem Buchstabensymbol ein Wert zugeordnet ist und die Buchstabensymbole sowohl der großen als auch der kleinen Buchstaben lückenlos und alphabetisch angeordnet sind, kann ein Kleinbuchstabe durch Subtraktion in einen Großbuchstaben geändert werden. Die Differenz ist für alle zugehörigen Buchstaben gleich und entspricht dabei der Differenz zweier zueinander gehörenden Buchstabensymbole, also z.b. a - A ). #include <iostream> using namespace std; // Umwandeln der gegebenen Zeichenkette in Großbuchstaben void ingrossbuchstaben(char* aczeichenkette) int iindex = 0; char calphabetabstand = a - A ; while(aczeichenkette[iindex]!= 0) if(aczeichenkette[iindex] >= a && aczeichenkette[iindex] <= z ) aczeichenkette[iindex] -= calphabetabstand; iindex++; // Prüfung der Zeichenketten auf Gleichheit // Rückgabewert true: Zeichenketten sind gleich Rückgabewert false: Zeichenketten sind ungleich. bool istgleich(char* aczeichenkette1, char* aczeichenkette2) int iindex = 0; while(aczeichenkette1[iindex]!= 0 && aczeichenkette2[iindex]!= 0 && aczeichenkette1[iindex] == aczeichenkette2[iindex]) iindex++; if(aczeichenkette1[iindex] == 0 && aczeichenkette2[iindex] == 0) // Ende beider Zeichenkette erreicht! return true; return false; Kommentar [KM1]: 1P Kommentar [KM2]: 1P Kommentar [KM3]: 1P Kommentar [KM4]: 1P Kommentar [KM5]: 1P Kommentar [KM6]: 1P Kommentar [KM7]: 1P Kommentar [KM8]: 1P Kommentar [KM9]: 1P Kommentar [KM10]: 1P Kommentar [KM11]: 1P Kommentar [KM12]: 2P Kommentar [KM13]: 2P - Bitte beachten Sie auch die Rückseite - Seite 5 von 7

int main() char aczeichenkette1[200]; char aczeichenkette2[200]; cout << Zeichenkette1: ; cin >> aczeichenkette1; ingrossbuchstaben(aczeichenkette1); cout << Zeichenkette2: ; cin >> aczeichenkette2; ingrossbuchstaben(aczeichenkette2); cout << Zeichenketten sind ; if(! istgleich(aczeichenkette1, aczeichenkette2)) cout << un ; cout << gleich ; Kommentar [KM14]: 1P Kommentar [KM15]: 1P Kommentar [KM16]: 1P Kommentar [KM17]: 1P Kommentar [KM18]: 1P Kommentar [KM19]: 4P Kommentar [KM20]: 1P Kommentar [KM21]: 1P return 0; - Bitte beachten Sie auch die Rückseite - Seite 6 von 7

6. Aufgabe: Algorithmus a) Was berechnet die nachfolgende Funktion bzw. was enthalten die Variablen ivalue1 und ivalue2 des Ergebnisses? Bitte beschreiben Sie die Funktionsweise möglichst abstrakt. (15 P) b) Wann erhalten Sie ein nicht definiertes Ergebnis? (2P) Hinweis: Testen Sie den Algorithmus anhand eines kleinen Arrays (z.b. der Größe 5) und beobachten Sie die Variablenwerte. struct tresult int ivalue1; int ivalue2; ; tresult unknown(int* aiinarray, unsigned int uiinanzahl) tresult sresult; sresult.ivalue1 = aiinarray[0]; sresult.ivalue2 = aiinarray[0]; for(unsigned int uiindex=0; uiindex < uiinanzahl; ++uiindex) if(sresult.ivalue1 < aiinarray[uiindex]) sresult.ivalue1 = aiinarray[uiindex]; sresult.ivalue2 = sresult.ivalue2 > aiinarray[uiindex]? aiinarray[uiindex] : sresult.ivalue2; return sresult; a) ivalue1 enthält das Maximum aller Elemente des Arrays. ivalue2 enthält das Minimum aller Elemente des Arrays. b) Wenn uiinanzahl gleich 0 oder größer als die Elementanzahl des Arrays ist. - Bitte beachten Sie auch die Rückseite - Seite 7 von 7