Td 2 Algorithmique 1. Rappels

publicité
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
Téléchargement