5. Structure TANT QUE...
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 2N 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 2N<10000 , on augmente de 1 la valeur de N (qui vaut 1 au début de l'algorithme). Par contre, dés que 2N 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 >


© 2009/2013 - Pascal Brachet
L'auteur est professeur de mathématiques au lycée Bernard Palissy d'Agen.