Ou encore,
Tant que a=a
...
FinTantQue
En Java ça se traduit par :
...
while(true) {
...
}
Dans les deux cas, l’expression booléenne est toujours vraie donc le programme ne sort jamais de la boucle. La plupart
des langages (C, C++, Java, PHP, etc) proposent des instructions spéciales qui permettent de sortir d’une boucle
depuis n’importe quel endroit du bloc d’instructions (instruction break) ou même de relancer la boucle (remonter
directement au Tant Que) sans exécuter le reste des instructions (instruction continue). L’une des premières choses
que vous devez apprendre en algorithmique avec les boucles c’est que sans vouloir paraître excessif, l’utilisation des
break (et continue) est très déconseillée : de nombreux programmeurs, et pas forcément en herbe, parsèment
l’intérieur de leurs boucles de conditions de sorties supplémentaires, qu’ils nomment souvent des "cas spéciaux" : "je
n’ai pas prévu de gérer ça dans un cas général, alors je place une série d’exceptions…". Or l’objectif n’est pas de
multiplier ces conditions, mais de toutes les réunir au sein de l’unique expression booléenne du Tant Que. Il faut donc
réunir toutes les conditions d’arrêt de la boucle en un seul point.
Le "break" existe tel quel en Java. Voici donc un exemple de ce que, théoriquement, il ne faut pas faire :
class chap4_break {
public static void main(String[] args) {
int cpt;
cpt=1;
while(true) {
System.out.println(cpt);
if(cpt==10) break;
cpt++;
}
}
}
En algorithmique il est toujours possible de trouver une expression booléenne, même si elle est longue et
complexe, permettant d’éviter l’utilisation de "break" et de "continue". Si vous n’êtes pas d’accord, votre
professeur risque de vous mettre au défi de trouver un exemple contradictoire. Peine perdue.
Il faut cependant modérer ces propos. L’interruption d’une boucle au milieu de celleci est déconseillée, certes. Mais
comme pour tout, il faut se méfier des généralisations. Il y a évidemment des cas où il devient bien trop compliqué de
créer des boucles uniquement pour respecter ce principe. S’il faut créer une expression booléenne à rallonge et
bidouiller (c’est le mot, parfois) son bloc d’instructions avec des méthodes tarabiscotées (des drapeaux à tout va par
exemple), d’autant plus que celuici prend déjà un grand nombre de lignes, autant utiliser un break. Au contraire
utiliser les breaks à tort et à travers n’est pas recommandable.
Le tout est de trouver un équilibre entre la condition de sortie et la lisibilité de l’algorithme.
Enfin le but n’est pas de créer des boucles dont le bloc d’instructions fait dix pages (c’est une façon de parler). Dans ce
cas, il est certes intelligent de réunir toutes les conditions de sortie en un point : ça améliore la lisibilité. Cependant,
vous risquez de vous perdre dans votre propre programme (d’où les indentations). Vous apprendrez plus loin dans ce
livre la notion de fonctions et de procédures qui vous permettra un découpage fin de vos blocs d’instructions qui vous
simplifieront la vie.
3. Des exemples
a. Une table de multiplication
Pourquoi ne pas s’attaquer aux exemples cités cidessus, et même plus, pour vous entraîner ? Commencez par la
table de multiplication. Après avoir saisi le numéro de la table demandée, un compteur est initialisé à 1. Tant que ce
compteur est inférieur ou égal à 10, on le multiplie par le numéro de table, puis après avoir affiché le résultat, on
l’incrémente. Dans la dernière boucle, le compteur passe de 10 à 11. Une fois remonté au Tant Que, l’expression
- 2 -
© ENI Editions - All rigths reserved - Jonifar lina
74
Tant que a=a
...
FinTantQue
En Java ça se traduit par :
...
while(true) {
...
}
Dans les deux cas, l’expression booléenne est toujours vraie donc le programme ne sort jamais de la boucle. La plupart
des langages (C, C++, Java, PHP, etc) proposent des instructions spéciales qui permettent de sortir d’une boucle
depuis n’importe quel endroit du bloc d’instructions (instruction break) ou même de relancer la boucle (remonter
directement au Tant Que) sans exécuter le reste des instructions (instruction continue). L’une des premières choses
que vous devez apprendre en algorithmique avec les boucles c’est que sans vouloir paraître excessif, l’utilisation des
break (et continue) est très déconseillée : de nombreux programmeurs, et pas forcément en herbe, parsèment
l’intérieur de leurs boucles de conditions de sorties supplémentaires, qu’ils nomment souvent des "cas spéciaux" : "je
n’ai pas prévu de gérer ça dans un cas général, alors je place une série d’exceptions…". Or l’objectif n’est pas de
multiplier ces conditions, mais de toutes les réunir au sein de l’unique expression booléenne du Tant Que. Il faut donc
réunir toutes les conditions d’arrêt de la boucle en un seul point.
Le "break" existe tel quel en Java. Voici donc un exemple de ce que, théoriquement, il ne faut pas faire :
class chap4_break {
public static void main(String[] args) {
int cpt;
cpt=1;
while(true) {
System.out.println(cpt);
if(cpt==10) break;
cpt++;
}
}
}
En algorithmique il est toujours possible de trouver une expression booléenne, même si elle est longue et
complexe, permettant d’éviter l’utilisation de "break" et de "continue". Si vous n’êtes pas d’accord, votre
professeur risque de vous mettre au défi de trouver un exemple contradictoire. Peine perdue.
Il faut cependant modérer ces propos. L’interruption d’une boucle au milieu de celleci est déconseillée, certes. Mais
comme pour tout, il faut se méfier des généralisations. Il y a évidemment des cas où il devient bien trop compliqué de
créer des boucles uniquement pour respecter ce principe. S’il faut créer une expression booléenne à rallonge et
bidouiller (c’est le mot, parfois) son bloc d’instructions avec des méthodes tarabiscotées (des drapeaux à tout va par
exemple), d’autant plus que celuici prend déjà un grand nombre de lignes, autant utiliser un break. Au contraire
utiliser les breaks à tort et à travers n’est pas recommandable.
Le tout est de trouver un équilibre entre la condition de sortie et la lisibilité de l’algorithme.
Enfin le but n’est pas de créer des boucles dont le bloc d’instructions fait dix pages (c’est une façon de parler). Dans ce
cas, il est certes intelligent de réunir toutes les conditions de sortie en un point : ça améliore la lisibilité. Cependant,
vous risquez de vous perdre dans votre propre programme (d’où les indentations). Vous apprendrez plus loin dans ce
livre la notion de fonctions et de procédures qui vous permettra un découpage fin de vos blocs d’instructions qui vous
simplifieront la vie.
3. Des exemples
a. Une table de multiplication
Pourquoi ne pas s’attaquer aux exemples cités cidessus, et même plus, pour vous entraîner ? Commencez par la
table de multiplication. Après avoir saisi le numéro de la table demandée, un compteur est initialisé à 1. Tant que ce
compteur est inférieur ou égal à 10, on le multiplie par le numéro de table, puis après avoir affiché le résultat, on
l’incrémente. Dans la dernière boucle, le compteur passe de 10 à 11. Une fois remonté au Tant Que, l’expression
- 2 -
© ENI Editions - All rigths reserved - Jonifar lina
74
