Université Lumièr Lyon2 DEUG 2ème année Faculté de Sciences Économiques et de Gestion Année 2000-2001 Td 2 Algorithmique 1. Rappels Exercice 2 Même exercice de Commercial, introduire une variante (avec si ...sinon... ). Si le CA est supérieur à 30 000 F le taux est de 10%, sinon il est de 5%. Algorithme Commission_2 Var i : entier CA, Com, Sal, Sal_Annuel: réel début Sal_Annuel := 0 Pour i = 1 à 12 faire Lire(‘’Entrer le CA mensuel : ‘’, CA) Si CA > 30000 Alors Com := CA * 0,1 Sinon Com := CA * 0,05 Fin Si Sal := Com + 8000 Afficher (‘’Le salaire du ‘’, i ,’’è mois est de : ‘’, Sal) Sal_Annuel := Sal_Annuel + Sal Fin Pour Afficher (‘’Le salaire annuel est de : ‘’, Sal_Annuel) Fin Exercice 3 Faire une variante de l’exercice précédent : en calculant la proportion des commissions dans le salaire annuel du commercial. Algorithme Commission_3 Var i : entier CA, Com, Sal, Sal_Annuel, Taux_Com : réel début Sal_Annuel := 0 Pour i = 1 à 12 faire Lire(‘’Entrer le CA mensuel : ‘’, CA) 1 Université Lumièr Lyon2 DEUG 2ème année Faculté de Sciences Économiques et de Gestion Année 2000-2001 Si CA > 30000 Alors Com := CA * 0,1 Sinon Com := CA * 0,05 Fin Si Sal := Com + 8000 Afficher (‘’Le salaire du ‘’, i ,’’° mois est de : ‘’, Sal) Sal_Annuel := Sal_Annuel + Sal Fin Pour Afficher (‘’Le salaire annuel est de : ‘’, Sal_Annuel) Taux_Com =( Sal_Annuel - 12 * 8000) / Sal_Annuel Afficher (‘’Les commissions représentent ‘’, Taux_Com, ‘’ du salaire annuel. ‘’) Fin 2. Boucles et tableaux OBJECTIFS : • Rappels : Les tableaux (déclaration, utilisation, ...) • Traitements des Tableaux - Saisie des éléments dans un tableau Edition des éléments d’un tableau Calcul d’un résultat à partir des éléments d’un tableau Recherche de la position d’un élément dans un tableau 1) Tableaux. Écrire un algorithme permettant d’initialiser un tableau d’entiers de taille N (N est connu et fixé) des trois façons suivantes, successivement. 0 0 0 … 0 1 2 3 … N 1 2 3 … N 1 2 3 … N 2 (N-1) 2 (N-2) 2 (N-3) … 0 1 2 3 … N Algorithme Init_Tableau Const N=100 Var t : tableau(1..N) d’entiers i : entier 2 Université Lumièr Lyon2 DEUG 2ème année Faculté de Sciences Économiques et de Gestion Année 2000-2001 Début Pour i:=1 à N faire t(i):=0 Fin pour Pour i:=1 à N faire t(i):=i Fin pour Pour i:=1 à N faire t(i):=2*(N-i) Fin pour Fin 2) Même exercice que 7) de Td1, mais calculer en plus la variance. Rappel : N σ2 = ∑ (X i =1 i N − µ) 2 . Algorithme Moyenne_Variance Const N=20 Var note : tableau(1..N) de réels cumul, moyenne, sig2 : réel i : entier Début ‘ Calcul de la moyenne et mémorisation des notes cumul:=0 Pour i:=1 à N faire Répéter Lire(note(i)) Jusqu’à note(i)≥0 et note(i)≤20 cumul:=cumul+note(i) Fin pour moyenne:=cumul/N ‘ Calcul de la variance cumul:=0 Pour i:=1 à N faire cumul:=cumul+(note(i)-moyenne)^2 Fin pour sig2:=cumul/N Fin 3) Même exercice que le 2), mais on ne sait pas d’avance le nombre de notes. Ce nombre doit cependant être inférieur à une borne maximum fixée. La saisie des notes continue tant qu’une note incorrecte n’est pas détectée. 3 Université Lumièr Lyon2 DEUG 2ème année Faculté de Sciences Économiques et de Gestion Année 2000-2001 Algorithme Moyenne_Variance2 Const MAX=100 Var note : tableau(1..MAX) de réels cumul, moyenne, sig2 : réel i, n : entier Début ‘ Initialisations cumul:=0 n:=0 i:=1 ‘ Lecture des notes et calcul de la moyenne Lire(note(i)) Tant que (note(i)≥0 et note(i)≤20) et n<MAX faire cumul:=cumul+note(i) n:=n+1 i:=i+1 Lire(note(i)) Fin tant que moyenne:=cumul/n ‘ Calcul de la variance cumul:=0 Pour i:=1 à n faire cumul:=cumul+(note(i)-moyenne)^2 Fin pour sig2:=cumul/n Fin 4 Université Lumièr Lyon2 DEUG 2ème année Faculté de Sciences Économiques et de Gestion Année 2000-2001 Exercices Exercices supplémentaires en algo : 4) Ajouter à l’algorithme 3) un calcul de la mention en fonction de la moyenne (<10 : ajourné, 10 : passable, 12 : assez bien, 14 : bien, 16 : très bien). Algorithme Mention Const MAX=100 Var note : tableau(1..MAX) de réels cumul, moyenne, sig2 : réel mention : chaîne Début ‘ Idem 1) Si moyenne<10 alors mention:=’AJ’ Sinon Si moyenne<12 alors mention:=’P’ Sinon Si moyenne<14 alors mention:=’AB’ Sinon Si moyenne<16 alors mention:=’B’ Sinon mention:=’TB’ Fin si Fin si Fin si Fin si Fin 5) Même chose que l’algorithme 4), mais afficher en plus un message après le calcul de la mention, selon la mention obtenue. Algorithme Mention2 Const MAX=100 Var note : tableau(1..MAX) de réels cumul, moyenne, sig2 : réel mention : chaîne Début ‘ Idem 2) Selon mention faire ‘AJ’ : Afficher(‘2ème session’) ‘P’ : Afficher(‘Ce fut juste’) ‘AB’ : Afficher(‘Pas mal’) ‘B’ : Afficher(‘Bien joué’) ‘TB’ : Afficher(‘Vous êtes un extraterrestre’) Fin selon Fin 5 Université Lumièr Lyon2 DEUG 2ème année Faculté de Sciences Économiques et de Gestion Année 2000-2001 6) Gestion des ventes d’un magasin. On veut saisir le prix HT d’articles, le type des articles au regard de la TVA (livres, disques, articles spéciaux ou autres articles) et calculer leur prix TTC, connaissant le taux de TVA associé à chaque type (livres : 5,5 %, disques : 20,6 %, articles spéciaux : 33,5 %, autres : 20,6 %). On souhaite faire en fin de journée le bilan du nombre d’articles vendus et des montants HT et TTC totaux et moyens. Exemple d’exécution de l’algorithme PrixHT 30 10 100 500 80 20 -1 Nombre d’articles vendus : Montant HT total : Montant HT moyen : Montant TTC total : Montant TTC moyen : Type Livre Livre Disque Spécial Disque Autre ⇒ ⇒ ⇒ ⇒ ⇒ ⇒ STOP 6 740 123,33 950,90 158,48 6 Prix TTC 31,65 10,55 120,60 667,50 96,48 24,12 Université Lumièr Lyon2 DEUG 2ème année Faculté de Sciences Économiques et de Gestion Année 2000-2001 Algorithme TVA Const TAUX1=0.055 TAUX2=0.206 TAUX3=0.335 TAUX4=0.206 Var prixHT, prixTTC, totalHT, totalTTC, moyHT, moyTTC : réel n : entier type : chaîne Début ‘ Initialisations totalHT:=0 totalTTC:=0 n:=0 ‘ Traitement courant Lire(prixHT) Tant que prixHT≥0 faire Lire(type) Selon type faire ‘livre’ : prixTTC:=prixHT*(1+TAUX1) ‘disque’ : prixTTC:=prixHT*(1+TAUX2) ‘spécial’ : prixTTC:=prixHT*(1+TAUX3) Sinon prixTTC:=prixHT*(1+TAUX4) Fin selon Afficher(prixTTC) totalHT:=totalHT+prixHT totalTTC:=totalTTC+prixTTC n:=n+1 Lire(prixHT) Fin tant que ‘ Fin de journée moyHT:=totalHT/n moyTTC:=totalTTC/n Afficher(n, totalHT, totalTTC, moyHT, moyTTC) Fin 7 Université Lumièr Lyon2 DEUG 2ème année Faculté de Sciences Économiques et de Gestion Année 2000-2001 7) On suppose maintenant que chaque taux de TVA est associé à un code connu de l’utilisateur (ex. livres = 1, disques = 2, etc.). Améliorer les structures de données de l’exercice 4) pour simplifier l’algorithme. Algorithme TVA2 Const TAUX(4)=(0.055, 0.206, 0.335, 0.206) Var prixHT, prixTTC, totalHT, totalTTC, moyHT, moyTTC : réel N, type : entier Début ‘ Initialisations totalHT:=0 totalTTC:=0 n:=0 ‘ Traitement courant Lire(prixHT) Tant que prixHT≥0 faire Lire(type) prixTTC:=prixHT*(1+TAUX(type)) Afficher(prixTTC) totalHT:=totalHT+prixHT totalTTC:=totalTTC+prixTTC n:=n+1 Lire(prixHT) Fin tant que ‘ Fin de journée moyHT:=totalHT/n moyTTC:=totalTTC/n Afficher(n, totalHT, totalTTC, moyHT, moyTTC) Fin 8) On dispose d’un tableau de nombres réels positifs t1 de taille N, que l’on suppose « rempli ». On souhaite trier les valeurs contenues dans t1 dans un second tableau t2, de la plus grande à la plus petite. Méthode : Pour toutes les cases du tableau t2, trouver la plus grande des valeurs contenue dans t1 (en parcourant toutes les cases de t1) et l’affecter à la case courante du tableau t2. La valeur maximum trouvée dans t1 doit être mise à -1 pour ne pas être sélectionnée à nouveau. NB : Cette méthode de tri est la moins efficace possible. Pouvez-vous faire mieux ? 8 Université Lumièr Lyon2 DEUG 2ème année Faculté de Sciences Économiques et de Gestion Année 2000-2001 Algorithme Tri Const N=1000 Var t1, t2 : tableau(1..N) de réels i, j, jmax : entier max : réel Début ‘ Traitement pour tous les éléments de t2 Pour i:=1 à N faire ‘ Recherche du plus grand élément de t1 ‘ Sauvegarde du plus grand dans la variable max ‘ et de sa position dans la variable jmax max:=t1(1) jmax:=1 Pour j:=2 à N faire ‘ Parcours de t1 Si t1(j)>max alors max:=t1(j) jmax:=j Fin si Fin pour ‘ Affectation dans t2 t2(i):=max ‘ Élimination du plus grand dans t1 t1(jmax):=-1 Fin pour Fin 9