


Study with the several resources on Docsity
Earn points by helping other students or get them with a premium plan
Prepare for your exams
Study with the several resources on Docsity
Earn points to download
Earn points by helping other students or get them with a premium plan
Cours de Algo de Mme Hind Elouedi pour L1-TI
Typology: Study notes
1 / 4
This page cannot be seen from the preview
Don't miss anything!



Objectif général : Construire des algorithmes en utilisant les structures itératives.
I.1. Exemple introductif En écrivant des algorithmes, les structures de contrôle, vues jusque là (instructions élémentaires ou structures conditionnelles), ne sont pas suffisantes pour tout exprimer. En effet, l’exemple suivant confirme cette idée. Exemple On se propose de calculer les moyennes du module Algorithmique et Structures de Données de tous les étudiants inscrits en première année technologies de l'informatique dans une institution universitaire. Supposons que pour ce module, chaque étudiant dispose de trois notes : une du devoir surveillé ( NoteDS ), une note d’examen ( NoteEx ) et une note d'orale ( NoteOR ). La moyenne se calcule alors de la manière suivante : Moyenne = ((NoteDS * 0.4 + NoteExam * 0.6) * 0.8) + (NoteOR * 0.2) Pour chaque étudiant, on aura alors à : Saisir les trois notes NoteDS , NoteEx et NoteOR. Calculer et Afficher la moyenne ( Moyenne ). Si on a 200 étudiants par exemple, on aura à réécrire ces trois instructions 200 fois !!! Absurde !... Avec les instructions qu’on connaît jusque là, on ne peut qu’adopter la solution qu’on vient de proposer! C’est pour cela qu’il faut disposer d’autres instructions capables de mieux structurer un tel traitement. Soient les structures itératives (les boucles). II.2. Définition du traitement itératif Les structures itératives sont utilisées pour décrire les répétitions d'une action ou d'un groupe d'actions. Toute répétition d'actions doit être finie. Ceci sera contrôlé à l'aide d'une expression logique ou condition dont le changement de valeur provoque l'arrêt de la répétition. Cette condition est dite condition de sortie ou d’arrêt du traitement itératif. Dans ce qui suit, on va développer trois schémas itératifs : La structure itérative : Répéter .. Jusqu’à La structure itérative : TantQue .. Faire La structure itérative : Pour .. Faire
II.1. Structure itérative : Répéter .. Jusqu’à Le schéma Répéter..Jusqu'à exprime la répétition d'une séquence d'instructions un certain nombre de fois jusqu'à ce qu'une expression logique soit remplie. Sa structure générale se présente ainsi : Figure 4. 1 : Schéma Répéter .. Jusqu’à Répeter Instruction 1 ... Instruction n Jusqu'à (expression_logique)
Remarques L'expression logique est testée après chaque exécution du traitement, si elle n'est pas vérifiée la boucle s'arrête : Si expression_logique = vrai Alors Arrêt Sinon Exécution Si l'expression logique n'a pas été modifiée, on aura dans ce cas une boucle infinie. La séquence d'instructions est exécutée au moins 1 fois. Le nombre de répétitions dans la boucle n'est pas connu à l'avance. Exemple 1 On veut lire une note comprise entre 0 et 20. On pose la question suivante "Donnez une note dans l'intervalle 0..20" jusqu'à ce que la réponse de l'utilisateur convienne. Analyse : on a besoin de : Déclarer une variable nommée N de type Entier pour recevoir une note comprise entre 0 et 20. Préciser à l'utilisateur de saisir une note comprise entre 0 et 20. En cas de réponse incorrecte, on lui donne la possibilité de répéter l'opération de saisie. Algorithme Saisie_Note Variable N : Entier Début Répéter Ecrire ("Donnez une note dans l'intervalle 0..20 :") (1) Lire (N) (2) Jusqu'à (N 0 et N 20) Fin Remarques Les mots Répéter et Jusqu'à encadrent les deux instructions (1) et (2) : ça signifie que ces deux instructions doivent être répétées autant de fois qu'il est nécessaire, et ceci jusqu'à ce que la variable N prenne une valeur comprise entre 0 et 20. Notez bien que le nombre de répétition de ces deux instructions n'est pas indiqué explicitement. Il dépendra ici de la valeur de N. Exemple 2 On veut adapter l'algorithme Saisie_Note1 pour que l'exécution se présente ainsi : Donnez une note dans l'intervalle 0..20 : 25 Note invalide! La plage autorisée est 0..20 : - 1 ... Note invalide! La plage autorisée est 0..20 : 15 La note saisie est : 15 Analyse : dans cet exemple, on a besoin, en cas de réponse incorrecte, d'avertir l'utilisateur en affichant le message suivant : "Note invalide! La plage autorisée est 0..20" et de lui donner la possibilité de répéter l'opération de saisie. Par contre la question initiale n'est pas reposée. d'afficher enfin la note saisie par l'utilisateur
III.3. Structure itérative : Pour .. Faire Le schéma répétitif Pour..Faire permet simplement de répéter un ensemble d'instructions un certain nombre de fois connu à l'avance. Il s'utilise avec la syntaxe suivante : Figure 4.3 : Schéma Pour .. Faire Compteur : variable de contrôle. Deb et Fin : respectivement les valeurs initiale et finale de la variable de contrôle. Incrément : Valeur d'incrémentation de Compteur après chaque exécution de la boucle. Si aucune valeur n'est indiquée, l'argument Pas prend par défaut la valeur 1 comme valeur d'augmentation. Remarques Dans cette structure répétitive Pour .. Faire on n'a pas besoin d'augmenter (ou diminuer) la valeur du compteur à chaque exécution de la boucle puisque cette opération s'effectue automatiquement. Le nombre de répétitions dans la boucle Pour .. Faire peut être calculé en faisant la différence entre la valeur initiale et la valeur finale à laquelle on ajoute la valeur 1. Exemple Supposons que l'on souhaite répéter 10 fois les instructions permettant de lire un nombre entier et d'en écrire le carré. -- Version 1 : -- Version 2 : Algorithme Carre Variable Nombre, Carre, Compteur : Entier Début Compteur 0 – -Compteur initialisé à 0 Répéter Compteur Compteur + 1 (1) Lire (Nombre) (2) Carre Nombre * Nombre (3) Ecrire ("Carré = ", Carre) (4) Jusqu'à (Compteur = 10) Ecrire ("Fin du programme") Fin Algorithme Carré Variable Nombre, Carre, Compteur : Entier Début Pour Compteur de 1 à 10 Faire Lire (Nombre) Carre Nombre * Nombre Ecrire ("Carré = ", Carre) FinPour Ecrire ("Fin du programme") Fin Remarque : Les instructions (1)..(4) sont répétées jusqu'à ce que le compteur atteigne la valeur 10 ou bien Compteur 9. Remarques : Dans cette version 2, on n'a pas besoin d'augmenter la valeur du compteur à chaque exécution de la boucle puisque cette opération s'effectue automatiquement. On a choisi 1 comme valeur initiale du compteur. C'est effectivement la solution la plus simple mais ce n'est pas la seule. Par exemple, de 100 à 109. Pour Compteur de Deb à Fin [ Pas Incrément] Faire Instruction 1 ... Instruction n FinPour