Année universitaire 2005-2006 NTE 3 : Algorithme et programmation Licence de sciences économiques et de gestion : 2e année Pierre-Henri GOUTTE SÉANCE 8 : STRUCTURES RÉPÉTITIVES ET TABLEAUX Objectif de la séance : Se familiariser avec l’emploi des structures répétitives pour travailler de manière efficace sur les tableaux à une et deux dimensions. B. Exercices La ville de Lyon veut analyser les températures sur la presqu’île à chaque heure. Pour cela, deux tableaux sont créés, l’un contenant les heures auxquelles sont mesurées les températures, l’autre les températures effectivement mesurées. Écrire un algorithme qui permet : • de définir le type de tableau TABLENTIERS permettant de saisir heures et températures • de déclarer le tableau TAB_HEURES, le tableau TAB_TEMPERATURES et le tableau TAB_ECARTS I. TABLEAU À UNE DIMENSION (VECTEUR) A. Principes Rappel : Chaque élément d’un tableau est identifié par le nom du tableau et son rang dans la suite des valeurs du tableau. Si l’on veut associer une instruction à chaque élément d’un vecteur de N valeurs, il faut donc répéter N fois l’instruction en faisant varier à chaque fois l’indice de l’élément : Lecture Affectation SOMME:= SOMME + TABNOTES (1) Écrire TEMPERATURELYON (1) SOMME:= SOMME + TABNOTES (2) Écrire TEMPERATURELYON (2) Lire VILLE_NAISSANCE (3) SOMME:= SOMME + TABNOTES (3) Écrire TEMPERATURELYON (3) ……………………………….. SOMME:= SOMME + TABNOTES (N) de lire les différentes températures constatées pendant la journée • de mesurer et d'éditer l’écart de température entre chaque relevé effectué (TAB_ECARTS) • de calculer et d’éditer la température moyenne constatée ce jour à Lyon (MOYENNE) • d’éditer l’heure à laquelle la température la plus élevée a été constatée (HEUREMAX) II. TABLEAU À DEUX DIMENSIONS (MATRICE) Lire VILLE_NAISSANCE (2) ……………………………….. d’affecter comme éléments du tableau TAB_HEURES les différentes heures de la journée. • Écriture Lire VILLE_NAISSANCE (1) Lire VILLE_NAISSANCE (N) • ……………………………….. A. Principes Rappel : Chaque élément d’une matrice est identifié par le nom du tableau, le rang de l'élément dans la colonne et le rang de l'élément dans la ligne. Écrire TEMPERATURELYON (N) Exemple : Le tableau GRILLE_NOTES représente les notes de 3 étudiants pour 5 matières. Il Objectif : La structure répétitive indicée permet de gérer un tableau d'une manière à la fois plus concise et aisément généralisable : elle permet de répéter autant de fois que désiré une instruction et on emploie les valeurs successives du compteur comme indices du tableau. Exemples : Pour lire le Tableau VILLE_NAISSANCE, on peut écrire l'algorithme suivant Pour INDICE allant de 1 à N ' N est connu de l'utilisateur Écrire ("Entrer la ville de rang ", INDICE) Lire (VILLE_NAISSANCE (INDICE) ' INDICE varie de 1 à N : chaque élément du tableau est lu Fin Pour De même pour écrire les différents éléments du tableau TEMPERATURE_LYON Pour INDICE allant de 1 à N ' N est connu de l'utilisateur Écrire (TEMPERATURE_LYON (INDICE) ' INDICE varie de 1 à N : chaque élément est édité Fin Pour Enfin, pour calculer la somme des éléments d'un tableau, Pour INDICE allant de 1 à N ' N est connu de l'utilisateur SOMME:= SOMME + TABNOTES (INDICE) ' Chaque élément du tableau est sommé Fin Pour Imprimé le dimanche 13 novembre 2005 contient les valeurs suivantes : Matières Indice matière —> 1 2 3 4 5 1 10,5 11 16 11 Indice Étudiants 2 5,5 8 2 11,5 Étudiant! 3 15 12 14 Pour accéder à un élément du tableau, il faut indiquer l’identificateur du tableau suivi, entre parenthèses, du rang de l’élément dans la première dimension (ligne ou colonne), d'une virgule, puis du rang de ce même élément dans la deuxième dimension (colonne si je choisis ligne comme première dimension, ligne si je choisis colonne comme première dimension). Principe général : Pour associer une instruction à l'ensemble des éléments d'une matrice, il faut employer deux structures répétitives indicées, imbriquées l'une dans l'autre. La première structure gère au choix l'indice des lignes ou celui des colonnes et la seconde l'indice des colonnes ou celui des lignes. Lecture du tableau donné en exemple : Pierre-Henri GOUTTE © Structures répétitives et Tableaux page 2 sur 4 Pour INDICELIGNE allant de 1 à 3 Pour INDICECOLONNE allant de 1 à 5 Écrire ("Entrer la note à l'intersection de la ligne " ; INDICELIGNE ; " et de la colonne "; INDICECOLONNE) Lire (GRILLE_NOTES (INDICELIGNE, INDICECOLONNE) Fin Pour Fin Pour Attention ! Il faut inverser l'ordre des structures à imbriquer, mais ne pas inverser l'ordre des indices du tableau. B. Exercice La ville de Lyon veut saisir chaque heure les températures sur la presqu’île et ce, pour tous les jours de la semaine. Pour cela, deux tableaux sont créés, l’un contenant les heures auxquelles sont mesurées les Écriture du tableau donné en exemple : Pour INDICELIGNE allant de 1 à 3 Pour INDICECOLONNE allant de 1 à 5 Écrire (GRILLE_NOTES (INDICELIGNE, INDICECOLONNE) ; Chr (10) Fin Pour Écrire (Chr (13)) Fin Pour Chr (10) édite une tabulation et Chr (13) un retour à la ligne, ce qui permet une édition correcte du températures (TAB_HEURES), l’autre les températures effectivement mesurées chaque heure et chaque jour de la semaine (TAB_TEMPERATURES) Écrire un algorithme qui permet : tableau. • de déclarer le tableau TAB_HEURES et le tableau TAB_TEMPERATURES • d’affecter les heures au tableau TAB_HEURES • de demander à l'utilisateur d'entrer toutes les températures constatées durant la semaine • de calculer et d'éditer dans un tableau (TAB_MOYENNE_JOUR) la température moyenne de chaque jour Affectations : • Si l'on veut sommer toutes les valeurs de la matrice, pour calculer une moyenne générale, il faut la semaine pour chaque heure de la journée alors employer deux structures répétitives imbriquées. Pour INDICELIGNE allant de 1 à 3 Pour INDICECOLONNE allant de 1 à 5 SOMME := SOMME + (GRILLE_NOTES (INDICELIGNE, INDICECOLONNE) Fin Pour Fin Pour MOYENNE := SOMME / 15 Si l'on veut sommer les notes obtenues par chaque étudiant pour calculer sa moyenne, il faut • Si l'on veut sommer les notes obtenues dans chaque matière pour calculer la moyenne par matière, il III. EXERCICE COMPLÉMENTAIRE L’université vous propose d’écrire un algorithme permettant aux chargés de travaux dirigés de calculer la moyenne de chacun de leur groupe. 1°) Pour INDICECOLONNE allant de 1 à 5 Pour INDICELIGNE allant de 1 à 3 SOMME := SOMME + (GRILLE_NOTES (INDICELIGNE, INDICECOLONNE) Fin Pour MOYENNE := SOMME / 3 Fin Pour Pierre-Henri GOUTTE © Structures répétitives et Tableaux page 3 sur 4 Écrire un algorithme qui demande au chargé de TD d’entrer le nombre de ses étudiants (celui- ci doit être compris entre 20 et 45), d’entrer la série de notes, de calculer et d’afficher la moyenne du groupe. 2°) Modifier l’algorithme précédent selon les règles suivantes : non seulement l’algorithme calcule et affiche la moyenne, mais il calcule et affiche le nombre d’étudiants ayant une note supérieure ou égale à la moyenne (10). faut employer deux structures répétitives imbriquées, mais calculer la moyenne à chaque changement de colonne. de mesurer, puis éditer ans un tableau l'écart de température entre chaque heure d'une même journée, et ce pour tous les jours de la semaine (ECART_JOURS). employer deux structures répétitives imbriquées, mais calculer la moyenne à chaque changement de ligne Pour INDICELIGNE allant de 1 à 3 Pour INDICECOLONNE allant de 1 à 5 SOMME := SOMME + (GRILLE_NOTES (INDICELIGNE, INDICECOLONNE) Fin Pour MOYENNE := SOMME / 5 Fin Pour de calculer et d'éditer dans un tableau (TAB_MOYENNE_HEURES) la température moyenne de 3°) Modifier l’algorithme précédent selon la règle suivante : il est impossible à l’utilisateur d’entrer une note inférieure à zéro ou supérieure à vingt. 4°) Modifier l’algorithme précédent selon la règle suivante : l’algorithme peut être employé, à plusieurs reprises, pour calculer la moyenne et le nombre d’étudiants ayant une note supérieure ou égale à 10. Pierre-Henri GOUTTE © Structures répétitives et Tableaux page 4 sur 4