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