Klausur: Informatik I am 06. Februar 2009 Gruppe: D 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 2014/2015 Wirtschaftsingenieur Bachelor 4. Aufgabe Datenstruktur, Dateieingabe und -ausgabe

Hochschule Darmstadt Informatik-Praktikum (INF 1) WS 2015/2016 Wirtschaftsingenieur Bachelor 5. 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.

Objektorientiertes Programmieren für Ingenieure

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

Klausur in Programmieren

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

Informatik Repetitorium SS Volker Jaedicke

Angewandte Mathematik und Programmierung

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

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

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

Einführung in die Programmierung

Klausur in Programmieren

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

RO-Tutorien 3 / 6 / 12

Klausur in Programmieren

JAVA-Datentypen und deren Wertebereich

Programmieren in C/C++ und MATLAB

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

Programmierung in C. Grundlagen. Stefan Kallerhoff

2. Programmierung in C

Elementare Datentypen in C++

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

GI Vektoren

Welche Informatik-Kenntnisse bringen Sie mit?

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

Programmierung mit C Zeiger

FB Informatik. Fehler. Testplan

Einstieg in die Informatik mit Java

Grundstruktur eines C-Programms

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

Grundlagen der Programmierung

Zeiger: Der Adressoperator &

Grundlagen. Die Komponenten eines C Programms. Das erste Programm

Übungen zu C++ Kapitel 1

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

5. Elementare Befehle und Struktogramme

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

Einführung in die Programmierung Wintersemester 2011/12

Klausur in Programmieren

Tutoraufgabe 1 (Zweierkomplement): Lösung: Programmierung WS16/17 Lösung - Übung 2

Escape-Sequenzen. Dr. Norbert Spangler

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

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

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

Programmieren in C/C++ und MATLAB

Anweisungsblöcke (dazu zählen auch Programme) werden in geschweifte Klammern eingeschlossen.

C allgemein. C wurde unter und für Unix entwickelt. Vorläufer sind BCPL und B.

Einführung in die Programmierung (EPR)

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

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

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

4. Einfache Programmstrukturen in C Einfache Programmstrukturen in C

Übungspaket 29 Dynamische Speicherverwaltung: malloc() und free()

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

Probeklausur: Programmierung WS04/05

Informatik für Elektrotechnik und Informationstechnik

Fachhochschule Augsburg. Ingenieurinformatik SS05 Seite 1/8

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

Deklarationen in C. Prof. Dr. Margarita Esponda

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

AuD-Tafelübung T-B5b

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

Einführung in die Programmierung

Einführung in die Informatik für Hörer aller Fakultäten II. Andreas Podelski Stephan Diehl Uwe Waldmann

Einstieg in die Informatik mit Java

Zeiger, Arrays und Strings in C und C++

3. Semester : 1. Prüfung

Javaprogrammierung mit NetBeans. Variablen, Datentypen, Methoden

CEN1112 Labor Software-Entwicklung

Übung 9. Quellcode Strukturieren Rekursive Datenstrukturen Uebung 9

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

Dr. Monika Meiler. Inhalt

Dr. Monika Meiler. Inhalt

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2

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

Präzedenz von Operatoren

2. Computer (Hardware) K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16

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

C# 2000 Expression Beispielcodes für Konsolen- und Formularanwendung

Kurzeinführung in C++

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

HS Ravensburg-Weingarten Schriftlich Prüfung Programmieren

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

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

1.2 Attribute und Methoden Aufbau einer Java-Klasse:

Klausurvorbereitung Lösung

Erste Schritte der Programmierung in C

Benutzerdefinierte und zusammengesetzte Datentypen

Einführung in die Programmierung

JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML.

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

Kontrollstrukturen und Funktionen in C

Speicher und Adressraum

Arbeiten mit JavaKara

Zeichendarstellung. Zeichen sind Zahlen (in C) Zeichen und switch

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 ( / 12 Pkt.) Was liefert das folgende Programm an Bildschirmausgaben? #include <iostream> using namespace std; int main() int a = 1, b = 10, z = 1; while ( a + b < 25 ) cout << z << ". Zeile: " << a + (b - 2) <<endl; a = a + 2; b++; 1. Zeile: 9 1. Zeile: 12 1. Zeile: 15 1. Zeile: 18 1. Zeile: 21 (4 Punkte) for ( a = 3; a < 8; a++ ) cout << "Ausgabe " << z << ": "; for ( b = 20; b > 0; b = b - 4 ) cout << a + b << " "; cout << endl; cout << endl; Ausgabe 1: 23 19 15 11 7 Ausgabe 1: 24 20 16 12 8 Ausgabe 1: 25 21 17 13 9 Ausgabe 1: 26 22 18 14 10 Ausgabe 1: 27 23 19 15 11 (8 Punkte)

Seite 2 von 10 2. Aufgabe ( / 11 Pkt.) Gegeben sind das folgende Haupt- und Unterprogramm: #include <iostream> using namespace std; void funktion( int & zahl ) int temp = 2; bool ausgabe = false; while ( ( temp <= zahl ) && ( false == ausgabe ) ) if ( 0 == ( zahl % temp ) ) if ( zahl == temp ) cout << "* " << temp; else cout << "* " << temp << " "; ausgabe = true; zahl = zahl / temp; funktion( zahl ); else temp++; cout << endl; int main () int zahl = 30; cout << "Funktionsaufruf mit " << zahl << " = "; cout << "1 "; funktion( zahl ); return 0; a) Was wird ausgegeben, wenn das Programm mit einen Wert 30 für die Variable zahl ausgeführt wird? (8 Punkte) Funktionsaufruf mit 30 = 1 * 2 * 3 * 5

Seite 3 von 10 b) Wie nennt man das Ergebnis? Welche mathematische Funktion ist hier programmiert? (2 Punkte) aufsteigende Primfaktorenzerlegung c) Welche besondere Programmiertechnik wurde im Unterprogramm funktion () verwendet? (1 Punkt) Rekursion 3. Aufgabe ( / 4 Pkt.) Gegeben ist folgende Wahrheitstabelle: a b c f1(a,b,c) f2(a,b,c) f3(a,b,c) f4(a,b,c) 0 0 0 1 1 0 0 0 0 1 1 1 1 0 0 1 0 1 0 0 1 0 1 1 1 0 0 1 1 0 0 0 1 0 0 1 0 1 0 1 1 0 1 1 0 1 0 0 1 1 1 1 1 1 1 1 Geben Sie bitte die Boole schen Funktionen an, die die Bedingungen erfüllen, wobei nur die booleschen Operatoren "und", "oder", "nicht" erlaubt sind. je 1 Punkt f1 (a,b,c) = (!a ) oder ( a und b ) alternativ: (!a) oder b f2 (a,b,c) = (!b ) oder (a und b und!c) f3 (a,b,c) = (!b und c) oder ( a und b und c ) alternativ: (!a und!b und c) oder (a und c) f4 (a,b,c) = b

Seite 4 von 10 4. Aufgabe ( / 6 Pkt.) Beschreiben Sie, wie Variablen deklariert werden müssen, damit sie a) auf dem Heap, (2 Punkte) als dynamische (Zeiger-) Variable; in C/C++: z.b.: int *ptr = new int, b) auf dem Stack, (2 Punkte) innerhalb, also lokal oder als Übergabeparameter c) im Datensegment angelegt werden. (2 Punkte) global oder static 5. Aufgabe ( / 10 Pkt.) a) Wer oder was sind ALU und FPU? Wofür werden diese benötigt? (3 Punkte) ALU: Arithmetic Logic Unit Arithmetisch logische Einheit führt arithmetische und logische Rechenoperation durch FPU: Floating Point Unit Fließkommarechner; Co-Prozessor führt Berechnungen mit Gleitkommazahlen durch Beides sind Bausteine/Bauteile in der CPU (Central Processing Unit) = Prozessors b) Skizzieren und beschreiben Sie den Aufbau des Basisrechners nach John v. Neumann. Geben Sie Beispiele für die einzelnen Komponenten. (7 Punkte) Eingabeeinheit Prozessor (mit Rechenwerk und Steuerwerk) Ausgabeeinheit Speichereinheit

Seite 5 von 10 Daten werden über die Eingabeeinheit (z.b. Tastatur, Maus) in den Rechner eingegeben. Diese Daten werden im Prozessor ( CPU = Central Processing Unit ) verarbeitet (z.b. mathematische Berechnungen, logische Vergleiche). Die Verarbeitung besteht aus Anweisungen, die nacheinander ausgeführt werden, dem Programm. Die Speichereinheit (Arbeitsspeicher) wird benötigt, damit das Programm die Daten während dieser Verarbeitung ablegen/festhalten kann. Das Ergebnis der Datenverarbeitung wird über die Ausgabeeinheit (z.b. Monitor, Drucker, Datei) ausgegeben. 6. Aufgabe ( / 20 Pkt.) a) Formulieren Sie eine Funktionsdeklaration, die für ein gegebenes Array V mit n reellen Komponenten V i den Mittelwert mw berechnet und zugleich das Minimum max ermittelt. Einund Ausgabegrößen sollen als Parameter (nicht als Return-Wert) übergeben werden. (4 Punkte) void funktion( double V[], int n, double *mw, double *max ); b) Man gebe die Implementierung dieser Funktion an. Zur Berechnung des Mittelwertes verwende man die bekannte Formel: (8 Punkte) n mw = ( v i ) / n i=1 void funktion( double V[], int n, double *mw, double *max ) int i; double summe = v[0]; 3 Punkte *max = V[0]; for (i = 1; i < n; i++ ) summe = summe + V[i]; if ( V[i] < *max ) *max = V[i]; else ; // nichts zu tun *mw = summe / n; 4 Punkte 1 Punkt

Seite 6 von 10 c) Implementieren Sie das main-programm mit einem Funktionsaufruf Ihrer Funktion, so dass mit deren Hilfe für die 80 gegebenen Werte einer aktuellen Messreihe die Größen mw und max bestimmt werden. Die Messreihe sei in einem Datenarray v [160] gespeichert. Die Eingabe der Messwerte ist nicht gefordert!. (8 Punkte) #include "Funktionen.h" #include <iostream> using namespace std; int main() const int maxanzahl = 160 int anzahl = 80; double v[maxanzahl] = /* 50 Messwerte */ ; double mw, max; // Aufruf der Funktion func( v, anzahl, &mw, &max ); cout << endl; cout << "Der Mittelwert = " << mw << endl; cout << "Das Minimum = " << max << endl; 2 Punkte 2 Punkte 2 Punkte 2 Punkte return 0; 7. Aufgabe ( / 14 Pkt.) a) Geben Sie die binäre Darstellung des dezimalen Zahlenwertes 47 an (inklusive Rechenweg). Wie wird diese Zahl bei einem Integer-Format mit 2 Byte im Rechner gespeichert? (3 Punkte) 47 / 2 = 23 R 1 23 / 2 = 11 R 1 11 / 2 = 5 R 1 5 / 2 = 2 R 1 2 / 2 = 1 R 0 1 / 2 = 0 R 1 ==> 101111 ==> 00000000 00101111

Seite 7 von 10 b) Berechnen Sie binär (inklusive Rechenweg) und schreiben Sie das Ergebnis als Binär- und als Dezimalzahl. 110011 * 111 (4 Punkte) 110011 * 111 ------------- 110011 110011 110011 ------------- 101100101 Probe: 1 + 4 + 32 + 64 + 256 = 357 110011 2 = 51 10 und 111 2 = 7 10 51 * 7 = 357 c) Geben Sie die Darstellung des dezimalen Zahlenwertes 93 im Zahlensystem mit der Basis 8 an (inklusive Rechenweg und Proberechnung) (3 Punkte). 93 / 8 = 11 R 5 11 / 8 = 1 R 3 1 / 8 = 0 R 1 ==> 135 8 ==> Probe: 5 * 8 0 + 3 * 8 1 + 1 * 8 2 = 5 + 24 + 64 = 93 d) Warum können Buchstaben und sogar Zeichenketten in der Programmiersprache C/C++ aufbzw. absteigend sortiert werden? (4 Punkte) Für jedes Zeichen (Buchstaben) gibt es genau einen entsprechenden Zahlenwert. Diese Zuordnung ist in der so genannten ASCII-Tabelle aufsteigend von a bis z und A bis Z abgelegt. Eigentlich werden also die entsprechenden Zahlenwerte miteinander verglichen. Zeichenketten werden zum Vergleich in die einzelnen Zeichen "zerlegt".

Seite 8 von 10 8. Aufgabe ( / 23 Pkt.) Für einen Kneipenführer sollen für maximal 80 Bierkneipen Informationen gespeichert werden, die alle nach der gleichen Weise wie folgt strukturiert sind: Besitzer Anrede Bierkneipe Tische Bierkarte Biersorte Menge Name Adresse Strasse PLZ Sitze Preis Strasse Adresse PLZ Dabei gelten folgende Beschreibungen: Tische ist eine ganze Zahl Sitze ist eine ganze Zahl Besitzer enthält die folgenden Elemente: Anrede besitzt den Wertevorrat: Frau, Herr, Eheleute Name ist max. 35 Zeichen lang Adresse siehe unter Adresse! Adresse enthält die folgenden Elemente: Strasse ist max. 22 Zeichen lang Plz ist eine 5-stellige Zahl Bierkarte enthält die folgenden Elemente: Biersorte besitzt den Wertevorrat: Pils, Export, Koelsch, Weizen, Bock Menge ist eine relle Zahl (z.b. 0.3, 0.5, ) Preis ist eine reelle Zahl

Seite 9 von 10 a) Beschreiben Sie in C/C++ diesen Datentyp vollständig (alle notwendigen Angaben) (12 Punkte). enum myanrede Frau, Herr, Eheleute ; enum mybiersorte Pils, Export, Koelsch, Weizen, Bock; 2 Punkte struct myadresse char strasse[22]; int plz; ; // oder string strasse; 1 Punkt struct mybesitzer myanrede anrede; string name; // oder char name[35]; myadresse adresse; ; 3 Punkte struct mybierkarte mybiersorte biersorte; float menge; float preis; ; 3 Punkte struct bierkneipe int tische; int sitze; mybierkarte bierkarte; myadresse adresse; mybesitzer besitzer; ; 3 Punkte

Seite 10 von 10 b) Zeigen Sie in einem Hauptprogramm, wie Ihr Datentyp instantiiert wird und zeigen Sie an untenstehendem Beispiel, wie ein neue Kneipe in die Variablen an die 11. Stelle der Liste eingetragen wird: (11 Punkte) Anrede: Frau Name: Lehmann Strasse (Besitzer): Neckarstr. 27 Plz (Besitzer): 62383 Tische: 27 Sitze 165 Biersorte: Weizen Menge: 0,5 Preis: 3,40 Strasse (Bierkneipe): Spessartring 35 Plz (Bierkneipe): 63452 bierkneipe info[80]; info[10].besitzer.anrede = Frau; info[10].besitzer.name = "Lehmann"; // oder falls char name[35]; // strcpy( info[10].besitzer.name, "Lehmann" ); strcpy( info[10].besitzer.adresse.strasse, "Neckarstr. 27" ); // oder falls string strasse ; // info[10].besitzer.adresse.strasse = "Neckarstr. 27"; info[10].besitzer.adresse.plz = 62383; info[10].tische = 27; info[10].sitze = 165; info[10].bierkarte.biersorte = Weizen; info[10].bierkarte.menge = 0.5; info[10].bierkarte.preis = 3.4; strcpy( info[10].adresse.strasse, "Spessartring 35" ); // oder falls string strasse ; // info[10].adresse.strasse = "Spessartring 35"; info[10].adresse.plz = 63452;