• Keine Ergebnisse gefunden

max. Punkte 8 16 6 10 12 18 70

N/A
N/A
Protected

Academic year: 2022

Aktie "max. Punkte 8 16 6 10 12 18 70"

Copied!
7
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Technische Universität Braunschweig

Institut für Programmierung und Reaktive Systeme

Programmieren I

Dr. Werner Struckmann 26. 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 8 16 6 10 12 18 70

Punkte

Note:

Bitte prägen Sie sich Ihre Kennnummer gut ein. Aus Datenschutzgründen wird das Klau- surergebnis 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 2. September 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.

(2)

Aufgabe 1: (Programmverständnis) Gegeben seien die Methode static int wasPassiert(int[] a) {

int[] b = new int[a.length];

for (int i=0; i<a.length; i++) b[i] = a[i];

for (int j=1; j<b.length; j++) { int k = b[j],

i = j-1;

while (i>=0 && b[i]>k) { b[i+1] = b[i];

i--;

}

b[i+1] = k;

}

int c = 0;

for (int i=0; i<b.length-1; i++) if (b[i+1]-b[i]>c) c = b[i+1]-b[i];

return c;

}

sowie das Programmfragment int[] a = {0,4,6,0,1,8,13};

System.out.println("("+wasPassiert(a)+")");

a) Beschreiben Sie den Rückgabewert der Methode wasPassiertin Abhängigkeit vom Parametera.

b) Wie lautet die Ausgabe des Programmfragments?

8 Punkte Lösung:

(3)

Aufgabe 2: (Kontrollstrukturen, Operatoren, Felder) Welche der folgenden Schleifen ter- minieren? 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] =

16 Punkte

– 3 –

(4)

Aufgabe 3: (Grundlagen) 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 Alle Kommentare beginnen und enden mit dem folgenden Zeichen: /

Die Deklaration float x = ’5’;erzeugt einen Fehler.

Der Operator +darf auch auf Objekte der KlasseStringangewendet werden.

Statische Methoden einer Klasse dürfen nicht auf die Instanzvariablen

ihrer Klasse zugreifen.

Ein Bezeichner/identifier muss mindestens einen Buchstaben enthalten.

Eine Klasse darf höchstens eine Methode mit dem Namen main enthalten.

6 Punkte Aufgabe 4: (Rekursion) Gegeben sei die folgende rekursive Methode:

static int f(int x, int y) { if (x==0)

return 1;

else if (y<=2) return 2;

else

return f(x-2,y-2)-2*f(x-2,y);

}

Welchen Wert liefert der Aufruff(8,4)? In welcher Reihenfolge und mit welchen Parame- tern wirdfdabei 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 allex≥0,y≥0 der Aufruff(x,y)mit der Rückgabe einesint-Wertes?

Begründen Sie Ihre Antwort.

10 Punkte Lösung:

(5)

Aufgabe 5: (Objektorientierung) Ein Intervall [a, b] wird durch zwei Zahlen a und b definiert. Das Intervall enthält alle Zahlen von a bisb:

[a, b] ={x∈R | axb}

Gegeben sei die KlasseIntervallzur Darstellung von Intervallen. Die Methodelaenge() soll die Länge des aktuellen Intervalls liefern. Die Methode geschachtelt(Intervall i) soll den Wert true liefern, falls das Intervall i Teilmenge des aktuellen Intervalls ist.

Die Methode compareTo soll das aktuelle Intervall entsprechend seiner Länge mit dem Parameter vergleichen.

01 public class Intervall extends Comparable { 02 public double a, b;

03 public Intervall(double a, double b) { 04 this.a = Math.min(a,b);

05 this.b = Math.max(a,b);

06 }

07 public boolean geschachtelt(Intervall i) { 08 if (a<=i.a || b>=i.b) return true;

09 return false;

10 }

11 public static double laenge() { 12 return b-a;

13 }

14 public int compareTo(Object o) { 15 Intervall i = o;

16 if (laenge() == i.laenge())

17 return 0;

18 if (laenge() < i.laenge())

19 return -1;

20 else

21 return 1;

22 }

23 }

Außerdem sei das folgende Programmfragment gegeben:

24 Intervall i = new Intervall(6.0,2.0);

25 Intervall j = new Intervall(3.0,5.0);

26 System.out.println("Länge: "+i.laenge());

27 System.out.println(i.geschachtelt(j));

a) Die Programmzeilen 01 bis 27 enthalten Fehler. Markieren Sie die Fehler im Pro- grammtext. Achtung: Für Programmstellen, die nicht zu einem Fehler führen, aber als fehlerhaft gekennzeichnet sind, werden Punkte abgezogen.

b) Geben Sie die korrigierten Zeilen an. Was gibt das korrigierte Programm aus?

Schreiben Sie Ihre Lösung zum Aufgabenteil b) bitte auf Seite 6.

12 Punkte

– 5 –

(6)

Lösung zu Aufgabe 5

(7)

Aufgabe 6: (Programmerstellung) Gegeben sei eine Folgeavon verschiedenenint-Werten a0, . . . , an−1, n ≥ 1 sowie ein int-Wert x, der in der Folge a enthalten ist. Schreiben Sie eine Methode

static int next(int[] a, int x),

die solch ein Feld a und solch einen Wert x als Parameter erhält. Die Methode soll den kleinsten Wert von a liefern, der größer alsx ist.

Falls der Parameter a das Null-Objekt ist oder keine Werte enthält oder nicht al- le Elemente verschieden sind oder x nicht enthält, soll beim Aufruf der Methode eine IllegalArgumentException ausgelöst werden. Falls x der größte Wert von a ist, soll x das Ergebnis sein. Sie dürfen weder Methoden noch Klassen importieren, aber Hilfsmetho- den schreiben. Die Folge a soll durch einen Aufruf von next nicht geändert werden.

Beispiel: Falls a die Folge (12,7,5,9,13,24) und x der Wert 5 ist, soll der Aufruf next(a,x) den Wert 7 liefern, da 7 die nächstgrößere Zahl von 5 ist.

Erläutern Sie Ihre Methode.

18 Punkte Lösung:

– 7 –

Referenzen

ÄHNLICHE DOKUMENTE

Wenn Sie bei einer Aufgabe nicht weiterkommen, z.B. weil bereits ein Rechenfehler vorliegt, beschreiben Sie bitte m¨ oglichst genau das prinzipielle Vorgehen, mit dem Sie die

weil bereits ein Rechenfehler vorliegt, beschreiben Sie bitte m¨ oglichst genau das prinzipielle Vorgehen, mit dem Sie die Aufgabe angehen wollten. Es sind keine

Wenn einer oder beide der Parameter das Null-Objekt sind oder keine Int-Werte enthält, soll das Rückgabe- feld ein int-array sein, das keinen Int-Wert enthält. Sie dürfen keine

b) Geben Sie eine geeignete Schleifeninvariante Q an, mit deren Hilfe die partielle Kor- rektheit der Methode bezüglich P und R nachgewiesen werden kann. Sie brauchen den Nachweis

10 Punkte Lösung:.. Die Werte 7 und 8 sind mehr als einmal im Suchbaum enthalten. Die Methode insert gestattet also, dass Werte mehrfach im Suchbaum aufgenommen werden.. – 6 –.. Für

Was passiert bei sehr kleinen Schrittweiten und warum ist dies unabh¨ angig vom verwendeten Verfahren.

Findest du die 10 Fehler im unteren Bild?. Kathrin

[r]