Recensement d'éléments d'un tableau selon le signe - Exercice d'algorithmique

Dans cette vidéo, le présentateur explique comment concevoir un algorithme qui demande à l'utilisateur le nombre de valeurs entières non nulles à saisir, les stocke dans un tableau dynamique, puis compte et affiche séparément le nombre de valeurs positives et négatives. Il détaille le choix d'utiliser deux boucles "Pour" distinctes : la première, combinée à une boucle "Répéter", assure la saisie validée (exclusion des zéros) et remplit le tableau ; la seconde parcourt le tableau pour incrémenter les compteurs nbPos et nbNeg selon le signe de chaque élément. Le narrateur décrit les variables nécessaires (liste, nbVal, i, nb, nbPos, nbNeg), justifie l'usage d'un tableau dynamique lorsqu’on ignore la taille à l’avance, et montre le déroulement complet du pseudocode, tout en rappelant que d’autres implémentations sont possibles.
Chapters
Bonjour à tous, et bienvenue dans cette nouvelle vidéo d'algorithmique où nous allons traiter l'exercice suivant: On souhaite créer un algorithme qui invite l'utilisateur à saisir une suite de nombres entiers non nuls, que l'on stockera dans un tableau. À la fin de la saisie, on affichera à l'écran le nombre d'entrées positives et le nombre d'entrées négatives. Avant de commencer la saisie, on demande à l'utilisateur de spécifier le nombre de valeurs qu'il souhaite saisir. D'après l'énoncé, on doit se servir d'une variable de type tableau pour stocker les différentes valeurs saisies par l'utilisateur. Pour remplir celui-ci, on utilisera forcément un traitement itératif. Et on a bien précisé que l'utilisateur doit d'abord renseigner le nombre de valeurs qu'il souhaite entrer avant de commencer la saisie, ce qui veut dire que le nombre d'itérations que l'on doit exécuter est connu à l'avance. La boucle Pour semble la plus adaptée à notre besoin dans ce cas. Il est également mentionné que les valeurs qui seront saisies par l'utilisateur ne doivent pas être nulles. Nous ferons donc en sorte de filtrer les entrées de l'utilisateur à la de la structure itérative Répéter. Celle-ci s'exécutera tant que la valeur saisie vaut 0 et elle ne prendra fin que si la valeur entrée n'est pas nulle. Pour procéder au recensement des nombres pour voir s'ils sont positifs ou négatifs, on aura encore affaire à une boucle Pour. Dans ce cas, on doit décider si on va utiliser 2 boucles séparées, l'une pour la saisie des valeurs et l'autre pour le recensement des nombres positifs et négatifs, ou on se contente d'une seule boucle qui fait les 2 opérations en même temps. En se référant à l'énoncé, on voit qu'il n'y a pas vraiment de contrainte qui nous oblige à opter pour une seule boucle ou 2 boucles. Alors, pour cet exercice, j'opterai pour 2 boucles séparées chargées chacune de faire le traitement spécifié. Dans cet algorithme, on aura besoin des variables suivantes: liste qui est une variable de type tableau d'entiers et qui contiendra les valeurs entrées par l'utilisateur, nbVal qui permet de spécifier le nombre de valeurs à saisir, i qui qui est le compteur de la boucle Pour, bien entendu on utilisera cette même variable pour les 2 boucles car elles s'exécutent l'une après l'autre, nb qui contient la valeur courante entrée par l'utilisateur, nbPos qui représente le nombre de valeurs positives et nbNeg qui représente le nombre de valeurs négatives. Je propose l'algorithme suivant: Dans le bloc consacré à la déclaration des variables, vous avez certainement remarqué que je n'ai pas spécifié la taille du tableau liste. En effet, il est recommandé de spécifier cette taille lors de la déclaration, mais dans notre cas, on ignore le nombre de valeurs que l'utilisateur souhaite entrer. J'ai donc opté pour un tableau dynamique dont la taille change selon le besoin lors de l'exécution. Dans le corps de l'algorithme, on demande à l'utilisateur d'indiquer le nombre de valeurs qu'il souhaite saisir. Cette valeur sera aussitôt stockée dans la variable nbVal. Ensuite, on procède à un traitement itératif à l'aide de la boucle Pour. Celle-ci sera exécutée NBVAL fois, c'est pourquoi le compteur de la boucle commence à 0 et finit à NBVAL- 1. Dans la boucle, on doit filtrer les valeurs saisies par l'utilisateur, de telle sorte à n'accepter que des valeurs non nulles. On va donc procéder à un traitement itératif à l'aide de la boucle Répéter où on demande à l'utilisateur d'entrer un entier non nul et que l'on récupère juste après en l'assignant à la variable NB. Tant que cette valeur est nulle, on retourne dans la boucle Répéter et on refait le même traitement. C'est uniquement quand la variable nb est différente de 0 que l'on quitte la boucle Répéter et on affecte nb à l'index courant du tableau liste. Quand la première boucle Pour prend fin, on aura déjà stocké toutes les valeurs saisies par l'utilisateur dans le tableau liste. Ensuite, on initialise les variables nbPos et nbNeg avec la valeur 0 pour dire qu'au début il n'y a aucun nombre positif ou négatif. En parcourant le tableau liste, on incrémentera ces 2 variables convenablement. C'est justement le rôle de la deuxième boucle Pour qui s'exécute aussi nbVal fois. Dans la boucle, on parcourt les index du tableau et on compare la valeur qui y est stockée à 0 à l'aide de la structure conditionnelle Si. Si cette valeur-là est supérieure à 0, alors on incrémente la valeur nbPos de 1. Sinon, ce qui veut dire implicitement que la valeur en question est négative, car on a déjà filtré les entrées de l'utilisateur, alors on incrémente la variable nbNeg. À la sortie de la boucle, les variables nbPos et nbNeg contiennent respectivement le nombre de valeurs positives et le nombre de valeurs négatives, que l'on affichera juste après. Je vous rappelle que l'on peut réussir ce traitement de nombreuses façons, et l'algorithme proposé dans cette vidéo ne représente qu'une méthode parmi tant d'autres. On se contente de ça pour cette fois, 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









