HS Ravensburg-Weingarten Schriftlich Prüfung Programmieren

Ähnliche Dokumente
HS Ravensburg-Weingarten Schriftlich Prüfung Programmieren

FH Ravensburg-Weingarten Schriftlich Prüfung Programmieren

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

FH Ravensburg-Weingarten Schriftlich Prüfung Programmieren

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

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

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

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

Hinweise zur Prüfung Programmieren WS0304 Seite 1. Schreiben Sie folgende For-Schleife in eine äquivalente While-Schleife um.

Probeklausur Name: (c)

Klausur Informatik WS 2012/13

Klausur Kompaktkurs Einführung in die Programmierung Dr. T. Weinzierl & M. Sedlacek 25. März 2011

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

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.

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

4.2 Programmiersprache C

Einführung in C. Alexander Batoulis. 5. Mai Fakutltät IV Technische Universität Berlin

Teilprüfung Software- und Internettechnologie Programmierkurs 2 Wintersemester 2004/2005

Datum, Uhrzeit: , Uhr Semester: IN1 Note:... Prof. Dr. G. Meixner

Martin Unold INFORMATIK. Geoinformatik und Vermessung

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

7 Funktionen. 7.1 Definition. Prototyp-Syntax: {Speicherklasse} {Typ} Name ({formale Parameter});

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

Informatik I (D-ITET)

Probeklausur: Programmieren I

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

Klausur Einführung in die Informatik I für Elektrotechniker 16. Juli 2003

Klausur zu Grundlagen der Programmierung in C

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

Klausur Programmiertechnik (Probeklausur 1)

Praxis der Programmierung

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

Nachname:... Vorname:... MatrNr.:... Klausur PR2. int main() { char Text[] = "Sehr geehrte Damen und Herren!"; char *tmp=text;

Klausur Kompaktkurs Einführung in die Programmierung Dr. T. Weinzierl & M. Sedlacek 18. April 2012

Informatik I Einführung in die Informatik und Programmierung. Klausur

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

Prüfung Informatik D-MATH/D-PHYS :00 11:00

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

Herzlich willkommen!

Einführung in die Programmierung

Klausur Programmieren 2 SS 2016

PK-Einstufungstest. 1. Allgemeine Multiple-Choice-Aufgaben

einlesen n > 0? Ausgabe Negative Zahl

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

Kontrollfragen Mikrocontroller Programmiersprache C H1203 Felix Rohrer

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

Repetitorium Programmieren I + II

Einstieg in die Informatik mit Java

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

1. Aufgabe (6 Punkte)

Variablen. Deklaration: «Datentyp» «Variablenname» Datentyp bestimmt Größe in Bytes: sizeof Beispiel: long int v; Größe: 4 Bytes

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

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

Klausur Grundlagen der Programmierung

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

Klausur Programmiersprachen SS 2005

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

PK-Einstufungstest. 1. Allgemeine Multiple-Choice-Aufgaben. Aufgabe 1.1. Alle Aufgaben beziehen sich auf Java.

Gedächtnis. Während der Abarbeitung eines Algorithmus müssen sich Dinge gemerkt werden bzw. auf Dingen wird gerechnet. Zugriff.

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

printf("%c \n", 'd'); printf("%lx \n", 32L); printf("%o \n", 64); printf("%f \n", 1.0E-2); printf("%d \n", '\r'); printf("%f \n", 1.0/2.

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

Programmierung für Mathematik (HS13)

Zusammenfassung des Handzettels für Programmieren in C

Algorithmen und Datenstrukturen

Programmierung mit C Zeiger

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

RO-Tutorien 3 / 6 / 12

Einführung Sprachfeatures Hinweise, Tipps und Styleguide Informationen. Einführung in C. Patrick Schulz

Aufgabe 1.1. Wählen Sie jene Variablendeklarationen mit Initialisierungen aus, die in Java hinsichtlich der Typen korrekt sind:

WS2018/ Oktober 2018

Kontrollfluss. man Verzweigungen und Sprünge. o bisher linear (von oben nach unten) o Für interessante Programme braucht

PK-Einstufungstest. 1. Allgemeine Multiple-Choice-Aufgaben. Alle Aufgaben beziehen sich auf Java.

Einstieg in die Informatik mit Java

Klausur in Programmieren

Java 8. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Oktober 2014 JAV8

Informatik Repetitorium SS Volker Jaedicke

Dateizugriff unter C

Die Programmiersprache C Eine Einführung

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

Lernteam OOP3 SW Programmieren 1 - H1103 Felix Rohrer

Teil 5: Zeiger, Felder, Zeichenketten Gliederung

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

Programmierung und Angewandte Mathematik

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

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

Grundlagen. Die Komponenten eines C Programms. Das erste Programm

Institut für Programmierung und Reaktive Systeme 2. Februar Programmieren I. Übungsklausur

Im Windows Betriebssystem sind Dateien eindeutig gekennzeichnet durch ihren Pfad, Dateinamen und nach einem Punkt die Dateierweiterung.

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

RO-Tutorien 15 und 16

Welche Informatik-Kenntnisse bringen Sie mit?

Name:... Matr.-Nr... Bearbeitungszeit: 120 Minuten. Lesen Sie die Aufgaben jeweils bis zum Ende durch; oft gibt es hilfreiche Hinweise!

Viel Erfolg bei der Bearbeitung der Aufgaben!

Vorlesung Objektorientierte Programmierung Klausur

Transkript:

HS Ravensburg-Weingarten Schriftlich Prüfung Programmieren Prof. Dr. M. Zeller Datum, Zeit, 08:00 10:00 Uhr (120 min) Aufgabenblätter 12 Seiten (einschl. Deckblatt) erreichbare Punktzahl 58 zugelassene Hilfsmittel A (s. Prüfungsplan) Studiengang Prf. Nr. Raum AI 1804 C004 IK 2138 C004 WI 4004 D002 Matrikelnummer: Hinweise: Schreiben Sie bitte Name und Matrikelnummer auf jedes Aufgabenblatt. Schreiben Sie Ihre Lösung zu den Aufgaben auf den freien Platz, direkt anschließend an die Fragestellungen. Wenn Sie zusätzliche Blätter verwenden, so schreiben Sie bitte Name und Matrikelnummer auf jedes Blatt. Schreiben Sie lesbar! Falls Sie es wünschen, dass Ihr Prüfungsergebnis auf einer Liste mit Matrikelnummern und Zensuren ausgehängt bzw. per Internet veröffentlicht wird, unterschreiben Sie bitte folgende Erklärung. Ich bin damit einverstanden, dass mein Klausurergebnis auf diese Weise veröffentlicht wird. Unterschrift: Bitte haben Sie dafür Verständnis, dass aus Gründen das Datenschutzes keine telefonischen Auskünfte gegeben werden können. Vom Prüfer auszufüllen: Aufgabe 1 2 3 4 5 Summe Max. Punkte 13 6 7 22 10 58 Punkte

Seite 2 (12) Vorbemerkung 1. Die Klausur ist ziemlich umfangreich. Lassen Sie sich nicht verunsichern, Sie benötigen nicht alle Punkte für die Note 1.0; Sie benötigen weniger als die Hälfte der Punkte für die Note 4,0. Tipp: Aufgabe 2 ist m.e. relativ schwierig evtl. sollten Sie sie zuletzt bearbeiten. 2. Bitte nehmen Sie sich sofern noch nicht geschehen in den nächsten Tagen ein paar Minuten Zeit und bewerten Sie die Vorlesung und das Praktikum Programmieren. Die Zugangsdaten zum Umfragesystem der FH wurden Ihnen vor einigen Wochen (28.06.2005) per E-Mail zugesendet. Aufgabe 1 Die Funktion countchar() zählt bestimmte Buchstaben in einem String. Die Funktion hat drei Parameter: start: Der Wert dieses Parameter gibt die Stelle im String line an, ab dem die Funktion zählen soll. cntchar: Der Vergleichsbuchstabe line: Der String in dem die Funktion suchen soll Die Funktion soll im String line nach dem Buchstaben cntchar suchen, aber erst ab der durch start angegebenen Stelle. Wenn start den 4 hat und cntchar den Wert a, soll die Funktion feststellen, wie oft der Buchstabe a ab dem 4.(!) Buchstaben des Strings line vorkommt. Die Funktion zählt also, wie oft der Buchstabe cntchar im Rest von line enthalten ist und gibt diesen Wert zurück (s. Bsp. unten). Das Programm: #include <stdio. h> int countchar( int start, char cntchar, char l i n e [ ] ) { : int main(void){ char testchar = a ; int result ; result = countchar (4, testchar, aabaabab ) ; printf ( \n es sind %d Buchstaben %c enthalten \n, result, testchar ) ; return 0; Ausgabe des Programms: es sind 3 Buchstaben a enthalten

Seite 3 (12) 1.1 (5 Punkte) Vervollständigen Sie die Funktion. Sie dürfen annehmen, dass der String line stets mehr als start Buchstaben enthält. int countchar( int start, char cntchar, char l i n e [ ] ) { 1.2 switch-anweisung (4 Punkte) Ersetzen Sie folgende switch-anweisung durch äquivalente if-anweisungen. Die Variable testchar ist definiert (Datentyp char). switch-anweisung: switch ( testchar ){ case a : printf ( \n found an a ); break ; case b : printf ( \n found a b ); default : printf ( \n found nothing ); Äquivalentes Programmstück mit if-anweisung(en): if ( testchar == a ){

Seite 4 (12) 1.3 if-anweisung (4 Punkte) Gegeben ist folgende Formel der Aussagenlogik: (a > b) (b = c) Schreiben Sie eine if-anweisung, die diesen Ausdruck auswertet und entsprechend verzweigt. D. h. wenn die Formel den Wert true liefert, soll das Programmstück den String true auf dem Bildschirm ausgeben, ansonsten den String false. Die Variablen a, b und c sind als int definiert. if { printf ( \n true ) ; else { printf ( \n f a l s e ); Schreiben Sie die if-anweisung um, so dass kein!-zeichen vor einer Klammer steht. Die Anweisung soll aber ebenfalls die oben gegebene logische Formel realisieren. if { printf ( \n true ) ; else { printf ( \n f a l s e );

Seite 5 (12) Aufgabe 2 Gegeben ist folgendes C-Programm: #include <stdio. h> char mark = B ; float boo( int num, char test ){ float result = num / test ; printf ( \n result = %f, result ) ; test = mark ; test = NULL; return result ; char far (char mark, int values [ ] ) { float test = boo( values [ 1 ], &mark ) ; printf ( \n test = %f, mark = %c, test, mark ) ; if ( test > 0.5){ values [ 1 ] = 99; else { values [ 1 ] = 1; return mark + 1; int main(void){ char mark = a ; int numbers [ ] = {1, 2, 3, 4 ; int i ; mark = far (mark, numbers ) ; printf ( \n main : mark = %c \n, mark ) ; for ( i = 0; i < 4; i++){ printf ( %d,, numbers [ i ] ) ; return 0; Der ASCII-Code von a ist 97, der von A ist 65. 2.1 (6 Punkte) Welche Ausgabe erzeugt das Programm?

Seite 6 (12) Aufgabe 3 Eine Funktion test() erhält drei int-werte als Parameter. Die Funktion soll die Summe der drei Parameter berechnen und den Durchschnitt. Außerdem soll die Funktion prüfen, ob alle drei Parameter gleich groß sind. Die Funktion soll drei Werte an die aufrufende Funktion zurückliefern: die Summe als int-wert der Durchschnitt als float-wert ein char-wert, der angibt ob alle drei Parameter gleich groß sind ( g für gleich groß, u für ungleich). 3.1 (7 Punkte) Definieren Sie eine geeignete Datenstruktur für den Rückgabewert der Funktion test() und ergänzen Sie die Funktion testresult(). struct testresult { ; typedef struct testresult T RESULT; T RESULT test ( int num1, int num2, int num3){ T RESULT result ; return result ;

Seite 7 (12) Aufgabe 4 Gegeben ist folgendes Programm: #include <stdio. h> struct persdata { char name [ 3 0 ] ; int matrnr ; char std gang [ 3 0 ] ; ; typedef struct persdata PERS DATA; struct ergebnis { char fach [ 1 0 ] ; float bewertung ; struct ergebnis rest ; ; typedef struct ergebnis ERGEBNIS; struct student { PERS DATA person ; ERGEBNIS noten ; ; typedef struct student STUDENT; void printstud (STUDENT student ){ : : int main (void){ PERS DATA pers = { Anna, 12345, AI ; ERGEBNIS erg1 = { PROG, 1.7, NULL; ERGEBNIS erg2 = { MATH1, 2.7, NULL; ERGEBNIS erg3 = { ENGL, 3.3, NULL; ERGEBNIS erg4 = { INET1, 2.0, &erg1 ; STUDENT stud = {pers, &erg2 ; erg2. rest = &erg4 ; erg1. rest = &erg3 ; printstud ( stud ) ; p r intf ( \n ) ; return 0;

Seite 8 (12) 4.1 (4 Punkte) Skizzieren Sie die Datenstruktur, die in der Funktion main() angelegt wird. Zeichnen Sie für jede Variable, die eine Struktur darstellt ein Kästchen, für jede Komponente der Struktur ein Fach innerhalb des Kästchens. Zeichnen Sie für jeden Pointer einen Pfeil. Es genügt, wenn Sie die Namen der Variablen und die Namen der Komponenten eintragen. Sie müssen nicht für jede Komponenten den Wert eintragen. Beispiel für ein Variable name der Variable Komponente Komponente : : : 4.2 (5 Punkte) Die folgenden Ausdrücke bezeichnen entweder einen Datentyp oder eine Variable. Kreuzen Sie jeweils an, ob es sich bei dem Ausdruck um einen Typ oder um eine Variable handelt. Wenn es sich um eine Variable handelt, so geben Sie auch den Typ der Variablen an. Ausdruck Typ Variable wenn Variable, welcher Typ? ERGEBNIS pers.std_gang erg1.bewertung &pers PERS_DATA

Seite 9 (12) 4.3 (5 Punkte) Ergänzen Sie die Funktion printstud() gemäß dem vorgegebenen Prototyp. Die Funktion soll zu einem Studenten folgendes auf dem Bildschirm ausgeben: Name und Matrikelnummer zu jedem gespeicherten Prüfungsergebnis den Namen des Faches und die Note Die Datenstruktur darf dabei nicht verändert werden. void printstud (STUDENT student ){ 4.4 (5 Punkte) Nehmen Sie an, die Prüfungsergebnisse eines Studenten werden in einem Array gespeichert ERGEBNIS ergebnisse[]; bis sie auf eine Datei geschrieben werden. Ergänzen Sie die Funktion saveergs() gemäß dem unten angegebenen Rahmen. Die Funktion soll folgendes leisten: Sie öffnet eine Datei. Der Datei-Name ist der Wert des Parameters filename. Sie schreibt so viele Ergebnisse aus dem Array in die Datei, wie im Parameter cnt angegeben. Sie schließt die Datei wieder. Beispiel: Bei einem Aufruf saveergs(ergebnisse, 3, myfile.dat ); soll die Funktion die ersten 3 Ergebnisse aus dem Array ergebnisse in die Datei myfile.dat schreiben.

Seite 10 (12) void saveergs (ERGEBNIS erg [ ], int cnt, char filename [ ] ) { int savecnt ; FILE outfile = fopen (......,... ) ; if (..........){ printf ( \n can t open f i l e %s,...... ) ; savecnt = fwrite (...,......,...,...... ) ; f c l ose (... ) ; return ; Wie können/sollten Sie prüfen, ob ein Schreibvorgang erfolgreich war? 4.5 (3 Punkte) Das Programm soll nun dynamische Speicherverwaltung einsetzen. Im folgenden Programmfragment sind die Variablen myname, mynum, mystdgang, myfach und mynote passend definiert und mit Werten belegt. Das Programmfragment soll die Daten eines Studenten, der genau eine Prüfung geschrieben hat, in einer dynamischen Variable anlegen. STUDENT mystud = (STUDENT ) malloc ( sizeof (STUDENT) ) ; strncpy (mystud >person. name, myname, 30); mystud >person. matrnr = mynum; strncpy (mystud >person. std gang, mystdgang, 30); mystud >noten >bewertung = mynote ; strncpy (mystud >noten >fach, myfach, 10); Enhält das Programmfragment einen grundsätzlichen Fehler? Wenn ja, welchen, wie lässt er sich beheben?

Seite 11 (12) Aufgabe 5 Folgendes Programm mit einer rekursiven Funktion ist gegeben: #include <stdio. h> void bar ( int start, int end, char l i n e [ ] ) { if ( start >= end ){ return ; printf ( \n bar : %c, %c, l i n e [ start ], l i n e [ end ] ) ; bar ( start + 1, end, l i n e ) ; bar ( start, end 1, l i n e ) ; return ; int main(void){ bar (2, 5, abcdef ); printf ( \n ); return 0; 5.1 (5 Punkte) Welche Ausgabe erzeugt das Programm? Ergänzen Sie die folgenden Zeilen; die ersten 5 Zeilen genügen. bar: bar: bar: bar: bar: bar: XXX bar: XXX 5.2 (5 Punkte) Gegeben ist die Definition einer rekursiven Funktion: foo(0) = 1

Seite 12 (12) foo(k) = 1 + foo(k 1)/k k N Schreiben Sie eine rekursiven Funktion in C, die die Funktion foo() realisiert. float foo ( int k){