Informatik Praktikum 5

Werbung
Praktikum 5
Michael Roth, Andreas Behr
Informatik
Praktikum 5
Michael Roth
[email protected]
Andreas Behr
[email protected]
1 Programmieraufgaben
Diese kleinen Aufgaben sollen Ihnen helfen das gelernte noch ein wenig mehr zu vertiefen. Es
werden nur bereits gelernte Inhalte verwendet.
1.1 Schleifen und Array 1
Bei diesem Programm sollen Sie ein Integer Array mit den Zahlen 1 bis 10 anlegen und
anschlieÿend wieder ausgeben.
• Einmal mit einer for-Schleife
• Einmal mit einer while-Schleife.
1.2 Schleifen und Array 2
Legen Sie wieder ein Integer Array mit den Zahlen 1 bis 10 an.
Anschliessend geben Sie die Summe der ersten beiden Zahlen aus, danach die des nächsten
Pärchens usw.
1+2=3
3+4=7
...
9 + 10 = 19
Schreiben Sie das Programm wieder einmal mit einer For- und einer While-Schleife.
Seite 1 von 6
Praktikum 5
Michael Roth, Andreas Behr
1.3 FizzBuzz
Schreiben Sie ein Programm, dass die Zahlen 0 bis 100 ausgibt.
• Ist die Zahl durch 3 teilbar, geben Sie anstatt der Zahl den String 'Fizz' aus.
• Ist die Zahl durch 5 teilbar, geben Sie anstatt der Zahl den String 'Buzz' aus.
• Ist die Zahl durch 3 und 5 teilbar, geben Sie anstatt der Zahl den String 'FizzBuzz' aus.
FizzBuzz
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
...
1.4 Fakultät
Schreiben Sie ein Programm, welches eine positive natürliche Zahl (Integer) vom Benutzer auf
der Konsole abfragt. Die Zahl muss einen Wert zwischen 0 und 12 haben, ist die Zahl gröÿer
oder kleiner lassen Sie den Benutzer erneut eine Zahl eingeben.
Anschliessend berechnen Sie die Fakultät1 der Zahl und geben das Ergebnis aus.
Die Fakultät einer Zahl n ist das Produkt aller natürlichen Zahlen bis n.
n! =
n
Y
k
(1)
k=1
3! = 3 ∗ 2 ∗ 1 = 6
1
(2)
http://en.wikipedia.org/wiki/Factorial
Seite 2 von 6
Praktikum 5
Michael Roth, Andreas Behr
1.5 Personen ausgeben
Initialisieren Sie ein String-Array mit Namen persons mit folgendem Inhalt:
String[] persons = {"Peter","Booth", "30", "Paul", "Pearson", "28", "Mary", "Wagner", "29",
"Jonathan", "Flakes", "32"};
Das Array besteht immer aus der Kombination Vorname, Nachname, Alter, Vorname, Nachname, Alter, ...
Durchlaufen Sie nun das Array und geben für jede Person eine Zeile mit ihren Daten
aus, z.B.:
Hello Peter Booth. Your age is 30.
...
Hello Jonathan Flakes. Your age is 32.
1.6 Quersumme
Lassen Sie den Benutzer eine natürliche Zahl (Integer) eingeben und geben Sie anschliessend
die Quersumme aus.
Hinweise:
Listing 1: Länge eines Strings
1
2
String t e x t = " Hallo " ;
i n t l = text . length ( ) ;
// l = 5
Listing 2: Character Zeichen an Position i eines Strings
1 String t e x t = " Hallo " ;
2 char c = t e x t . c h a r A t ( 1 ) ;
// c = 'a '
Listing 3: Character in eine Zahl umwandeln
1 char c = ' 5 ' ;
2 i n t n = Character . d i g i t ( c , 1 0 ) ;
// n = 5
Seite 3 von 6
Michael Roth, Andreas Behr
Praktikum 5
1.7 Zahlenquiz
Schreiben Sie ein Programm, welches eine Zufallszahl zwischen 0 und 512 auswählt und der
Benutzer anschlieÿend aufgefordert wird, diese Zahl zu raten.
Der Benutzer soll solange raten bis er die richtige Zahl gefunden hat.
• Ist die eingegebene Zahl richtig, gratulieren Sie dem Nutzer und geben die Anzahl der
Versuche mit aus.
• Wenn die eingegebene Zahl zu hoch oder zu niedrig ist sagen Sie das dem Nutzer (ob zu
hoch oder zu niedrig) und lassen ihn erneut raten.
Hinweise:
Listing 4: Zufallszahl zwischen 0 und 512
1 import j a v a . u t i l . Random ;
2
3 Random rnd = new Random ( ) ;
4 i n t numberToFind = rnd . n e x t I n t ( 5 1 3 ) ;
Seite 4 von 6
Praktikum 5
Michael Roth, Andreas Behr
2 Quellcode verstehen
2.1 Was macht das Programm
Schauen Sie sich den Quellcode an und versuchen Sie ihn zu verstehen und beschreiben in
ihren eigenen Worten was das Programm macht.
Seien Sie ehrlich zu sich selbst und tippen das Programm erst ab, wenn Sie der Meinung sind es verstanden zu haben.
Listing 5: Was macht dieses Programm?
1 package w h a t d o e s i t d o ;
2
3 import j a v a . u t i l . Random ;
4 import j a v a . u t i l . Scanner ;
5
6 /∗ ∗
7
∗
8
∗ @author andreas
9
∗/
10 p u b l i c c l a s s WhatDoesItDo {
11
s t a t i c Scanner sc = new Scanner ( System . i n ) ;
12
s t a t i c i n t [ ] hidden ;
13
14
p r i v a t e s t a t i c boolean p r i n t O u t p u t ( i n t [ ] v a l u e s ) {
15
int idx = 0;
16
while ( i d x < v a l u e s . l e n g t h ) {
17
System . o u t . p r i n t ( v a l u e s [ i d x ] + " " ) ;
18
++ i d x ;
19
}
20
21
System . o u t . p r i n t l n ( " " ) ;
22
23
boolean ok = t r u e ;
24
f o r ( i n t i = 0 ; i < v a l u e s . l e n g t h ; ++ i ) {
25
i f ( v a l u e s [ i ] == hidden [ i ] ) {
26
System . o u t . p r i n t ( v a l u e s [ i ] + " " ) ;
27
} e l s e i f ( v a l u e s [ i ] < hidden [ i ] ) {
28
ok = f a l s e ;
29
System . o u t . p r i n t ( " < " ) ;
30
} else {
31
ok = f a l s e ;
32
System . o u t . p r i n t ( " > " ) ;
33
}
34
}
35
System . o u t . p r i n t l n ( " " ) ;
36
37
r e t ur n ok ;
38
}
39
40
private static int [ ] getInput ( ) {
41
i n t [ ] v a l u e s = new i n t [ 4 ] ;
42
43
f o r ( i n t i = 0 ; i < v a l u e s . l e n g t h ; ++ i ) {
44
System . o u t . p r i n t ( " Please e n t e r your i n p u t : " ) ;
45
v a l u e s [ i ] = sc . n e x t I n t ( ) ;
46
}
Seite 5 von 6
Michael Roth, Andreas Behr
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
Praktikum 5
r e t ur n v a l u e s ;
}
p u b l i c s t a t i c v o i d main ( S t r i n g [ ] args ) {
boolean ok = f a l s e ;
Random rnd = new Random ( ) ;
hidden = new i n t [ 4 ] ;
f o r ( i n t i = 0 ; i < hidden . l e n g t h ; ++ i ) {
hidden [ i ] = rnd . n e x t I n t ( 1 0 ) ;
}
while ( ! ok ) {
i n t [ ] myValues = g e t I n p u t ( ) ;
ok = p r i n t O u t p u t ( myValues ) ;
}
System . o u t . p r i n t l n ( " C o n g r a t u l a t i o n s ! ! ! " ) ;
}
}
Seite 6 von 6
Herunterladen