AP1 TD3 – Schémas itératifs
Correction
Exercice 1 – Baguettes
Ecrire un algorithme qui affiche une table des prix de 1 à 10 baguettes de pain sous la
forme :
1 baguette(s) coute(nt) 0.8 euros
2 baguette(s) coute(nt) 1.6 euros
3 baguette(s) coute(nt) 2.4 euros
10 baguette(s) coute(nt) 8 euros
Le nombre d'itérations est connu (dix) : le schéma itératif POUR est donc à utiliser.
ALGORITHME baguettes
CONSTANTE : (prixU : réel) ← 0.8
VARIABLE : prix : réel
nb : entier
DEBUT
POUR nb ALLANT DE 1 A 10 FAIRE
prix ← nb × prixU
afficher nb,"baguette(s) coute(nt)", prix,"euros."
FINPOUR
FIN
Exercice 2 – Un grand classique
Que réalise l'algorithme suivant ? Pour répondre à cette question, on pourra simuler une
exécution de l’algorithme avec pim valant 5 à l'aide du tableau ci-dessous.
ALGORITHME fondamental
VARIABLE : pim, pam, poum: entiers
DEBUT
saisir pim
poum ← 0
POUR pam ALLANT DE 1 A pim FAIRE
poum ← poum + pam
FINPOUR
afficher poum
FIN
Valeur de pam (boucle POUR) Valeur de poum
1 0+1
2 (0+1)+2
3 (0+1+2)+3
4 (0+1+2+3)+4
5(0+1+2+3+4)+5
Poum contient donc la somme des cinq premiers entiers positifs. Si on généralise, poum
contient la somme des pim premiers entiers.
Exercice 3 – Factorielle
Ecrire un algorithme qui calcule la factorielle d'un nombre saisi par l'utilisateur.
On rappelle que :
0 ! =1
n ! = 1 × 2 × 3 ×× n
Le nombre d'itérations est connu (n-1) : le schéma conditionnel POUR est donc à
utiliser.
ALGORITHME factorielle
{ calcul de la factorielle d'un entier n saisi par l'utilisateur }
VARIABLE : facto, n, i : entiers
DEBUT
facto ← 1
saisir n
SI n = 0 ALORS
afficher "0 ! = 1"
SINON
│ POUR i ALLANT DE 2 A n FAIRE
││facto ← facto × i
│ FINPOUR
afficher facto
FINSI
FIN
Le schéma conditionnel SI n'est pas nécessaire : le cas 0 ! est bien géré par la boucle
POUR (une boucle POUR allant de 2 à 0 n'est pas exécutée). Néanmoins, ce SI
augmente la lisibilité de l'algorithme en distinguant clairement, comme il est d'usage, le
cas 0 ! et le cas n !, n étant différent de zéro.
I . U . T . d A m i e n s , d é p a r t e m e n t I n f o r m a t i q u e , a n n é e u n i v e r s i t a i r e 2 0 1 3 / 2 0 1 4 A P 1 - a l g o r i t h m i q u e T D 3 - p a g e 1 / 3
Exercice 4
Ecrire un algorithme qui demande des nombres à l'utilisateur et qui indique, à la fin de la
saisie, le nombre le plus grand et son rang. L'utilisateur met fin à la saisie en entrant la
valeur zéro.
Par exemple, si l'utilisateur entre les nombres suivants :
6 8.5 -52.3 95 23.8 0
L'algorithme affichera
Le nombre le plus grand est 95, situé au rang 4.
Le nombre d'itérations n'est pas connu a priori. La boucle POUR n'est donc pas adaptée.
En outre, il est possible de ne faire aucune itération si l'utilisateur saisit zéro dès le
début. La boucle TANTQUE est donc à privilégier.
La tactique est la suivante : on gère durant l'algorithme un maximum courant, qui
contient la valeur la plus grande jusqu'à présent. A chaque nouvelle saisie, on compare
le nombre n entré par l'utilisateur à ce max courant : si n > max, alors n devient le
nouveau maximum courant.
ALGORITHME plus_grand
VARIABLES :
n, max : réels
rg, rgmax : entiers
DEBUT
saisir n
max ← n { initialisation du maximum courant à la première valeur saisie }
rg ← 1
rgmax ← 1 { rgmax désigne le rang de ce maximum courant }
TANT QUE n <> 0 FAIRE
SI n > max ALORS
││max ← n
││rgmax ← rg
│ FINSI
rg ← rg + 1
saisir n
FINTANTQUE
FIN
Exercice 5 – La démographie de la ville de Poitiers
Le taux d'accroissement annuel de la ville de Poitiers (Vienne) est de 0.89 %. Ecrire un
algorithme qui indique le nombre d'années à partir de l'an 2013 pour atteindre 100 000
habitants, sachant la ville compte actuellement 87 697 habitants.
Le nombre d'itérations n'est pas connu a priori (c'est d'ailleurs l'objet du problème !). La
boucle POUR n'est donc pas adaptée. En outre, il faudra faire au moins une itération car
au départ le nombre d'habitants est inférieur à 100 000. La boucle REPETER JUSQU'A
est donc à privilégier.
ALGORITHME Poitiers
VARIABLES :
hab : réel
an : entier
DEBUT
an ← 0
hab ← 87697
REPETER
hab ← hab + (0.89 × hab / 100)
an ← an + 1
JUSQU'A hab ≥ 100 000
afficher an
FIN
I . U . T . d A m i e n s , d é p a r t e m e n t I n f o r m a t i q u e , a n n é e u n i v e r s i t a i r e 2 0 1 3 / 2 0 1 4 A P 1 T D 3 c o r - p a g e 2 / 3
1 / 2 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !