Inhoud Syntax- (compile), runtime- en logische fouten Binaire operatoren I I I Operaties op numerieke datatypen Evaluatie van expressies, bindingssterkte Assignment operaties en short-cut operatoren Controle Statements I I Herhaling met while en do-while loop Selectie met switch statement Arrays Jose Lagerberg (UvA) Inleiding Programmeren, College 3 8 september 2014 1 / 46 Syntaxfout bij compileren /∗ Fout1 . j a v a ∗/ p u b l i c c l a s s Fout1 { p u b l i c s t a t i c v o i d main ( S t r i n g [ ] a r g s ) { int n = Integer . parseInt ( args [ 0 ] ) ; System . o u t . p r i n t l n ( n ) ; } ] % j a v a c Fout1 . j a v a Fout1 . j a v a : 7 : i l l e g a l s t a r t o f t y p e ] ˆ Fout1 . j a v a : 7 : r e a c h e d end o f f i l e w h i l e p a r s i n g ] ˆ 2 errors Jose Lagerberg (UvA) Inleiding Programmeren, College 3 8 september 2014 2 / 46 Fouten bij compileren /∗ Fout2 . j a v a ∗/ p u b l i c c l a s s Fout1 { p u b l i c s t a t i c v o i d main ( S t r i n g [ ] a r g s ) { int n = Integer . parseInt ( args [ 0 ] ) ; System . o u t . p r i n t l n ( n ) ; } } % j a v a c Fout2 . j a v a Fout2 . j a v a : 2 : c l a s s Fout1 i s p u b l i c , s h o u l d be d e c l a r e d i n a f i l e named Fout1 . j a v a p u b l i c c l a s s Fout1 { ˆ 1 error Jose Lagerberg (UvA) Inleiding Programmeren, College 3 8 september 2014 3 / 46 Fouten bij compileren /∗ Fout3 . j a v a ∗/ p u b l i c c l a s s Fout3 { p u b l i c s t a t i c v o i d main ( S t r i n g [ ] a r g s ) { int n = Integer . parseInt ( args [ 0 ] ) ; System . o u t . p r i n t l n ( n ) } } % j a v a c Fout3 . j a v a Fout3 . j a v a : 5 : ’ ; ’ e x p e c t e d System . o u t . p r i n t l n ( n ) ˆ 1 error Jose Lagerberg (UvA) Inleiding Programmeren, College 3 8 september 2014 4 / 46 Fouten bij compileren /∗ Fout4 . j a v a ∗/ p u b l i c c l a s s Fout4 { p u b l i c s t a t i c v o i d main ( S t r i n g [ ] a r g s ) { int n = n + 1; System . o u t . p r i n t l n ( n ) ; } } % j a v a c Fout4 . j a v a Fout4 . j a v a : 4 : v a r i a b l e n m i g h t n o t h a v e been i n i t i a l i z e d int n = n + 1; ˆ 1 error Jose Lagerberg (UvA) Inleiding Programmeren, College 3 8 september 2014 5 / 46 Te grote double p u b l i c c l a s s Fout5 { p u b l i c s t a t i c v o i d main ( S t r i n g [ ] a r g s ) { int a = 6; dou b l e d ; i f ( ! a > 0) System . o u t . p r i n t l n ( a + ” i s > 0 ” ) ; i f ( a = 2) System . o u t . p r i n t l n ( a + ” i s 2 ” ) ; d = 1 . 2 e +345; System . o u t . p r i n t l n ( d ) ; } } % j a v a c Fout5 . j a v a Fout5 . j a v a : 1 0 : f l o a t i n g p o i n t number t o o l a r g e d = 1 . 2 e +345; ˆ 1 error Jose Lagerberg (UvA) Inleiding Programmeren, College 3 8 september 2014 6 / 46 Twee syntax fouten p u b l i c c l a s s Fout5 { p u b l i c s t a t i c v o i d main ( S t r i n g [ ] i n t a = 6 ; d o uble d ; i f ( ! a > 0) System . o u t . p r i n t l n ( a + ” i f ( a = 2) System . o u t . p r i n t l n ( a + ” // d = 1 . 2 e +345; // System . o u t . } } args ) { i s > 0” ) ; i s 2” ) ; println (d ); % j a v a c Fout5 . j a v a Fout5 . j a v a : 6 : o p e r a t o r ! c a n n o t be a p p l i e d t o i n t i f ( ! a > 0) ˆ Fout5 . j a v a : 8 : i n c o m p a t i b l e t y p e s found : int required : boolean i f ( a = 2) ˆ 2 errors Jose Lagerberg (UvA) Inleiding Programmeren, College 3 8 september 2014 7 / 46 Fouten bij runnen /∗ Fout6 . j a v a ∗/ p u b l i c c l a s s Fout6 { p u b l i c s t a t i c v o i d main ( S t r i n g [ ] a r g s ) { System . o u t . p r i n t l n ( 1 / 0 ) ; } } % j a v a Fout6 E x c e p t i o n i n t h r e a d ” main ” j a v a . l a n g . A r i t h m e t i c E x c e p t i o n : / by z e r o a t Fout6 . main ( Fout6 . j a v a : 4 ) Jose Lagerberg (UvA) Inleiding Programmeren, College 3 8 september 2014 8 / 46 Fouten bij runnen p u b l i c c l a s s TestArgument { p u b l i c s t a t i c v o i d main ( S t r i n g [ ] a r g s ) { String a ; a = a r g s [ 0 ] ; // 1 s t e argument System . o u t . p r i n t l n ( ” a i s ” + a ) ; } } % j a v a TestArgument E x c e p t i o n i n t h r e a d ” main ” j a v a . l a n g . A r r a y I n d e x O u t O f B o u n d s E x c e p t a t TestArgument . main ( TestArgument . j a v a : 4 ) Jose Lagerberg (UvA) Inleiding Programmeren, College 3 8 september 2014 9 / 46 Logische fout import j a v a . u t i l . ∗ ; p u b l i c c l a s s Fout7 { p u b l i c s t a t i c v o i d main ( S t r i n g [ ] a r g s ) { S c a n n e r i n p u t = new S c a n n e r ( System . i n ) ; System . o u t . p r i n t ( ” G e e f t e m p e r a t u u r i n g r a d e n C e l s i u s ” ) ; i n t tempC = i n p u t . n e x t I n t ( ) ; i n t tempF = 9 / 5 ∗ tempC + 3 2 ; System . o u t . p r i n t ( ” Temperatuur i n g r a d e n F a h r e n h e i t ” ) ; System . o u t . p r i n t l n ( tempF ) ; } } G e e f t e m p e r a t u u r i n g r a d e n C e l s i u s 35 Te mperatuur i n g r a d e n F a h r e n h e i t 67 Jose Lagerberg (UvA) Inleiding Programmeren, College 3 8 september 2014 10 / 46 Tweeplaatsige (binaire) operatoren op getallen Voorgedefinieerde binaire operatoren op getallen: operator verschil optelling vermenigvuldiging deling rest-bij-deling + * / % argument types getallen getallen getallen getallen getallen resultaat type getal getal getal getal getal Machtsverheffen is bijvoorbeeld geen voorgedefinieerde operatie. Bij het practicum definieer je deze operatie in termen van de voorgedefinieerde operaties. Jose Lagerberg (UvA) Inleiding Programmeren, College 3 8 september 2014 11 / 46 Operaties op getallen en typeconversie (1) bij operaties ordening op de primitive datatypes: byte < s h o r t < i n t < l o n g ? f l o a t < double Wanneer argumenten van operatie van verschillende types, wordt argument kleinste type bij evaluatie geconverteerd naar grotere type, maar altijd tenminste naar int Er wordt gerekend in int’s !!!!!!!!!!!!! Voorbeeld: 13 / 4 = 3 13 / 4 . 0 = 3 . 2 5 Jose Lagerberg (UvA) 13 % 4 = 1 13 % 4 . 0 = 1 . 0 Inleiding Programmeren, College 3 8 september 2014 12 / 46 Operaties op getallen en typeconversie (2) byte b = 2 0 ; System . o u t . p r i n t l n ( b ∗ b ) ; System . o u t . p r i n t l n ( ( byte ) ( b ∗ b ) ) ; // 400 // −112 i n t intMax = I n t e g e r . MAX VALUE ; // 2 , 1 4 7 , 4 8 3 , 6 4 7 System . o u t . p r i n t l n ( intMax + 1 ) ; // −2 ,147 ,483 ,648 System . o u t . p r i n t l n ( ( l o n g ) intMax + 1 ) ; // 2 , 1 4 7 , 4 8 3 , 6 4 8 // 3 . 4 0 2 8 2 3 5 E38 f l o a t fMax = F l o a t . MAX VALUE ; System . o u t . p r i n t l n ( 1 0 0 ∗ fMax ) ; // I n f i n i t y System . o u t . p r i n t l n ( 1 0 0 ∗ ( double ) fMax ) ; // 3 . 4 0 2 8 2 3 4 6 6 3 8 5 2 8 8 6 E40 Jose Lagerberg (UvA) Inleiding Programmeren, College 3 8 september 2014 13 / 46 Evaluatie van expressies: volgorde (1) Hoe verloopt, stap-voor-stap, de evaluatie van een expressie? Voorbeeld: stel a = 10, b = 5, en c = 25. => => => => => ! ( ( a > b ) | | ( c <= a ) ) ! ( ( true ) | | ( f a l s e )) ! ( true | | f a l s e ) ! ( true ) ! true false Eerste regel: innermost first. De argumenten van een operator moeten worden ge¨evalueerd voordat de waarde van de operatie bepaald kan worden. Haakjes geven structuur aan. Jose Lagerberg (UvA) Inleiding Programmeren, College 3 8 september 2014 14 / 46 Evaluatie van expressies: volgorde (2) Wanneer meerdere operaties zonder haakjes, geldt de regel: Links naar rechts, hoogste prioriteit eerst Prioriteit wordt bepaald door bindingssterkte 7 + 2 − 6 ∗ 1 / 3 − 4 / => 9 − 6 ∗ 1 / 3 − 4 / => 9 − 6 / 3 − 4 / => 9 − 2 − 4 / => 7 − 4 / => 7 − −2 => 9 Jose Lagerberg (UvA) −2 −2 −2 −2 −2 Inleiding Programmeren, College 3 8 september 2014 15 / 46 Bindingssterkte Een ordening voor de operaties die we tot nu toe gezien hebben: 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 ======================================================= + (t) ∗ + < == && | | = − / − <= != ! % > un . >= Voorbeeld: de structuur van a ∗ b + c == −a / b && ! d is Jose Lagerberg (UvA) (a ∗ b) + c == ((−a)/b) &&(!d) Inleiding Programmeren, College 3 8 september 2014 16 / 46 Assignment operatie De assignment statement i = j = k = 1; is equivalent met k = 1; j = k; i = j; Jose Lagerberg (UvA) Inleiding Programmeren, College 3 8 september 2014 17 / 46 Meer assignment operaties Voor een variabele v en expressie E de volgende short-cut operatoren: v v v v v ∗= /= %= += −= E E E E E v v v v v = = = = = v v v v v ∗ / % + − E E E E E Dit zijn afkortingen Voorbeelden Laat a = 2, b = 3, en n = 10 n ∗= a + b ; b e t e k e n t n = n ∗ ( a + b ) ; // 50 n ∗= a += b ; b e t e k e n t a = a + b ; n = n ∗ a ; // 50 a = b += c ∗= −d b e t e k e n t c = c ∗ −d ; b = b + c ; a = b ; Jose Lagerberg (UvA) Inleiding Programmeren, College 3 8 september 2014 18 / 46 Post- en pre- increment/decrement operatoren Nog twee short-cut operatoren: increment (++) en decrement (--) Increment: hoog het argument op met 1 Decrement: verlaag het argument met 1 Plaatsing ten opzichte van argument: ervoor (prefix) of erachter (suffix) Plaatsing kan gevolgen hebben voor de evaluatie van expressies waarin deze operaties voorkomen n++ n−− ++n −−n // // // // post increment post decrement pre increment pre decrement Jose Lagerberg (UvA) Inleiding Programmeren, College 3 8 september 2014 19 / 46 Increment/decrement Bij gebruik als assignment statement maakt de plaatsing niet uit: i++; en ++i; hebben beiden hetzelfde effect als i = i + 1; Bij gebruik in assignment expressie: I I Prefix: eerst ++n; dan evaluatie van expressie Suffix: eerst evaluatie van expressie, dan n++ v = ++n + 1 ; i s eq . met n = n + 1 ; v = n + 1 ; v = n++ + 1 ; i s eq . met v = n + 1 ; n = n + 1 ; Voorbeeld (k krijgt waarde 50) i n t i = 10; i n t k = 5 ∗ i ++; i n t i = 10; int k = 5 ∗ i ; i = i + 1; Voorbeeld (k krijgt waarde 55) i n t i = 10; i n t k = 5 ∗ ++i ; Jose Lagerberg (UvA) i n t i = 10; i = i + 1; int k = 5 ∗ i ; Inleiding Programmeren, College 3 8 september 2014 20 / 46 Side effect van short-circuit operatoren && en || c l a s s Example { p u b l i c s t a t i c v o i d main ( S t r i n g [ ] a r g s ) { int i = 0; bo o l e a n c o n d i t i o n = f a l s e ; i f ( c o n d i t i o n & (++ i < 1 0 0 ) ) System . o u t . p r i n t l n ( ” t h i s won ’ t be d i s p l a y e d ” ) ; System . o u t . p r i n t l n ( ” i i s : ” + i ) ; // i i n c r e m e n t e d i f ( c o n d i t i o n && (++ i < 1 0 0 ) ) System . o u t . p r i n t l n ( ” t h i s won ’ t be d i s p l a y e d ” ) ; System . o u t . p r i n t l n ( ” i i s : ” + i ) ; // i n o t i n c r e m e n t e d } } i i is : 1 is : 1 Jose Lagerberg (UvA) Inleiding Programmeren, College 3 8 september 2014 21 / 46 Verkorte operatoren &= en |= int m = 1; b o o l e an b = t r u e ; System . o u t . p r i n t l n ( ”b i s ” + b + ” en m i s ” + m) ; b = b | | (m++ > 1 ) ; System . o u t . p r i n t l n ( ”b i s ” + b + ” en m i s ” + m) ; b = b | (m++ > 1 ) ; System . o u t . p r i n t l n ( ”b i s ” + b + ” en m i s ” + m) ; b |= (m++ > 1 ) ; System . o u t . p r i n t l n ( ”b i s ” + b + ” en m i s ” + m) ; b b b b is is is is true true true true en en en en m m m m Jose Lagerberg (UvA) is is is is 1 1 2 3 Inleiding Programmeren, College 3 8 september 2014 22 / 46 Block statement en scope van variabele Samengesteld statement (block): { ... } Nul of meer statements tussen accolades Opmerking Let op: { int k; } k = 1; { int k; int k = 1; } leveren beiden foutmelding Jose Lagerberg (UvA) Inleiding Programmeren, College 3 8 september 2014 23 / 46 Voorbeeld 1 p u b l i c c l a s s Test1 { p u b l i c s t a t i c v o i d main ( S t r i n g [ ] a r g s ) { { int k ; } k = 1; } } % j a v a c Test1 . j a v a Test1 . j a v a : 6 : cannot f i n d symbol symbol : variable k l o c a t i o n : c l a s s Test1 k = 1; ˆ 1 error Jose Lagerberg (UvA) Inleiding Programmeren, College 3 8 september 2014 24 / 46 Voorbeeld 2 p u b l i c c l a s s Test2 { p u b l i c s t a t i c v o i d main ( S t r i n g [ ] a r g s ) { int k ; int k = 1; } } % j a v a c Test2 . j a v a T e s t 2 . j a v a : 4 : k i s a l r e a d y d e f i n e d i n main ( j a v a . l a n g . S t r i n g [ ] ) int k = 1; ˆ 1 error Jose Lagerberg (UvA) Inleiding Programmeren, College 3 8 september 2014 25 / 46 Herhaling met while loop public class TestDeler { p u b l i c s t a t i c v o i d main ( S t r i n g [ ] a r g s ) { int x , i ; x = Integer . parseInt ( args [ 0 ] ) ; i = 2; while ( i < x ) { i f ( x % i == 0 ) System . o u t . p r i n t l n ( ” e e n d e l e r i s : ” + i ) ; i = i + 1; } } } % j a v a T e s t D e l e r 93 een d e l e r i s : 3 e e n d e l e r i s : 31 Jose Lagerberg (UvA) Inleiding Programmeren, College 3 8 september 2014 26 / 46 While loop met foute conditie public c l a s s TestWhile { p u b l i c s t a t i c v o i d main ( S t r i n g [ ] a r g s ) { bo o l e a n b = f a l s e ; i n t ans = 3 ; do { System . o u t . p r i n t l n ( a n s ) ; ans = ans + 1 ; } while (b = true ) ; } } % java TestWhile 0 1 2 ... Jose Lagerberg (UvA) Inleiding Programmeren, College 3 8 september 2014 27 / 46 while en do while while: (nul of meer keer uitgevoerd) i n t count = 0; while ( count < 5) { System . o u t . p r i n t l n ( ”We z i j n c o u n t ++; } b i j : ” + count ) ; do-while: (tenminste ´e´en keer uitgevoerd) i n t count = 0; do { System . o u t . p r i n t l n ( ”We z i j n c o u n t ++; } while ( count < 5 ) ; Jose Lagerberg (UvA) b i j : ” + count ) ; Inleiding Programmeren, College 3 8 september 2014 28 / 46 Meervoudige selectie statements: switch Type van expression is char, byte, short, of int switch ( e x p r e s s i o n ) { c a s e v a l u e 1 : b l o c k 1 break ; c a s e v a l u e 2 : b l o c k 2 break ; ... c a s e v a l u e N : b l o c k N break ; d e f a u l t : d e f a u l t B l o c k break ; } switch ( a a n t a l ) { c a s e 0 : System . o u t . p r i n t l n ( ” n u l ” ) ; break ; c a s e 1 : System . o u t . p r i n t l n ( ” e e n ” ) ; break ; d e f a u l t : System . o u t . p r i n t l n ( ” v e e l ” ) ; break ; } Jose Lagerberg (UvA) Inleiding Programmeren, College 3 8 september 2014 29 / 46 Meervoudige selectie statements: switch break is optioneel: int aantal = 1; switch ( a a n t a l ) { c a s e 0 : System . o u t . p r i n t l n ( ” n u l ” ) ; c a s e 1 : System . o u t . p r i n t l n ( ” e e n ” ) ; c a s e 2 : System . o u t . p r i n t l n ( ” twee ” ) ; d e f a u l t : System . o u t . p r i n t l n ( ” v e e l ” ) ; } Uitvoer: een twee veel Jose Lagerberg (UvA) Inleiding Programmeren, College 3 8 september 2014 30 / 46 Voorbeeld switch int aantal = 2; switch ( a a n t a l ) { c a s e 0 : System . o u t . p r i n t l n ( ” n u l ” ) ; break ; c a s e 1 : System . o u t . p r i n t l n ( ” e e n ” ) ; break ; case 2 : case 3 : case 4 : System . o u t . p r i n t l n ( ” meer dan 1 maar m i n d e r dan 5 ” ) ; break ; d e f a u l t : System . o u t . p r i n t l n ( ” meer dan 4 ” ) ; break ; } meer dan 1 maar m i n d e r dan 5 Jose Lagerberg (UvA) Inleiding Programmeren, College 3 8 september 2014 31 / 46 Beschrijving probleem Gebaseerd op Introduction to Computer Science and Programming van MIT gegeven door prof. Eric Grimson en prof. John Guttag, MIT course number 6.00. Licentie: http://creativecommons.org/licenses/by-nc-sa/3.0/nl/ Gegeven: Boer met kippen en varkens ziet op zijn erf 20 koppen en 56 poten. Vraag: Hoeveel kippen en hoeveel varkens? Oplossing: 2 lineaire vergelijkingen met 2 onbekenden x is aantal kippen, y is aantal varkens x + y = 20 2 ∗ x + 4 ∗ y = 56 Jose Lagerberg (UvA) Inleiding Programmeren, College 3 8 september 2014 32 / 46 Andere oplossing met computer Alle mogelijkheden testen tot oplossing gevonden:brute force 0 kippen 1 kip 2 kippen ... 19 k i p p e n 20 k i p p e n 20 v a r k e n s 19 v a r k e n s 18 v a r k e n s ... 1 varken 0 varkens 1 aantal koppen en aantal poten moeten ingevoerd worden 2 dan loop die alle gevallen test Jose Lagerberg (UvA) Inleiding Programmeren, College 3 8 september 2014 33 / 46 Invoer en aanroep solve methode import j a v a . u t i l . ∗ ; p u b l i c c l a s s TestFarm { p u b l i c s t a t i c v o i d main ( S t r i n g [ ] a r g s ) { S c a n n e r s c = new S c a n n e r ( System . i n ) ; System . o u t . p r i n t l n ( ” E n t e r number o f h e a d s : ” ) ; i n t heads = sc . n e x t I n t ( ) ; System . o u t . p r i n t l n ( ” E n t e r number o f l e g s : ” ) ; int l e g s = sc . nextInt ( ) ; s o l v e ( legs , heads ) ; } s t a t i c v o i d s o l v e ( i n t numLegs , i n t numHeads ) { ... } } Jose Lagerberg (UvA) Inleiding Programmeren, College 3 8 september 2014 34 / 46 solve methode met for loop s t a t i c v o i d s o l v e ( i n t numLegs , i n t numHeads ) { i n t numChicks , numPigs , t o t L e g s ; f o r ( numChicks = 0 ; numChicks <= numHeads ; numChicks++) { numPigs = numHeads − numChicks ; t o t L e g s = 4 ∗ numPigs + 2 ∗ numChicks ; i f ( t o t L e g s == numLegs ) { System . o u t . p r i n t l n ( ” Nr o f p i g s : ” + numPigs ) ; System . o u t . p r i n t l n ( ” Nr o f c h i c k e n s : ” + numChicks ) ; return ; } } System . o u t . p r i n t l n ( ” There i s no s o l u t i o n ” ) ; } numHeads = 20 numLegs = 56 numChicks numPigs totLegs 0 20 80 1 19 78 ... 12 8 56 gevonden Jose Lagerberg (UvA) Inleiding Programmeren, College 3 8 september 2014 35 / 46 Uitvoer TestFarm % j a v a TestFarm E n t e r number o f h e a d s : 20 E n t e r number o f l e g s : 56 Nr o f p i g s : 8 Nr o f c h i c k e n s : 12 % j a v a TestFarm E n t e r number o f h e a d s : 20 E n t e r number o f l e g s : 20 There i s no s o l u t i o n Jose Lagerberg (UvA) Inleiding Programmeren, College 3 8 september 2014 36 / 46 10 variabelen van hetzelfde type public c l a s s BerekenGemiddelde { p u b l i c s t a t i c v o i d main ( S t r i n g [ ] a r g s ) { i n t a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 ; i n t som ; do u b l e g e m i d d e l d e ; a1 = 6 ; a2 = 4 ; a3 = 1 ; a4 = 9 ; a5 = 3 ; a6 = 6 ; a7 = 1 ; a8 = 4 ; a9 = 5 ; a10 = 2 ; som = a1 + a2 + a3 + a4 + a5 + a6 + a7 ; som += a8 + a9 + a10 ; g e m i d d e l d e = som / 1 0 . 0 ; System . o u t . p r i n t l n ( g e m i d d e l d e ) ; } } Jose Lagerberg (UvA) Inleiding Programmeren, College 3 8 september 2014 37 / 46 10 variabelen van hetzelfde type in array public c l a s s BerekenGemiddelde { p u b l i c s t a t i c v o i d main ( S t r i n g [ ] a r g s ) { i n t [ ] a = new i n t [ 1 0 ] ; i n t som = 0 ; do u b l e g e m i d d e l d e ; System . o u t . p r i n t l n ( a ) ; a [0] = 6; a [1] = 4; a [2] = 1; a [3] = 9; a [4] = 3; a [5] = 6; a [6] = 1; a [7] = 4; a [8] = 5; a [9] = 2; f o r ( i n t i = 0 ; i < 1 0 ; i ++) som += a [ i ] ; g e m i d d e l d e = som / 1 0 . 0 ; System . o u t . p r i n t l n ( g e m i d d e l d e ) ; } } [ I@1d9f953d 4.1 Jose Lagerberg (UvA) Inleiding Programmeren, College 3 8 september 2014 38 / 46 Arrays in Java 1 array maken: declareren, cre¨eren en initialiseren 2 toegang tot i-de element met a[i] 3 array index start met 0 int N = 10; int [ ] a ; a = new i n t [ N ] ; f o r ( i n t i = 0 ; i < 1 0 ; i ++) a [ i ] = 0; // // // // // g r o o t t e van a r r a y d e c l a r a t i e van a r r a y c r e a t i e van a r r a y i n i t i a l i s a t i e van a r r a y op n u l Dit kan compacter: int N = 10; i n t [ ] a = new i n t [ N ] ; Jose Lagerberg (UvA) // d e f a u l t i s 0 Inleiding Programmeren, College 3 8 september 2014 39 / 46 Compacte initialisatie in Java p u b l i c c l a s s Gemiddelde { p u b l i c s t a t i c v o i d main ( S t r i n g [ ] a r g s ) { i n t [ ] a = {6 , 4 , 1 , 9 , 3 , 6 , 1 , 4 , 5 , 2}; i n t som = 0 ; do u b l e g e m i d d e l d e ; f o r ( i n t i = 0 ; i < a . l e n g t h ; i ++) som += a [ i ] ; g e m i d d e l d e = ( double ) som / a . l e n g t h ; System . o u t . p r i n t l n ( g e m i d d e l d e ) ; } } Jose Lagerberg (UvA) Inleiding Programmeren, College 3 8 september 2014 40 / 46 Draai elementen in array om public class Reverse { p u b l i c s t a t i c v o i d main ( S t r i n g [ ] a r g s ) { i n t [ ] a = {6 , 4 , 1 , 9 , 3 , 6 , 1 , 4 , 5 , 2}; f o r ( i n t i = 0 ; i < a . l e n g t h / 2 ; i ++) { i n t temp = a [ i ] ; a [ i ] = a [ a . length − 1 − i ] ; a [ a . l e n g t h − 1 − i ] = temp ; } f o r ( i n t i = 0 ; i < a . l e n g t h ; i ++) System . o u t . p r i n t ( a [ i ] + ” ” ) ; System . o u t . p r i n t l n ( ) ; } } % java Reverse 2 5 4 1 6 3 9 1 4 6 Jose Lagerberg (UvA) Inleiding Programmeren, College 3 8 september 2014 41 / 46 Print random kaart p u b l i c c l a s s PrintRandomKaart { p u b l i c s t a t i c v o i d main ( S t r i n g [ ] a r g s ) { S t r i n g [ ] k a a r t = {”2” , ”3” , ”4” , ”5” , ”6” , ”7” , ”8” , ”9” , ” b o e r ” , ” vrouw ” , ” k o n i n g ” , ” a a s ” } ; S t r i n g [ ] k l e u r = {” k l a v e r ” , ” r u i t e n ” , ” h a r t e n ” , ” schoppen ” } ; i n t i = ( i n t ) ( Math . random ( ) ∗ 1 3 ) ; // t u s s e n 0 en 12 i n t j = ( i n t ) ( Math . random ( ) ∗ 4 ) ; // t u s s e n 0 en 3 System . o u t . p r i n t l n ( k a a r t [ i ] + ” van ” + k l e u r [ j ] ) ; } } % j a v a PrintRandomKaart 2 van k l a v e r Jose Lagerberg (UvA) Inleiding Programmeren, College 3 8 september 2014 42 / 46 Twee-dimensionale arrays uit slides 1.4 Arrays van Sedgewick int M = 10; int N = 3; d ouble [ ] [ ] a = new double [M] [ N ] ; f o r ( i n t = 0 ; i < M; i ++) { f o r ( i n t j = 0 ; j < N ; j ++) { a[ i ][ j ] = 0.0; } } Jose Lagerberg (UvA) Inleiding Programmeren, College 3 8 september 2014 43 / 46 Array vullen bij compilatie uit slides 1.4 Arrays van Sedgewick d o u ble [ ] [ ] { .02 , { .02 , { .02 , { .92 , { .47 , }; a = { .92 , .02 , .02 , .32 , .02 , .02 , .02 , .02 , .02 , .47 , Jose Lagerberg (UvA) .02 , .32 , .92 , .02 , .02 , .02 .32 .02 .02 .02 }, }, }, }, }, Inleiding Programmeren, College 3 8 september 2014 44 / 46 Optellen twee matrices uit slides 1.4 Arrays van Sedgewick d o u ble [ ] [ ] c = new d o uble [ N ] [ N ] ; f o r ( i n t i = 0 ; i < N ; i ++) f o r ( i n t j = 0 ; j < N ; j ++) c[ i ][ j ] = a[ i ][ j ] + b[ i ][ j ]; Jose Lagerberg (UvA) Inleiding Programmeren, College 3 8 september 2014 45 / 46 Overzicht Aan de orde gekomen zijn de volgende begrippen: 1 Verschillende soorten fouten 2 Operaties op numerieke datatypen 3 Evaluatie van expressies, bindingssterkte 4 Assignment operaties en short-cut operatoren 5 Herhaling met while en do-while loop 6 Selectie met switch statement Arrays 7 I I I om grote hoeveelheden data op te slaan bijna even makkelijk als primitieve typen elk element toegankelijk via index Jose Lagerberg (UvA) Inleiding Programmeren, College 3 8 september 2014 46 / 46
© Copyright 2025 ExpyDoc