1. Comparer les boucles : for
vswhile
Une while
boucle peut être utilisée partout où une instruction ou un groupe d'instructions doit être exécuté plusieurs fois. Mais parmi tous les scénarios possibles, un mérite d'être souligné.
Nous parlons de la situation où le programmeur (le créateur du programme) sait à l'avance combien de fois la boucle doit être exécutée. Ceci est généralement géré en déclarant une variable de compteur spéciale, puis en augmentant (ou en diminuant) la variable de 1
à chaque itération de la boucle.
Tout semble fonctionner comme il se doit, mais ce n'est pas très pratique. Avant la boucle, nous définissons la valeur initiale de la variable compteur. Ensuite, dans la condition, nous vérifions s'il a déjà atteint la valeur finale. Mais nous modifions généralement la valeur à la toute fin du corps de la boucle.
Et si le corps de la boucle est grand ? Ou si nous avons plusieurs boucles imbriquées ? En général, dans ces cas, il est souhaitable de collecter toutes ces informations sur les variables de compteur en un seul endroit. Et c'est pourquoi nous avons la for
boucle en Java. Ca n'a pas l'air très compliqué non plus :
for (statement 1; condition; statement 2)
{
block of statements
}
Une while
boucle a juste une condition entre parenthèses, mais une for
boucle ajoute deux instructions, séparées par des points-virgules.
La réalité est plus simple qu'il n'y paraît : le compilateur convertit une for
boucle en une while
boucle ordinaire comme ceci :
statement 1;
while (condition)
{
block of statements
statement 2;
}
Ou mieux encore, démontrons cela avec un exemple. Les deux extraits de code ci-dessous sont identiques.
Option 1 | Option 2 |
---|---|
|
|
Nous venons de rassembler en un seul endroit tout le code qui se rapporte à la i
variable compteur.
Dans une for
boucle, l'instruction 1 est exécutée une seule fois, avant que la boucle elle-même ne commence. Cela peut être vu clairement dans le deuxième extrait de code
l'instruction 2 est exécutée le même nombre de fois que le corps de la boucle, et chaque fois qu'elle est exécutée après que le corps entier de la boucle a été exécuté
2. Où la for
boucle est utilisée
La for
boucle est probablement le type de boucle le plus utilisé en Java. Il est utilisé partout, pour les programmeurs c'est juste plus clair et plus pratique qu'une while
boucle. Pratiquement n'importe quelle while
boucle peut être convertie en for
boucle.
Exemples:
boucle while | pour la boucle |
---|---|
|
|
|
|
|
|
|
|
|
|
Faites attention au dernier exemple. Les instructions pour travailler avec le compteur de boucle sont manquantes. Il n'y a pas de compteur et pas de déclaration.
Dans une for
boucle, Java permet d'omettre "l'instruction pour initialiser le compteur" et "l'instruction pour mettre à jour le compteur". Même l'expression qui définit la condition de boucle peut être omise.
3. Nuances d'utilisation de la for
boucle
Un point important sur l'utilisation for
des boucles et des instructions break
et continue
.
Une break
instruction dans une for
boucle fonctionne de la même manière que dans une while
boucle — elle termine la boucle immédiatement. Une continue
instruction ignore le corps de la boucle, mais pas statement 2
(ce qui modifie le compteur de boucle).
Jetons un autre regard sur la façon dont les boucles for
et while
sont liées.
for (statement 1; condition; statement 2)
{
block of statements
}
statement 1;
while (condition)
{
block of statements
statement 2;
}
Si une continue
instruction est exécutée dans une for
boucle , le reste du bloc d'instructions est ignoré, mais l'instruction 2 (celle qui fonctionne avec la for
variable compteur de la boucle) est toujours exécutée.
Revenons à notre exemple en sautant des nombres divisibles par 7.
Ce code bouclera pour toujours | Ce code fonctionnera bien |
---|---|
|
|
Le code qui utilise la while
boucle ne fonctionnera pas - i ne sera jamais supérieur à 7. Mais le code avec la for
boucle fonctionnera bien.
4. Comparer les boucles for : Java vs Pascal
Au fait, Pascal a aussi une For
boucle. En général, pratiquement tous les langages de programmation en ont un. Mais chez Pascal c'est super clair. Exemples:
Pascal | Java |
---|---|
|
|
|
|
|
|
GO TO FULL VERSION