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

Ä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

Technische Universität Braunschweig

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

Technische Universität Braunschweig

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

Institut für Programmierung und Reaktive Systeme 6. 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

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 25. Januar Programmieren I. Übungsklausur

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

! 1. Rekursive Algorithmen.! 2. Rekursive (dynamische) Datenstrukturen. II.3.2 Rekursive Datenstrukturen - 1 -

Abschlussklausur Lösung. Bitte in Druckschrift leserlich ausfüllen!

1. Rekursive Algorithmen 2. Rekursive (dynamische) Datenstrukturen

Klausur Algorithmen und Datenstrukturen I SS 03

Probeklausur zur Vorlesung

Semestralklausur Informatik I - Programmierung

Institut für Programmierung und Reaktive Systeme 7. Mai Programmieren II. 11. Übungsblatt

Allgemeine Hinweise:

Institut für Programmierung und Reaktive Systeme 24. April Programmieren II. 10. Übungsblatt

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

Physikalisch Technische Lehranstalt Wedel 31. Januar 2004 Prof. Dr. Uwe Schmidt

Allgemeine Hinweise:

Übung 10: Dynamische Datenstrukturen und Rekursion

Institut für Programmierung und Reaktive Systeme 10. Mai Programmieren II. 11. Übungsblatt

Übung 4: Die generische Klasse AvlBaum in Java 1

Klausur zur Veranstaltung Programmierung (fortgeschrittene Konzepte)

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

// Objekt-Methoden: public void insert(int x) { next = new List(x,next); } public void delete() { if (next!= null) next = next.next; } public String

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

Prof. Dr. Uwe Schmidt. 1. Februar Aufgaben zur Klausur C und Objektorientierte Programmierung im WS 2010/11 (WI h103, II h105, MI h353)

Fortgeschrittene Programmiertechnik Klausur SS 2015 Angewandte Informatik Bachelor

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

Fortgeschrittene Programmiertechnik Klausur WS 2014/15 Angewandte Informatik Bachelor

Endklausur 25. September 2012

3 Dynamische Datenstrukturen

Name: Seite 2. Beantworten Sie die Fragen in den Aufgaben 1 und 2 mit einer kurzen, prägnanten Antwort.

1. Teilklausur Gruppe A. Bitte in Druckschrift leserlich ausfüllen!

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

Einführung in die Informatik 1

II.4.2 Abstrakte Klassen und Interfaces - 1 -

Nachklausur Lösung. Bitte in Druckschrift leserlich ausfüllen!

12 Abstrakte Klassen, finale Klassen und Interfaces

Prüfung Softwareentwicklung II (IB)

Universität Augsburg, Institut für Informatik Sommersemester 2001 Prof. Dr. Martin Ester 16. Juli Klausur

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

Anwendungsbeispiel MinHeap

Basispruefung Herbst 2016/ Einführung in die Programmierung

Allgemeine Informatik II SS :30-11:30 Uhr

Objektorientierte Programmierung

Aufgabe 1 Basiswissen zur Vorlesung (8 Punkte)

Programmiertechnik Übungen zu Klassen & -methoden

Geordnete Binärbäume

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

Klausur: Java (Liste P)

Welche Informatik-Kenntnisse bringen Sie mit?

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

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

Programmierung

Abgabe: (vor 12 Uhr)

Name: Seite 1. Beantworten Sie die Fragen in den Aufgaben 1 und 2 mit einer kurzen, prägnanten Antwort.

Prüfung Algorithmen und Datenstrukturen I

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

Klausur "ADP" SS 2015

Schein-/Bachelorklausur Teil 2 am Zulassung: Mindestens 14 Punkte in Teilklausur 1 und 50% der Übungspunkte aus dem 2. Übungsblock.

Probeklausur Informatik 2 Sommersemester 2013

Einführung in die Informatik 1

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

Klausur Grundlagen der Informatik 9. April 2015

Algorithmen und Datenstrukturen

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 17/18. Kapitel 14. Bäume. Bäume 1

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 16/17. Kapitel 14. Bäume. Bäume 1

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

Einstieg in die Informatik mit Java

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

Fachhochschule Wedel 31. Januar 2004 Prof. Dr. Uwe Schmidt

Aufgabenblatt 4. Aufgabe 3. Aufgabe 1. Aufgabe 2. Prof. Dr. Th. Letschert Algorithmen und Datenstrukturen

Nachklausur Bitte in Druckschrift leserlich ausfüllen!

public class Test extends MiniJava { public static void main (String [] args) { write(args[0]+args[1]); } } // end of class Test

Matrikelnummer: 1 Aufgabe 1: Quickies (30 Punkte) a) Wird das folgende Programm von einem Java-Übersetzer ohne Beanstandungen übersetzt? Falls nicht,

Einführung in die Programmierung Vorlesungsprüfung

Programmieren in Java -Eingangstest-

Java - Programmierung - Prozedurale Programmierung 1

Übung zur Vorlesung Programmierung

Die Klasse java.lang.object. Thorsten Treffer

Klausur Software-Entwicklung März 01

Teil 5 - Java. Programmstruktur Operatoren Schlüsselwörter Datentypen

1 Programmierfehler und ihre Behebung

Transkript:

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme Programmieren II Dr. Werner Struckmann 16. August 2013 Name: Vorname: Matrikelnummer: Kennnummer: Anrede: Frau Herr Studiengang: Bachelor Master Diplom Frühstudium Erasmus Fachrichtung: Informatik Wirtschaftsinformatik Physik Mathematik Mobilität und Verkehr Mechatronik Maschinenbau Psychologie Finanz- und Wirtschaftsmathematik IST Sonstige: 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 10 8 8 8 10 26 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 ab dem 30. August 2013 auf der Web-Seite dieser Veranstaltung. Ihre Klausur können Sie am Donnerstag, den 5. September 2013, von 09:00 bis 11:00 Uhr und von 14:00 bis 16:00 Uhr im Raum 251 des Informatikzentrums einsehen.

Aufgabe 1: (Programmverständnis) Das folgende Programm benutzt eine zirkuläre Liste. class Node { int val; Node next; Node (int val) { this.val = val; class Josephus { public static void main(string[] args) { int n = 12, m = 7; Node t = new Node(5), x = t; for (int i = n+1; i >= 0; i=i-2) { x = (x.next = new Node(i-2)); System.out.print(x.val); // (*) x.next = t.next; while (x!= x.next) { for (int i = 0; i <= m; i++) x = x.next; System.out.print(";" + x.val); x.next = x.next.next; System.out.println(); System.out.println("Gewinner ist Nr. "+x.val+"."); a) Welche Elemente besitzt die Liste bei der Ausführung von (*)? Geben Sie die Listenelemente in der Reihenfolge an, wie sie eingefügt wurden. b) Was gibt das Programm aus? 10 Punkte 2

Aufgabe 2: (Klassen, Aufzählungstypen, Pakete, Annotationen, Parallelprogrammierung) Bitte kreuzen Sie an. Für jede richtige Antwort erhalten Sie einen Punkt, für jede falsche Antwort wird ein Punkt abgezogen. Kein Kreuz bzw. zwei Kreuze bedeuten 0 Punkte. Die minimale Gesamtpunktzahl für diese Aufgabe beträgt 0 Punkte. Alle Fragen dieser Aufgabe beziehen sich auf Java. wahr falsch Eine innere Klasse kann nicht auf die Membervariablen der äußeren Klasse zugreifen. Jede Enum-Klasse implementiert die Schnittstelle Comparable. Enum-Werte können mit equals auf Gleichheit getestet werden. Jede Klasse gehört zu genau einem Paket. Klassen des Defaults-Pakets können ohne eine explizite import-anweisung verwendet werden. Annotationen beginnen mit dem Zeichen @. Annotationen können annotiert werden. Eine Semaphore kann nur Werte annehmen, die größer als 0 sind. 8 Punkte Aufgabe 3: (Grafikprogrammierung) a) Nennen Sie zwei Möglichkeiten, wie ein Applet ausgeführt werden kann: b) Geben Sie Aufrufe von Methoden an, durch die ein Fenster geschlossen werden kann ohne das Programm zu beenden: c) Nennen Sie zwei Swing-Widgetklassen zur Darstellung von Auswahllisten: d) Nennen Sie zwei mögliche Darstellungen der Farbe Weiß : 8 Punkte 3

Aufgabe 4: (Fehlerkorrektur, Generizität) Gegeben seien die generische Methode 01 public static <T extends Comparable<? extends T>> T sort(t[] a) { 02 for (int j=1; j<a.length; j++) { 03 T k = a[j]; 04 int i = j-1; 05 while (i>=0 && a[i].compareto(k)<0) { 06 a[i+1] = a[i]; 07 i--; 08 09 a[i+1] = k; 10 11 return a[length-1]; 12 und die beiden Anweisungen 13 char[] x = { g, j, z, f ; 14 System.out.println(sort(x)); Die Methode sort soll das Parameterfeld a aufsteigend sortieren und das maximale Element des Parameterfeldes als Rückgabe liefern. a) Die Programmzeilen 01 bis 14 enthalten Fehler. Markieren Sie die Fehler im Programmtext. b) Geben Sie die korrigierten Zeilen an. Die Methode sort soll generisch bleiben. Achtung: Für Programmstellen, die nicht zu einem Fehler führen, aber als fehlerhaft gekennzeichnet sind, werden Punkte abgezogen. 8 Punkte 4

Aufgabe 5: (Programmzuverlässigkeit) Gegeben sei die folgende Java-Methode: static int f(int m, int n) { assert m>=0; // Vorbedingung P int i = m-1, x = 0; assert... // Schleifeninvariante Q while (i >= 0) { x = x-2*i+n; i = i-1; assert... // Schleifeninvariante Q assert... // Nachbedingung R return x; a) Welchen Wert berechnet diese Methode? Formulieren Sie eine entsprechende Nachbedingung R. b) Geben Sie eine geeignete Schleifeninvariante Q an, mit deren Hilfe die partielle Korrektheit der Methode bezüglich P und R nachgewiesen werden kann. Sie brauchen den Nachweis nicht zu führen. c) Formulieren Sie Q und R als Java-Ausdrücke, sodass diese in den obigen assert-anweisungen verwendet werden können. 10 Punkte 5

Aufgabe 6: (Datenstrukturen) Gegeben seien die folgenden Klassen Knoten und Suchbaum zur Implementierung binärer Suchbäume: public class Knoten { public int wert; public Suchbaum links, rechts; public Knoten(int wert) { this.wert = wert; this.links = new Suchbaum(); this.rechts = new Suchbaum(); public class Suchbaum { private Knoten wurzel = null; public boolean isempty() { return wurzel == null; public void insert(int x) { if (isempty()) wurzel = new Knoten(x); else if (x < wurzel.wert) wurzel.links.insert(x); else wurzel.rechts.insert(x); Betrachten Sie den folgenden binären Suchbaum: 7 public String tostring() { if (isempty()) return "!"; else return wurzel.rechts+"_"+ wurzel.wert+wurzel.links; 3 9 2 5 8 9 6 8 Die Werte 8 und 9 sind mehr als einmal im Suchbaum enthalten. Die Werte des Suchbaums sind also nicht alle verschieden. Dieser Baum enthält 7 verschiedene Werte: 2, 3, 5, 6, 7, 8, 9. 6

a) Was gibt das folgende Programmfragment aus? Suchbaum t = new Suchbaum(); t.insert(7); t.insert(1); t.insert(3); t.insert(0); t.insert(1); System.out.println(t); b) Zeichnen Sie den Graphen des Baumes aus a) wie im obigen Beispiel. c) Schreiben Sie eine Methode boolean verschieden(), die genau dann den Wert false liefert, falls mindestens eine Zahl mindestens zweimal im aktuellen Suchbaum enthalten ist. Einführendes Beispiel: Rückgabe false. d) Schreiben Sie eine Methode int anzahl(), die die Anzahl der verschiedenen Werte des aktuellen Suchbaumes zurückgibt. Einführendes Beispiel: Rückgabe 7. Erläutern Sie Ihre Methoden. Sie können eigene Hilfsmethoden schreiben, dürfen aber weder Klassen noch Methoden importieren. Durch Ihre Methoden darf der aktuelle Suchbaum nicht verändert werden. 26 Punkte 7