Java
Les Instructions de Contrôle
Ahcène Bounceur
Introduction
Une instruction de contrôle :
◦ Permet d'effectuer des choix et des boucles (des répétitions)
◦ Elle peut être :
Fondée essentiellement sur la notion de branchement (conditionnel ou inconditionnel)
Tradruire difèlement les structures fondamentales de la programmation structurée
Introduction
Java est assez proche du Pascal, il dispose d'instructions structurées permettant de réaliser :
◦ Des choix : if … else et switch
◦ Des boucles (répétitions) : do … while, while et for
La notion de branchement n'est pas totalement absente :
◦ Il dispose d'instructions de branchement incoditionnel : break et continue
Introduction
L'instruction de choix multiple que constitue switch est en fait intermédiaire entre le
choix multiple parfaitement structuré de
Pascal et l'auguillage multiple de Fortran
BLOC d’instruction
Un bloc est une suite d'instructions placées entre accolades : { et }
Les instructions d'un bloc sont qulconques : simples, structurées ou un autre bloc
Un bloc peut être vide
Exemples :
◦ { }
◦ { i = 1 ; }
◦ { ; }
Remarques :
◦ Toutes les instructions d'un bloc doivent se terminer par un point virgule (;)
◦ Ne pas ajouter de point virgule (;) après un bloc
L’instruction if
if (condition)
instruction_1 [else
istruction_2]
L’instruction if
Exemples :
if (++i < limite) System.out.println("OK") ;
i = i + 1; // ou i++
if (i < limite) System.out.println("OK") ;
if (i++ < limite) System.out.println("OK") ;
if (i < limite) System.out.println("OK") ; i = i + 1; // ou i++
Imbrication des instructions if
if (condition_1) instruction_1
if (condition_2) instruction_2 else
istruction_3 else
istruction_4
Instruction switch
switch (expression) {
case constante_1 : instruction_1 [break]
case constante_2 : instruction_2 [break]
case constante_3 : instruction_3 [break]
[default : instruciton_4]
}
Instruction switch
Exemples :
int n = 20;
switch (n) {
case 1 : System.out.println("Un") ; break ;
case 2 : System.out.println("Deux") ; break ;
case 3 : System.out.println("Trois") ; break ;
default : System.out.println("Plus grand que 3") ; }
Instruction do … while
do
instruction
while (condition);
Instruction do … while
Exemples :
char c;
do
c = lire() ;
while (c != 'x') ;
do ; while (…) ; do { } while (…) ; do { } while (true) ;
Instruction do … while
Remarque :
◦ Pour interrompre une boucle infi, il faut utiliser le mot clé : break
Instruction while
while (condition)
instruction
Instruction for
for ( [initialisation] ; [condition] ;
[incrémentation]
)
instruction
Instruction for
Exemple 1 :
int i ;
for (i = 1; i <= 5; i++) {
System.out.print("Bonjour ");
System.out.println(i + " fois");
}
Instruction for
Exemple 2 :
for (int i = 1; i <= 5; i++) {
System.out.print("Bonjour ");
System.out.println(i + " fois");
}
Instruction for
Exemple 3 :
int i = 1;
for ( ; i <= 5; i++) {
System.out.print("Bonjour ");
System.out.println(i + " fois");
}
Instruction for en générale
Exemple :
for ( int i = 1, j = 3; i <= 5; i++, j+=i) { System.out.println("i = "+i+", j = "+j);
}
Exercice :
◦ Que fait ce programme ?
◦ Testez le.
Instruction for
On peut écrire :
for ( ; ; ) ; for ( ; ; ) { }
Exercice :
◦ Que fait chaque instruction ?
Les instructions de branchement inconditionnel break et continue
L'instruction break sert à interrompre le dérouelemtn de la boucle, en passant à
l'instruction suivant la boucle.
L'instruction continue permet de passer
prématurément au tour de boucle suivant
L’instruction break
for ( int i = 1; i <= 10; i++ ) {
System.out.println( "Debut tour " + i ) System.out.println( "\tBonjour" )
if (i == 3) break ;
System.out.println( "Fin tour " + i ) }
System.out.println( "Apres la boucle" )
Debut tour 1 Bonjour Fin tour 1
Debut tour 2 Bonjour Fin tour 2
Debut tour 3 Bonjour Apres la boucle
L’instruction break
Remarque :
◦ En cas de boucles imbriquées, l'instruction break ne concerne que la boucle la plus interne.
◦ Une variante de cette instruction break concerne plus d'un niveau d'imbrication
L’instruction break avec étiquette
while {
…
for (…) {
…
break ;
… }
… }
…
Ce break nous branche ici
L’instruction break avec étiquette
etq : while {
…
for (…) {
…
break etq ;
… }
… }
…
Ce break nous branche
ici
L’instruction continue
for ( int i = 1; i <= 5; i++ ) {
System.out.println( "Debut tour " + i ) if (i < 4) continue ;
System.out.println( "Fin tour " + i ) }
System.out.println( "Apres la boucle" )
Debut tour 1 Debut tour 2 Debut tour 3 Debut tour 4 Fin tour 4 Debut tour 5 Fin tour 5
Apres la boucle
L’instruction continue
Remarque :
◦ En cas de boucles imbriquées, l'instruction continue ne concerne que la boucle la plus interne.
◦ Une variante de cette instruction contine concerne plus d'un niveau d'imbrication
L’instruction continue avec étiquette
while {
…
for (…) {
…
continue ;
… }
… }
…
Ce break nous branche ici
L’instruction continue avec étiquette
etq : while {
…
for (…) {
…
continue etq ;
… }
… }
…
Ce break nous branche
ici
L’instruction continue avec étiquette
Remarque :
◦ Contrairement à l'inctruction break avec étiquette, l'étuquette mentionnée dans
l'instruction continue doit obligatoirement être celle d'une structure de boucle. Sinon, elle
n'aurait pas de signfication.