Dans cette vidéo, l'instructeur explique comment concevoir un algorithme permettant à un professeur de calculer la moyenne des notes d'une classe lorsqu’on ne connaît pas à l’avance le nombre d’étudiants. Le professeur saisit les notes une à une jusqu’à entrer la valeur sentinel -1, moment où la saisie s’arrête et la moyenne est affichée. L’auteur analyse les trois structures de boucles étudiées (TantQue, Pour, Répéter) et justifie le choix de la boucle Répéter, car sa condition de sortie est évaluée après l’exécution du corps, ce qui correspond naturellement au mécanisme du sentinel. Il décrit les variables nécessaires (i : compteur, n : note saisie, s : somme des notes), détaille le déroulement de chaque itération (affichage du prompt, lecture de n, mise à jour de s et i), et explique comment gérer le cas où la première saisie est -1 (aucune note). Il montre que le sentinel -1 a été ajouté à la somme et au compteur, donc il faut compenser en ajoutant 1 à la somme et en soustrayant 1 du compteur avant de calculer la moyenne (moyenne = (s+1) / (i‑1)). L’instructeur mentionne brièvement l’absence de validation de la plage de notes et encourage l’étudiant à l’ajouter. La vidéo se conclut par un rappel des étapes et un remerciement.
Chapters
Bonjour à tous et bienvenue dans cette nouvelle vidéo consacrée à une série d'exercices sur l'algorithmique. Aujourd'hui nous allons faire l'exercice suivant: un professeur souhaite calculer la moyenne des notes de sa classe. Il doit donc saisir les notes des étudiants un à un. On suppose que le nombre d'étudiants dont on veut saisir la note n'est pas connu d'avance. Le professeur continue alors à saisir les notes jusqu'à ce qu'il entre la valeur -1. À ce moment-là, la saisie s'arrête, ensuite la moyenne est calculée puis affichée. Il est clair que l'on aura affaire à un traitement itératif où on va se servir de l'une des 3 boucles que nous avons déjà traitées dans les leçons précédentes, à savoir la boucle TantQue, la boucle Pour et la boucle Répéter. En analysant le problème de plus près, on voit que le nombre d'étudiants dont on veut saisir la note n'est pas connu, donc le nombre d'itérations de la boucle n'est pas fixé à l'avance. Alors, on peut déjà écarter la boucle Pour. Car cette boucle est préférée si l'on connaît d'avance le nombre d'itérations à exécuter. Concernant la boucle TantQue, on a vu qu'elle peut être utile dans un traitement itératif dont le nombre d'itérations n'est pas connu depuis le début. Dans notre cas, elle peut bien faire l'affaire, mais en se référant à l'énoncé, on constate que la saisie des notes se poursuit jusqu'à ce que le professeur saisisse la valeur -1, ce qui met fin à la boucle. On imagine donc que l'opération de la saisie se fait dans la boucle, puis on vérifie la valeur entrée pour décider ensuite si on continue ou on met fin au traitement itératif. Ce qui signifie que la condition de sortie de la boucle doit être spécifiée après la saisie, c'est-à-dire après le traitement de la boucle. Ce comportement nous renvoie directement à la boucle Répéter. En fait, elle est la mieux placée pour faire le traitement demandé, mais ça ne veut pas dire que l'on ne peut pas utiliser la boucle TantQue. On peut bien s'en servir aussi, mais on sera obligé d'ajouter des instructions supplémentaires afin de s'accorder avec le traitement voulu, ce qui rendra notre algorithme moins optimisé. Dans notre algorithme on aura besoin des variables suivantes: i qui est le compteur de la boucle et qui nous permettra de connaître combien de notes ont été saisies, n qui représente la note saisie à chaque itération, et s qui représente la somme de toutes les notes. Ces variables seront de type entier. Concernant la moyenne, on la calculera et on l'affichera directement au sein de la fonction Ecrire, donc pas la peine de lui consacrer une variable. Voilà l'algorithme que je propose: Première chose à faire, c'est d'initialiser le compteur de la boucle i à 0 et la somme courante à 0. À chaque itération de la boucle Répéter, on va incrémenter le compteur de la boucle de 1 et la somme L sera incrémentée de N. On sait qu'au sein de la boucle Répéter, la première itération est toujours exécutée, car la condition de sortie n'est vérifiée qu'après le traitement. Je vous recommande de voir la vidéo consacrée à la structure itérative Répéter si vous en avez besoin. Alors, au sein de la boucle, on demande à l'utilisateur de saisir la note de l'étudiant courant en affichant le message Note de l'étudiant i+1. Dans ce cas, lors de la première itération où i vaut 0, on affiche Note de l'étudiant 1. Notez que j'ai échappé l'apostrophe qui est un caractère spécial par une simple quote, comme on l'a vu dans une vidéo précédente. Ensuite, on récupère la note saisie que l'on met dans la variable n. Juste après, on incrémente la somme S de n, Donc si la note qui vient d'être saisie par l'utilisateur vaut 14, la nouvelle valeur de la somme est 14, car celle-ci a été initialisée à 0 avant d'entrer dans la boucle. On incrémente aussi le compteur de la boucle i de 1. Tant que la note saisie est différente de -1, on demande à l'utilisateur de saisir une nouvelle note et ainsi de suite jusqu'à ce qu'il saisisse la valeur -1. À ce moment, la condition de la boucle est devenue vraie et on sort immédiatement de celle-ci. À la sortie de la boucle, on doit calculer la moyenne et l'afficher, mais on doit d'abord vérifier une condition. En effet, si i vaut 1, ça veut dire que le compteur de la boucle est incrémenté une seule fois, donc la boucle Répéter est exécutée une seule fois, ce qui veut dire que la seule note saisie par l'utilisateur vaut -1. On affiche alors le message Aucune note saisie. Sinon, ce qui veut dire implicitement que la variable i est supérieure à 1, à ce moment-là on affiche la moyenne. La moyenne est calculée ainsi: S+ 1 divisé par i- 1. Effet, quand l'utilisateur a saisi -1, avant de sortir de la boucle on a incrémenté la variable S de -1, ou plutôt on a décrémenté S de 1. Il faut donc compenser en ajoutant 1 à la somme. Notez également que le compteur de la boucle sera incrémenté de 1 même si la note saisie vaut -1. Il faudra par conséquent soustraire le 1 ajouté au compteur avant de faire le calcul. Notez que par souci de simplicité, on n'a pas contrôlé si la valeur saisie par l'utilisateur est comprise entre -1 et 20. Je suis sûr que vous êtes capable d'ajouter cette condition par vous-même. Ça sera tout pour cette séance. Merci pour votre attention et à la vidéo prochaine.