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

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

Probeklausur: Programmierung WS04/05

5. Tutorium zu Programmieren

Tutorium Rechnerorganisation

Die Programmiersprache C Eine Einführung

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

Java-Schulung Grundlagen

Algorithmische Kernsprache. Zuweisung, einfache und bedingte Anweisung, Blöcke, Schleifen, return, debugging.

Institut für Programmierung und Reaktive Systeme 25. August Programmier-Labor Übungsblatt. int binarysearch(int[] a, int x),

Propädeutikum zur Programmierung

Propädeutikum zur Programmierung

Primitive Datentypen

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

Einführung in die Programmierung Vorlesungsprüfung

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

JAVA - Methoden

Klausur zur Einführung in die objektorientierte Programmierung mit Java

Algorithmen & Datenstrukturen 1. Klausur

Klausur in Programmieren

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.

Probeklausur: Programmierung WS04/05

Klausur in Programmieren

1. Typen und Literale (6 Punkte) 2. Zuweisungen (6 = Punkte)

Programmentwicklung I für Hörer anderer Fachrichtungen -Wintersemester 2003/04- Abschlussklausur

Einstieg in die Informatik mit Java

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

Gliederung. Tutorium zur Vorlesung. Gliederung. Gliederung. 1. Gliederung der Informatik. 1. Gliederung der Informatik. 1. Gliederung der Informatik

Modellierung und Programmierung 1

1. Grundlegende Konzepte in Java (6 Punkte)

Einführung in die Java- Programmierung

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

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

HEUTE. Effizienzbeispiel: bekannte Version (Übung ) Mathematik: Was ist Effizienz? vollständige Induktion

Übungen zur Vorlesung Wissenschaftliches Rechnen I. Grundelemente von Java. Eine Anweisung. wird mit dem Wertzuweisungsoperator = geschrieben.

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

Programmieren in C. C Syntax Datentypen, Operatoren und Kontrollstrukturen. Prof. Dr. Nikolaus Wulff

Klausur in Programmieren

Inhaltsverzeichnis. Grundbegriffe der C-Programmierung Für den HI-TECH C-Compiler

Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen. Programmieren I. Martin Schultheiß. Hochschule Darmstadt Wintersemester 2010/2011

Grundlagen der Programmierung

Die Programmiersprache C99: Zusammenfassung

Repetitorium Informatik (Java)

[E-1] Wolf, Jürgen: C von A bis Z. Galileo Computing, 3. Auflage,

Programmierung mit C Zeiger

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

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

Test zu Grundlagen der Programmierung Leitung: Michael Hahsler. 21. November 2003

Theorie zu Übung 8 Implementierung in Java

THE GO PROGRAMMING LANGUAGE. Michael Karnutsch & Marko Sulejic

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

Java 7. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Dezember 2011 JAV7

Programmieren in C/C++ und MATLAB

Modellierung und Programmierung

Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005

Klausur C-Programmierung / / Klingebiel / 60 Minuten / 60 Punkte

Programmieren Tutorium

Javaprogrammierung mit NetBeans. Variablen, Datentypen, Methoden

Einführung in die Programmierung für Wirtschaftsinformatik

Deklarationen in C. Prof. Dr. Margarita Esponda

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

Objektorientierte Programmierung

Datenbankanwendungsprogrammierung Crashkurs Java

5.4 Klassen und Objekte

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

Objektorientierte Programmierung OOP Programmieren mit Java

Gebundene Typparameter

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005

Java Einführung Methoden. Kapitel 6

Ein erstes Java-Programm

1 Polymorphie (Vielgestaltigkeit)

Einstieg in die Informatik mit Java

Einführung in die C-Programmierung

Java Einführung Klassendefinitionen

Übersicht Programmablaufsteuerung

IT- Handbuch für Fachinformatiker, 7. Auflage: Text- Lösungen Sascha Kersken

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

Musterlösungen zur Klausur Informatik 3

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

Fallunterscheidung: if-statement

Objektorientierte Programmierung OOP Programmieren mit Java

Vorlesung Objektorientierte Programmierung Probeklausur

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

Programmierkurs Java

3. Algorithmenentwurf und JAVA. Informatik II für Verkehrsingenieure

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2

1. Der Einstieg in Java. Was heißt Programmieren?

Programmieren I. Kontrollstrukturen. Heusch 8 Ratz Institut für Angewandte Informatik

Dr. Monika Meiler. Inhalt

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

Angewandte Mathematik und Programmierung

Letztes Mal. static int ggt(int a, int b) { if (a == b) return a; else if (a > b) return ggt(a-b,b); else if (a < b) return ggt(a,b-a);

Java für Anfänger Teil 2: Java-Syntax. Programmierkurs Manfred Jackel

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

Javakurs für Anfänger

Einfache Rechenstrukturen und Kontrollfluss II

Grundlagen der Programmierung in C Funktionen

String s1, s2; Eine Zuweisung geschieht am einfachsten direkt durch Angabe des Strings eingeschlossen in doppelte Hochkommata:

Klausur zur Einführung in die objektorientierte Programmierung mit Java

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

Einführung in die Programmierung am Beispiel von Java

Transkript:

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme Programmieren I Dr. Werner Struckmann 17. Februar 2018 Name: Vorname: Matrikelnummer: Kennnummer: Anrede: Frau Herr Studiengang: Bachelor Master Diplom Frühstudium Erasmus Fachrichtung: Informatik Wirtschaftsinformatik Mathematik Physik Mobilität und Verkehr Psychologie Maschinenbau ( Mechatronik) Elektrotechnik Wirtschaftsingenieurwesen ( Bauing E-Technik Maschbau) Finanz- und Wirtschaftsmathematik IST Sonstige: Versuch der Notenverbesserung: Bitte kreuzen Sie an, falls Sie teilgenommen haben: Programmierlabor, Legolabor. Die Bearbeitungszeit beträgt 120 Minuten. Die Klausur besteht aus 6 Aufgaben. Sie haben die Klausur bestanden, wenn Sie mindestens 35 von 70 möglichen Punkten erreicht haben. Aufgabe 1 2 3 4 5 6 Σ max. Punkte 5 10 16 8 11 20 70 Punkte Note: Bitte prägen Sie sich Ihre Kennnummer gut ein. Aus Datenschutzgründen wird das Klausurergebnis nur unter dieser Kennnummer bekannt gegeben. Aus den gleichen Gründen dürfen Ergebnisse weder telefonisch noch per E-Mail mitgeteilt werden. Die Ergebnisse der Klausur erfahren Sie voraussichtlich ab dem 22. Februar 2018 auf der Web-Seite dieser Veranstaltung. Ihre Klausur können Sie am Freitag, den 23. Februar 2018, von 10:00 bis 14:00 Uhr im Raum 251 des Informatikzentrums einsehen.

Aufgabe 1: Bitte kreuzen Sie die wahren Aussagen an. Für die vollständigen richtigen Antworten einer Gruppe erhalten Sie einen Punkt. Die Fragen dieser Aufgabe beziehen sich auf Java 8. Interface: Ein Interface muss eine abstrakte oder eine konkrete Methode enthalten: In einem Interface kann eine Methode den Modifikator default bekommen: In einem Interface können Methoden den gleichen Namen bekommen: Operatoren: Der Operator + wird stets numerisch ausgewertet: Der Operator = ist rechtsassoziativ: Der Operator % liefert immer Werte >= 0: Arrays: Die Elemente eines Arrays können zum Beispiel vom Typ char sein: Die Länge eines Arrays kann stets vom Compiler festgestellt werden: Die Elemente eines Arrays können geändert werden: Objektorientierung: Von astrakten Klassen können keine Objekte erzeugt werden: Ein Objekt einer Klasse kann evtl. Variablen anderer Klassen zugeordnet werden: Man kann einstellen, dass Klassen von anderen Klassen durch extends nicht erweitert werden: Deklaration: Die Deklaration float w = 0.1F; erzeugt eine Fehlermeldung: Die Deklaration float x = 2E5f; erzeugt eine Fehlermeldung: Die Deklaration float y = (double) 2; erzeugt eine Fehlermeldung: Die Deklaration float z = f ; erzeugt eine Fehlermeldung: Die Deklaration float _$_2 = 2.0f; erzeugt eine Fehlermeldung: 5 Punkte 2

Aufgabe 2: (Zahldarstellung) Schreiben Sie die Hexadezimalzahl (0x7D) 16 als Binär-, Oktal- und als Dezimalzahl in Java. Durch welche Bitfolge wird der byte-wert 18 in Java gespeichert? Welchen Wert stellt der Ausdruck 17-013 + 0xd - 0b1110 in Java dar? a) (0x7D) 16 als Binärzahl in Java: b) (0x7D) 16 als Oktalzahl in Java: c) (0x7D) 16 als Dezimalzahl in Java: d) Byte-Darstellung von 18: e) Der Wert von 17-013 + 0xd - 0b1110: 10 Punkte

Aufgabe 3: (Kontrollstrukturen, Operatoren, Arrays) Welche der beiden folgenden Schleifen terminieren? Geben Sie im Falle der Terminierung an, welche Werte die Variablen besitzen, nachdem die jeweiligen Anweisungen ausgeführt wurden. a) int x = 12; int y = 11; while ( x > y ) { switch (x / y) { case 0 : x = x + 1; case 1 : y = y - 4; break; case 2 : y = y + 8; case 3 : x = x + 1; break; default : y = y + 3; Die Schleife terminiert: ja nein x = y = b) int x = 8; int y = 5; for (int i = 1; i < x + y; i = i + 2) { x = y; if ( x < y ) { if ( x > y ) x++; else y--; else { if ( x > y ) y++; else x--; Die Schleife terminiert: ja nein x = y = Geben Sie für jeden der folgenden Ausdrücke den primitiven Typ und den Wert des Ausdrucks an. Setzen Sie vor jedem Ausdruck die Deklaration int x = 14; voraus. c) (x >> 1 ^ 7 ) pr. Typ: Wert: d) (x == (x 2)) pr. Typ: Wert: e) (x + ~2 - x%2) pr. 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 <= 15; i = i+3) a[i/3] = 10 - i%4; for (int i = 5; i >= 0; i--) a[i] = a[a[i] - 6] + 2*i - 2; a[0] = a[1] = a[2] = a[3] = a[4] = a[5] = 16 Punkte

Aufgabe 4: (Programmverständnis) Gegeben seien die Methode static void g(int[][] a, int... t) { int m = t[0], n = t[0]; for (int l = 0; l <= t.length-1; l++) { if (t[l] < m) m = t[l]; if (t[l] > n) n = t[l]; assert m <= a.length & n >= a.length; int y = a[0].length; int i = 0; for (int k = 1; k <= a.length-1; k++) { if (a[k].length > y) { y = a[k].length; i = k; int s = 0; for (int j = 0; j <= a[i].length-1; j = j+2) { s = s + a[i][j] - a[i][j+1]; System.out.println(s); sowie das Programmfragment int[][] a = {{5,3,1,{2,1,3,2,{5,7; g(a, 2, 4); a) Was macht die Methode g in Abhängigkeit der Parameter a und int... t? Welche Fehler können während der Laufzeit dieser Methode auftreten? Begründen Sie Ihre Aussage. b) Wie lautet die Ausgabe des Programmfragments? Lösung: 8 Punkte 5

Aufgabe 5: (Rekursion) Gegeben sei die folgende rekursive Methode: static int f(int x, int y) { if (y <= 1) return y + 2; else if (x == 1) return x + 1; else return 2 + f(f(x-3,y), y/2); Welchen Wert liefert der Aufruf f(16, 3)? 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? Liefert für alle int-werte x 0, y 0 der Aufruf f(x, y) einen int-wert? Begründen Sie Ihre Antwort. Lösung: 11 Punkte 6

Aufgabe 6: (Programmerstellung) Eine der Goldbachschen Vermutungen (Christian Goldbach, 1690-1764) sagt, dass jede gerade Zahl n 6 als Summe von zwei ungeraden Primzahlen beschrieben werden kann. Für alle Zahlen ist dies bis heute noch nicht bewiesen. Beispiele: 6 = 3 + 3, 8 = 3 + 5, 10 = 3 + 7 = 5 + 5,... Schreiben Sie ein lauffähiges Java-Programm, das diese Vermutung bis n = 1000 prüft und die Summe ausgibt. Beschreiben Sie Ihren Algorithmus. Schreiben Sie Ihren Programmcode auf die nächste Seite. Sie dürfen eigene Hilfsmethoden schreiben, aber weder Klassen noch Methoden importieren. Auf diese Aufgabe erhalten Sie Punkte, wenn Ihr Programm erkennbar geeignet ist, die Problemstellung zu lösen. Lösung: 20 Punkte 7

8

9