Title | Probeklausur Sommersemester 2018, Fragen und Antworten |
---|---|
Course | Informationstechnik |
Institution | Hochschule Karlsruhe - Technik und Wirtschaft |
Pages | 6 |
File Size | 99.6 KB |
File Type | |
Total Downloads | 117 |
Total Views | 145 |
summer...
Hochschule Karlsruhe –Technik und Wirtschaft Sommersemester 2018 Fakultät: Fakultät für Informatik und Wirtschaftsinformatik Informatik 1: Programmieren Prüfungsfach: PROBEKLAUSUR 2 == BLATT12 Dozent: Prof. Dr. Bröckl Hilfsmittel: Keine, außer einem zweiseitigen, handgeschriebenen DIN-A4-Blatt Name:
Seite 1/6 Semester:
1
Prüfungsnr.:
111
Zeit: Matr. Nr.:
60 Min __ __ __ __ __
Hinweise: Tragen Sie unbedingt Ihren Namen und Ihre Matrikelnummer ein! Orientieren Sie sich beim Antworten an dem jeweils in der Aufgabe freigelassenen Weißraum. Falls Ihnen der Platz – wegen einer Streichung zum Beispiel – nicht ausreicht, verwenden Sie bitte die Rückseiten der Aufgabenblätter. Diese Probeklausur hat mehr als 60 Minuten, da als Übungsblatt gedacht.
1. Aufgabe
Grundbegriffe
(ca. 10 min)
Beantworten Sie die folgenden Fragen: 1.1 Wofür steht die Abkürzung IDE?
Integrated Development Environment
1 min
1.2 Nennen Sie bitte drei zweistellige Boolsche Operatoren von Java, mit kurzem Beispiel jeweils.
UND:
A & B
ODER:
A | B
3 min
X-ODER: A ^ B 1.3 Was bedeutet Boxing? Geben Sie bitte auch ein Beispiel an.
Ein einfacher Datentyp wird in entsprechende objektorientierte Variante überführt: byte b=127; Byte bW = new Byte(b);
3 min
1.4 Wofür steht das „L“ bei dem Begriff L-Value?
Left
1 min
1.5 Was kennzeichnet einen L-Value?
Ihm kann ein Wert zugewiesen werden
1 min
1.6 Geben Sie bitte ein Beispiel an für die implizite Konvertierung von einfachen Datentypen.
Byte b = 23; short s = b;
1 min
Sommersemester 2018
2. Aufgabe
Inf1Prg
Matrikelnummer: __ __ __ __ __
Operatoren
Seite 2/6
(ca. 13 min)
2.1 Geben Sie bitte ein Beispiel für einen einstelligen Operator:
!false; 2.2 Geben Sie bitte ein Beispiel für einen zweistelligen Operator:
a + b; 2.3 Geben Sie bitte ein Beispiel für einen dreistelligen Operator:
a % 2 == 0 ? „gerade“ : „ungerade“; 2.4 Nennen Sie bitte einen zweistelligen Operator für Zeichenketten (Strings).
String s = „Viel“ + „ Erfolg“; 2.5 Eine int-Variable a sei mit 1 initialisiert. Einige Fragen zu folgendem Ausdruck: a == (a % 2); •
Was ist der Rückgabewert dieses Ausdrucks?
•
Was ist der Rückgabetyp dieses Ausdrucks?
true
boolean •
Welche Namen hat der Operator % in diesem Ausdruck?
Modulo- oder Restwertoperator •
Wieso kann man die Klammern weglassen?
Der Vorrang des %-Operators ist höher als der Vorrang des Identitäts-Operators == •
Ist der Teilausdruck in den Klammern ein L-Wert? Bitte mit kurzer Begründung.
Nein, er ist ein R-Wert, man kann ihm keinen Wert zuweisen. 2.6 Überführen Sie bitte den Ausdruck a = a + 3; in einen äquivalenten Ausdruck mit Nebenwirkung.
a += 3; 2.7 Überführen sie bitte den Ausdruck a = a - 1; in einen äquivalenten Ausdruck mit Nebenwirkung.
a--;
Sommersemester 2018
3. Aufgabe
Inf1Prg
Matrikelnummer: __ __ __ __ __
Kontrollstrukturen
Seite 3/6
(ca. 12 min)
Hinweis: Bitte, wenn möglich, Inkrement- oder kombinierte Zuweisungsoperatoren einsetzen. 3.1 Überführen Sie bitte folgende Schleife in eine äquivalente for-Schleife: int a = 0; int b = 0; do { b = b + a; a = a + 1; } while (a < 10);
for(a = 0, b = 0; a < 10; /*leer*/) {b += a; a++;}
3 min
3.2 Überführen Sie bitte folgende Schleife in eine äquivalente for-Schleife: a = 0; b = 0; while (a < 4) { b = b + ( a = a + 1); }
for(a = 0, b = 0; a < 4; a++, b += a); 3 min 3.3 Überführen Sie bitte folgende Fallunterscheidung in eine äquivalente Fallunterscheidung mit einer switch-case-Anweisung: enum Farben { R, G, B }; // ... Farben zufall = Farben.values()[ (int)( Math.random() * Farben.values().length ) ]; //(1) if (zufall == Farben.R) {s = "Rot";} else if (zufall == Farben.G) {s = "Grün";} else {s = "Blau";}
switch (zufall) { case R : s = "Rot";
break;
case G : s = "Grün"; default : s = "Blau"; } // 4 min
break; break;
3.4 Wieso ist der cast-Operator bei Kommentar //(1) oben nötig?
Math.random() gibt double zurück, der []-Operator funktioniert aber nur mit int.
2 min
Sommersemester 2018
4. Aufgabe
Inf1Prg
Matrikelnummer: __ __ __ __ __
Blöcke, Methoden
Seite 4/6
(ca. 13 min)
Gegeben sei folgender Code: class SS18_P2_A4{ int a; static int b; void c() { System.out.println(b); int b = 17; System.out.println(b); //(1) } public static void main(String[] args) { SS18_P2_A4 d = new SS18_P2_A4(); /*(2)*/ d.c(); } } 4.1 Was gibt das Programm aus?
0 17
2 min
4.2 Hat die Klasse Instanzvariablen? Begründen Sie bitte Ihre Antwort.
Ja. Variable a ist eine Instanzvariable
2 min
4.3 Welche Variablen sind bei Kommentar (1) gültig?
Klassenvariable b, lokale Variable b, Instanzvariable a
2 min
4.4 Welche Variablen sind bei Kommentar (1) sichtbar?
Lokale Variable b, Instanzvariable a 2 min 4.5 Welche Variablen sind bei Kommentar (2) auf dem Stack? Welchen Wert haben diese?
Lokale Variable d zeigt auf Instanz im Heap, z.B. d == blattxx.SS18_P2_A4@1eb44e46
1 min
4.6 Welche Variablen sind bei Kommentar (2) in der Method-Area? Welchen Wert haben diese?
Klassenvariable b == 0
2 min
4.7 Welche Variablen sind bei Kommentar (2) im Heap? Welchen Wert haben diese?
Instanzvariable a == 0
2 min
Sommersemester 2018
5. Aufgabe
Inf1Prg
Matrikelnummer: __ __ __ __ __
Rekursion
Seite 5/6
(ca. 14 min)
Gegeben sei folgende rekursive Methode: int a(long z) { if(0L == z) { return 0; //(1) } else { return 1 + a(z / 2); } } 5.1 Markieren Sie bitte die Rekursionsbasis im obigen Code mit einem Kommentar.
If
1 min
5.2 Markieren Sie bitte die Rekursionsfortsetzung im obigen Code mit einem Kommentar.
Else
1 min
5.3 Was ist das Ergebnis, wenn die Methode a mit dem Wert 6 aufgerufen wird.
3
2 min
5.4 Zeichnen Sie bitte den relevanten Teil des Stacks, wenn die Methode a mit dem Wert 6 aufgerufen wird.
z: 6
↓ Wachstumsrichtung des Stacks
z: 3 z: 1 z: 0
4 min
5.5 Was berechnet diese Methode verbal ausgedrückt?
Anzahl der Binärziffern von z
2 min
Gegeben sei weiterhin folgende rekursive Methode: void b(int i) { if(i > 4) { System.out.println(i); b(i - 1); } else {} } 5.6 Schreiben Sie bitte eine äquivalente iterative Methode mit einer for-Schleife.
void b_iterativ(int i) { for(;i > 4; i--) { System.out.println(i); } }
4 min
Sommersemester 2018
6. Aufgabe
Inf1Prg
Matrikelnummer: __ __ __ __ __
Vererbung
Seite 6/6
(ca. 12 min)
6.1 Was ist der Unterschied zwischen Überschreiben und Überladen?
Überladen: Mehrere Methoden mit gleichem Namen aber verschiedenen Signaturen in der selben Klasse. Überschreiben: Methode mit gleicher Signatur einer Superklasse wird durch eine Subklasse überschrieben. 4 min 6.2 Was bedeutet Statische Bindung?
Für einen Methodenaufruf kann schon zur Compile-Zeit die passende Methode bestimmt werden.
2 min
6.3 Wie kann man beim Programmieren Statische Bindung erzwingen?
Methoden, die private, static oder final deklariert werden, werden statisch gebunden.
2 min
6.4 Wozu kann man das Schlüsselwort super einsetzen? Nennen Sie bitte zwei Beispiele.
Aufruf von Methoden und Konstruktoren der Superklasse 1 min 6.5 Gegeben seien folgende Klassen: class A {int a;} class B extends A {int b;} a. Programmieren Sie damit bitte ein Beispiel für einen Up-Cast:
A a = new B(); // Impliziter Upcast 1 min b. Programmieren Sie damit bitte ein Beispiel für einen Down-Cast:
B b = (B) a; // Expliziter Downcast 1 min c. Welche Klasse generalisiert hier welche Klasse?
A generalisiert B
1 min...