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

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

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

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

Klausur in Programmieren

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

5. Elementare Befehle und Struktogramme

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

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

Einführung in die Programmierung Wintersemester 2011/12

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

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

Programmieren in C/C++ und MATLAB

Einleitung. Informationsquellen: - Webseite zur Vorlesung, Abschnitt Informationen zu C und C++ Kurzeinführung in C/C++

Klausur in Programmieren

Praktikum Ingenieurinformatik. Termin 4. Funktionen, numerische Integration

Informatik für Elektrotechnik und Informationstechnik

Klausur in Programmieren

Einführung in die Programmierung

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

Informatik Repetitorium SS Volker Jaedicke

Klausur in Programmieren

Objektorientiertes Programmieren für Ingenieure

Übungen zu C++ Kapitel 1

Einführung Datentypen Verzweigung Schleifen. Java Crashkurs. Kim-Manuel Klein May 4, 2015

Grundlagen der Informatik - 6. Praktikum

Angewandte Mathematik und Programmierung

Kontrollstrukturen und Funktionen in C

Grundstruktur eines C-Programms

FB Informatik. Fehler. Testplan

Zeiger, Arrays und Strings in C und C++

Einführung in die Programmierung

Übungspaket 19 Programmieren eigener Funktionen

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

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

Deklarationen in C. Prof. Dr. Margarita Esponda

Es gibt zwei verschiedene Arten, wie Programme auf dem Rechner ausgeführt werden:

4 Schleifen und Dateien

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

Grundlagen. Kapitel 1

Einführung in die C-Programmierung

Objektorientierung Grundlagen

Pass by Value Pass by Reference Defaults, Overloading, variable Parameteranzahl

Tutorium Rechnerorganisation

Übung 9. Quellcode Strukturieren Rekursive Datenstrukturen Uebung 9

Grundlagen. Die Komponenten eines C Programms. Das erste Programm

Elementare Datentypen in C++

Klausur in Programmieren

Zum Abschluss wird gezeigt, wie aus einem C++ Quell-Programm ein ausführbares Programm erzeugt wird. 1. Installation von NetBeans...

RO-Tutorien 3 / 6 / 12

Grundlagen der Programmierung

ANSI C. Grundlagen der Programmierung. Ricardo Hernández García. 3. Ausgabe, 2. Aktualisierung, Dezember 2013 CANSI2

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

Einführung in die Programmierung

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

Probeklausur: Programmierung WS04/05

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

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

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

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

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

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

Grundlagen der Programmentwicklung

Die Programmiersprache C Eine Einführung

Übung 1 - Betriebssysteme I

3. Semester : 1. Prüfung

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

Vom Problem zum Programm

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme

Praktikumstermin B-07: make & Makefiles

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

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme

2.4 Das erste C++-Programm *

Informatik. Studiengang Chemische Technologie. Michael Roth WS 2012/2013. Hochschule Darmstadt -Fachbereich Informatik-

Programmierkurs Java

VBA-Programmierung: Zusammenfassung

Übungen zu C++ Kapitel 3

Präzedenz von Operatoren

Programmiersprachen Einführung in C. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm

C++ Kurs Teil 1. Architektur, Anwendungsspektrum, primitive Datentypen, Funktionsaufrufe, Referenzen, Klassen

ANSI C. Grundlagen der Programmierung. Ricardo Hernández García. 3. Ausgabe, September 2011 CANSI2

Programmierung mit C Zeiger

Programmieren in C/C++ und MATLAB

Werkzeuge zur Programmentwicklung

Einführung in die Programmierung (EPR)

Hydroinformatik I: Hello World

DAP2-Programmierpraktikum Einführung in C++ (Teil 1)

BKTM - Programmieren leicht gemacht.

Quiz und Übungen. C++ Übung am 19. Mai 2016

Überladen von Operatoren

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

Fachhochschule Augsburg. Ingenieurinformatik SS05 Seite 1/8

Einleitung Entwicklung in C Hello-World! Konstrukte in C Zusammenfassung Literatur. Grundlagen von C. Jonas Gresens

Zeiger: Der Adressoperator &

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

Wiederholung Wozu Methoden? Methoden Schreiben Methoden Benutzen Rekursion?! Methoden. Javakurs 2012, 3. Vorlesung

Programmieren in C. Macros, Funktionen und modulare Programmstruktur. Prof. Dr. Nikolaus Wulff

Übung HP Beispielaufgaben 3

Annehmende Schleife do while

Escape-Sequenzen. Dr. Norbert Spangler

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

Transkript:

Seite 1 von 10 Hiermit bestätige ich, dass ich die Übungsleistungen als Voraussetzung für diese Klausur in folgender Übung erfüllt habe. Jahr: Übungsleiter: Unterschrift: 1. Aufgabe ( / 6 Pkt.) a) Geben Sie die binäre Darstellung des dezimalen Zahlenwertes 57 an (inklusive Rechenweg und Proberechnung). (3 Punkte) 57 / 2 = 28 R 1 28 / 2 = 14 R 0 14 / 2 = 7 R 0 7 / 2 = 3 R 1 3 / 2 = 1 R 1 1 / 2 = 0 R 1 111001 = 32 + 16 + 8 + 1 = 57 b) Geben Sie die Darstellung des dezimalen Zahlenwertes 67 im Zahlensystem mit der Basis 5 an (inklusive Rechenweg und Proberechnung) (3 Punkte). 67 / 5 = 13 R 2 13 / 5 = 2 R 3 2 / 5 = 0 R 2 232 = 50 + 15 + 2 = 67

Seite 2 von 10 2. Aufgabe ( / 15 Pkt.) Was liefert das folgende Programm an Bildschirmausgaben? #include <iostream> using namespace std; int main() const int oberegrenze = 19; const int startwert = 2; int x = 7, y = startwert, zeile = 1; while ( y + x < oberegrenze ) cout << zeile << ". Zeile: " << (y + x) * 2 <<endl; x++; y++; zeile++; 1. Zeile: 18 2. Zeile: 22 3. Zeile: 26 4. Zeile: 30 5. Zeile: 34 (5 Punkte) zeile = 1; for ( x = 0; x <= oberegrenze; x = x + 4 ) cout << "Ausgabe " << zeile << ": "; for ( y = oberegrenze; y > 0; y = y - 4 ) cout << (x * 2) + y << " "; cout << endl; zeile++; cout << endl; Ausgabe 1: 19 15 11 7 3 Ausgabe 2: 27 23 19 15 11 Ausgabe 3: 35 31 27 23 19 Ausgabe 4: 43 39 35 31 27 Ausgabe 5: 51 47 43 39 35 (10 Punkte)

Seite 3 von 10 3. Aufgabe ( / 4 Pkt.) Gegeben ist folgende Wahrheitstabelle: x y z f1(x,y,z) f2(x,y,z) f3(x,y,z) f4(x,y,z) 1 1 1 1 1 0 0 1 1 0 0 1 0 1 1 0 1 0 0 1 1 1 0 0 1 1 1 1 0 1 1 1 1 0 0 0 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 0 1 1 1 0 Geben Sie bitte die Boole schen Funktionen an, die die Bedingungen erfüllen, wobei nur die booleschen Operatoren "und", "oder", "nicht" erlaubt sind. f1 (x,y,z) = xyz + x!y!z +!xyz +!x!yz +!x!y!z ===> yz +!y!z +!xz f2 (x,y,z) = xyz + xy!z + x!y!z +!xyz +!xy!z +!x!y!z ===> y +!y!z f3 (x,y,z) = x!yz + x!y!z +!xy!z +!x!y!z ===> x!y +!x!z f4 (x,y,z) = xy!z + x!yz + x!y!z +!xy!z +!x!yz ===> y!z + x!y +!yz

Seite 4 von 10 4. Aufgabe ( / 9 Pkt.) a) Skizzieren und beschreiben Sie kurz die Wirkungsweise der System-Software- Komponenten (Compiler, Debugger, Editor, Linker), die man benötigt, um von einem Quellprogramm-Entwurf zum lauffähigen Maschinenprogramm zu kommen. Nennen Sie jeweils Beispiele und beachten Sie dabei die richtige Reihenfolge. ( 6 Punkte) Editor: Erstellen/Modifizieren des Programmtextes (Header- und Quellcode-Dateien). Beispiele: Editor in Visual C++ Express, notepad jeweils 1,5 Punkte Compiler: Linker: Debugger: Programmtext (Quellcodedatei) übersetzen, dabei Objectcode erzeugen. Nur ein vollständig fehlerfreies Programm kann in Objectcode übersetzt werden. Beispiele: Compiler in Visual C++ Express, gcc, g++, cc Ausführbares Programm erzeugen (aus den zuvor erzeugten Objectcode-Dateien). Beispiele: Linker in Visual C++ Express, gcc, g++, cc Programm ausführen und testen. Der Debugger ist nicht nur zur Lokalisierung von Programmierfehlern, sondern auch zur Analyse eines Programms durch Nachvollzug des Programmablaufs hilfreich. Beispiele: Debugger in Visual C++ Express, gdb, dbx b) Was bedeutet rekursive Funktion? Nennen Sie Anwendungsbeispiele. ( 3 Punkte ) Eine rekursive Funktion ist eine Funktion, die sich selbst wieder aufruft. Beispiele: Fakultätsberechnung Fibonacci-Zahlen

Seite 5 von 10 5. Aufgabe ( / 11 Pkt.) a) Welche Ausgaben liefert das folgende Programm an Bildschirmausgaben? (11 Punkte) #include <iostream> using namespace std; int main() int info[10] = 9, 12, 13, 15, 18, 21, 23, 24,27, 30 ; int n = 10, i; int erg = 0; char c; //Verarbeitung + Ausgabe for ( i = 0; i < n; i++) c = '-'; if ( 0 == (info[i] % 3 ) ) c = '*'; erg = erg + info[i]; cout << "c = " << c << " cout << "Ergebnis = " << erg << endl; return 0; info = " << info[i] << endl; c = * info = 9 c = * info = 12 c = - info = 13 c = * info = 15 c = * info = 18 c = * info = 21 c = - info = 23 c = * info = 24 c = * info = 27 c = * info = 30 Ergebnis = 156

Seite 6 von 10 6. Aufgabe ( / 15 Pkt.) Geben Sie für die folgende umgangssprachlich beschriebene Anweisung die Umsetzung in ein Teil eines Ablaufdiagramms (Flußdiagramms) oder einen Strukturblock (Struktogramm) (6 Punkte) sowie in einen Teil eines C/C++-Programms an: Was wird ausgegeben, wenn der Programmausschnitt so ausgeführt wird? (6 Punkte) (3 Punkte) Setze a auf 11 Setze b auf 35 Solange (a den Wert kleiner gleich 40) und (b den Wert kleiner gleich 50) hat, wiederhole die folgenden Anweisungen Falls a gleich b ist Setze b auf 60 Ausgabe von b sonst Ausgabe von a Erhöhe a um 12 a) 6 Punkte b) a = 11; b = 35; while ( ( a <= 40 ) && ( b <= 50 ) ) if ( a == b ) b = 60; cout << "b = " << b << endl; else cout << "a = " << a << endl; a = a + 12; c) 6 Punkte 3 Punkte a = 11 a = 23 b = 60

Seite 7 von 10 7. Aufgabe ( / 20 Pkt.) Für ein Straßenkataster sollen für maximal 1234 Häuser Informationen gespeichert werden, die alle nach der gleichen Weise wie folgt strukturiert sind: Hausadresse Dachform Baujahr Haus Lage Vorname Strasse Eigentuemer Nachname Plz Preis Adresse Dabei gelten folgende Beschreibungen: Dachform besitzt den Wertevorrat: flach, giebel, pult, walm Baujahr ist eine ganze Zahl Preis ist eine reelle Zahl Eigentuemer enthält die Elemente: Vorname ist max. 25 Zeichen lang Nachname ist max. 25 Zeichen lang Adresse enthält die folgenden Elemente: Strasse ist max. 22 Zeichen lang Plz ist eine 5-stellige Zahl Ort ist max. 22 Zeichen lang Hausadresse ist vom gleichen Aufbau wie die Eigentuemer-Adresse Lage besitzt den Wertevorrat: hang, zentrum, randlage, flussnah Ort a) Beschreiben Sie in C/C++ diesen Datentyp vollständig (alle notwendigen Angaben) (11 Punkte) enum mydachform flach, giebel, pult, walm ; enum mylage hang, zentrum, randlage, flussnah ; struct myadresse string strasse; long plz; string ort; ; struct myeigentuemer string vorname; string nachname; myadresse adresse ; 1 Punkt 2 Punkte 2 Punkte

Seite 8 von 10 struct haus mydachform dachform; int baujahr; double preis; myeigentuemer eigentuemer; myadresse hausadresse; mylage lage; ; 6 Punkte b) Zeigen Sie in einem Hauptprogramm, wie Ihr Datentyp instantiiert wird und zeigen Sie an untenstehendem Beispiel, wie ein neues Haus an der 12 Stelle der Liste in die Variablen eingetragen wird: (9 Punkte) Straße (Hausadresse): Weserstr. 23 PLZ (Hausadresse): 64331 Ort (Hausadresse): Weiterstadt Name (Eigentuemer): Rot Vorname (Eigentuemer): Peter Straße (Eigentuemer): Elbestr. 47 PLZ (Eigentuemer): 64367 Ort (Eigentuemer): Muehltal Lage: zentrum Preis: 21545 EUR Baujahr: 2002 Dachform: pult haus liste[1234]; 9 Punkte liste[11].hausadresse.strasse = "Weserstr. 23"; liste[11].hausadresse.plz = 64331; liste[11].hausadresse.ort = "Weiterstadt"; liste[11].eigentuemer.nachname = "Rot"; liste[11].eigentuemer.vorname = "Peter"; liste[11].eigentuemer.adresse.strasse = "Elbestr. 47"; liste[11].eigentuemer.adresse.plz = 64367; liste[11].eigentuemer.adresse.ort = "Muehltal"; liste[11].lage = zentrum; liste[11].preis = 21545.0; liste[11].baujahr = 2002; liste[11].dachform = pult;

Seite 9 von 10 8. Aufgabe ( / 20 Pkt.) a) Formulieren Sie eine Funktionsdeklaration mittel, die für ein gegebenes Array V mit n reellen Komponenten V i den Mittelwert mw, größten Wert max sowie den kleinsten Wert min ermittelt. Ein- und Ausgabegrößen sollen als Parameter (nicht als Return-Wert) übergeben werden. (3 Punkte) void mittel( double [], int, double &, double &, double & ); void mittel( double V[], int anz, double &mw, double &min, double &max ); b) Man gebe die Implementierung dieser Funktion an. Zur Berechnung des Mittelwertes verwende man die bekannte Formel: (11 Punkte) n mw = ( v i ) / n i=1 void mittel( double V[], int anz, double &mw, double &min, double &max ) int i; double summe = 0; for ( i = 0; i < anz; i++ ) summe = summe + V[i]; // Minimum und Maximum bestimmen if ( min > V[i] ) min = V[i]; else if ( max < V[i] ) max = V[i]; else ; // nichts zu tun // ende for Schleife // Mittelwert berechnen mw = summe / anz;

Seite 10 von 10 c) Implementieren Sie das main-programm mit einem Funktionsaufruf Ihrer Funktion, so dass mit deren Hilfe für die 50 gegebenen Werte einer aktuellen Messreihe die Größen mw, max und min bestimmt werden. Die Messreihe sei in einem Datenarray v [100] gespeichert. Die Eingabe der Messwerte ist nicht gefordert! (6 Punkte) #include "function.h" #include <iostream> using namespace std; int main() const int maxanz = 100; int anzahl = 50; double V[maxAnz]; double mw, min, max; // Eingabe der Werte nicht gefordert // Aufruf der Funktion mittel mittel ( V, anzahl, mw, min, max ); // Ausgabe cout << "Der Mittelwert ist : " << mw << endl; cout << "Der Maximalwert ist: " << max << endl; cout << "Der Minimalwert ist: " << min << endl; return 0;