Nachklausur zu Einführung in die Programmierung 14. Oktober 2008 (SS 2008) Prof. Dr. Franz Schweiggert / Christoph Ott

Ähnliche Dokumente
Klausur zu Einführung in die Programmierung 23. Juli 2008 (SS 2008) Prof. Dr. Franz Schweiggert / Christoph Ott

Klausur zu Grundlagen der Informatik / Allgemeine Informatik I 2. März 2006 (WS 2005/2006) Prof. Dr. Franz Schweiggert / Norbert Heidenbluth

Prüfung Softwareentwicklung I (IB)

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Probeklausur Java Einführung in die Informatik. Wintersemester 2016/2017

Einführung in die Programmierung. (K-)II/Wb17

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2017/18. Vorbereitende Aufgaben

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2016/17. Vorbereitende Aufgaben

JAVA - Methoden,... T.Bosse

JAVA für Nichtinformatiker - Probeklausur -

Wuerfel - augenzahl: int + Wuerfel() + wuerfeln() + gibaugenzahl(): int

Allgemeine Informatik II 14. Juli 2007 (SS 2007) Prof. Dr. Franz Schweiggert / Norbert Heidenbluth

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

Sommersemester Jewgeni Rose. Technische Universität Braunschweig

CoMa 04. Java II. Paul Boeck. 7. Mai Humboldt Universität zu Berlin Institut für Mathematik. Paul Boeck CoMa 04 7.

Probeklausur Java Einführung in die Informatik. Wintersemester 2017/2018

2 Programmieren in Java I noch ohne Nachbearbeitung

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

Programmierung für Mathematik HS11

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

1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays)

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

Einführung in die Programmierung

Aufgabe 1 (12 Punkte)

Anregungen zu Übung 2

Klausur Grundlagen der Programmierung

Erste Java-Programme (Scopes und Rekursion)

PR1-MB, SS10 Seite 1 Hauptklausur, geschrieben am Di

Programmierung für Mathematik (HS13)

Prüfung Softwareentwicklung II (IB)

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

Probeklausur Java Einführung in die Informatik. Wintersemester 2014/2015

Beispiellösung zur Klausur AI2 im Sommersemester 2007

Abschlussklausur. Lösung

Probeklausur zur Vorlesung

Java - Programmierung - Prozedurale Programmierung 1

3. Anweisungen und Kontrollstrukturen

Programmierkurs Java

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Welche Informatik-Kenntnisse bringen Sie mit?

Java Übung. Übung 3. Werner Gaulke. 2. Mai Universität Duisburg-Essen Kommedia, Übung EinPro SS06, Einführung in Java - Übung.

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

1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays)

Dr. Lars Hildebrand Fakultät für Informatik Technische Universität Dortmund

Einführung in die Programmierung für NF MI. Übung 04

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

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

Einfache Sortierverfahren in Java, 1. Version

Dies ist eine Probeklausur, die keine formalen Schlüsse auf die Form, die Struktur oder den Inhalt der endgültigen Klausur zulässt.

Klausur zur Vorlesung: Einführung in die objektorientierte Programmierung mit Java im Wintersemester 2015/16

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

Prüfung Softwareentwicklung I (IB)

Informatik B von Adrian Neumann

Probeklausur Java Einführung in die Informatik. Wintersemester 2014/2015. Musterlösung

Fakultät IV Elektrotechnik/Informatik

Methoden. Gerd Bohlender. Einstieg in die Informatik mit Java, Vorlesung vom

MB2-ALG, SS15 Seite 1 Hauptklausur, geschrieben am

Klausur - Informatik I SS 05. Note: Bearbeitungszeit 120 Minuten Keine Hilfsmittel

Kapitel 2: Grundelemente der Programmierung

Name:... Matr.-Nr... Bearbeitungszeit: 120 Minuten

Test zu Grundlagen der Programmierung Leitung: Michael Hahsler. 21. Juni 2004

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

1. Klausur - Probeklausur

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

Informatik Hochschule Mainz Geoinformatik und Vermessung. Wiederholung. Frohes Fest und Guten Rutsch!

Klausur zur Lehrveranstaltung. Technische Informatik für Ingenieure WS 2009/10

JAVA 06: Gemischte einfache Fragen zu Java

Vordiplom Wirtschaftswissenschaften Allgemeine Informatik I WS 2001/ Februar 2002

EINI LW. Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 15/16

Vorsichtige Programmierer verwenden Inkrement- Operatoren nicht in komplizierteren Ausdrücken

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

Tag 5. Repetitorium Informatik (Java) Dozent: Marius Kamp Lehrstuhl für Informatik 2 (Programmiersysteme)

Klassenvariablen, Klassenmethoden

Übungsstunde 5. Einführung in die Programmierung

Aufgabe 1 Basiswissen zur Vorlesung (8 Punkte)

Test-Klausuraufgaben Softwaretechnik Fachbereich BW, für WINFO

Übungsblatt 13. Abgabe / Besprechung in Absprache mit dem Tutor

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

Javakurs für Anfänger

Klausur zur Lehrveranstaltung. Technische Informatik für Ingenieure WS 2008/09

Vorkurs Informatik WiSe 16/17

Prof. H. Herbstreith Fachbereich Informatik. Leistungsnachweis. Informatik 1 WS 2001/2002

Einführung in die Programmierung für NF. Arrays

Javakurs für Anfänger

Institut für Programmierung und Reaktive Systeme 25. Januar Programmieren I. Übungsklausur

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

Wiederholung JAVA. 1. (Vorbereitung)

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

Die for -Schleife HEUTE. Schleifen. Arrays. Schleifen in JAVA. while, do reichen aus, um alle iterativen Algorithmen zu beschreiben

Musterlösung Stand: 5. Februar 2009

float: Fließkommazahl nach IEEE 754 Standard mit 32 bit

Institut für Programmierung und Reaktive Systeme. Java 2. Markus Reschke

Klausur Software-Entwicklung März 01

Eine JAVA Einführung ... Quellcode:... COMA Übung 3. T.Bosse. A.Griewank. Vorschau JAVA Programme Sprachen Kate

Konstruktor. public Rational(int i) { Zaehler = i; Nenner = 1; }

Vordiplom für Wirtschaftswissenschaften Allgemeine Informatik II SS Juli 2002 Bearbeitungszeit: 120 Minuten BEISPIELLÖSUNG

Transkript:

Nachklausur zu Einführung in die Programmierung 14. Oktober 2008 (SS 2008) Prof. Dr. Franz Schweiggert / Christoph Ott Bearbeitungszeit: 120 Minuten Nicht mit Bleistift oder Rotstift schreiben! Name: Vorname: Matrikelnummer: Nr Max Bewertung 1 6 2 18 (a) 5 xxxxx (b) 2 xxxxx (c) 3 xxxxx (d) 4 xxxxx (e) 4 xxxxx 3 8 4 17 (a) 3 xxxxx (b) 3 xxxxx (c) 3 xxxxx (d) 4 xxxxx (e) 4 xxxxx Nr Max Bewertung 5 5 (a) 1 xxxxx (b) 4 xxxxx 6 12 (a) 3 xxxxx (b) 2 xxxxx (c) 2 xxxxx (d) 2 xxxxx (e) 3 xxxxx Summe 66 Für Ihre Lösungen verwenden Sie bitte den freigelassenen Platz nach der Aufgabenstellung, die Rückseite der jeweiligen Aufgabe oder die angehängte leere Seite unter Angabe der Aufgabennummer. Prüfen Sie zu Beginn, ob Ihre Klausur aus 12 durchnummerierten Seiten besteht. Nennen Sie möglichst alle Annahmen, die Sie gegebenenfalls für die Lösung einer Aufgabe treffen! Insgesamt gibt es 66 Punkte. Zum Bestehen der Klausur sind 33 Punkte erforderlich. Viel Erfolg!

Aufgabe 1 1 Aufgabe 1: Einfaches Java-Programm (6 Punkte) Schreiben Sie ein vollständiges, lauffähiges Java-Programm, das ein ganzzahliges Anfangskapital und einen reellwertigen Zinssatz von der Tastatur (Standardeingabe) entgegennimmt, das (reellwertige) Guthaben nach einem Jahr berechnet und dieses auf dem Bildschirm (Standardausgabe) ausgibt. Geben Sie auch an, mit welchem Befehl Sie das geschriebene Programm auf der Kommandozeile kompilieren und ausführen. import IOulm.*; public class Verzinsen{ public static void main(string[] args){ Urc.readInt(); int startkapital = Urc.getInt(); Urc.readReal(); double zins = Urc.getReal(); double endkapital = (1+zins)*startkapital; Write.Line("Endkapital: "+endkapital); Kompilieren: javac Verzinsen.java Ausführen: java Verzinsen

Aufgabe 2 2 Aufgabe 2: Logik, Datentypen & Kontrollstrukturen (18 Punkte) (a) 5 Punkte Die Zahl 2008 soll in einer Variablen eines geeigneten Datentyps gespeichert werden. Welche der folgenden Datentypen eignen sich hierfür prinzipiell? Weisen Sie sofern möglich die Zahl 2008 einer Variablen des jeweiligen Datentyps in korrekter Java-Syntax zu! char ungeeignet int int i = 2008; double double d = 2008; string string s = 2008 ; boolean ungeeignet int[] int[] i = new int[]2008; (b) 2 Punkte Sie wollen in einer switch-anweisung den Wert einer Variablen abfragen. Welche der oben aufgeführten Datentypen darf die Variable hierfür nur besitzen? Die Variable muss entweder vom Typ int oder vom Typ char sein.

Aufgabe 2 3 (c) 3 Punkte Ersetzen Sie in folgendem Programm die if-else-konstruktion durch eine (!) soweit wie möglich vereinfachte if-anweisung. if (x>y){ if (y==0){ if (x>1) Write.Line("Hola"); else if (x<1) Write.Line("Hola"); else if (y==2*x) Write.Line("Hola"); if (((x>y)&&(y==0)&&(x!=1)) (y==2*x)){ Write.Line("Hola"); (d) 4 Punkte Folgendes Code-Fragment sei gegeben: int[] array = new int[]{12,8,4,2; int a = array[0]; int b = array[array.length-1]; int c = 0; int d = a; while (a>1){ c++; a/=2; Welchen Wert haben folgende Variablen anschließend? a b c d 1 2 3 12

Aufgabe 2 4 (e) 4 Punkte Gegeben sei folgende Methode, die je nach Geschlecht (m/w), Alter (0-99) und Gewicht (0-200) eines Patienten die Artikelnummer des benötigten Impfstoffes zurückliefert. public static int impfen(char gender, int age, double weight){ if((age<16) (!(age<=65))) return 147; if((gender!= w )&&(!(age<16 age>65))) return 113; if((age>=16)&&(age<16 weight>=45)&&(!(weight>=45&&gender== m ))) return 126; return 199; Geben Sie beispielhafte Werte an, mit denen diese Methode aufgerufen werden muss, damit die entsprechenden Rückgabewerte geliefert werden? Geschlecht Alter Gewicht Rückgabewert 147 m 5 100 Rückgabewert 113 m 25 150 Rückgabewert 126 w 25 70 Rückgabewert 199 w 25 40

Aufgabe 3 5 Aufgabe 3: Endlicher Automat (8 Punkte) Mit folgendem endlichen Automaten kann entschieden werden, ob die Ziffernfolge 007 in einem Array enthalten ist: 1 9 0 0 9 1 9 0 0 7 A B C D 1 6,8,9 Schreiben Sie eine Methode, die einen Array von Integern (die ausschließlich Ziffern sind) entgegennimmt und true zurückliefert, falls die Ziffernfolge 007 enthalten ist, beziehungsweise false zurückliefert, falls dies nicht der Fall ist. public static boolean enthalten(int[] array){ char position= A ; for (int i=0; i< array.length; i++){ switch (position){ case A : if (array[i]==0) position= B ; break; case B : if (array[i]==0) position= C ; else position= A ; break; case C : if (array[i]==7) return true; if (array[i]==0); else position= A ; break; default: return false;

Aufgabe 3 6 return false;

Aufgabe 4 7 Aufgabe 4: Methoden fürs Kniffeln (17 Punkte) Beim Würfelspiel Kniffel müssen mit fünf Würfeln verschiedene Ereignisse (wie bspw. Chance, Kniffel, Dreierpasch) gewürfelt werden. Hierzu kann bis zu drei mal gewürfelt werden, wobei nicht in jedem Wurf alle Würfel verwendet werden müssen. Je nach gewürfeltem Ereignis gibt es entsprechend Punkte. Ihr Aufgabe ist es einige Java-Methoden für dieses Spiel zu implementieren. Die für Sie relevanten Ereignisse sind folgendermaßen definiert: Chance: Bei der Chance wird die Summe aller Augen als Punkte gutgeschrieben. Kniffel: Ein Kniffel hat man gewürfelt, wenn alle Würfel die selbe Zahl zeigen. Dreierpasch: Beim Dreierpasch müssen mindestens drei Würfel die selbe Zahl zeigen. In diesem Fall wird dem Spieler die Summe aller(!) Augen gutgeschrieben, andernfalls bekommt er keine Punkte. Ein Würfelergebnis soll im Folgenden stets durch einen Array der Größe 5 (da 5 Würfel) mit ganzzahligen Einträgen zwischen 1 und 6 (mögliche Ergebnisse beim Würfeln) repräsentiert werden. (a) 3 Punkte Schreiben Sie eine Methode, die einen das Würfelergebnis repräsentierenden Array entgegennimmt und die Chance, d. h. die Summe aller Augen, zurückliefert. public static int chance(int[] ergebnis){ int chance=0; for (int i=0; i<ergebnis.length; i++){ chance+=ergebnis[i]; return chance;

Aufgabe 4 8 (b) 3 Punkte Schreiben Sie eine Methode, die einen das Würfelergebnis repräsentierenden Array entgegennimmt und true zurückliefert, falls ein Kniffel gewürfelt wurde. Andernfalls soll die Methode false zurückliefern. public static boolean kniffel (int[] ergebnis){ for (int i=0; i<array.length-1; i++){ if (array[i]!=array[i+1]) return false; return true; (c) 3 Punkte Schreiben Sie eine Methode, die wieder einen das Würfelergebnis repräsentierenden Array entgegennimmt, der jedoch in diesem Fall auch Einträge mit dem Wert 0 besitzen kann. Für jeden Eintrag mit den Wert 0 soll noch einmal gewürfelt werden, d. h. eine Zufallszahl zwischen und 1 und 6 bestimmt werden, die den Eintrag mit dem Wert 0 ersetzt. Hinweis: Mit (int)(6*math.random()) (vgl. Beispielaufgabe zu Übungsblatt 6) kann eine ganzzahlige Zufallszahl zwischen 0 und 5 bestimmt werden. Gehen Sie hierfür davon aus, dass die Bibliothek java.lang.math eingebunden ist. public static void nochmalwuerfeln (int[] ergebnis){ for (int i=0; i<array.length; i++){ if (array[i]==0) array[i]=(int)(6*math.random())+1; return summe;

Aufgabe 4 9 (d) 4 Punkte Schreiben Sie eine Methode, die wieder einen das Würfelergebnis repräsentierenden Array entgegennimmt, und einen zweiten Array der Größe 6 zurückliefert. In diesem zweiten Array soll der 0-te Eintrag die Anzahl der gewürfelten 1-en, der 1-te Eintrag, die Anzahl der gewürfelten 2-en, etc. repräsentieren. public static int[] sortieren (int[] ergebnis){ int[] sortiert = new int[6]; for(int i=0; i<ergebnis.length; i++){ sortiert[ergebnis[i]-1]++; return sortiert; (e) 4 Punkte Schreiben Sie eine Methode, die wieder einen das Würfelergebnis repräsentierenden Array entgegennimmt, und den Wert des Dreierpaschs ( 0 oder Summe aller Augen, siehe Definition zu Beginn der Aufgabe) zurückliefert. Es ist Ihnen ausdrücklich erlaubt Methoden aus vorigen Teilaufgaben aufzurufen, auch wenn Sie diese nicht oder nicht richtig geschrieben haben sollten. public static int dreierpasch(int[] ergebnis){ int[] sortiert = sortieren(ergebnis); for(int i=0; i<ergebnis.length; i++){ if (sortiert[i]>=3) return chance(ergebnis); return 0;

Aufgabe 5 10 Aufgabe 5: Rekursion (5 Punkte) (a) 1 Punkte Wodurch unterscheiden sich rekursive Methoden von nicht-rekursiven Methoden? Rekursive Methoden rufen sich selbst (direkt oder indirekt) wieder auf. (b) 4 Punkte Was gibt folgendes (rekursive) Programm auf dem Bildschirm aus? import IOulm.*; public class Hokuspokus{ public static void hokuspokus(int hokus, int pokus){ Write.Line("hokus: "+hokus); if (hokus<=0 pokus<=0) return; if (pokus<=hokus) hokuspokus(hokus-pokus, pokus-1); else hokuspokus(pokus, hokus); Write.Line("pokus: "+pokus); public static void main(string[] args){ hokuspokus(4, 3); hokus: 4 hokus: 1 hokus: 2 hokus: 1 pokus: 1 pokus: 2 pokus: 3

Aufgabe 6 11 Aufgabe 6: Suchen & Sortieren Ein Array mit folgenden Elementen sei gegeben: (12 Punkte) vfb fcb bvb hsv svw ksc (a) 3 Punkte Welches ist der wesentliche Vorteil der binären Suche gegenüber der linearen Suche? Welches ist der entscheidende Nachteil? Welche Such-Variante müsste für obigen Array angewandt werden? Vorteil: binäre Suche deutlich schneller Nachteil: nur für bereits sortierte Arrays anwendbar; deshalb für obigen Array nicht möglich (b) 2 Punkte Der obige Array soll nun mittels Insertion Sort alphabetisch absteigend sortiert werden. Welches Element wird dabei als erstes verschoben, in welche Richtung wird es verschoben, und um wie viele Positionen? Element hsv wird um 2 Positionen nach links verschoben.

Aufgabe 6 12 (c) 2 Punkte Nun soll der ursprüngliche Array mit dem in der Vorlesung behandelten Quicksort- Algorithmus alphabetisch aufsteigend sortiert werden. Welche Elemente eignen sich besonders gut als Pivot-Elemente und warum? hsv und ksc eignen sich besonders gut, da es jeweils zumindest zwei alphabetisch größere und kleinere Elemente gibt. (d) 2 Punkte Angenommen svw würde als erstes Pivotelement gewählt. Wie würde der Array nach der ersten Element-Vertauschung aussehen? ksc fcb bvb hsv svw vfb (e) 3 Punkte Angenommen hsv würde als erstes Pivotelement gewählt. In welche beiden Teil-Arrays würde der Array nach den ersten Vertauschungen unterteilt? Hinweis: Wenn Sie den Array nach jedem Zwischenschritt aufmalen, so kann dies bei einer falschen Beantwortung der Frage berücksichtigt werden. hsv fcb bvb vfb svw ksc

Aufgabe 6 13