calcul complexe devant retourner une précision particulière, un nombre de tours dans un jeu (le premier qui gagne sort
de la boucle), etc.
4. Un piège à éviter
Tout comme il faut éviter les boucles infinies (sauf si c’est parfaitement volontaire), il faut aussi éviter quelques erreurs
qui peuvent se révéler très surprenantes selon le cas (rappelezvous la Loi de Murphy). Voici un exemple de ce qu’il ne
faut pas faire :
Variable x en Numérique
Début
Pour x allant de 1 à 31 Faire
Ecrire x
x←x*2
Fin Pour
Fin
L’erreur (sauf si c’est ce que vous vouliez explicitement, ce qui s’appelle jouer avec le feu) est de modifier vousmême
le compteur utilisé par la boucle au sein même de cette boucle. Que se passetil dans cet exemple ? Vous passez de 1
à 2, puis … Quoi ? 3 ? 6 ? 7 ? 14 ? Ca devient n’importe quoi, et aucun nombre d’itérations ne peut être prévu. Vous ne
savez plus quand vous allez sortir de la boucle, ni même la nouvelle valeur du compteur à chaque itération. Selon les
langages, vous aurez au mieux un fonctionnement à peu près conforme à ce que vous attendiez, au pire du grand
n’importe quoi. Or en informatique, sauf à travailler pour un éditeur peu scrupuleux sur la qualité, un "à peu près" est
inacceptable.
Ne modifiez jamais un compteur de boucle "Pour" au sein de celleci. Si cela s’avère vraiment nécessaire,
modifiez votre boucle pour utiliser une structure "Tant Que" ou "Répéter".
5. Quelques exemples
a. De nouveau trois boucles
Promis à devenir un grand classique, puisque c’est la troisième fois que vous le voyez sous trois formes différentes
donc, voici l’exemple des trois boucles, preuve s’il en est que le "Pour … Fin Pour" est bien pratique mais totalement
optionnel. L’intérêt est évidemment ici de produire un code plus succinct et encore plus lisible.
Variables a,b,c,nb1,nb2 en Numérique
Début
Pour a de 1 à 10 Faire
Pour b de 1 à 10 Faire
Pour c de 1 à 10 Faire
nb1←a*100+b*10+c
nb2←a³+b³+c³
Si nb1=nb2 Alors
Ecrire nb1,a,b,c
FinSI
Fin Pour
Fin Pour
Fin Pour
Fin
Ce qui en Java donne :
class troisboucles {
public static void main(String[] args) {
double x,y,z,nb1,nb2;
for(x=1;x<=10;x++) {
for(y=1;y<=10;y++) {
for(z=1;z<=10;z++) {
nb1=x*100+y*10+z;
- 2 -
© ENI Editions - All rigths reserved - Jonifar lina
90
de la boucle), etc.
4. Un piège à éviter
Tout comme il faut éviter les boucles infinies (sauf si c’est parfaitement volontaire), il faut aussi éviter quelques erreurs
qui peuvent se révéler très surprenantes selon le cas (rappelezvous la Loi de Murphy). Voici un exemple de ce qu’il ne
faut pas faire :
Variable x en Numérique
Début
Pour x allant de 1 à 31 Faire
Ecrire x
x←x*2
Fin Pour
Fin
L’erreur (sauf si c’est ce que vous vouliez explicitement, ce qui s’appelle jouer avec le feu) est de modifier vousmême
le compteur utilisé par la boucle au sein même de cette boucle. Que se passetil dans cet exemple ? Vous passez de 1
à 2, puis … Quoi ? 3 ? 6 ? 7 ? 14 ? Ca devient n’importe quoi, et aucun nombre d’itérations ne peut être prévu. Vous ne
savez plus quand vous allez sortir de la boucle, ni même la nouvelle valeur du compteur à chaque itération. Selon les
langages, vous aurez au mieux un fonctionnement à peu près conforme à ce que vous attendiez, au pire du grand
n’importe quoi. Or en informatique, sauf à travailler pour un éditeur peu scrupuleux sur la qualité, un "à peu près" est
inacceptable.
Ne modifiez jamais un compteur de boucle "Pour" au sein de celleci. Si cela s’avère vraiment nécessaire,
modifiez votre boucle pour utiliser une structure "Tant Que" ou "Répéter".
5. Quelques exemples
a. De nouveau trois boucles
Promis à devenir un grand classique, puisque c’est la troisième fois que vous le voyez sous trois formes différentes
donc, voici l’exemple des trois boucles, preuve s’il en est que le "Pour … Fin Pour" est bien pratique mais totalement
optionnel. L’intérêt est évidemment ici de produire un code plus succinct et encore plus lisible.
Variables a,b,c,nb1,nb2 en Numérique
Début
Pour a de 1 à 10 Faire
Pour b de 1 à 10 Faire
Pour c de 1 à 10 Faire
nb1←a*100+b*10+c
nb2←a³+b³+c³
Si nb1=nb2 Alors
Ecrire nb1,a,b,c
FinSI
Fin Pour
Fin Pour
Fin Pour
Fin
Ce qui en Java donne :
class troisboucles {
public static void main(String[] args) {
double x,y,z,nb1,nb2;
for(x=1;x<=10;x++) {
for(y=1;y<=10;y++) {
for(z=1;z<=10;z++) {
nb1=x*100+y*10+z;
- 2 -
© ENI Editions - All rigths reserved - Jonifar lina
90
