25
2I002 TYPES DE BASE, VARIABLES, BOUCLES, CONDITIONNELLES GUIDE DE SURVIE EN JAVA Vincent Guigue

2i002 Types de base, variables, boucles, conditionnelles Guide de survie en JAVAguigue/wikihomepage/uploads/Course/... · 2018-09-13 · 2i002 types de base, variables, boucles, conditionnelles

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 2i002 Types de base, variables, boucles, conditionnelles Guide de survie en JAVAguigue/wikihomepage/uploads/Course/... · 2018-09-13 · 2i002 types de base, variables, boucles, conditionnelles

2I002TYPES DE BASE, VARIABLES,BOUCLES, CONDITIONNELLESGUIDE DE SURVIE EN JAVA

Vincent Guigue

Page 2: 2i002 Types de base, variables, boucles, conditionnelles Guide de survie en JAVAguigue/wikihomepage/uploads/Course/... · 2018-09-13 · 2i002 types de base, variables, boucles, conditionnelles

Types des variables de base en JAVA

Entier, réel, booléen, caractère: ces types sont disponibles debase en JAVA avec les opérateurs les plus courants.int, double, boolean, char, byte, short, long, float

La plupart des types et syntaxes associées sontcomparables au C/C++... Sauf le booléen.

Le booléen vaut true/false et n’est pas convertible en entier

Déclaration1 i n t i ; // d e c l a r a t i o n de i2 System . out . p r i n t l n ( i ) ; // => 03 double d = 2 . 6 ;4 boolean b = t rue ; // ou f a l s e5 char c = ’ a ’ ;1 // o p e r a t i o n s de base : + − / ∗ . . .2 i n t j = i +2;3 i n t k = 1/2 ; //=0 At t e n t i o n a l a d i v i s i o n e n t i e r e

2i002 – Outils de base 2/13

Page 3: 2i002 Types de base, variables, boucles, conditionnelles Guide de survie en JAVAguigue/wikihomepage/uploads/Course/... · 2018-09-13 · 2i002 types de base, variables, boucles, conditionnelles

Types des variables de base en JAVA

Entier, réel, booléen, caractère: ces types sont disponibles debase en JAVA avec les opérateurs les plus courants.int, double, boolean, char, byte, short, long, float

La plupart des types et syntaxes associées sontcomparables au C/C++... Sauf le booléen.

Le booléen vaut true/false et n’est pas convertible en entier

Déclaration1 i n t i ; // d e c l a r a t i o n de i2 System . out . p r i n t l n ( i ) ; // => 03 double d = 2 . 6 ;4 boolean b = t rue ; // ou f a l s e5 char c = ’ a ’ ;1 // o p e r a t i o n s de base : + − / ∗ . . .2 i n t j = i +2;3 i n t k = 1/2 ; //=0 At t e n t i o n a l a d i v i s i o n e n t i e r e

2i002 – Outils de base 2/13

Page 4: 2i002 Types de base, variables, boucles, conditionnelles Guide de survie en JAVAguigue/wikihomepage/uploads/Course/... · 2018-09-13 · 2i002 types de base, variables, boucles, conditionnelles

Types des variables de base en JAVA

Entier, réel, booléen, caractère: ces types sont disponibles debase en JAVA avec les opérateurs les plus courants.int, double, boolean, char, byte, short, long, float

La plupart des types et syntaxes associées sontcomparables au C/C++... Sauf le booléen.

Le booléen vaut true/false et n’est pas convertible en entier

Déclaration1 i n t i ; // d e c l a r a t i o n de i2 System . out . p r i n t l n ( i ) ; // => 03 double d = 2 . 6 ;4 boolean b = t rue ; // ou f a l s e5 char c = ’ a ’ ;

1 // o p e r a t i o n s de base : + − / ∗ . . .2 i n t j = i +2;3 i n t k = 1/2 ; //=0 At t e n t i o n a l a d i v i s i o n e n t i e r e

2i002 – Outils de base 2/13

Page 5: 2i002 Types de base, variables, boucles, conditionnelles Guide de survie en JAVAguigue/wikihomepage/uploads/Course/... · 2018-09-13 · 2i002 types de base, variables, boucles, conditionnelles

Types des variables de base en JAVA

Entier, réel, booléen, caractère: ces types sont disponibles debase en JAVA avec les opérateurs les plus courants.int, double, boolean, char, byte, short, long, float

La plupart des types et syntaxes associées sontcomparables au C/C++... Sauf le booléen.

Le booléen vaut true/false et n’est pas convertible en entier

Déclaration1 i n t i ; // d e c l a r a t i o n de i2 System . out . p r i n t l n ( i ) ; // => 03 double d = 2 . 6 ;4 boolean b = t rue ; // ou f a l s e5 char c = ’ a ’ ;1 // o p e r a t i o n s de base : + − / ∗ . . .2 i n t j = i +2;3 i n t k = 1/2 ; //=0 At t e n t i o n a l a d i v i s i o n e n t i e r e

2i002 – Outils de base 2/13

Page 6: 2i002 Types de base, variables, boucles, conditionnelles Guide de survie en JAVAguigue/wikihomepage/uploads/Course/... · 2018-09-13 · 2i002 types de base, variables, boucles, conditionnelles

Classe String

Gestion des chaines de caractères

String n’est pas un type de base, c’est un objet qui se comportedifféremment des types de base... Mais c’est une classecomplètement intégrée à JAVA et son caractère immutable larapproche très nettement d’un type de base.

1 S t r i n g s = " to to " ; // c r e a t i o n d ’ une cha i n e de c a r a c t e r e s2 s = s + "␣va␣a␣ l a ␣ f a c " ;3 System . out . p r i n t l n ( s ) ; // a f f i c h a g e de s dans l a c on s o l e

Ne pas confondre l’objet String et l’affichage dans la console.

Les possibilités sont nombreuses: extraction de sous-chaines(substring), division en plusieurs chaines (split), recherche decaractères, construction de nouvelles chaines à partir d’expressionsrégulières (replace)... Toute la documentation sur: http://docs.oracle.com/javase/7/docs/api/java/lang/String.html

2i002 – Outils de base 3/13

Page 7: 2i002 Types de base, variables, boucles, conditionnelles Guide de survie en JAVAguigue/wikihomepage/uploads/Course/... · 2018-09-13 · 2i002 types de base, variables, boucles, conditionnelles

Classe String

Gestion des chaines de caractères

String n’est pas un type de base, c’est un objet qui se comportedifféremment des types de base... Mais c’est une classecomplètement intégrée à JAVA et son caractère immutable larapproche très nettement d’un type de base.

1 S t r i n g s = " to to " ; // c r e a t i o n d ’ une cha i n e de c a r a c t e r e s2 s = s + "␣va␣a␣ l a ␣ f a c " ;3 System . out . p r i n t l n ( s ) ; // a f f i c h a g e de s dans l a c on s o l e

Ne pas confondre l’objet String et l’affichage dans la console.

Les possibilités sont nombreuses: extraction de sous-chaines(substring), division en plusieurs chaines (split), recherche decaractères, construction de nouvelles chaines à partir d’expressionsrégulières (replace)... Toute la documentation sur: http://docs.oracle.com/javase/7/docs/api/java/lang/String.html

2i002 – Outils de base 3/13

Page 8: 2i002 Types de base, variables, boucles, conditionnelles Guide de survie en JAVAguigue/wikihomepage/uploads/Course/... · 2018-09-13 · 2i002 types de base, variables, boucles, conditionnelles

Classe String

Gestion des chaines de caractères

String n’est pas un type de base, c’est un objet qui se comportedifféremment des types de base... Mais c’est une classecomplètement intégrée à JAVA et son caractère immutable larapproche très nettement d’un type de base.

1 S t r i n g s = " to to " ; // c r e a t i o n d ’ une cha i n e de c a r a c t e r e s2 s = s + "␣va␣a␣ l a ␣ f a c " ;3 System . out . p r i n t l n ( s ) ; // a f f i c h a g e de s dans l a c on s o l e

Ne pas confondre l’objet String et l’affichage dans la console.

Les possibilités sont nombreuses: extraction de sous-chaines(substring), division en plusieurs chaines (split), recherche decaractères, construction de nouvelles chaines à partir d’expressionsrégulières (replace)... Toute la documentation sur: http://docs.oracle.com/javase/7/docs/api/java/lang/String.html

2i002 – Outils de base 3/13

Page 9: 2i002 Types de base, variables, boucles, conditionnelles Guide de survie en JAVAguigue/wikihomepage/uploads/Course/... · 2018-09-13 · 2i002 types de base, variables, boucles, conditionnelles

String (suite)

2 choses à retenir sur les String

1 Les chaines sont immutables: modifier une chaine existanteest impossible, il faut créer une nouvelle chaine qui est unemodification de l’ancienne. Cela rend la classe peu efficientedans certain cas... Et il faut alors se tourner vers des objetsplus évolués (StringBuffer notamment)

2 Ne pas utiliser == avec les String mais toujours la méthode.equals. Les deux versions compilent mais la premièredonnera régulièrement des résultats faux (que nousexpliquerons plus tard).

1 S t r i n g s1 = " to to " ;2 S t r i n g s2 = " t i t i " ;3 i f ( s1 . e qu a l s ( s2 ) )4 System . out . p r i n t l n ( " I e s ␣ c h a i n e s ␣ son t ␣ i d e n t i q u e s " ) ;5 e l s e6 System . out . p r i n t l n ( " I e s ␣ c h a i n e s ␣ son t ␣ d i f f e r e n t e s " ) ;

2i002 – Outils de base 4/13

Page 10: 2i002 Types de base, variables, boucles, conditionnelles Guide de survie en JAVAguigue/wikihomepage/uploads/Course/... · 2018-09-13 · 2i002 types de base, variables, boucles, conditionnelles

Durée de vie, logique de bloc

une fonction est un bloc,une boucle ou une conditionnelle forme également un bloc,les blocs sont repérés par des accolades: {...}

Les variables déclarée dans un bloc sont détruites en sortant dubloc.

public void maFonction { int i = 2; for(int j=0; j<10; j++){ int k = 3; ... if(k<2){ ... } }}D

omai

ne d

e va

lidité

de

i

i est accessible partout dans la fonction

i est détruite en sortie de bloc2i002 – Outils de base 5/13

Page 11: 2i002 Types de base, variables, boucles, conditionnelles Guide de survie en JAVAguigue/wikihomepage/uploads/Course/... · 2018-09-13 · 2i002 types de base, variables, boucles, conditionnelles

Durée de vie, logique de bloc

une fonction est un bloc,une boucle ou une conditionnelle forme également un bloc,les blocs sont repérés par des accolades: {...}

Les variables déclarée dans un bloc sont détruites en sortant dubloc.

public void maFonction { int i = 2; for(int j=0; j<10; j++){ int k = 3; ... if(k<2){ ... } }}

2i002 – Outils de base 5/13

Page 12: 2i002 Types de base, variables, boucles, conditionnelles Guide de survie en JAVAguigue/wikihomepage/uploads/Course/... · 2018-09-13 · 2i002 types de base, variables, boucles, conditionnelles

Conversions entre types

JAVA, un langage typé

Les types sont très importants en JAVA: le compilateur vérifietoujours les types des différentes variables

Certaines conversions sont implicites:1 double d = 1 ; double d2 = i ; // avec i un i n t e x i s t a n t

Il est possible de transformer n’importe quel type de base enString (l’affichage est donc facile)

1 S t r i n g s = "mon␣message ␣"+1.5+"␣"+d ;

Certaines conversions doivent être explicites1 i n t i = ( i n t ) 2 . 4 ;

Conversions impossibles1 i n t i = ( i n t ) t rue ; // c o n v e r s i o n imp o s s i b l e des boo l e en s2 // v e r s l e domaine numer ique3 // => ERREUR de comp i l a t i o n

2i002 – Outils de base 6/13

Page 13: 2i002 Types de base, variables, boucles, conditionnelles Guide de survie en JAVAguigue/wikihomepage/uploads/Course/... · 2018-09-13 · 2i002 types de base, variables, boucles, conditionnelles

Conversions entre types

JAVA, un langage typé

Les types sont très importants en JAVA: le compilateur vérifietoujours les types des différentes variables

Certaines conversions sont implicites:1 double d = 1 ; double d2 = i ; // avec i un i n t e x i s t a n t

Il est possible de transformer n’importe quel type de base enString (l’affichage est donc facile)

1 S t r i n g s = "mon␣message ␣"+1.5+"␣"+d ;

Certaines conversions doivent être explicites1 i n t i = ( i n t ) 2 . 4 ;

il y a une perte d’information liée à la conversion; JAVA ne tolèrepas la conversion implicitement, il faut que le programmeur la de-mande explicitement (pour être sûr que la perte d’information estsouhaitée).

Conversions impossibles1 i n t i = ( i n t ) t rue ; // c o n v e r s i o n imp o s s i b l e des boo l e en s2 // v e r s l e domaine numer ique3 // => ERREUR de comp i l a t i o n

2i002 – Outils de base 6/13

Page 14: 2i002 Types de base, variables, boucles, conditionnelles Guide de survie en JAVAguigue/wikihomepage/uploads/Course/... · 2018-09-13 · 2i002 types de base, variables, boucles, conditionnelles

Conversions entre types

JAVA, un langage typé

Les types sont très importants en JAVA: le compilateur vérifietoujours les types des différentes variables

Certaines conversions sont implicites:1 double d = 1 ; double d2 = i ; // avec i un i n t e x i s t a n t

Il est possible de transformer n’importe quel type de base enString (l’affichage est donc facile)

1 S t r i n g s = "mon␣message ␣"+1.5+"␣"+d ;

Certaines conversions doivent être explicites1 i n t i = ( i n t ) 2 . 4 ;

Conversions impossibles1 i n t i = ( i n t ) t rue ; // c o n v e r s i o n imp o s s i b l e des boo l e en s2 // v e r s l e domaine numer ique3 // => ERREUR de comp i l a t i o n

2i002 – Outils de base 6/13

Page 15: 2i002 Types de base, variables, boucles, conditionnelles Guide de survie en JAVAguigue/wikihomepage/uploads/Course/... · 2018-09-13 · 2i002 types de base, variables, boucles, conditionnelles

Syntaxe des fonctions/méthodes

Syntaxe directement inspirée du C/C++Déclaration:

visibilité type de retour nom de la fonction argumentspublic double monCalcul (int arg1, String arg2)

Calculs diversRetour (obligatoire si autre que void)

1 pub l i c double monCalcul ( i n t i , double d ){

2 double r e s u l t a t = 100 . + i ∗ d ;

3 re tu rn r e s u l t a t ;4 }

2i002 – Outils de base 7/13

Page 16: 2i002 Types de base, variables, boucles, conditionnelles Guide de survie en JAVAguigue/wikihomepage/uploads/Course/... · 2018-09-13 · 2i002 types de base, variables, boucles, conditionnelles

Syntaxe des fonctions/méthodes

Syntaxe directement inspirée du C/C++Déclaration:

visibilité type de retour nom de la fonction argumentspublic double monCalcul (int arg1, String arg2)

Calculs divers

Retour (obligatoire si autre que void)

1 pub l i c double monCalcul ( i n t i , double d ){

2 double r e s u l t a t = 100 . + i ∗ d ;

3 re tu rn r e s u l t a t ;4 }

2i002 – Outils de base 7/13

Page 17: 2i002 Types de base, variables, boucles, conditionnelles Guide de survie en JAVAguigue/wikihomepage/uploads/Course/... · 2018-09-13 · 2i002 types de base, variables, boucles, conditionnelles

Syntaxe des fonctions/méthodes

Syntaxe directement inspirée du C/C++Déclaration:

visibilité type de retour nom de la fonction argumentspublic double monCalcul (int arg1, String arg2)

Calculs diversRetour (obligatoire si autre que void)

1 pub l i c double monCalcul ( i n t i , double d ){

2 double r e s u l t a t = 100 . + i ∗ d ;

3 re tu rn r e s u l t a t ;4 }

2i002 – Outils de base 7/13

Page 18: 2i002 Types de base, variables, boucles, conditionnelles Guide de survie en JAVAguigue/wikihomepage/uploads/Course/... · 2018-09-13 · 2i002 types de base, variables, boucles, conditionnelles

Opérateurs classiques (par ordre de priorité)

opérateurs postfixés [ ] . expr++ expr--opérateurs unaires ++expr --expr +expr -expr ~ !création ou cast new ( type ) expropérateurs multiplicatifs * / %opérateurs additifs + -décalages << >> >>>opérateurs relationnels < > <= >=opérateurs d’égalité == !=et bit à bit &ou exclusif bit à bit ^ou ( inclusif ) bit à bit |et logique &&ou logique ||opérateur conditionnel ? :affectations = += -= *= /= %= &= ^= |= <<= >>= >>>=

2i002 – Outils de base 8/13

Page 19: 2i002 Types de base, variables, boucles, conditionnelles Guide de survie en JAVAguigue/wikihomepage/uploads/Course/... · 2018-09-13 · 2i002 types de base, variables, boucles, conditionnelles

Conditionnelles

Syntaxe du Si, ... Alors:1 i n t i =8;2 i f ( i > 5){3 // code a e f f e c t u e r dans ce cas4 }5 e l s e { // l e e l s e e s t f a c u l t a t i f6 // Code a e f f e c t u e r s i n on7 }

En cas de clauses multiples:1 switch ( i ){2 case 1 :3 // Code a e f f e c t u e r s i i == 14 break ; // s i n on l e r e s t e du code e s t AUSSI e f f e c t u e5 case 2 : //6 // Code a e f f e c t u e r s i i == 27 break ;8 de f au l t : // S i on n ’ e s t pa s s e n u l l e p a r t a i l l e u r s9 }

2i002 – Outils de base 9/13

Page 20: 2i002 Types de base, variables, boucles, conditionnelles Guide de survie en JAVAguigue/wikihomepage/uploads/Course/... · 2018-09-13 · 2i002 types de base, variables, boucles, conditionnelles

Conditionnelles

Syntaxe du Si, ... Alors:1 i n t i =8;2 i f ( i > 5){3 // code a e f f e c t u e r dans ce cas4 }5 e l s e { // l e e l s e e s t f a c u l t a t i f6 // Code a e f f e c t u e r s i n on7 }

En cas de clauses multiples:1 switch ( i ){2 case 1 :3 // Code a e f f e c t u e r s i i == 14 break ; // s i n on l e r e s t e du code e s t AUSSI e f f e c t u e5 case 2 : //6 // Code a e f f e c t u e r s i i == 27 break ;8 de f au l t : // S i on n ’ e s t pa s s e n u l l e p a r t a i l l e u r s9 }

2i002 – Outils de base 9/13

Page 21: 2i002 Types de base, variables, boucles, conditionnelles Guide de survie en JAVAguigue/wikihomepage/uploads/Course/... · 2018-09-13 · 2i002 types de base, variables, boucles, conditionnelles

Boucles

La définition des boucles est identiques au C/C++

Syntaxes: 2 options (principales)Pour i allant de 0 à 9, faire...

1 i n t i ;2 f o r ( i =0; i <10; i ++){// i prend l e s v a l e u r s 0 a 9 =3 // 10 i t e r a t i o n s4 // code a e f f e c t u e r 10 f o i s5 }

Tant que i inférieur à 10, faire...1 i n t i = 0 ;2 whi le ( i <10){// i prend l e s v a l e u r s 0 a 9 =3 // 10 i t e r a t i o n s4 // code a e f f e c t u e r 10 f o i s5 i ++; // ne pas o u b l i e r , s i n on bouc l e i n f i n i e !6 }

D’autres syntaxes sont possibles : do...while etc...

2i002 – Outils de base 10/13

Page 22: 2i002 Types de base, variables, boucles, conditionnelles Guide de survie en JAVAguigue/wikihomepage/uploads/Course/... · 2018-09-13 · 2i002 types de base, variables, boucles, conditionnelles

Boucles

La définition des boucles est identiques au C/C++

Syntaxes: 2 options (principales)Pour i allant de 0 à 9, faire...

1 i n t i ;2 f o r ( i =0; i <10; i ++){// i prend l e s v a l e u r s 0 a 9 =3 // 10 i t e r a t i o n s4 // code a e f f e c t u e r 10 f o i s5 }

Tant que i inférieur à 10, faire...1 i n t i = 0 ;2 whi le ( i <10){// i prend l e s v a l e u r s 0 a 9 =3 // 10 i t e r a t i o n s4 // code a e f f e c t u e r 10 f o i s5 i ++; // ne pas o u b l i e r , s i n on bouc l e i n f i n i e !6 }

D’autres syntaxes sont possibles : do...while etc...

2i002 – Outils de base 10/13

Page 23: 2i002 Types de base, variables, boucles, conditionnelles Guide de survie en JAVAguigue/wikihomepage/uploads/Course/... · 2018-09-13 · 2i002 types de base, variables, boucles, conditionnelles

Interruptions de fonctions/boucles (1/3)

3 types d’interruptions de boucles

return : l’interruption la plus forte. Coupe l’exécution de laméthode (sort de la fonction, pas seulement la boucle).

1 // l e modulo par 5 peut− i l r e t r o u n e r un e n t i e r >=5?2 pub l i c vo id maFonction ( ){3 f o r ( i n t i =0; i <10; i ++){4 i f ( i %5>4){5 System . out . p r i n t l n ( "C ’ e s t ␣ t r e s ␣ e t r ange " ) ;6 re tu rn ;7 }8 }9 System . out . p r i n t l n ( " l ’ o p e r a t i o n ␣modulo␣5␣ r e t o u r n e "+

10 " t o u j o u r s ␣un␣ e n t i e r ␣ i n f e r i e u r ␣a␣5" ) ;11 }

2i002 – Outils de base 11/13

Page 24: 2i002 Types de base, variables, boucles, conditionnelles Guide de survie en JAVAguigue/wikihomepage/uploads/Course/... · 2018-09-13 · 2i002 types de base, variables, boucles, conditionnelles

Interruptions de fonctions/boucles (2/3)

3 types d’interruptions de boucles

return

break : l’interruption de boucle1 // 6 f a i t − i l p a r t i des mu l t i p l e s de 2?2 pub l i c vo id maFonction ( ){3 boolean found = t rue ;4 f o r ( i n t i =0; i <10; i ++){5 i f ( i ∗ 2 == 6){6 found = t rue ;7 break ; // pas b e s o i n d ’ a l l e r p l u s l o i n8 }9 }

10 i f ( found )11 System . out . p r i n t l n ( "6␣ f a i t ␣ p a r t i ␣ des ␣ mu l t i p l e s ␣de␣2" ) ;12 }

2i002 – Outils de base 12/13

Page 25: 2i002 Types de base, variables, boucles, conditionnelles Guide de survie en JAVAguigue/wikihomepage/uploads/Course/... · 2018-09-13 · 2i002 types de base, variables, boucles, conditionnelles

Interruptions de fonctions/boucles (3/3)

3 types d’interruptions de boucles

return

break

continue: sauter une itération de boucle1 // a f f i c h e r 3 . / i pour i v a r i a n t de −10 a 102 // i l f a u t pen s e r a s a u t e r l e cas 0 qu i provoque un prob leme3 pub l i c vo id maFonction ( ){4 f o r ( i n t i =−10; i <=10; i ++){// −10 e t 10 i n c l u s5 i f ( i == 0)6 cont inue ;7 System . out . p r i n t l n ( " 3 ./ "+i+"␣=␣"+(3./ i ) ) ;8 }9 }

Ces instructions rendent le code plus lisible en limitant notammentle nombre de blocs imbriqués.

2i002 – Outils de base 13/13