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

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

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

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

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

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

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

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

Institut für Programmierung und Reaktive Systeme 7. Juli Programmieren II. Übungsklausur

Institut für Programmierung und Reaktive Systeme 17. Juli Programmieren II. Übungsklausur

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

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

Programmieren I + II Regeln der Code-Formatierung

Arbeitsblätter für die Lehrveranstaltung OOP JAVA 1

Fragenkatalog ESOP WS 16/17

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

3. Anweisungen und Kontrollstrukturen

Programmieren I + II Regeln der Code-Formatierung

Welche Informatik-Kenntnisse bringen Sie mit?

Objektorientierte Programmierung Studiengang Medieninformatik

Java - Programmierung - Prozedurale Programmierung 1

Einführung in die Informatik 1

Musterlösung Stand: 5. Februar 2009

Einstieg in die Informatik mit Java

Grundlagen der Programmierung Teil1 Einheit III Okt. 2010

Nachklausur Bitte in Druckschrift leserlich ausfüllen!

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 1 - Variablen und Kontrollstrukturen

Programmierkurs Java

Einführung in die Programmierung I. 2.0 Einfache Java Programme. Thomas R. Gross. Department Informatik ETH Zürich

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Einführung in C. EDV1-04C-Einführung 1

II. Grundlagen der Programmierung. Beispiel: Merge Sort. Beispiel: Merge Sort (Forts. ) Beispiel: Merge Sort (Forts. )

Rekursion. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Wo sind wir? Kontrollstrukturen

Kontrollstrukturen. Wo sind wir? Anweisung mit Label. Block. Beispiel. Deklarationsanweisung

Methoden und Wrapperklassen

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

Einführung in die Informatik 1

Vorlesung Programmieren

Vorkurs Informatik WiSe 16/17

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

Test-Klausuraufgaben Softwaretechnik Fachbereich BW, für WINFO

1.) Zahlensysteme (10 Punkte)

Grundlagen der Programmierung Teil1 Einheit III Okt. 2009

1 Klassen und Objekte

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

2 Eine einfache Programmiersprache

Grundlagen der Fehlerbehandlung. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 06: Ausnahme- und Fehlerbehandlung in Java.

Aufgabe 1 (12 Punkte)

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

Java I Vorlesung Imperatives Programmieren

Objektorientierte Programmierung OOP Programmieren mit Java

Primitive Datentypen, Eingaben, Kontrollstrukturen und Methodendeklaration

5. Tutorium zu Programmieren

2 Teil 2: Nassi-Schneiderman

Abschlussklausur. Lösung

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Blöcke. Beispiel: Variablen in Blöcken

RO-Tutorien 3 / 6 / 12

Anweisungen zur Ablaufsteuerung

Vorlesung Programmieren

Java I Vorlesung Objektorientiertes Programmieren

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

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

Grundlagen der Programmierung

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

Primitive Datentypen

Abschnitt 7: Weitere Konzepte der oo Programmierung in Java

Kapitel 10 Delegationsvariablen

Java-Schulung Grundlagen

JAVA - Methoden - Rekursion

Software Entwicklung 1. Rekursion. Beispiel: Fibonacci-Folge I. Motivation. Annette Bieniusa / Arnd Poetzsch-Heffter

RO-Tutorien 15 und 16

Klausur Grundlagen der Programmierung

public static void main(string[] args) {

Probeklausur: Programmierung WS04/05

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

JAVA - Methoden

Java Einführung Methoden. Kapitel 6

2 Eine einfache Programmiersprache

Programmierung für Mathematik (HS13)

Die Programmiersprache C Eine Einführung

Ausnahmebehandlung. Ausnahmen werfen (auslösen) Eigene Ausnahmen definieren. Ausnahmen abfangen. Ausnahmen definieren

Javakurs für Anfänger

Grundlagen der Programmierung

Implementieren von Klassen

Beispiele für Ausdrücke. Der imperative Kern. Der imperative Kern. Imperativer Kern - Kontrollstrukturen. Deklarationen mit Initialisierung

Java: Eine kurze Einführung an Beispielen

Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen. Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen

S. d. I.: Programieren in C Folie 4-1. im Gegensatz zu Pascal gibt es in C kein Schlüsselwort "then"

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 14/15. Kapitel 11. Fehler und Ausnahmen 1

Gliederung Grundlagen Schlüsselworte try-catch Fehlerobjekte Fehlerklassen Schlüsselwort finally Schlüsselwort throws selbst erstellte Exceptions

Martin Unold INFORMATIK. Geoinformatik und Vermessung

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

3. Grundanweisungen in Java

RO-Tutorien 17 und 18

Überblick. Peer Kröger (LMU München) Einführung in die Programmierung WS 16/ / 854

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

Kapitel 10. Programmierkurs. Grundlagen von Exceptions Behandlung von Exceptions

Wie entwerfe ich ein Programm?

Vorlesung Programmieren

Präzedenz von Operatoren

Transkript:

Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 25. Januar 2018 Hinweise: Klausurtermine: Programmieren I Übungsklausur Programmieren I: 17. Februar 2018, 08:30 10:30 Uhr Programmieren II: 22. März 2018, 08:30 10:30 Uhr Ihren Raum erfahren Sie ein paar Tage vor der Klausur auf der Web-Seite der Veranstaltung. Während der Klausur dürfen Sie keine Unterlagen benutzen. Bringen Sie zur Klausur Ihren Ausweis und Ihren Studierendenausweis mit. Bitte nehmen Sie Ihren Platz spätestens zehn Minuten vor Beginn der Klausur ein. Eine Übungsklausur kann aus Zeitgründen nicht den gesamten Stoff der Vorlesung abdecken. Lösungen dieser Aufgaben besprechen wir in der letzten Übung des Semesters. Aufgabe 1: (Kommentar, Deklaration, For-Schleife, Exception, abstrakte Klassen) Bitte kreuzen Sie die wahren Aussagen an. Alle Fragen dieser Aufgabe beziehen sich auf Java. Kommentar: Ein Kommentar kann mit den Zeichen // beginnen. Ein Kommentar kann mit den Zeichen /* beginnen. Ein Kommentar kann mit den Zeichen /** beginnen. Deklaration: Die Deklaration int x = 123_456; führt zu einem Übersetzungsfehler. Die Deklaration int x = 123_456_; führt zu einem Übersetzungsfehler. Die Deklaration int x = _ ; führt zu einem Übersetzungsfehler. Gegeben sei die For-Schleife for (init; test; update) {... In dieser For-Schleife dürfen init, test und update gleichzeitig fehlen. Diese For-Schleife kann nur durch test beendet werden. Exception: Der Ausdruck 5%0 löst eine IllegalArgumentException aus. Der Ausdruck 5/0 löst eine ArithmeticException aus. Exception: Eine try-anweisung darf mehr als eine catch-klausel enthalten. Eine catch-klausel darf mehr als einen Typ einer Ausnahme behandeln. Abstrakte Klassen: Von abstrakten Klassen können Objekte erzeugt werden. Klassen die nur konkrete Methoden enthalten dürfen den Modifikator abstract auch benutzen.

Aufgabe 2: (Zahldarstellung in Java) Schreiben Sie die Dezimalzahl 47 als Binär-, Oktalund Hexadezimalzahl in Java. Durch welche Bitfolge wird der byte-wert 16 in Java gespeichert? a) (47) 10 als Binärzahl in Java: b) (47) 10 als Oktalzahl in Java: c) (47) 10 als Hexadezimalzahl in Java: d) byte-darstellung von 16:

Aufgabe 3: (Kontrollstrukturen, Operatoren, Felder) Welche der folgenden Schleifen terminieren? Geben Sie im Falle der Terminierung an, welche Werte die Variablen a und b besitzen, nachdem die jeweiligen Anweisungen ausgeführt wurden. a) int a = 1; int b = 2; while (a < 6) { a = a + 2; switch (a % 3) { case 0 : b = a - b; case 1 : b = a * b; Die Schleife terminiert: ja nein a = b = b) int a = 1; int b = 2; do { a = a + 2; b = a + b; if ((b % 3) == 0) continue; b = b + 1; if ((b % 3) == 2) break; while (a!= 0); Die Schleife terminiert: ja nein a = b = Geben Sie für jeden der folgenden Ausdrücke den Typ und den Wert des Ausdrucks an. Setzen Sie vor jedem Ausdruck die Deklaration int x = 11; voraus. c) (x-=2)*(x+=2) Typ: Wert: d) (x>>1)^2 Typ: Wert: e) 2*x/2==x/2*2 Typ: Wert: Es sei a durch int[] a = new int[6] deklariert. Geben Sie den Inhalt des Felds nach Ausführung der beiden folgenden Anweisungen an: f) for (int i = 0; i < a.length; i++) a[i] = (4 * (i + 1)) % 5; for (int i = a.length-1; i >= 0; i--) a[i] = a[1 + a[i]]; a[0] = a[1] = a[2] = a[3] = a[4] = a[5] = 3

Aufgabe 4: (Rekursion) Gegeben sei die folgende rekursive Methode: static int f(int x, int y) { if (x == 0) return 2; else if (y == 0) return 1; else return f(x - 2,y) - 3 * f(y - 2,x % 4); Welchen Wert liefert der Aufruf f(6,4)? In welcher Reihenfolge und mit welchen Parametern wird f dabei aufgerufen? Geben Sie die Reihenfolge der Aufrufe explizit an. Wie groß ist die maximale Rekursionstiefe, d. h. die maximale Anzahl gleichzeitig aktiver Aufrufe? Terminiert für alle x 0, y 0 der Aufruf f(x,y) mit der Rückgabe eines int-wertes? Begründen Sie Ihre Antwort. 4

Aufgabe 5: (Fehlerkorrektur) Gegeben sei das folgende Java-Programm: 01 public class WieLautetDieAusgabe { 02 int f(int n) { 03 int k = 0; 04 m! for (int i = 1; i <= n; i++) { 05 for (j = 2; j <= i; j++) { 06 if (i % j == 0 & n % j == 0) 07 continue m; 08 09 k++; 10 11 return k;; 12 13 public static void main(string[] args) { 14 for (int i = 6; i <= 7; i++) { 15 System.out.printf("f(%d) = %d%n", i, f(i)); 16 17 18 a) Die Programmzeilen enthalten Fehler, die der Compiler findet. Markieren Sie die Fehler im Programmtext. b) Geben Sie die korrigierten Zeilen an. Was gibt das korrigierte Programm aus? 5

Aufgabe 6: (Programmerstellung) In der Veranstaltung wurden Primzahlen besprochen und programmiert. Eine Mirpzahl ist eine Primzahl, deren Spiegelzahl ebenfalls eine Primzahl ist, aber die von der Ausgangszahl verschieden ist. Ein Beispiel ist die Zahl 13, denn 13 und 31 sind Primzahlen. 7 ist eine Primzahl, aber keine Mirpzahl. Schreiben Sie eine Methode static boolean mirpzahl(int i) die für eine zwei- oder dreistellige Zahl i testet, ob dies eine Mirpzahl ist. Falls der Parameter keine zwei- oder dreistellige Zahl ist, soll eine IllegalArgumentException ausgelöst werden. Sie dürfen weder Methoden noch Klassen importieren, aber Hilfsmethoden schreiben. Beschreiben Sie Ihren Algorithmus. 6

Aufgabe 7: (Programmverständnis) Gegeben seien die beiden folgenden Java-Methode: static int f(int[] a, int k, int x) { if (k >= a.length) { return 0; int n = 0; for (int i = k; i < a.length; i++) { if (a[i] == x) { n++; return n; static int[] waspassiert(int[] a) { int count = 0; for (int i = 0; i < a.length; i++) { if (f(a, i+1, a[i]) == 1) { count++; int[] x = new int[count]; int j = 0; for (int i = 0; i < a.length; i++) { if (f(a, i+1, a[i]) == 1) { x[j] = a[i]; j++; return x; Beschreiben Sie den Rückgabewert und das Verhalten der Methode waspassiert in Abhängigkeit vom Parameter a. Geben Sie die Ausgabe der folgenden Anweisungen an: int[] x = {7,2,4,3,2,7,0,2,3; for (int i : waspassiert(x)) System.out.printf("%d ", i);