You are on page 1of 21

Prof. Dr.

Robert Garmann Programmieren I (PR1) - Selbsttest ST1 - WS2014/15

Prof. Dr. Robert Garmann


PR1 - Selbsttest ST1 Hochschule Hannover
WS2014/15 (Stand 2014-09-17 10:17) Fakultät IV – Abteilung Informatik
Raum 303, Tel. 0511-9296-1832
robert.garmann@hs-hannover.de

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.

Stand 2014-09-17 10:17 Seite 1 von 21


Prof. Dr. Robert Garmann Programmieren I (PR1) - Selbsttest ST1 - WS2014/15

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.

Aufgaben im Überblick Seite


1 Einfache Aufgaben zur Wiederholung mit Zuordnung zu Vorlesungskapiteln.......................................... 4
1.a Einführung in die Java-Programmierung .............................................................................................4
1.a.i (2 Punkte) .................................................................................................................. 4
1.a.ii (3 Punkte) .................................................................................................................. 5
1.a.iii (2 Punkte) .................................................................................................................. 6
1.b Primitive Daten und definite Schleifen ................................................................................................6
1.b.i (2 Punkte) .................................................................................................................. 6
1.b.ii (3 Punkte) .................................................................................................................. 6
1.b.iii (1 Punkt) ................................................................................................................... 7
1.b.iv (1 Punkt) ................................................................................................................... 7
1.b.v (1 Punkt) ................................................................................................................... 8
1.b.vi (2 Punkte) .................................................................................................................. 8
1.b.vii (1 Punkt) ............................................................................................................ 9
1.c Einführung in Parameter und Objekte ................................................................................................9
1.c.i (2 Punkte) .................................................................................................................. 9
1.c.ii (2 Punkte) ................................................................................................................ 10
1.c.iii (2 Punkte) ................................................................................................................ 10
1.c.iv (4 Punkte) ................................................................................................................ 11
1.d Bedingte Ausführung ...................................................................................................................11
1.d.i (4 Punkte) ................................................................................................................ 11
1.d.ii (5 Punkte) ................................................................................................................ 12
1.d.iii (3 Punkte) ................................................................................................................ 13
1.d.iv (3 Punkte) ................................................................................................................ 14

Stand 2014-09-17 10:17 Seite 2 von 21


Prof. Dr. Robert Garmann Programmieren I (PR1) - Selbsttest ST1 - WS2014/15

1.e Programmlogik und indefinite Schleifen ............................................................................................15


1.e.i (3 Punkte) ................................................................................................................ 15
1.e.ii (6 Punkte) ................................................................................................................ 16
1.e.iii (3 Punkte) ................................................................................................................ 17
1.e.iv (3 Punkte) ................................................................................................................ 18
2 Realistische Klausuraufgaben ohne Kapitelzuordnung ................................................................... 19
2.a Protokoll (15 Punkte) ...................................................................................................................19
2.b Figuren zeichnen (25 Punkte) ........................................................................................................19
2.c Alphabet umdrehen (7 Punkte) .......................................................................................................20
2.d Collatzfolge (7 Punkte) .................................................................................................................20
2.e Startwerte mit maximale Collatzfolgenlänge (12 Punkte) .......................................................................20
2.f Exception erzeugen (8 Punkte) ......................................................................................................21

Stand 2014-09-17 10:17 Seite 3 von 21


Prof. Dr. Robert Garmann Programmieren I (PR1) - Selbsttest ST1 - WS2014/15

1 Einfache Aufgaben zur Wiederholung mit Zuordnung zu


Vorlesungskapiteln
1.a Einführung in die Java-Programmierung
1.a.i (2 Punkte)
Was geben die folgenden Statements aus? Tragen Sie die ausgegebenen Zeichen in das
Raster unterhalb des Statements ein. Für jedes ausgegebene Zeichen verwenden Sie genau
ein Kästchen. Bitte oben links anfangen.
a) System.out.println(″\″Quotes\″″);

b) System.out.println(″Slashes \\//″);

c) System.out.println(″\nSincerely,″);
System.out.println(″Susan″);

Stand 2014-09-17 10:17 Seite 4 von 21


Prof. Dr. Robert Garmann Programmieren I (PR1) - Selbsttest ST1 - WS2014/15

1.a.ii (3 Punkte)
Was gibt das folgende Programm aus?

public class Strange {


public static void first() {
System.out.println("first");
}

public static void second() {


System.out.println("second");
first();
}

public static void third() {


System.out.println("third");
first();
second();
}

public static void main(String[] args) {


first();
third();
second();
third();
}
}

Ausgabe:

Stand 2014-09-17 10:17 Seite 5 von 21


Prof. Dr. Robert Garmann Programmieren I (PR1) - Selbsttest ST1 - WS2014/15

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;

1.b Primitive Daten und definite Schleifen


1.b.i (2 Punkte)
Betrachten Sie folgenden Code. Welche Werte besitzen first und second am Ende?

int first = 8;
int second = 19;
first = first + second;
second = first – second;
first = first – second;

Ihre Antwort:
first besitzt am Ende den Wert

second 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.

Beispiel: Der Ausdruck (2 *count) erzeugt die Zahlenfolge 2, 4, 6, 8, …

Geben Sie für folgende erwünschte Zahlenfolgen einen geeigneten Ausdruck an:

4, 19, 34, 49, 64,79, …


Ihr Ausdruck:

Stand 2014-09-17 10:17 Seite 6 von 21


Prof. Dr. Robert Garmann Programmieren I (PR1) - Selbsttest ST1 - WS2014/15

1.b.iii (1 Punkt)
Was gibt der folgende Code aus?

for (int i=1; i<=3; i++)


System.out.println(″Foo″);
System.out.println(″Bar″);

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:

Stand 2014-09-17 10:17 Seite 7 von 21


Prof. Dr. Robert Garmann Programmieren I (PR1) - Selbsttest ST1 - WS2014/15

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?

1 public class Example {


2 public static void main(String[] args) {
3 for (int i=1; i<=2; i++) {
4 for (int j=0; j<3; j++) {
5 System.out.print((i+j) + " ");
6 }
7 }
8 }
9 }

Ihre Antwort:

Stand 2014-09-17 10:17 Seite 8 von 21


Prof. Dr. Robert Garmann Programmieren I (PR1) - Selbsttest ST1 - WS2014/15

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

1.c Einführung in Parameter und Objekte


1.c.i (2 Punkte)
Was ist die Ausgabe des folgenden Programms?

public class Example {


public static void main(String[] args) {
int number = 8;
halfTheFun(11);
System.out.println("number = " + number);
}

public static void halfTheFun(int number) {


number = number / 2;
for (int count = 1; count <= number; count++) {
System.out.print(count + " ");
}
System.out.println();
}
}

Ihre Antwort:

Stand 2014-09-17 10:17 Seite 9 von 21


Prof. Dr. Robert Garmann Programmieren I (PR1) - Selbsttest ST1 - WS2014/15

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)!

Hier einige wesentliche Methoden der Klasse String zur Information:


Methodenname Beschreibung
charAt(index) Zeichen an der gegebenen Indexstelle
indexOf(str) Index, an dem der gegebene String in dem String-Objekt beginnt
(-1, wenn er nicht vorkommt)
length() Anzahl der Zeichen im String-Objekt
substring(index1, index2) Die Zeichen von einschließlich index1 bis ausschließlich index2

toLowerCase() Ein neuer String in Kleinbuchstaben


toUpperCase() Ein neuer String in Großbuchstaben

Ihr Ausdruck:

Stand 2014-09-17 10:17 Seite 10 von 21


Prof. Dr. Robert Garmann Programmieren I (PR1) - Selbsttest ST1 - WS2014/15

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

1.d Bedingte Ausführung


1.d.i (4 Punkte)
Übersetzen Sie jede der folgenden Aussagen in einen booleschen Ausdruck, der in einem if-
Statement verwendet werden kann (also der Teil, der in den runden Klammern hinter dem if-
Schlüsselwort steht). Gehen Sie davon aus, dass drei int-Variable x, y, und z gegeben
deklariert sind.
a) z ist ungerade ....................................................................................... (1 Punkt)

Ihre Antwort:

b) Eine der Zahlen x und y ist ungerade und die andere ist gerade .......... (1 Punkt)

Ihre Antwort:

c) z ist nicht negativ .................................................................................... (1 Punkt)

Ihre Antwort:

Stand 2014-09-17 10:17 Seite 11 von 21


Prof. Dr. Robert Garmann Programmieren I (PR1) - Selbsttest ST1 - WS2014/15

d) x ist betragsmäßig näher an y als z es ist .............................................. (1 Punkt)

Ihre Antwort:

1.d.ii (5 Punkte)
Schreiben Sie ein Programm, das den Benutzer zur folgenden Eingabe auffordert:

Zahl größer 0: 6

Das Programm soll dann folgende Ausgabe tätigen:

Der 6-te Buchstabe ist das F.

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.

Nicht-numerische Eingaben dürfen zum unkontrollierten Programmabbruch führen.

Ihr Programm:

Stand 2014-09-17 10:17 Seite 12 von 21


Prof. Dr. Robert Garmann Programmieren I (PR1) - Selbsttest ST1 - WS2014/15

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:

Stand 2014-09-17 10:17 Seite 13 von 21


Prof. Dr. Robert Garmann Programmieren I (PR1) - Selbsttest ST1 - WS2014/15

1.d.iv (3 Punkte)
Was gibt der folgende Programmcode aus?

Point p1 = new Point(3, -2);


Point p2 = new Point(4, 0);

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:

Stand 2014-09-17 10:17 Seite 14 von 21


Prof. Dr. Robert Garmann Programmieren I (PR1) - Selbsttest ST1 - WS2014/15

1.e Programmlogik und indefinite Schleifen


1.e.i (3 Punkte)
Wie oft wird der Schleifenrumpf jeweils ausgeführt?

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:

Stand 2014-09-17 10:17 Seite 15 von 21


Prof. Dr. Robert Garmann Programmieren I (PR1) - Selbsttest ST1 - WS2014/15

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.

Nicht-numerische Eingaben dürfen zum unkontrollierten Programmabbruch führen.

Ihre Antwort:

Stand 2014-09-17 10:17 Seite 16 von 21


Prof. Dr. Robert Garmann Programmieren I (PR1) - Selbsttest ST1 - WS2014/15

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?

Nr. Ersetze (...) durch Ausgabe lautet Keine


Hallo Ausgabe
Bitte ankreuzen
a) (!b)
b) (b || false)
c) (!(x%2 != 0))
d) (b && !b)
e) (b || !b)
f) ((z==x) == true)

Stand 2014-09-17 10:17 Seite 17 von 21


Prof. Dr. Robert Garmann Programmieren I (PR1) - Selbsttest ST1 - WS2014/15

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:

Hier einige wesentliche Methoden der Klasse Random zur Information:


Methodenname Beschreibung
nextInt() Liefert eine zufällige ganze Zahl
nextInt(max) Liefert eine ganzzahlige Zufallszahl aus {0,1,2,…,max-1}

nextDouble() Liefert eine reelle Zufallszahl im halboffenen Intervall [0.0, 1.0)

Stand 2014-09-17 10:17 Seite 18 von 21


Prof. Dr. Robert Garmann Programmieren I (PR1) - Selbsttest ST1 - WS2014/15

2 Realistische Klausuraufgaben ohne Kapitelzuordnung


2.a Protokoll (15 Punkte)
In einer Abteilung arbeiten 5 Personen: P1, P2, P3, P4 und P5. Wöchentlich findet eine
Besprechung statt, bei der jede Person reihum Protokoll führen muss. In Kalender-
woche (KW) 1 hat P2 diesen Job freiwillig übernommen. In den folgenden Kalenderwochen
sind demnach P3 (KW 2), P4 (KW 3), P5 (KW 4), P1 (KW 5), dann wieder P2 (KW 6) dran
(usw.).

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.

Gewünschter verbindlicher Beispielablauf (Benutzereingaben sind unterstrichen):


KW? 50
Person P1

Ein anderes Beispiel:


KW? 53
Falsche KW
KW? 0
Falsche KW
KW? 52
Person P3

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.

2.b Figuren zeichnen (25 Punkte)


Schreiben Sie ein redundanzfreies Programm, das folgende Figur zeichnet. Die Größe der
Figur (d. h. die Gesamtbreite bzw, -höhe in Zeichen) soll vom Benutzer eingebbar sein.

Größe der Figur: 15


#|# Größe der Figur: 10
#*|*# #||#
#**|**# #*||*#
#***|***# #**||**#
#****|****# #***||***#
#*****|*****# ----++----
#******|******# ----++----
-------+------- #***||***#
#******|******# #**||**#
#*****|*****# #*||*#
#****|****# #||#
#***|***#
#**|**#
#*|*#
#|#

Stand 2014-09-17 10:17 Seite 19 von 21


Prof. Dr. Robert Garmann Programmieren I (PR1) - Selbsttest ST1 - WS2014/15

2.c Alphabet umdrehen (7 Punkte)


Schreiben Sie eine Methode encode, die ein gegebenes, großbuchstabiges Wort derart
codiert, dass das Alphabet genau umgekehrt eingesetzt wird, d. h. ein A wird ersetzt durch ein
Z, ein B durch ein Y, …, und schließlich ein Z durch ein A.

Beispiel:
System.out.println(encode("INFORMATIK"));
System.out.println(encode(encode("INFORMATIK")));

Gewünschte Ausgabe:
RMULINZGRP
INFORMATIK

2.d Collatzfolge (7 Punkte)


Die sog. Collatzfolge wird wie folgt gebildet:

Beginne mit irgendeiner natürlichen Zahl n > 0.


Ist n gerade, so nimm als Nächstes n/2,
Ist n ungerade, so nimm als Nächstes 3n + 1.
Wiederhole die Vorgehensweise mit der erhaltenen Zahl.

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

2.e Startwerte mit maximale Collatzfolgenlänge (12 Punkte)


Der Benutzer gebe eine natürliche Zahl n ein. Ihr Programm antwortet mit einem Startwert
1≤n0≤n, für den die Collatzfolge am längsten wird. Dazu muss Ihr Programm alle natürlichen
Zahlen bis einschließlich n durchprobieren und sich den Startwert zur jeweils maximalen
Folgenlänge merken.

Beispielablauf:
Startwert? 3000
Maximale Pfadlänge für Startwert 2919: 215

Stand 2014-09-17 10:17 Seite 20 von 21


Prof. Dr. Robert Garmann Programmieren I (PR1) - Selbsttest ST1 - WS2014/15

2.f Exception erzeugen (8 Punkte)


Wenn Sie die Collatzfolgenelemente in einer int-Variable speichern, kann es passieren, dass
die Folgenelemente zu groß für diesen Datentyp werden. Beispielsweise ist für den Startwert
n0=113383 das größte Folgenelement 2482111348. Diese Zahl ist zu groß für eine int-
Variable.

Ergänzen Sie in der Berechnung der Collatzfolgenelemente eine Prüfung, ob das


Folgenelement zu groß für den verwendeten Datentyp int wird und erzeugen in diesem Fall
eine ArithmeticException,

Stand 2014-09-17 10:17 Seite 21 von 21

You might also like