Les boucles POUR...DE...A vues à la page précédente sont très pratiques pour répéter des instructions à condition de savoir le nombre de répétitions nécessaires. Or ce n'est pas toujours le cas : il est alors possible d'avoir recours à la structure TANT QUE...qui permet de répéter une série d'instructions (comprises entre
DEBUT_TANT_QUE et
FIN_TANT_QUE) tant qu'
une certaine condition est vérifiée :
Regardons sur deux exemples comment cette structure peut-être utilisée pour résoudre un petit problème algorithmique :
Exemple 5.1 : Un individu a emprunté à un ami une somme de 2500 euros (prêt sans intérêts).
Pour rembourser son ami, il prévoit de lui remettre 110 euros par mois. Mais comme cela ne correspond pas à un nombre pile de mois, il se demande quel sera le montant à rembourser le dernier mois.
En utilisant la variable
montant pour représenter le montant qu'il reste à rembourser, le problème peut se résoudre avec l'algorithme suivant :
Explication : tant que le montant qui reste à rembourser est supérieur ou égal à 110, l'individu rembourse 110 euros à son ami et le montant à rembourser diminue d'autant. Par contre, pour le dernier mois de remboursement, il reste moins de 110 euros à rembourser : l'instruction entre
DEBUT_TANT_QUE et
FIN_TANT_QUE n'est pas traitée et on affiche alors ce qu'il reste à rembourser.
Voyons maintenant comme créer en pratique cet algorithme avec
AlgoBox :
- On déclare d'abord la variable montant (du type NOMBRE) avec le bouton Déclarer nouvelle variable.
- On se place sur DEBUT_ALGORITHME, on ajoute une nouvelle ligne (bouton Nouvelle Ligne) et on clique sur le bouton AFFECTER valeur à variable.
Dans la boite de dialogue, on sélectionne montant pour la variable, puis on entre 2500 dans le champ après prend la valeur et on clique sur OK.
- En étant bien positionné sur montant PREND_LA_VALEUR 2500, on crée une nouvelle ligne (bouton Nouvelle Ligne), puis on clique alors sur Ajouter TANT QUE....
Dans la boîte de dialogue qui apparaît: on entre comme condition montant>=110 et on clique sur OK.
- En étant bien positionné sur la ligne vide entre DEBUT_TANT_QUE et FIN_TANT_QUE, on clique sur AFFECTER valeur à variable.
Dans la boite de dialogue, on sélectionne montant pour la variable, puis on entre montant-110 dans le champ après prend la valeur et on clique sur OK.
- Après s'être positionné sur la ligne FIN_TANT_QUE, on crée une nouvelle ligne (bouton Nouvelle Ligne), puis on clique sur Ajouter AFFICHER variable.
Dans la boite de dialogue, on sélectionne la variable montant avant de cliquer sur OK.
Cliquer ici pour voir l'ensemble des étapes en vidéo.
Fichier de l'exemple : exemple5_1.alg
(faire un clic-droit et utiliser l'option enregistrer sous pour télécharger le fichier)
Exemple 5.2 : On cherche à connaître le plus petit entier N tel que 2
N soit supérieur ou égal à 10000.
Pour résoudre ce problème de façon algorithmique, l'idée est de calculer les puissances consécutives de 2 jusqu'à ce qu'on atteigne 10000. Une structure TANT QUE est particulièrement adaptée à ce genre de problème car on ne sait pas a priori combien de calculs seront nécessaires.
En utilisant la variable
N, le problème peut se résoudre avec l'algorithme suivant
(pow(2,N) est le code AlgoBox pour calculer 2n) :
Explication : tant que 2
N<10000 , on augmente de 1 la valeur de
N (qui vaut 1 au début de l'algorithme). Par contre, dés que 2
N dépasse 10000, on a atteint notre but et l'instruction entre
DEBUT_TANT_QUE et
FIN_TANT_QUE n'est pas traitée : on passe alors directement à l'affichage du résultat.
Note : il est
indispensable d'affecter à
N la valeur 1
avant d'ajouter la structure TANT QUE, sans quoi l'algorithme ne peut plus fonctionner.
Voyons maintenant comme créer en pratique cet algorithme avec
AlgoBox :
- On déclare d'abord la variable N (du type NOMBRE) avec le bouton Déclarer nouvelle variable.
- On se place sur DEBUT_ALGORITHME, on ajoute une nouvelle ligne (bouton Nouvelle Ligne) et on clique sur le bouton AFFECTER valeur à variable.
Dans la boite de dialogue, on sélectionne N pour la variable, puis on entre 1 dans le champ après prend la valeur et on clique sur OK.
- En étant bien positionné sur N PREND_LA_VALEUR 1, on crée une nouvelle ligne (bouton Nouvelle Ligne), puis on clique alors sur Ajouter TANT QUE....
Dans la boîte de dialogue qui apparaît: on entre comme condition pow(2,N) et on clique sur OK.
- En étant bien positionné sur la ligne vide entre DEBUT_TANT_QUE et FIN_TANT_QUE, on clique sur AFFECTER valeur à variable.
Dans la boite de dialogue, on sélectionne N pour la variable, puis on entre N+1 dans le champ après prend la valeur et on clique sur OK.
- Après s'être positionné sur la ligne FIN_TANT_QUE, on crée une nouvelle ligne (bouton Nouvelle Ligne), puis on clique sur Ajouter AFFICHER variable.
Dans la boite de dialogue, on sélectionne la variable N avant de cliquer sur OK.
Cliquer ici pour voir l'ensemble des étapes en vidéo.
Fichier de l'exemple : exemple5_2.alg
(faire un clic-droit et utiliser l'option enregistrer sous pour télécharger le fichier)
Remarques importantes sur les structures
TANT QUE... dans
AlgoBox :
- On utilise cette structure quand on veut répéter une série d'instructions sans que l'on sache à l'avance combien de fois (quand on connaît exactement le nombre de répétitions à effectuer, on utilise plutôt une boucle POUR...DE...A)
- Si la condition du TANT QUE... est fausse dès le début, les instructions entre DEBUT_TANT_QUE et FIN_TANT_QUE ne sont jamais exécutées (la structure TANT QUE ne sert alors strictement à rien).
- Il est indispensable de s'assurer que la condition du TANT QUE... finisse par être vérifiée (le code entre DEBUT_TANT_QUE et FIN_TANT_QUE doit rendre vraie la condition tôt ou tard), sans quoi l'algorithme ne pourra pas fonctionner. Cette structure est donc à manier avec prudence...
Activité 5 :
On considère le problème suivant :
- On lance une balle d'une hauteur initiale de 300 cm.
- On suppose qu'à chaque rebond, la balle perd 10% de sa hauteur (la hauteur est donc multipliée par 0.9 à chaque rebond).
- On cherche à savoir le nombre de rebonds nécessaire pour que la hauteur de la balle soit inférieure ou égale à 10 cm.
Pour cela, on utilise l'algorithme ci-dessous :
Par quelle condition faut-il remplacer ??? dans la ligne
TANT_QUE (???) FAIRE pour que l'algorithme réponde au problème.
Cliquer ici pour voir la correction.
< Sommaire >