Algorithmique (10/14) - Boucle Répéter - Structures itératives

Dans cette leçon d’algorithmique, le professeur explique les trois structures itératives principales en pseudo‑code : Pour (for), TantQue (while) et Répéter (repeat‑until). Après un rappel sur les boucles Pour et TantQue et leurs critères d’utilisation (nombre d’itérations connu vs inconnu), il introduit la boucle Répéter, qui garantit l’exécution du corps au moins une fois avant de tester la condition. Il montre, à l’aide d’un compteur i initialisé à 11, que la boucle Répéter exécute le corps une fois même si la condition est déjà vraie, contrairement aux boucles Pour et TantQue qui n’exécutent rien lorsque la condition est fausse dès le départ. Ensuite, il propose un exemple pratique : demander à l’utilisateur de saisir le dénominateur B d’une division A/B en s’assurant que B ne soit jamais nul, en utilisant la boucle Répéter pour répéter la demande tant que B=0. La leçon se conclut par un rappel des critères de choix entre les trois boucles et une mention que la récursivité sera abordée dans la prochaine leçon sur les fonctions.
Chapters
Bonjour à tous et bienvenue dans cette nouvelle leçon d'algorithmique. Aujourd'hui nous allons traiter la structure itérative Répéter. Nous avons vu dans les leçons précédentes que les structures itératives TantQue et Pour sont relativement similaires, mais en général on préfère la structure Pour à TantQue quand on connaît d'avance le nombre d'itérations à exécuter. Si ce nombre est incertain ou que la condition à satisfaire ne dépend pas forcément d'un compteur qui s'incrémente ou se décrémente, mais plutôt d'un événement particulier, alors dans ce cas la structure TantQue est mieux placée. Or, ces deux structures de contrôle se partagent un autre point commun. En effet, dans les deux, on vérifie d'abord la condition, puis on exécute le traitement comme l'illustrent les organigrammes suivants et que nous avons déjà vu précédemment. Autrement dit, si par hasard la condition à vérifier était fausse depuis le début, alors on n'exécutera aucune itération ni dans la boucle TantQue ni dans la boucle Pour. Prenons cet algorithme. Dans cet exemple, nous avons initialisé le compteur représenté par la variable i à la valeur 11. Ensuite, dans la structure TantQue, nous avons spécifié la condition qui permet d'exécuter le bloc d'instructions. Ce bloc est censé afficher le message Itération de la boucle exécutée et incrémente le compteur i. Cette condition est vraie si i est inférieur ou égal à 10. Or, depuis le début, i est strictement supérieur à 10, donc la condition n'est pas vraie. On ignore alors le traitement de la boucle et on arrive à la fin de l'algorithme. Alors, aucune itération n'a été exécutée. Avec la boucle Pour on aura le même résultat. En effet, la valeur initiale de i vaut 11, et le compteur est censé s'incrémenter par 1 jusqu'à ce qu'il arrive à la valeur 10 puis on quitte la boucle. Mais depuis le début, la valeur initiale du compteur est supérieure à la valeur finale, ce qui signifie que la condition est fausse. On aura donc le même résultat, c'est-à-dire qu'aucune itération ne sera exécutée non plus. Or, parfois le sort de la boucle dépend du bloc d'instructions qu'elle renferme. Autrement dit, dans certaines situations on est censé exécuter le bloc d'instructions de la boucle au moins une fois, puis on vérifie la condition. Selon celle-ci on peut soit quitter la boucle ou la réexécuter. La structure Répéter est justement prévue à cet effet. La structure Répéter est une structure itérative qui s'ajoute aux boucles TantQue et Pour. Mais à l'inverse de ces deux dernières, elle permet d'exécuter au moins une itération avant de vérifier la condition à la manière de l'organigramme suivant. En effet, le bloc d'instructions est placé avant la condition, ce qui signifie qu'il sera exécuté en premier. Ensuite, si la condition est fausse, on retourne dans la boucle et on réexécute le bloc d'instructions. Sinon, c'est-à-dire si la condition est vraie, alors on quitte la boucle et on poursuit le traitement de l'algorithme. La structure Répéter est représentée ainsi: Comme pour la structure conditionnelle Si et les structures itératives TantQue et Pour, la condition est une expression booléenne qui retourne soit Vrai ou Faux. Elle peut aussi être une combinaison d'expressions booléennes par le biais des opérateurs logiques ET, OU et NON. Reprenons l'exemple précédent mais cette fois avec la structure Répéter. Nous avons initialisé le compteur i à 11 avant d'entrer dans la boucle. Une fois dans cette dernière, on exécute le bloc d'instructions, donc on affiche le message Itération de la boucle exécutée. Puis on incrémente le compteur i qui vaut désormais 12. Ensuite, on vérifie la condition qui est vraie, car la valeur courante de i est strictement supérieure à 10. En effet, avant même d'entrer dans la boucle la condition était déjà vraie car 11 qui est la valeur initiale du compteur i est strictement supérieure à 10. On aura donc affiché le message à l'écran une seule fois. Alors, quelle que soit la condition, la structure itérative Répéter s'exécute au moins une fois. Nous allons maintenant écrire l'algorithme qui permet d'exécuter la division de A par B sachant que B ne doit pas être nul. Mais au lieu de décider de faire l'opération si B n'est pas nul ou afficher un message d'erreur si B est nul, nous allons plutôt insister pour que l'utilisateur saisisse un nombre non nul pour B. L'algorithme ressemblera donc à ceci: Après avoir déclaré les variables A, B qui représentent respectivement le numérateur et le dénominateur, et C qui sert à stocker le résultat de la division, on commence le traitement par demander à l'utilisateur d'entrer la valeur de la variable A. On récupère alors cette valeur-là. Ensuite, on exprime la structure itérative Répéter dans laquelle on demande à l'utilisateur d'entrer la valeur de la variable B, qu'on récupère aussi. Donc, cette première itération est exécutée dans tous les cas. Quelle que soit la condition qui va suivre. Cependant, la condition n'est vraie que si la variable B est différente de 0. Autrement dit, si l'utilisateur saisit 0, alors la condition B différent de 0 est fausse, ce qui veut dire que l'on recommence la boucle et on demande à nouveau la valeur de B. C'est seulement quand la valeur spécifiée pour B n'est pas nulle que l'on quitte la boucle et on poursuit le traitement qui consiste à effectuer la division et afficher le résultat. Autrement dit, Si l'utilisateur persiste à saisir une valeur nulle pour B, on retourne dans la boucle et on refait une nouvelle itération. À ce stade, vous avez à votre disposition 3 structures itératives qui permettent de répéter un traitement plusieurs fois, et dans la plupart des cas, on peut faire le même traitement avec n'importe laquelle de ces 3 structures, mais il est préférable d'invoquer la meilleure structure selon la situation. En guise de rappel, la structure Pour est utilisée quand on connaît au préalable le nombre d'itérations à effectuer. La structure TantQue est utilisée quand on ne connaît pas avec précision le nombre d'itérations à effectuer. La structure Répéter est utile quand la condition dépend d'un traitement qui peut être répétitif et qui doit s'exécuter au moins une fois. Notez qu'il existe une autre forme de traitement itératif que l'on appelle la récursivité, mais on verra ce concept dans la leçon consacrée aux fonctions. Merci pour votre attention et à la vidéo prochaine.
More from Yamossoun

Algorithme de calcule de la racine carrée par dichotomie #dichotomy #squareroot #algorithm









