Apprenez À Créer Des Boucles - Apprenez À Programmer en Java - OpenClassrooms
Apprenez À Créer Des Boucles - Apprenez À Programmer en Java - OpenClassrooms
Apprenez À Créer Des Boucles - Apprenez À Programmer en Java - OpenClassrooms
Accueil > Cours > Apprenez à programmer en Java > Apprenez à créer des boucles
Bien
Apprenez à créer des boucles commencer en
Java
Le rôle des boucles est de répéter un certain nombre de fois les mêmes opérations. Tous
1. Installez les outils
les programmes, ou presque, ont besoin de ce type de fonctionnalité. Nous utiliserons les
de développement
boucles pour permettre à un programme de recommencer depuis le début, pour
2. Créez des variables
attendre une action précise de l'utilisateur, parcourir une série de données, etc.
et des opérateurs
Une boucle s'exécute tant qu'une condition est remplie. Nous réutiliserons donc des 3. Apprenez à lire les
notions du chapitre précédent ! entrées clavier
4. Dé nissez des
La boucle while
conditions
Pour décortiquer précisément ce qui se passe dans une boucle, nous allons voir comment 5. Apprenez à créer
des boucles
elle se construit ! Une boucle commence par une déclaration : ici while . Cela veut dire, à
6. TP : Convertissez
peu de chose près, « tant que ». Puis nous avons une condition : c'est elle qui permet à la
des Celsius en
boucle de s'arrêter. Une boucle n'est utile que lorsque nous pouvons la contrôler, et donc
Fahrenheit
lui faire répéter une instruction un certain nombre de fois. C'est à ça que servent les
7. Créez des tableaux
conditions. Ensuite nous avons une ou plusieurs instructions : c'est ce que va répéter
notre boucle (il peut même y avoir des boucles dans une boucle ! 8. Écrivez des
méthodes de classe
java
ACCÉDER AU
Nous allons travailler sur un exemple concret mais d'abord, ré échissons à « comment FORUM
notre boucle va travailler ». Pour cela, il faut déterminer notre exemple.
Créé par
Nous allons af cher « Bonjour, <un prénom> », prénom qu'il faudra taper au clavier ; puis
nous demanderons si l'on veut recommencer. Pour cela, il nous faut une variable qui va
recevoir le prénom, donc dont le type sera String , ainsi qu'une variable pour récupérer la
réponse. Et là, plusieurs choix s'offrent à nous : soit un caractère, soit une chaîne de
caractères, soit un entier. Ici, nous prendrons une variable de type char . C'est parti !
java OpenClassrooms, Leading
Détaillons un peu ce qu'il se passe. Dans un premier temps, nous avons déclaré et
initialisé nos variables. Ensuite, la boucle évalue la condition qui nous dit : tant que la
variable reponse contient « O », on exécute la boucle. Celle-ci contient bien le caractère «
O », donc nous entrons dans la boucle. Puis l'exécution des instructions suivant l'ordre
dans lequel elles apparaissent dans la boucle a lieu. À la n, c'est-à-dire à l'accolade
fermante de la boucle, le compilateur nous ramène au début de la boucle.
Cette boucle n'est exécutée que lorsque la condition est remplie : ici, nous avons
initialisé la variable reponse à « O » pour que la boucle s'exécute. Si nous ne l'avions
pas fait, nous n'y serions jamais entrés. Normal, puisque nous testons la condition
avant d'entrer dans la boucle !
Voilà. C'est pas mal, mais il faudrait forcer l'utilisateur à ne taper que « O » ou « N ».
Comment faire ? C'est très simple : avec une boucle ! Il suf t de forcer l'utilisateur à entrer
soit « N » soit « O » avec un while ! Attention, il nous faudra réinitialiser la variable reponse
à « ' ' » (caractère vide). Il faudra donc répéter la phase « Voulez-vous réessayer ? » tant
que la réponse donnée n'est pas « O » ou « N ».
1 String prenom;
2 char reponse = 'O';
3 Scanner sc = new Scanner(System.in);
4 while (reponse == 'O')
5 {
6 System.out.println("Donnez un prénom : ");
7 prenom = sc.nextLine();
8 System.out.println("Bonjour " +prenom+ ", comment vas-tu ?");
9 //Sans ça, nous n'entrerions pas dans la deuxième boucle
10 reponse = ' ';
11
12 //Tant que la réponse n'est pas O ou N, on repose la question
13 while(reponse != 'O' && reponse != 'N')
14 {
15 //On demande si la personne veut faire un autre essai
16 System.out.println("Voulez-vous réessayer ? (O/N)");
17 reponse = sc.nextLine().charAt(0);
18 }
19 }
20 System.out.println("Au revoir…");
Vous pouvez tester ce code (c'est d'ailleurs vivement conseillé) : vous verrez que si vous
n'entrez pas la bonne lettre, le programme vous posera sans cesse sa question, comme à
la gure suivante !
Attention à écrire correctement vos conditions et à bien véri er vos variables dans vos
while , et dans toutes vos boucles en général. Sinon c'est le drame ! Essayez d'exécuter le
programme précédent sans la réinitialisation de la variable reponse , et vous verrez le
résultat ! On n'entre jamais dans la deuxième boucle, car reponse = 'O' (puisque
initialisée ainsi au début du programme). Là, vous ne pourrez jamais changer sa valeur…
Le programme ne s'arrêtera donc jamais ! On appelle ça une « boucle in nie ». En voici un
autre exemple.
java
1 int a = 1, b = 15;
2 while (a < b)
3 {
4 System.out.println("coucou " +a+ " fois !!");
5 }
1 int a = 1, b = 15;
2 while (a < b)
3 {
4 System.out.println("coucou " +a+ " fois !!");
5 a++;
6 }
Une petite astuce : lorsque vous n'avez qu'une instruction dans votre boucle, vous
pouvez enlever les accolades, car elles deviennent super ues, tout comme pour les
instructions if , else if ou else .
1 int a = 1, b = 15;
2 while (a++ < b)
3 System.out.println("coucou " +a+ " fois !!");
1 int a = 1, b = 15;
2 while (++a < b)
3 System.out.println("coucou " +a+ " fois !!");
Vous devez remarquer qu'il y a un tour de boucle en moins ! Eh bien avec cette syntaxe,
l'opérateur d'incrémentation est prioritaire sur l'opérateur d'inégalité (ou d'égalité), c'est-
à-dire que la boucle incrémente la variable a , et ce n'est qu'après l'avoir fait qu'elle teste
la condition !
Puisque je viens de vous expliquer comment fonctionne une boucle while , je ne vais pas
vraiment m'attarder sur la boucle do… while . En effet, ces deux boucles ne sont pas
cousines, mais plutôt sœurs. Leur fonctionnement est identique à deux détails près.
java
1 do{
2 //Instructions
3 }while(a < b);
Première différence
La boucle do… while s'exécutera au moins une fois, contrairement à sa sœur. C'est-à-dire
que la phase de test de la condition se fait à la n, car la condition se met après le while .
Deuxième différence
C'est une différence de syntaxe, qui se situe après la condition du while . Vous voyez la
différence ? Oui ? Non ? Il y a un « ; » après le while . C'est tout ! Ne l'oubliez cependant
pas, sinon le programme ne compilera pas.
Mis à part ces deux éléments, ces boucles fonctionnent exactement de la même manière.
D'ailleurs, refaisons notre programme précédent avec une boucle do… while .
java
Vous voyez donc que ce code ressemble beaucoup à celui utilisé avec la boucle while ,
mais il comporte une petite subtilité : ici, plus besoin de réinitialiser la variable reponse ,
puisque de toute manière, la boucle s'exécutera au moins une fois !
La boucle for
Cette boucle est un peu particulière puisqu'elle prend tous ses attributs dans sa condition
et agit en conséquence. Je m'explique : jusqu'ici, nous avions fait des boucles avec :
Eh bien on met tout ça dans la condition de la boucle for , et c'est tout. Il existe une autre
syntaxe pour la boucle for depuis le JDK 1.5. Nous la verrons lorsque nous aborderons les
tableaux. Mais je sais bien qu'un long discours ne vaut pas un exemple, alors voici une
boucle for sous vos yeux ébahis :
java
Vous aurez sûrement remarqué la présence des « ; » dans la condition pour la séparation
des champs. Ne les oubliez surtout pas, sinon le programme ne compilera pas.
Nous pouvons aussi inverser le sens de la boucle, c'est-à-dire qu'au lieu de partir de 0 pour
aller à 10, nous allons commencer à 10 pour atteindre 0 :
java
Pour simpli er, la boucle for est un peu le condensé d'une boucle while dont le nombre
de tours se détermine via un incrément. Nous avons un nombre de départ, une condition
qui doit être remplie pour exécuter une nouvelle fois la boucle et une instruction de n de
boucle qui incrémente notre nombre de départ. Remarquez que rien ne nous empêche
de cumuler les déclarations, les conditions et les instructions de n de boucle :
java
Ici, cette boucle n'effectuera que deux tours puisque la condition (i < 10 && j < 6) est
remplie dès le deuxième tour, la variable j commençant à 2 et étant incrémentée de
deux à chaque tour de boucle.
Blog d'Utilisation
Nous contacter