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

Ähnliche Dokumente
5. Tutorium zu Programmieren

Java-Schulung Grundlagen

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

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.

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

Primitive Datentypen

Datenbankanwendungsprogrammierung Crashkurs Java

Tutorium Rechnerorganisation

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

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

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

Propädeutikum zur Programmierung

Probeklausur: Programmierung WS04/05

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

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

Programmierkurs Java

Klausur zur Einführung in die objektorientierte Programmierung mit Java

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

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

5.4 Klassen und Objekte

Kontrollstrukturen, Pseudocode und Modulo-Rechnung

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

Algorithmen & Datenstrukturen 1. Klausur

Propädeutikum zur Programmierung

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

Modul 122 VBA Scribt.docx

Übersicht. Informatik 2 Teil 3 Anwendungsbeispiel für objektorientierte Programmierung

Übersicht Programmablaufsteuerung

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

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

Einfache Rechenstrukturen und Kontrollfluss II

1 Polymorphie (Vielgestaltigkeit)

Programmieren von Webinformationssystemen

Steueranweisungen. Eike Schallehn Grundlagen der Informatik für Ingenieure Wintersemester 08/

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

Programmieren in Java

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

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

1. Der Einstieg in Java

1. Grundlegende Konzepte in Java (6 Punkte)

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

Distributed Computing Group

Große Übung Praktische Informatik 1

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

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

Programmieren von Webinformationssystemen

Objektorientierte Programmierung

Android will doch nur spielen. Java Eine kurze Einführung

Informatik. Studiengang Chemische Technologie. Michael Roth WS 2012/2013. Hochschule Darmstadt -Fachbereich Informatik-

Modellierung und Programmierung

Ein erstes Java-Programm

Modellierung und Programmierung 1

Sprachbeschreibung und Erweiterung

Musterlösungen zur Klausur Informatik 3

Vorlesung Objektorientierte Programmierung Probeklausur

Dr. Monika Meiler. Inhalt

Klausur in Programmieren

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

Sin-Funktion vgl. Cos-Funktion

Java Einführung Operatoren Kapitel 2 und 3

Einführung in die Programmierung für Wirtschaftsinformatik

Problemstellung. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 24: Reflection 1. IDE und automatische Tests.

Beispiel: Methode mit einem Fehler. Diese Methode wird problematisch, wenn von außen eine Dauer von 0 Sekunden angegeben wird, etwa im Aufruf

Einführung in die Java- Programmierung

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

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

Programmieren. 10. Tutorium 4./ 5. Übungsblatt Referenzen

Numerische Datentypen. Simon Weidmann

Arrays und Methoden. Programmiervorkurs WS 2010 / 11

Einführung in die C-Programmierung

Grundwissen Informatik JS September 2015

Objektorientierte Programmierung

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6

Lösungsvorschläge. zu den Aufgaben im Kapitel 4

GetName(), GetName(), GetGeschlecht() und AelterWerden().

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

3. Auflage. O Reillys Taschenbibliothek. C# 5.0 kurz & gut. Joseph Albahari & Ben Albahari O REILLY. Aktualisierung von Lars Schulten

Noch für heute: primitive Datentypen in JAVA. Primitive Datentypen. Pseudocode. Dezimal-, Binär- und Hexadezimalsystem. der logische Typ boolean

Übungen Programmieren 1 Felix Rohrer. Übungen

Beispiel: DB-Mock (1/7)

Übersicht. Schleifen. Schleifeninvarianten. Referenztypen, Wrapperklassen und API. 9. November 2009 CoMa I WS 08/09 1/15

Einführung in die Java- Programmierung

PHP Code Konventionen Um einen einheitlichen Code zu generieren, der von jedem gelesen werden kann, müssen folgende Konventionen eingehalten werden.

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

Klausur in Programmieren

Teil 1: Grundeigenschaften von Rechnern und Software [10P]

Erwin Grüner

Programmieren Tutorium

Programmierung in Python

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2

Objektorientierte Programmierung

PIWIN I. Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I. Vorlesung 3 SWS WS 2007/2008

Java Kurs für Anfänger Einheit 5 Methoden

II.1.1. Erste Schritte - 1 -

Dr. Monika Meiler. Inhalt

Javakurs für Anfänger

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

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.

Klausur in Programmieren

Übung Grundlagen der Programmierung. Übung 03: Schleifen. Testplan Testergebnisse

Transkript:

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme Programmieren I Dr. Werner Struckmann 13. März 2017 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 8 16 11 8 22 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 können Ergebnisse weder telefonisch noch per E-Mail mitgeteilt werden. Die Ergebnisse der Klausur erfahren Sie voraussichtlich ab dem 24. März 2017 auf der Web-Seite dieser Veranstaltung. Ihre Klausur können Sie am Mittwoch, den 12. April 2017, von 09:00 bis 11:30 Uhr und von 13:30 bis 16:30 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. Ausnahmebehandlung/Exception Handling: Die catch-or-throw-regel gilt für RuntimeExeception nicht. Die throw-anweisung leitet die Exception weiter. Eine try-catch-anweisung muss mindestens eine catch-klausel enthalten. Literale: Es gilt 0x8!= 8. 5e5 ist ein Literal von Typ double. +4_4 ist ein Literal für einen ganzzahligen primitiven Typ. Objektorientierung: Zwei abgeleitete Klassen können dieselbe Basisklasse besitzen. Innerhalb einer Klasse kann eine Methode nicht den gleichen Namen wie ein Attribut der Klasse besitzen. Es kann Variable geben, die während ihrer Gültigkeit auf Objekte verschiedener Typen verweisen können. Abstrakte Klassen: Eine abstrakte Klasse kann konkrete Methoden enthalten. Eine abstrakte Klasse kann von mehreren Klassen erweitert werden. Klassen, die nur konkrete Methoden enthalten, dürfen den Modifikator abstract verwenden. Deklarationen: Einzelne Deklarationen in der main-methode: Die Deklaration int i = 0.0; führt zu einem Übersetzungsfehler. Die Deklaration int main = 0 ; führt zu einem Übersetzungsfehler. Die Deklaration int j = (short) 0; führt zu einem Übersetzungsfehler. 5 Punkte Aufgabe 2: (Zahldarstellung in Java) Schreiben Sie die Dezimalzahl 74 als Binär-, Oktalund Hexadezimalzahl in Java. Durch welche Bitfolge wird der byte-wert 11 in Java gespeichert? a) (74) 10 als Binärzahl in Java: b) (74) 10 als Oktalzahl in Java: c) (74) 10 als Hexadezimalzahl in Java: d) byte-darstellung von 11: 8 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 a = 3; int b = 1; do { a = a + b; if (b == 4) continue; else b++; if ((a * b) % 3 == 1) break; a--; while (a > b); Die Schleife terminiert: ja nein a = b = b) int x = 5; int y = 1; for (int i = 1; i < x; i++) { x += 4 - y; switch (y % 4) { case 1 : y = x + 4; case 2 : y = x - 3; break; case 3 : y = x + 2; break; default : y = x - 1; 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 = 17; voraus. c) ((4 x ) ^ 5) pr. Typ: Wert: d) (x % 9 + ~(-1) + 2) pr. Typ: Wert: e) ((x & 1) == (x >> 4)) 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 = 5; i > -1; i--) a[i] = 3 + (i + i*2)/3; for (int i = 1; i < 7; i++) a[i-1] = a[a[i-1] - 3] + a[i-1]; a[0] = a[1] = a[2] = a[3] = a[4] = a[5] = 16 Punkte

Aufgabe 4: (Rekursion) Gegeben sei die folgende rekursive Methode: static int f(int x, int y) { if (x == 1) return y + 1; else if (x == y) return f(x - 2, y); else return f(x % 2, f(x - 2, y + 1) + 2); Welchen Wert liefert der Aufruf f(11, 8)? 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 4

Aufgabe 5: (Programmverständnis) Gegeben seien die Methode public static boolean f(int i) { if (i <= 1) return false; int s = 1; for (int j = 2; j <= i/2; j++) { if (i % j == 0) s += j; return s == i; und das Programmfragment for (int i = 2; i <= 8; i++) { if (f(i)) { String t = ""+ i + "_=_" + "1"; for (int j = 2; j <= i/2; j++) if (i%j == 0) { t = t+"_+_"+j; System.out.println(t); a) Was berechnet die Methode f in Abhängigkeit vom Parameter i? b) Wie lautet die Ausgabe des Programmfragments? Lösung: 8 Punkte 5

Aufgabe 6: (Programmerstellung) Eine natürliche Zahl n > 0 heißt Nivenzahl, wenn die Quersumme von n ein echter Teiler von n ist. Ein Beispiel für die Nivenzahlen ist 156, denn die Quersumme von 156 ist 12 = 1 + 5 + 6 und es gilt 156 = 12 13. Die Mathematik hat bewiesen, dass die Zahlen 111, 222, 333, 444, 555, 666, 777, 888 und 999 Nivenzahlen sind. Schreiben Sie ein lauffähiges Java-Programm, das für alle dreistelligen natürlichen Zahlen prüft, ob es sich bei dieser Zahl um eine Nivenzahl handelt. Ist eine Zahl eine Nivenzahl, so soll die Ausgabe wie folgt aussehen: Quersumme(156) = 12 und 156 = 12 * 13 Beschreiben Sie Ihren Algorithmus. Schreiben Sie Ihren Programmcode auf die nächste Seite. Sie dürfen eigene Hilfsmethoden schreiben und verwenden, aber weder Klassen noch Methoden importieren. Auf diese Aufgabe erhalten Sie nur dann Punkte, wenn Sie ein Java-Programm angeben, das erkennbar geeignet ist, die Problemstellung zu lösen. In den 22 Punkten sind 4 Punkte für fehlerfrei compilierenden Code enthalten. Lösung: 22 Punkte 6

7

8