Entdecken Sie eBooks
Kategorien
Entdecken Sie Hörbücher
Kategorien
Entdecken Sie Zeitschriften
Kategorien
Entdecken Sie Dokumente
Kategorien
Name:
Vorname:
Studiengang:
Matrikelnummer:
Ablauf/Hinweise:
1. Platzfindung entsprechend den Anweisungen der Klausuraufsicht
2. Geräte (Handy etc.) ausschalten und in die Tasche
3. Richten Sie Ihren Platz ein. Auf Ihrem Platz dürfen sich befinden:
• Schreibmaterial: einzelne Stifte, Lineal etc. (keine Federtaschen usw.)
• 1 A4-Blatt mit selbsthandgeschriebenen Notizen (nicht gedruckt!) Vorbereitung
• Ihr Studenten- bzw. Lichtbildausweis
• ggfs. Essen, Getränk
→ keine Bücher, Handy, Taschenrechner, Smartwatch etc.
4. Ausgabe der Aufgaben. Die ausgeteilten Blätter bleiben liegen, 1. Seite oben!
5. Füllen Sie die oben stehenden Felder aus.
6. Nach Aufforderung durch die Aufsicht: Lesen & Bearbeiten der Klausur
7. Verwenden Sie nur die ausgegebenen Blätter zur Lösung der Aufgaben. Schreiben Sie Ihre Lösung
in die dafür vorgesehenen Felder/Bereiche.
8. Ordnen Sie die Blätter immer wieder zu einem Block, so dass nur die gerade bearbeitete Seite
sichtbar ist.
9. Verwenden Sie zum Schreiben/Skizzieren keine rote Farbe. Mit Bleistift erstellte Texte oder
Skizzen (außer Struktogramme) gehen im Allgemeinen nicht in die Bewertung ein!
10. Bearbeitungszeit: 90 Minuten
Aufgabe Punkte
1 / 10
2 / 8
3 / 18
4 / 12
5 / 7
6 / 15
7 / 10
8 / 10
Summe / 90
+Bonus:
Gesamtpunktzahl
AuP, 2020-02-19, Seite 2 von 12
1. Kreuzen Sie unten jeweils die richtige Antwort an. Es ist stets nur eine Antwort möglich, d.h.: es
gibt keinen Punkt bei Mehrfachantworten! Sollten Sie sich nicht sicher sein, dann können Sie
auch aufschreiben, warum Sie die eine und/oder andere Option wählen würden. (10 Punkte)
a) long x=3; if(false) x=2; x=1; // Welchen Wert hat x nun?
[ ]1
[ ]2
[ ]3
b) Was trifft auf eine Variable des Datentyps Boolean zu?
[ ] Sie kann null–Werte speichern.
[ ] Sie kann nur die Werte true oder false haben.
[ ] Sie hat stets die Modifikatoren public static.
c) Angenommen Algorithmus A hat die Komplexitätsklasse O(1) und Algorithmus B O(n),
[ ] … dann ist A stets schneller als B.
[ ] … dann besteht A aus nur einem Befehl.
[ ] … dann hängt die Laufzeit von A nicht von der Anzahl der zu verarbeitenden Daten ab.
d) Doppeltverkettete Listen…
[ ] bestehen aus Knoten, welche 2 Zeiger auf den jeweils nächsten Knoten enthalten.
[ ] lassen sich auch von hinten nach vorn durchlaufen.
[ ] gehören zu den statischen Datenstrukturen.
[ ] können zu Bäumen entarten.
e) Wozu wird in Java das Schlüsselwort break verwendet?
[ ] um Schleifen zu verlassen
[ ] um ein Programm zu beenden
[ ] um eine Pause in der Programmabarbeitung zu machen
f) Welche Aussage trifft in Java auf das Schlüsselwort return zu?
[ ] Nach return folgt stets ein Rückgabewert.
[ ] Seine Ausführung beendet stets die aktuelle Methode.
[ ] Es steht stets als letzter Befehl am Ende einer Methode.
g) Welcher Befehl weist der Variablen b den Wert false zu?
[ ] b = 2 > 1;
[ ] b = true | false;
[ ] b = true == false;
h) Java-Methoden …
[ ] können lokale Variablen enthalten.
[ ] haben immer mindestens einen Parameter.
[ ] sollten einen Namen haben, der mit einem großen Buchstaben beginnt.
i) Rekursive Algorithmen …
[ ] sind stets schneller als iterative.
[ ] lassen sich nicht in Java implementieren.
[ ] können zum Programmabbruch durch Stackoverflow führen.
k) Um eine existierende float-Variable f mit dem Wert 0,5 zu füllen, dient folgender Befehl:
[ ] f = 0.5f;
[ ] f = 1/2.0;
[ ] f = 1.0/2.0;
[ ] f = Math.sqrt(2);
AuP, 2020-02-19, Seite 3 von 12
2. Im nachfolgenden Kasten soll die Definition einer öffentlichen Klasse XYZ stehen, welche eine
öffentliche Gleitkommaobjektvariable namens a sowie eine Klassenvariable namens b enthalten
soll. b sei vom Typ XYZ und soll auf das zuletzt erzeugte XYZ-Objekt verweisen. Zudem soll XYZ
einen Konstruktor mit einem Parameter haben, der als Wert der Objektvariablen a verwendet
wird. Finden Sie mindestens 8 Fehler und geben Sie in der Tabelle jeweils die Zeilennummer und
eine kurze Beschreibung und Korrektur an. (8+x Punkte)
1: public class XVZ(){
2: static Integer a;
3: XYZ b = new XYZ();
4: xyz(double p){
5: b = p;
6: this = b;
7: }
3. Ein Algorithmus habe als Eingabe ein eindimensionales Feld von Gleitkommazahlen mit beliebi-
gen Werten. Der Algorithmus soll den Index finden, bei dem die Differenz zum nächsten Wert
am größten ist. Dieser Index ist am Ende des Algorithmus auszugeben. Wenn es mehrere
derartige Indices gibt, dann ist der kleinste dieser Indices auszugeben. Sollte das Feld nicht
existieren, dann ist -1 auszugeben. Sollte kein passendes Wertepaar im Feld enthalten sein,
dann ist -2 auszugeben. (18 Punkte)
Beispiel für den „Normalfall“: Das Feld enthalte die Zahlen 4, 7, 1, 5, 3. Daraus ergeben sich die
Differenzen 3, -6, 4, -2. Also ist 5-1=4 die größte Differenz und der Index von 1 ist auszugeben.
a) Setzen Sie den obigen Algorithmus in einem Struktogramm um. Beachten Sie dabei:
• Beenden Sie den Algorithmus bei Bedarf per z.B. return oder stop.
• Verwenden Sie im Struktogramm die typischen Struktogramm-Bausteine Sequenz,
bedingte Verzweigung und Schleife.
• Schreiben Sie die Texte möglichst in Java bzw. in einer an Java angelehnten Syntax
(Semikolon am Ende ist aber z.B. nicht nötig).
• Berücksichtigen Sie im Struktogramm an passender Stelle auch die Ein- und Ausgabe
von Werten sowie die Initialisierung von Variablen. (9 Punkte)
AuP, 2020-02-19, Seite 5 von 12
c) Haben Sie obige Methode als Klassen- oder Objektmethode definiert? Begründen Sie,
warum Sie sich so entschieden haben! (2 Punkte)
Zusatz: Definieren Sie Felder namens t1, t2 usw., mit denen firstIdxOfMaxPosSlope in
main möglichst gründlich getestet werden könnte. (+5 Punkte)
AuP, 2020-02-19, Seite 6 von 12
4. Schreiben Sie eine öffentliche Klasse R. Diese Klasse soll Rechtecke beschreiben und dazu Folgendes enthalten:
• eine long-Objektvariable namens br (zur Speicherung der Breite), welche geschützt ist,
• eine geschützte long-Objektvariable namens la (zur Speicherung der Länge),
• eine private short-Variable, welche numR heißen soll und stets für alle Objekte der Klasse gleich ist, wobei
numR am Anfang stets den Wert 0 haben soll und die aktuelle Anzahl der erzeugten Objekte speichert,
• einen öffentlichen Konstruktor mit einer Parameterliste, welche zur Initialisierung von br und la dienen soll
(die Reihenfolge der Parameter genauso wie eben aufgezählt; Achtung: sollte ein Parameter kleiner 0 sein,
dann ist als Wert 0 zu verwenden),
• eine öffentliche parameterlose Methode namens calcBorderLength, welche den Umfang des R-
Objektes berechnet und zurückgibt,
• eine public Getter-Methode, welche den aktuellen Wert von br zurückgibt,
• eine protected Setter-Methode, mit der der aktuelle Wert von br gesetzt werden kann (auch hier sind
negative Werte durch 0 zu ersetzen),
• bei jedem Konstruktoraufruf soll numR um 1 erhöht werden. (12 Punkte)
AuP, 2020-02-19, Seite 7 von 12
Zusatz 2: Wie lautet der Java-Code zur Definition der DbgInfo -Schnittstelle? (+2 Punkte)
AuP, 2020-02-19, Seite 8 von 12
Geben Sie schrittweise jeden Aufruf von m sowie den entsprechenden Rückgabewert (mit
Berechnungsablauf) an, wenn die Rekursion mit m(5) gestartet wird. (7 Punkte)
m( 5 )
m( )
m( )
b) Beim Suchen von Strings in Feldern müssen Zeichenketten verglichen werden. Dabei wird
sinnvollerweise das Comparable-Interface genutzt, welches Strings implementieren.
Angenommen die Zeichenkette "ZK" wäre in der Variable x referenziert. Wie würden Sie
Vergleiche zwischen x und einem String-Feldelement f[i] implementieren? (3 Punkte)
• „Wenn x kleiner f[i] ist“: if ( )
• „Wenn x gleich f[i] ist“: if ( )
• „Wenn x größer f[i] ist“: if ( )
AuP, 2020-02-19, Seite 9 von 12
c) Angenommen ein Feld ia sei wie folgt initialisiert: int[] ia = {5, 3, 9, 2, 1};
Wie würde dann ia nach je einem Durchlauf des Insertion-Sort-Algorithmus aussehen? Tragen
Sie die jeweiligen Werte in die Tabelle ein und beschreiben Sie, was im Durchlauf passierte und
warum. (Hinweis: Es wird dabei angenommen, dass der Algorithmus wie in der Vorlesung
beschrieben arbeitet. Sollte Ihre Lösung auf einer anderen Variante beruhen, dann beschreiben
Sie diese.) (6 Punkte)
b) Skizzieren Sie den binären Suchbaum (mit Knotenwerten) minimaler Höhe, welcher die Werte
7, 3, 9, 5, 8, 2, 6 enthält. (3 Punkte)
a) Was müsste an den Stellen ##1##, ##2## und ##3## stehen, so dass der Baum per rekursiver
Inorder-Traversierung als String zurückgegeben werden kann? (5 Punkte)
AuP, 2020-02-19, Seite 11 von 12
b) Schreiben Sie für BB eine öffentliche Klassenmethode namens pio, welche einen solchen
Binärbaum als Parameter übergeben bekommt und ihn dann mit Hilfe obiger
toStringInorder-Methode(n) auf der Konsole ausgibt. (3 Punkte)
c) Angenommen ein BB-Objekt bb würde erzeugt und mit n Elementen gefüllt werden. Welche
Komplexität in O-Notation hätte dann der Aufruf pio(bb)? Begründen Sie! (2 Punkte)
d) Bis zu 5 Zusatzpunkte erhalten Sie für die Implementierung einer öffentlichen Objektmethode
has(char c)in obiger BB-Klasse, welche prüft, ob ein Zeichen c in BB gespeichert ist. Der
Rückgabewert sei true, wenn c gefunden wurde, andernfalls false. Bei Bedarf (z.B. für eine
rekursive Lösung) können auch mehrere Methoden definiert werden. (+5 Punkte)
AuP, 2020-02-19, Seite 12 von 12