Professional Documents
Culture Documents
PR1 ST1.drvd
PR1 ST1.drvd
Bearbeiten Sie diesen Selbsttest wie eine Klausur. Drucken Sie ihn aus und versuchen die
Fragen zu beantworten. Erst anschließend sollten Sie die Musterlösung (Skriptelaufwerk)
heran ziehen, um ihre eigenen Antworten zu überprüfen.
Wichtig:
In der Klausur müssen Sie „auf Papier programmieren“. Das sollten Sie im Vorfeld üben.
Bearbeiten Sie den Selbsttest unter den gleichen Bedingungen wie die Klausur, indem
Sie die Lösung nicht am Rechner, sondern auf Papier entwickeln.
Die Aufgaben in Abschnitt 1 sind leicht. Betrachten Sie diese Aufgaben zur
Auffrischung Ihres Wissens. Wenn Sie nur die Aufgaben des ersten Abschnitts üben,
üben Sie zu wenig. In der Klausur müssen Sie in erheblichem Umfang mit schwereren
Aufgaben rechnen, wie Sie sie in Abschnitt 2 finden.
Zur Vorbereitung auf die Klausur reicht es nicht, nur den Selbsttest zu „können“. Sie
haben bis heute viele Übungsaufgaben bearbeitet (auf dem Skriptelaufwerk im Ordner
aufgaben), viele Leseaufgaben mit zugehörigen Übungen und Lernzielfragen bearbeitet
(auf dem Skriptelaufwerk in den Ordnern aufgaben bzw. skript/PR1_NN_Anlage) und
viele Begleitaufgaben zu den Vorlesungen bearbeitet (auf dem Skriptelaufwerk in den
Ordnern skript/PR1_NN_Anlage). Vergegenwärtigen Sie sich zur Vorbereitung auf die
Klausur auch diese vielen Aufgaben. Dann sollten Sie gut gewappnet für die Klausur
sein.
Bearbeitungszeit: ca. 135 Minuten (die echte Klausur hat eine abweichende Bearbeitungszeit).
Sie können den Test sinnvoll bearbeiten, wenn Sie den Stoff der Vorlesung, der
Leseaufgaben und der Übungen bis einschließlich Vorlesungskapitel 5.e beherrschen.
In der echten Klausur können andere Themen abgefragt werden als hier. Auch ist die Art der
Aufgabenstellung in der echten Klausur nicht beschränkt auf die hier vorzufindenden
Aufgabentypen.
Vorbemerkungen
(wörtlich übernommen aus der echten Klausur – wenn Sie die Vorbemerkungen jetzt lesen, sparen
Sie Zeit in der echten Klausur)
Bitte Mobiltelefon ausschalten!
Bitte Tisch aufräumen! Erlaubt ist:
o ein blauer oder schwarzer Stift (kein Bleistift),
o Getränke und medizinisch Notwendiges
o und Ihr Studierendenausweis.
Bitte Deckblatt ausfüllen und unterschreiben!
Bitte Matrikelnummer oben auf JEDES Blatt schreiben! Blätter ohne Matrikelnummer werden
nicht gewertet, wenn sie nicht eindeutig zuzuordnen sind (z. B. bei gelöster Heftung).
Bitte prüfen Sie, ob Sie genau 21 Seiten erhalten haben (plus Deckblatt)!
Die Punkte je Aufgabe geben die empfohlene Bearbeitungszeit in Minuten an.
Für Aufgaben mit Freitextantwort gilt: Die meisten Punkte erhalten Sie, wenn Sie mit so wenig
Text wie möglich den Kern des Problems bzw. der gefragten Lösung erfassen. Romane sind
nicht erwünscht und führen zu Punktabzug.
Mehrere widersprüchliche Lösungen zu einer Aufgabe werden mit 0 Punkten gewertet.
Bei Ankreuzaufgaben gilt (falls der Aufgabentext nichts anderes festlegt): Für jedes richtige
Kreuz gibt es Punkte. Wenn Sie kein Kreuz oder ein falsches Kreuz setzen, wird die
entsprechende Aufgabe mit 0 Punkten gewertet.
Sie müssen keine import-Statements angeben.
b) System.out.println(″Slashes \\//″);
c) System.out.println(″\nSincerely,″);
System.out.println(″Susan″);
1.a.ii (3 Punkte)
Was gibt das folgende Programm aus?
Ausgabe:
1.a.iii (2 Punkte)
Welche der folgenden Statements sind korrekt in dem Sinne, dass kein Compilerfehler auftritt
(Mehrfachantwort möglich)?
[ ] a) int print= 2;
[ ] b) int mein-gehalt= 2;
[ ] c) int MeinGehalt= 2;
[ ] d) int "Informatik"= 2;
[ ] e) int XYZ= 2;
[ ] f) int else= 2;
[ ] g) int 23broetchen= 2;
[ ] h) int anzahl_broetchen= 2;
[ ] i) int _summe= 2;
int first = 8;
int second = 19;
first = first + second;
second = first – second;
first = first – second;
Ihre Antwort:
first besitzt am Ende den Wert
1.b.ii (3 Punkte)
Nehmen Sie an, Sie hätten eine Variable count, die der Reihe nach die Werte 1, 2, 3, 4, …
annimmt. Formulieren Sie einen Ausdruck bezogen auf count, um eine neue Zahlenfolge zu
erzeugen.
Geben Sie für folgende erwünschte Zahlenfolgen einen geeigneten Ausdruck an:
1.b.iii (1 Punkt)
Was gibt der folgende Code aus?
Ihre Antwort:
1.b.iv (1 Punkt)
Was gibt der folgende Code aus?
System.out.print(″Ich ″);
System.out.println(″denke.″);
System.out.print(″Also ″);
System.out.println(″bin ich.″);
Für ein ausgegebenes Leerzeichen lassen Sie ein Feld im folgenden Gitter frei.
Ihre Antwort:
1.b.v (1 Punkt)
Was gibt der folgende Code aus?
System.out.print(″Ich ″);
System.out.print(″denke.″);
System.out.print(″Also ″);
System.out.println(″bin ich.″);
Für ein ausgegebenes Leerzeichen lassen Sie ein Feld im folgenden Gitter frei.
Ihre Antwort:
1.b.vi (2 Punkte)
Was ist die Ausgabe des folgenden Programms?
Ihre Antwort:
1.b.vii (1 Punkt)
Verändern Sie das Programm aus Aufgabe 1.b.vi so, dass jeweils genau 3 Zahlen in einer
Zeile ausgegeben werden. Danach soll ein Zeilenumbruch ausgegeben werden.
Ihr verändertes Programm (ggf. beschreiben Sie hier nur die Änderungen im Vergleich zum
obigen Programm. Geben Sie genau an, wo Sie was ändern wollen):
Ihre Antwort:
1.c.ii (2 Punkte)
Schreiben Sie eine Methode, die aus drei Ganzzahlen die kleinste heraus findet und als
Rückgabewert zurück gibt. Verwenden Sie die Methode Math.min(a,b) für Ihre Lösung.
Zur Info hier die Beschreibung von Math.min aus der API-Dokumentation:
Ihre Antwort:
1.c.iii (2 Punkte)
Gegeben sei der String
String str= "Four score and seven years ago";
Geben Sie einen Ausdruck unter Verwendung der Variable str und unter Verwendung von
Methoden der Klasse String an, der den Wert „SCORE“ besitzt. Bitte geben Sie einen
Ausdruck an (keine kompletten Statements, keine komplette Methode)!
Ihr Ausdruck:
1.c.iv (4 Punkte)
Welche Koordinaten besitzen die durch p1, p2, und p3 referenzierten Point-Objekte am Ende
des folgenden Codes:
Point p1= new Point(17, 9);
Point p2= new Point(4, -1);
Point p3= p2;
p1.translate(3, 1);
p2.x= 50;
p3.translate(-4, 5);
Hinweis: Die translate-Methode nimmt zwei Distanzen dx und dy entgegen, und verschiebt
die Koordinaten des Punktes um die gegebenen Distanzen.
Ihre Antwort:
x y
p1
p2
p3
Ihre Antwort:
b) Eine der Zahlen x und y ist ungerade und die andere ist gerade .......... (1 Punkt)
Ihre Antwort:
Ihre Antwort:
Ihre Antwort:
1.d.ii (5 Punkte)
Schreiben Sie ein Programm, das den Benutzer zur folgenden Eingabe auffordert:
Zahl größer 0: 6
Wenn eine unsinnige numerische Eingabe erfolgt, soll das Programm entsprechend reagieren:
Zahl größer 0: 27
Zahl ist zu groß.
oder
Zahl größer 0: -1
Zahl ist zu klein.
Ihr Programm:
1.d.iii (3 Punkte)
Schreiben Sie eine Methode, die einen ganzzahligen Parameter zwischen 1 und 9 entgegen
nimmt, und dann folgende Grafik ausgibt (Beispiel mit Parameterwert 7):
|1|2|3|4|5|6|7|
Ihre Methode:
1.d.iv (3 Punkte)
Was gibt der folgende Programmcode aus?
if (p1.equals(p2)) {
System.out.println("1");
}
p2.translate(-1, -2);
if (p1.equals(p2)) {
System.out.println("2");
}
p2 = p1;
p2.translate(2, 5);
if (p1.equals(p2)) {
System.out.println("3");
}
if (p1 == p2) {
System.out.println("4");
}
p2 = new Point(5, 3);
if (p1 == p2) {
System.out.println("5");
}
if (p1.equals(p2)) {
System.out.println("6");
}
Ihre Antwort:
a)
int x= 2;
while (x < 200) {
System.out.print(x + " ");
x *= x;
}
Ihre Antwort:
b)
int max= 10;
while (max < 10) {
System.out.println("count down: " + max);
max--;
}
Ihre Antwort:
1.e.ii (6 Punkte)
Schreiben Sie eine Schleife mit dem Schlüsselwort while, welche vom Benutzer so lange
eine Zahl einliest, bis die Zahl gerade ist. Anschließend soll das Programm die Zahl halbieren
und ausgeben.
Gewünschter Beispielablauf:
Eine gerade Zahl bitte: 3
Eine gerade Zahl bitte: 17
Eine gerade Zahl bitte: 88
44
Schreiben Sie nur den Quellcode der Schleife mit Schleifenkopf, Schleifenrumpf und
unmittelbar damit zusammenhängende Initialisierungen und Folgeanweisungen. Lassen Sie
Methodenköpfe und Klassendeklaration weg.
Ihre Antwort:
1.e.iii (3 Punkte)
Gegeben sei folgendes Codefragment:
int x= 17;
int z= 11;
boolean b= true;
if (...) {
System.out.println("Hallo");
}
Wie lautet die Ausgabe, wenn die drei Punkte (...) jeweils durch folgenden Code ersetzt
werden?
1.e.iv (3 Punkte)
Schreiben Sie eine Methode, die einen zufälligen Wahrheitswert zurück gibt. Die Rückgabe
sei mit der Wahrscheinlichkeit 60% wahr und mit der Wahrscheinlichkeit 40% unwahr.
Schreiben Sie kompakten Code.
Ihre Antwort:
Schreiben Sie ein Programm, das den Benutzer zur Eingabe einer Kalenderwoche (1-52)
auffordert.
Fehlerhafte ganzzahlige Eingaben sollen mit einer Fehlermeldung zurück gewiesen
werden und es soll erneut zur Eingabe aufgefordert werden.
Bei sonstigen fehlerhaften Eingaben darf Ihr Programm unkontrolliert abbrechen.
Bei korrekter Eingabe gibt das Programm die Person aus, die in der eingegebenen
Kalenderwoche Protokoll führen muss.
Weitere Anforderungen:
Vermeiden Sie redundanten Code, indem Sie z. B. gleiche Anweisungsfolgen in
eigenständige Methoden auslagern.
Gestalten Sie Ihr Programm so, dass folgende Änderung an singulärer Codestelle
umsetzbar ist: eine weitere Person wird Mitglied der Abteilung oder eine Person
verlässt die Abteilung.
Beispiel:
System.out.println(encode("INFORMATIK"));
System.out.println(encode(encode("INFORMATIK")));
Gewünschte Ausgabe:
RMULINZGRP
INFORMATIK
Beispiel:
19, 58, 29, 88, 44, 22, 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1, 4, 2, 1, …
Diese Folge mündet in den Zyklus 4, 2, 1. Man vermutet, dass die Folge bei jedem Startwert
irgendwann in diesen Zyklus mündet.
Ihre Aufgabe: Der Benutzer soll eine Startzahl eingeben. Ihr Programm berechnet die
Collatzfolge und gibt die Anzahl der Folgenelemente bis zur ersten 4 aus. Beispielablauf:
Startwert? 3000
47
Beispielablauf:
Startwert? 3000
Maximale Pfadlänge für Startwert 2919: 215