• Keine Ergebnisse gefunden

max. Punkte 5 10 16 8 11 20 70

N/A
N/A
Protected

Academic year: 2021

Aktie "max. Punkte 5 10 16 8 11 20 70"

Copied!
9
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 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 Klau- surergebnis 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.

(2)

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 defaultbekommen:

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 charsein:

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 extendsnicht 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 –

(3)

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

(4)

Aufgabe 3: (Kontrollstrukturen, Operatoren, Arrays) Welche der beiden folgenden Schlei- fen 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 Aus- drucks an. Setzen Sie vor jedem Ausdruck die Deklarationint 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

(5)

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?

8 Punkte Lösung:

– 5 –

(6)

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 Pa- rametern wird f dabei aufgerufen? Geben Sie die Reihenfolge der Aufrufe explizit an.

Wie groß ist diemaximale 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.

11 Punkte Lösung:

– 6 –

(7)

Aufgabe 6: (Programmerstellung) Eine derGoldbachschen Vermutungen(Christian Gold- bach, 1690-1764) sagt, dass jede gerade Zahl n≥6 als Summe von zwei ungeraden Prim- zahlen 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.

20 Punkte Lösung:

– 7 –

(8)

– 8 –

(9)

– 9 –

Referenzen

ÄHNLICHE DOKUMENTE

352 PINNWAND Leistung und Wirkungsgrad eines Trafos 353 Die elektrische Zahnbürste – ein Energiewandler 354 Energieübertragung vom Kraftwerk zur Steckdose 355

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

Die Methode laenge() soll die Länge des aktuellen Intervalls liefern. Markieren Sie die Fehler im Pro- grammtext. Achtung: Für Programmstellen, die nicht zu einem Fehler führen,

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

Studenten, die laut Pr¨ ufungsordnung im Vordiplom nur uber LA I gepr¨ ¨ uft werden (z.B. Physikalische Technologie), wird die Gele- genheit geboten, den LA I Schein zu

• If the diagnostic test hood is not installed when the self -test executes, the LED located on the card should light briefly and go out, indicating that the card

This section contains the switch selection and associated register formats for device and vector address assignments, baud rates and line parameters.. Cabling and