INF1256 Informatique pour les sciences de la gestion · INF1256 Informatique pour les sciences de...

31
INF1256 Informatique pour les sciences de la gestion – Structures r´ ep´ etitives et Expressions r´ eguli` eres – Johnny TSHEKE, Ing. Jr. Universit´ e du Qu´ ebec ` a Montr´ eal epartement d’Informatique tsheke [email protected] eance 05

Transcript of INF1256 Informatique pour les sciences de la gestion · INF1256 Informatique pour les sciences de...

Page 1: INF1256 Informatique pour les sciences de la gestion · INF1256 Informatique pour les sciences de la gestion { Structures r ep etitives et Expressions r eguli eres {Johnny TSHEKE,

INF1256 Informatique pour les sciences de la gestion

– Structures repetitives et Expressions regulieres –

Johnny TSHEKE, Ing. Jr.

Universite du Quebec a MontrealDepartement d’Informatiquetsheke [email protected]

Seance 05

Page 2: INF1256 Informatique pour les sciences de la gestion · INF1256 Informatique pour les sciences de la gestion { Structures r ep etitives et Expressions r eguli eres {Johnny TSHEKE,

1 Introduction aux expressions regulieres

2 Instruction : while

3 Instruction : do while

4 Instruction : for

5 Controles des boucles : break, continue, return

6 Choisir la bonne structure selon le contexte

Johnny Tsheke (UQAM) INF1256-10 Seance 05 2 / 31

Page 3: INF1256 Informatique pour les sciences de la gestion · INF1256 Informatique pour les sciences de la gestion { Structures r ep etitives et Expressions r eguli eres {Johnny TSHEKE,

Introduction aux expressions regulieres

1 Introduction aux expressions regulieres

2 Instruction : while

3 Instruction : do while

4 Instruction : for

5 Controles des boucles : break, continue, return

6 Choisir la bonne structure selon le contexte

Johnny Tsheke (UQAM) INF1256-10 Seance 05 3 / 31

Page 4: INF1256 Informatique pour les sciences de la gestion · INF1256 Informatique pour les sciences de la gestion { Structures r ep etitives et Expressions r eguli eres {Johnny TSHEKE,

Introduction aux expressions regulieres

Notions de base des expressions regulieres

chaines de caracteres ou pattern utilises pour verifier les formats des textes

facilitent la validation des donnees

chaines des caracteres ex : "INF2005" cherche cette chaine

x∣y x ou y. ex : "INF2005|INF3005"

[abc] une lettre parmi a, b et c

[a-z] une lettre entre a et z

[0-9] un chiffre entre 0 et 9

/w n’importe quel caractere alphanumerique : "[A-Za-z0-9\_]"

/W negation de /w (minuscule)

. le point correspond a n’importe quel caractere

/ precede un caractere special

{n} n occurrences. ex : "a{3}" pour 3 a consecutifs

{n,m} entre n et m occurrences. ex : "a{3,5}" pour entre 3 et 5 a consecutifs

* 0 ou plusieurs occurrences → {0,}? 0 ou 1 occurrence →{0,1}+ 1 ou plusieurs occurrences →{1,}(chaine) une sequence a l’interieur d’un pattern. ex : "a?(chaine)b+"

$ fin de la chaine. ex : .{1,}5$ une chaine qui se termine avec 5

ˆ debut de la chaine. ex : ^J\w* commence avec J suivi d’un nombre variable de caracteres alphanumeriques

[ˆ abc] negation de l’ensemble. Une lettre autre que a, b ou c

. . .

⇒ https://regex101.com ,⇒ https://developer.mozilla.org/en/docs/Web/JavaScript/Guide/Regular_Expressions

⇒ https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html

Johnny Tsheke (UQAM) INF1256-10 Seance 05 4 / 31

Page 5: INF1256 Informatique pour les sciences de la gestion · INF1256 Informatique pour les sciences de la gestion { Structures r ep etitives et Expressions r eguli eres {Johnny TSHEKE,

Introduction aux expressions regulieres

Expressions regulieres et validation de donnees en entree

Utiliser la methode hasNext(pattern) de la classe Scanner

pattern est une chaine (String) d’une expression reguliere

Johnny Tsheke (UQAM) INF1256-10 Seance 05 5 / 31

Page 6: INF1256 Informatique pour les sciences de la gestion · INF1256 Informatique pour les sciences de la gestion { Structures r ep etitives et Expressions r eguli eres {Johnny TSHEKE,

Instruction : while

1 Introduction aux expressions regulieres

2 Instruction : while

3 Instruction : do while

4 Instruction : for

5 Controles des boucles : break, continue, return

6 Choisir la bonne structure selon le contexte

Johnny Tsheke (UQAM) INF1256-10 Seance 05 6 / 31

Page 7: INF1256 Informatique pour les sciences de la gestion · INF1256 Informatique pour les sciences de la gestion { Structures r ep etitives et Expressions r eguli eres {Johnny TSHEKE,

Instruction : while

Instruction while en Java

En pseudocode → TANT QUEForme generale

while ( expression ){//mettre les instructions du corps de la boucle ici

}

expression doit etre vraie (true) pour executer le corps de la boucle

On execute le corps de la boucle aussi longtemps que expressionrestera vraie

⇒ Veuillez a ce que expression devienne fausse (false) a un moment ou unautre. Sinon, boucle infinie et un programme qui ne s’arrete pas !

Johnny Tsheke (UQAM) INF1256-10 Seance 05 7 / 31

Page 8: INF1256 Informatique pour les sciences de la gestion · INF1256 Informatique pour les sciences de la gestion { Structures r ep etitives et Expressions r eguli eres {Johnny TSHEKE,

Instruction : while

Illustration de while

while( expression ) {// instructions du corps de la boucle decalage

// modification possible de expresssion

}

Johnny Tsheke (UQAM) INF1256-10 Seance 05 8 / 31

Page 9: INF1256 Informatique pour les sciences de la gestion · INF1256 Informatique pour les sciences de la gestion { Structures r ep etitives et Expressions r eguli eres {Johnny TSHEKE,

Instruction : while

Illustration de while en pseudocode

Afficher un a un les nombres 1 a 10

MAX←10

nb←1

TANT QUE nb <= MAX

AFFICHER nb

nb← nb+1

FIN TANT QUE

la boucle continue tant que nb est inferieurou egal a MAX (qui vaut 10)

nb augmente a chaque iteration

quand nb egal a 11 → nb <= MAX devientfaux et la boucle s’arrete !

Johnny Tsheke (UQAM) INF1256-10 Seance 05 9 / 31

Page 10: INF1256 Informatique pour les sciences de la gestion · INF1256 Informatique pour les sciences de la gestion { Structures r ep etitives et Expressions r eguli eres {Johnny TSHEKE,

Instruction : while

Exemple d’une boucle while

Affichage des nombres 1 a 10 : AfficheNombres.java

package i n f 1 2 5 6 s 0 5 ;

p u b l i c c l a s s A f f i c h e N o m b r e s {s t a t i c f i n a l i n t MAX = 1 0 ;

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 i = 1 ;w h i l e ( i<= MAX){ // a f f i c h e 1 a 10

System . out . p r i n t l n ( ” i = ”+i ) ;i = i + 1 ;

}

}

}

Johnny Tsheke (UQAM) INF1256-10 Seance 05 10 / 31

Page 11: INF1256 Informatique pour les sciences de la gestion · INF1256 Informatique pour les sciences de la gestion { Structures r ep etitives et Expressions r eguli eres {Johnny TSHEKE,

Instruction : while

Exemple d’une boucle while (2)

Exemple de validation d’une reponse (Oui/Non) : ValidationReponse.java

package i n f 1 2 5 6 s 0 5 ;import j a v a . u t i l . ∗ ;p u b l i c c l a s s V a l i d a t i o n R e p o n s e {

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 ) {// V a l i d e r une r e ponse O, o ,N ou nS t r i n g p a t t e r n = ” [ OoNn ] ” ; // E x p r e s s i o n r e g u l i e r e

Scanner c l a v i e r = new Scanner ( System . i n ) ;System . out . p r i n t l n ( ” E n t r e z O ou o pour Oui / N ou n pour Non” ) ;w h i l e ( ! c l a v i e r . hasNext ( p a t t e r n ) ){

System . out . p r i n t l n ( ”Re ponse i n v a l i d e ” ) ;System . out . p r i n t l n ( ” E n t r e z O ou o pour Oui / N ou n pour Non” ) ;c l a v i e r . n e x t ( ) ; // on d e p l a c e l a t e t e de l e c t u r e// on l i t s a n s m e t t r e dans aucune v a r i a b l e v a r v a l e u r i n v a l i d e

}S t r i n g r e p o n s e = c l a v i e r . n e x t ( ) ; // v a l e u r v a l i d eSystem . out . p r i n t l n ( ” Votre r e ponse e s t : ” + r e p o n s e ) ;c l a v i e r . c l o s e ( ) ;}

}

Johnny Tsheke (UQAM) INF1256-10 Seance 05 11 / 31

Page 12: INF1256 Informatique pour les sciences de la gestion · INF1256 Informatique pour les sciences de la gestion { Structures r ep etitives et Expressions r eguli eres {Johnny TSHEKE,

Instruction : while

Exemple d’une boucle while (3)Exemple de validation d’un nombre reel : ValidationNombreReel.java

package i n f 1 2 5 6 s 0 5 ;import j a v a . u t i l . ∗ ;p u b l i c c l a s s V a l i d a t i o n N o m b r e R e e l {

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 ) {// V a l i d a t i o n nombre 2 c h i f f r e s avant p o i n t e t 1 a 3 c h i f f r e s apr e s//Ex : 03 .000

Scanner c l a v i e r = new Scanner ( System . i n ) . u s e L o c a l e ( L o c a l e . US) ;/∗ c e c i f o r c e l e s param e t r e s l o c a u x a USA . donc au l i e u∗ de v i r g u l e , on f o r c e a u t i l i s e r p o i n t s u r l e s nombres r e e l s∗/

S t r i n g p a t t e r n = ” [0 −9]{2} [ . ]{1} [0 −9]{1 ,3} ” ;boolean nombreVa l ide = f a l s e ;Double n o m b r e S a i s i e =0.0 ;w h i l e ( ! nombreVa l ide ){

System . out . p r i n t l n ( ” E n t r e z un nombre r e e l . . ” ) ;System . out . p r i n t l n ( ”2 c h i f f r e s pour l a p a r t i e e n t i e r e ” ) ;System . out . p r i n t l n ( ”1 a 3 c h i f f r e s pour l a p a r t i e d e c i m a l e ” ) ;i f ( c l a v i e r . hasNext ( p a t t e r n ) ){

n o m b r e S a i s i e=c l a v i e r . nextDoub le ( ) ;nombreVa l ide = t r u e ; // pour a r r e t e r l a b o u c l e

} e l s e{c l a v i e r . n e x t ( ) ;

}}System . out . fo rmat ( ” Le nombre s a i s i e e s t : %06.3 f ” , n o m b r e S a i s i e ) ;c l a v i e r . c l o s e ( ) ;}

}

Johnny Tsheke (UQAM) INF1256-10 Seance 05 12 / 31

Page 13: INF1256 Informatique pour les sciences de la gestion · INF1256 Informatique pour les sciences de la gestion { Structures r ep etitives et Expressions r eguli eres {Johnny TSHEKE,

Instruction : while

Exemple d’une boucle while (4)

Exemple de validation d’un code permanent : CodePermanent.java

package i n f 1 2 5 6 s 0 5 ;import j a v a . u t i l . ∗ ;p u b l i c c l a s s CodePermanent {

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

Scanner c l a v i e r = new Scanner ( System . i n ) ;S t r i n g p a t t e r n = ” [ A−Za−z ]{4} [0−9]{8}” ;boolean s t o p=f a l s e ;w h i l e ( ! s t o p ){

System . out . p r i n t l n ( ” E n t r e z un code permanent v a l i d e ” ) ;System . out . p r i n t l n ( ”4 l e t t r e s s u i v i e s de 8 c h i f f r e s ” ) ;i f ( c l a v i e r . hasNext ( p a t t e r n ) ){

s t o p = t r u e ;} e l s e{

System . out . p r i n t l n ( ”Ce code n ' e s t pas v a l i d e ” ) ;c l a v i e r . n e x t ( ) ;

}}S t r i n g codePermanent = c l a v i e r . n e x t ( ) ;System . out . p r i n t l n ( ” Le code permanent e s t ”+codePermanent ) ;c l a v i e r . c l o s e ( ) ;}

}

Johnny Tsheke (UQAM) INF1256-10 Seance 05 13 / 31

Page 14: INF1256 Informatique pour les sciences de la gestion · INF1256 Informatique pour les sciences de la gestion { Structures r ep etitives et Expressions r eguli eres {Johnny TSHEKE,

Instruction : do while

1 Introduction aux expressions regulieres

2 Instruction : while

3 Instruction : do while

4 Instruction : for

5 Controles des boucles : break, continue, return

6 Choisir la bonne structure selon le contexte

Johnny Tsheke (UQAM) INF1256-10 Seance 05 14 / 31

Page 15: INF1256 Informatique pour les sciences de la gestion · INF1256 Informatique pour les sciences de la gestion { Structures r ep etitives et Expressions r eguli eres {Johnny TSHEKE,

Instruction : do while

Instruction do while en Java

pseudocode → REPETER ... TANT QUE

Le corps du block doit s’executer au moins unefoisForme generale :

do {//Instructions du corps de la boucle

} while (expression )

Johnny Tsheke (UQAM) INF1256-10 Seance 05 15 / 31

Page 16: INF1256 Informatique pour les sciences de la gestion · INF1256 Informatique pour les sciences de la gestion { Structures r ep etitives et Expressions r eguli eres {Johnny TSHEKE,

Instruction : do while

Exemple do ..while

Exemple de validation d’un nombre entier : ValidationNombreEntier.java

package i n f 1 2 5 6 s 0 5 ;import j a v a . u t i l . ∗ ;p u b l i c c l a s s V a l i d a t i o n N o m b r e E n t i e r {

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 ) {// V a l i d a t i o n nombre e n t i e r avec do . . w h i l e

Scanner c l a v i e r = new Scanner ( System . i n ) ;boolean nombreVa l ide = f a l s e ;i n t n o m b r e S a i s i e =0;// on p o u r r a i t a u s s i l e v a l i d e r avec l e p a t t e r n ”[0−9]+”do{

System . out . fo rmat ( ” E n t r e z un nombre e n t i e r svp %n” ) ;i f ( c l a v i e r . h a s N e x t I n t ( ) ){

n o m b r e S a i s i e =c l a v i e r . n e x t I n t ( ) ;nombreVa l ide = t r u e ; // pour a r r e t e r l a b o u c l e

} e l s e{System . out . fo rmat ( ” Pas un nombre e n t i e r v a l i d e %n” ) ;

c l a v i e r . n e x t ( ) ;}

}w h i l e ( ! nombreVa l ide ) ;System . out . fo rmat ( ” Le nombre s a i s i e e s t %d %n” , n o m b r e S a i s i e ) ;c l a v i e r . c l o s e ( ) ;}

}

Johnny Tsheke (UQAM) INF1256-10 Seance 05 16 / 31

Page 17: INF1256 Informatique pour les sciences de la gestion · INF1256 Informatique pour les sciences de la gestion { Structures r ep etitives et Expressions r eguli eres {Johnny TSHEKE,

Instruction : for

1 Introduction aux expressions regulieres

2 Instruction : while

3 Instruction : do while

4 Instruction : for

5 Controles des boucles : break, continue, return

6 Choisir la bonne structure selon le contexte

Johnny Tsheke (UQAM) INF1256-10 Seance 05 17 / 31

Page 18: INF1256 Informatique pour les sciences de la gestion · INF1256 Informatique pour les sciences de la gestion { Structures r ep etitives et Expressions r eguli eres {Johnny TSHEKE,

Instruction : for

Instruction for en Java

iteration→ une execution du corps de la boucle

nombre d’iterations determiner par une sequence

Au moins une variable est modifie a chaque iteration→ Variable d’iteration

a chaque iteration, la variable d’iteration est associee a l’element suivant de lasequence, en commencant par le premier

for ( initialisation , condition , modifvar ) {//Instructions du corps de la boucle

}

Pour une boucle infinie

for ( , , ) {//Instructions du corps de la boucle

}

Johnny Tsheke (UQAM) INF1256-10 Seance 05 18 / 31

Page 19: INF1256 Informatique pour les sciences de la gestion · INF1256 Informatique pour les sciences de la gestion { Structures r ep etitives et Expressions r eguli eres {Johnny TSHEKE,

Instruction : for

Exemple d’une boucle for

Exemple d’une boucle for : AfficheTroisFoisNon.java

package i n f 1 2 5 6 s 0 5 ;

p u b l i c c l a s s A f f i c h e T r o i s F o i s N o n {s t a t i c f i n a l i n t MAX = 3 ;

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 ) {f i n a l S t r i n g NON = ”NON! ” ;f o r ( i n t i = 0 ; i< MAX; i ++){

System . out . p r i n t l n (NON) ;}

}}

Johnny Tsheke (UQAM) INF1256-10 Seance 05 19 / 31

Page 20: INF1256 Informatique pour les sciences de la gestion · INF1256 Informatique pour les sciences de la gestion { Structures r ep etitives et Expressions r eguli eres {Johnny TSHEKE,

Controles des boucles : break, continue, return

1 Introduction aux expressions regulieres

2 Instruction : while

3 Instruction : do while

4 Instruction : for

5 Controles des boucles : break, continue, return

6 Choisir la bonne structure selon le contexte

Johnny Tsheke (UQAM) INF1256-10 Seance 05 20 / 31

Page 21: INF1256 Informatique pour les sciences de la gestion · INF1256 Informatique pour les sciences de la gestion { Structures r ep etitives et Expressions r eguli eres {Johnny TSHEKE,

Controles des boucles : break, continue, return

Instruction break dans une boucle : while, for

Permet de sortir directement de la boucle

Arrete la boucle

Si boucle imbriquer alors → sortie de la bouclela plus interne ou se trouve le break et oncontinue dans la boucle ascendante

S’applique dans for, while et do .. while

La forme avec etiquette sort de la bouclecorrespondant a l’etiquette specifiee

https://docs.oracle.com/javase/tutorial/

java/nutsandbolts/branch.html

Pour une boucle while

Johnny Tsheke (UQAM) INF1256-10 Seance 05 21 / 31

Page 22: INF1256 Informatique pour les sciences de la gestion · INF1256 Informatique pour les sciences de la gestion { Structures r ep etitives et Expressions r eguli eres {Johnny TSHEKE,

Controles des boucles : break, continue, return

Exemple d’une instruction break dans un while

Exemple d’une boucle infinie et break : BoucleInfinieEtBreak.java

package i n f 1 2 5 6 s 0 5 ;import j a v a . u t i l . ∗ ;p u b l i c c l a s s B o u c l e I n f i n i e E t B r e a k {

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

Scanner c l a v i e r = new Scanner ( System . i n ) ;w h i l e ( t r u e ){

System . out . p r i n t l n ( ” E n t r e z Un nombre e n t i e r pour a r r e t e r c e t t e b o u c l e ⤦Ç i n f i n i e ” ) ;

i f ( c l a v i e r . h a s N e x t I n t ( ) ){break ;

}c l a v i e r . n e x t ( ) ;

}i n t nbStop =c l a v i e r . n e x t I n t ( ) ;System . out . fo rmat ( ” V o i c i l e nombre q u i a a r r e t e l a b o u c l e : %d %n” , nbStop ) ;c l a v i e r . c l o s e ( ) ;

}

}

Johnny Tsheke (UQAM) INF1256-10 Seance 05 22 / 31

Page 23: INF1256 Informatique pour les sciences de la gestion · INF1256 Informatique pour les sciences de la gestion { Structures r ep etitives et Expressions r eguli eres {Johnny TSHEKE,

Controles des boucles : break, continue, return

Exemple d’une instruction break dans un while (2)

break dans une boucle while non imbriquee : ExempleWhileAvecBreak.java

/∗∗ @ Author : Johnny Tsheke @ UQAM∗ 2017−11−27∗/

package i n f 1 2 5 6 s 0 5 ;

p u b l i c c l a s s ExempleWhi leAvecBreak {s t a t i c f i n a l i n t MAX = 3 ;

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 ) {f i n a l S t r i n g NON = ”NON! ” ;i n t i =0;w h i l e ( i< MAX){

i ++;i f ( i ==1){

break ;}System . out . p r i n t l n (NON) ;

}}

}

Johnny Tsheke (UQAM) INF1256-10 Seance 05 23 / 31

Page 24: INF1256 Informatique pour les sciences de la gestion · INF1256 Informatique pour les sciences de la gestion { Structures r ep etitives et Expressions r eguli eres {Johnny TSHEKE,

Controles des boucles : break, continue, return

Exemple d’une instruction break avec etiquette dans unfor

Exemple break dans for : AfficheTroisFoisNonAvecBreak.java

package i n f 1 2 5 6 s 0 5 ;

p u b l i c c l a s s A f f i c h e T r o i s F o i s N o n A v e c B r e a k {s t a t i c f i n a l i n t MAXI = 3 ;s t a t i c f i n a l i n t MAXJ = 5 ;

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 ) {f i n a l S t r i n g NON = ”NON! ” ;e t i q u e t t e : f o r ( i n t j =0; j< MAXJ; j ++){

System . out . fo rmat ( ”%n L i g n e : %d ” , j ) ;f o r ( i n t i = 0 ; i< MAXI ; i ++){

System . out . fo rmat ( ” %s ” ,NON) ;i f ( ( j == MAXI) && ( i == 1) ){

break e t i q u e t t e ; // a r r e t e l a b o u c l e de l ' e t i q u e t t e}

}}

}}

Johnny Tsheke (UQAM) INF1256-10 Seance 05 24 / 31

Page 25: INF1256 Informatique pour les sciences de la gestion · INF1256 Informatique pour les sciences de la gestion { Structures r ep etitives et Expressions r eguli eres {Johnny TSHEKE,

Controles des boucles : break, continue, return

Instruction continue dans une boucle

Arrete l’iteration courante pour passer a lasuivante

N’arrete pas la boucle en elle meme

On reste dans la boucle mais on va verifier lesconditions pour executer l’iteration suivante

S’applique dans for comme dans while

Pour une boucle while

Johnny Tsheke (UQAM) INF1256-10 Seance 05 25 / 31

Page 26: INF1256 Informatique pour les sciences de la gestion · INF1256 Informatique pour les sciences de la gestion { Structures r ep etitives et Expressions r eguli eres {Johnny TSHEKE,

Controles des boucles : break, continue, return

Exemple d’une instruction continue dans un while

continue dans une boucle while non imbriquee : ExempleWhileAvecContinue.java

/∗∗ @ Author : Johnny Tsheke @ UQAM∗ 2017−11−27∗/

package i n f 1 2 5 6 s 0 5 ;

p u b l i c c l a s s ExempleWhi leAvecCont inue {s t a t i c f i n a l i n t MAX = 3 ;

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 ) {f i n a l S t r i n g NON = ”NON! ” ;i n t i =0;w h i l e ( i< MAX){

i ++;i f ( i ==1){

c o n t i n u e ;}System . out . p r i n t l n (NON) ;

}}

}

Johnny Tsheke (UQAM) INF1256-10 Seance 05 26 / 31

Page 27: INF1256 Informatique pour les sciences de la gestion · INF1256 Informatique pour les sciences de la gestion { Structures r ep etitives et Expressions r eguli eres {Johnny TSHEKE,

Controles des boucles : break, continue, return

Exemple d’une instruction continue dans un for

Exemple de continue dans for : AfficheTroisFoisNonAvecContinue.java

package i n f 1 2 5 6 s 0 5 ;import j a v a . u t i l . ∗ ;p u b l i c c l a s s A f f i c h e T r o i s F o i s N o n A v e c C o n t i n u e {

s t a t i c f i n a l i n t MAX = 3 ;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 ) {

f i n a l S t r i n g NON = ”NON! ” ;f o r ( i n t i = 0 ; i< MAX; i ++){

i f ( i == 1){c o n t i n u e ;

}System . out . fo rmat ( ”%d . %s %n” , i ,NON) ;

}}

}

Johnny Tsheke (UQAM) INF1256-10 Seance 05 27 / 31

Page 28: INF1256 Informatique pour les sciences de la gestion · INF1256 Informatique pour les sciences de la gestion { Structures r ep etitives et Expressions r eguli eres {Johnny TSHEKE,

Controles des boucles : break, continue, return

Instruction return dans une boucle

Sort de la methode et retourne au point d’appel

Retourne une valeur si methode retournant valeur (ex :return(1) ;)

Retourne rien si une methode void (ex : return ;)

⇒ Voir plus de details au cours sur les methodes

Johnny Tsheke (UQAM) INF1256-10 Seance 05 28 / 31

Page 29: INF1256 Informatique pour les sciences de la gestion · INF1256 Informatique pour les sciences de la gestion { Structures r ep etitives et Expressions r eguli eres {Johnny TSHEKE,

Controles des boucles : break, continue, return

Exemple d’une instruction return dans un for

Exemple de return dans for : AfficheTroisFoisNonAvecReturn.java

package i n f 1 2 5 6 s 0 5 ;import j a v a . u t i l . ∗ ;p u b l i c c l a s s A f f i c h e T r o i s F o i s N o n A v e c R e t u r n {

s t a t i c f i n a l i n t MAX = 3 ;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 ) {

f i n a l S t r i n g NON = ”NON! ” ;f o r ( i n t i = 0 ; i< MAX; i ++){

i f ( i == 1){r e t u r n ; // on s o r t de l a methode

}System . out . fo rmat ( ”%d . %s %n” , i ,NON) ;

}}

}

Johnny Tsheke (UQAM) INF1256-10 Seance 05 29 / 31

Page 30: INF1256 Informatique pour les sciences de la gestion · INF1256 Informatique pour les sciences de la gestion { Structures r ep etitives et Expressions r eguli eres {Johnny TSHEKE,

Choisir la bonne structure selon le contexte

1 Introduction aux expressions regulieres

2 Instruction : while

3 Instruction : do while

4 Instruction : for

5 Controles des boucles : break, continue, return

6 Choisir la bonne structure selon le contexte

Johnny Tsheke (UQAM) INF1256-10 Seance 05 30 / 31

Page 31: INF1256 Informatique pour les sciences de la gestion · INF1256 Informatique pour les sciences de la gestion { Structures r ep etitives et Expressions r eguli eres {Johnny TSHEKE,

Choisir la bonne structure selon le contexte

Quand choisir for ou while

for : Quand le nombre d’iterations peut-etre associe a unesequence donnee (determinee d’avance) et finie.Generalement, ce qui se passe dans le corps de la boucle, nemodifie pas le nombre d’iterations.

while : Boucle plus generale. Plus appropriee lorsqu’on ne sait pasassocier le nombre d’iterations a une sequence determineed’avance. Generalement, le nombre d’iterations varient enfonction de ce qui se passe dans le corps de la boucle aumoment de l’execution.

⇒ Quelque soit le choix, veuillez a ce que la boucle se termine.⇒ Sinon, il faut s’assurer qu’on veut bien une boucle infinie !

Johnny Tsheke (UQAM) INF1256-10 Seance 05 31 / 31