Dans cette vidéo d'algorithmique, l'auteur explique comment concevoir un programme qui compte les voyelles d'une phrase saisie par l'utilisateur. Il décrit d'abord le problème : demander à l'utilisateur une phrase, afficher le nombre de voyelles, puis proposer de recommencer ou de quitter. Il propose de créer une fonction nommée nbrVoyelles qui reçoit la phrase (argument texte) et renvoie le nombre de voyelles. La fonction utilise une boucle Pour parcourant chaque caractère du tableau de la chaîne, compare chaque caractère aux voyelles (a, e, i, o, u, y) via une condition Si avec l'opérateur logique OU, incrémente un compteur nbr et retourne ce compteur. Le programme principal utilise une boucle Répéter pour demander la phrase, appeler nbrVoyelles, afficher le résultat, puis demander à l'utilisateur s'il veut continuer (Oui/Non). Il précise les variables nécessaires (Phrase, Choix, i, nbr) et la logique de sortie de la boucle Répéter (choix = Non). L'auteur mentionne que la structure conditionnelle peut être longue mais que la plupart des langages offrent des fonctions ou opérateurs simplifiant ce traitement, et suggère de revoir les vidéos sur fonctions et procédures. Il note aussi que l'exercice peut être résolu de plusieurs façons : fonction, procédure ou traitement direct dans le programme principal.
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 compte les voyelles dans une phrase saisie par l'utilisateur. On demande donc à ce dernier de saisir la phrase de son choix, puis on affiche le nombre de voyelles qu'elle contient. Ensuite, on demande à l'utilisateur s'il souhaite saisir une nouvelle phrase pour refaire le même traitement ou quitter le programme. Il est préférable de créer une fonction qui a pour mission de retourner le nombre de voyelles de la phrase qui lui est passée en argument. En examinant l'énoncé, on se rend compte que le traitement principal de l'algorithme qui consiste à compter les voyelles de la phrase saisie par l'utilisateur sera fait par une fonction. Cette fonction acceptera comme argument la phrase en question et retournera comme valeur le nombre de voyelles que celle-ci contient. Nous allons traiter la chaîne de caractères passée en argument comme étant un tableau de caractères, comme on l'a vu dans la leçon consacrée aux tableaux. Nous allons donc procéder à un traitement itératif à l'aide d'une boucle qui va parcourir ce tableau-là et comparer chacune de ses entrées aux voyelles de l'alphabet. Vu que la taille de la chaîne de caractères, donc du tableau, est connue à l'avance, alors on va opter pour la boucle Pour. Il est également mentionné qu'à la fin du traitement on demandera à l'utilisateur s'il souhaite entrer une nouvelle phrase ou non. On aura donc affaire à un autre traitement itératif, cette fois-ci à l'aide de la boucle Répéter. Dans cet algorithme nous aurons besoin des variables suivantes: Phrase qui est de type chaîne de caractères à laquelle on va assigner la phrase saisie par l'utilisateur. Choix qui est de type chaîne de caractères aussi et qui représente le choix de l'utilisateur, c'est-à-dire s'il souhaite entrer une nouvelle phrase ou mettre fin au programme. En ce qui concerne la fonction que l'on nommera nbrVoyelles, elle aura aussi besoin de variables qui sont locales dans ce cas. Ces variables sont: i qui est le compteur de la boucle Pour, nbr de type entier et qui représente le nombre de voyelles trouvées dans la chaîne. Cette variable constituera la valeur de retour de la fonction. Notez que cette dernière acceptera comme argument la phrase de l'utilisateur. On appellera cet argument texte, et il est de type chaîne de caractères. Je propose l'algorithme suivant: Comme on l'a vu dans le cours consacré aux fonctions et procédures, un sous-programme, qui est dans notre cas une fonction, est déclaré entre le nom de l'algorithme et le bloc consacré aux variables du programme principal. Dans la fonction, on initialise la variable nbr à 0 pour dire qu'au début aucune voyelle n'est trouvée. Ensuite, nous procédons au traitement itératif à l'aide de la boucle Pour qui s'exécute autant de fois qu'il y a de caractères dans la phrase de l'utilisateur passée en argument et affectée systématiquement à la variable texte. Le compteur de la boucle commence à 0 et finit à longueur- 1. La fonction prédéfinie longueur, qu'on a déjà vue avant, retourne le nombre de caractères d'une chaîne et aussi le nombre d'index dans un tableau. Dans la boucle on vérifie si le caractère courant de la chaîne représenté par texte correspond à l'une des voyelles de l'alphabet. Cette vérification est faite à l'aide d'une structure conditionnelle Si. La condition à vérifier est une expression booléenne formulée à l'aide de l'opérateur logique OU. Alors, il suffit qu'une seule condition élémentaire du bloc Si soit vraie pour que la condition entière soit vraie. Si c'est le cas, on incrémente la variable nbr de 1. Notez qu'on n'a pas déclaré le bloc Sinon, car aucun traitement n'est requis pour ce bloc-là. À la fin de la boucle, on retourne le nombre de voyelles représentées par la variable nbr. Donc, à chaque fois que l'on appellera la fonction nbrVoyelles, on récupérera aussitôt ce qu'elle retourne. Dans le programme principal, on procède à un traitement itératif à l'aide de la boucle Répéter où on demande à l'utilisateur de saisir une phrase de son choix. On récupère cette phrase-là et on l'assigne à la variable phrase. Ensuite, on affiche combien de voyelles elle contient en appelant la fonction nbrVoyelles à laquelle on passe comme argument la phrase de l'utilisateur. Après, on lui demande d'entrer Oui s'il souhaite saisir une nouvelle phrase et refaire le traitement, ou Non s'il souhaite mettre fin au programme. On assigne l'entrée de l'utilisateur à la variable choix. Notez que la condition de sortie de la boucle Répéter est le fait que la variable choix soit égale à Non. Par conséquent, l'utilisateur n'est pas obligé de saisir Oui s'il veut refaire le traitement, mais il peut saisir n'importe quoi du moment où c'est différent de la valeur Non. Il convient de mentionner que la structure conditionnelle à l'intérieur de la fonction paraît longue, et c'est tout à fait juste, mais sachez que la plupart des langages de programmation disposent de fonctions et même d'opérateurs qui simplifient ce genre de traitement. Je vous suggère de revoir la vidéo consacrée aux fonctions et procédures afin de voir plus clair dans cet algorithme. Et sachez que l'on peut réussir ce dernier de plusieurs manières différentes, comme par exemple utiliser une procédure au lieu de la fonction, ou même faire le traitement directement dans le programme principal sans faire appel à un sous-programme. Merci pour votre attention et et à la vidéo prochaine.