Correction - arnaud

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
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.
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.
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
département
1
Ecrire un algorithme qui calcule la factorielle d'un nombre saisi par l'utilisateur.
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
d’Amiens,
Valeur de poum
Exercice 3 – Factorielle
Le nombre d'itérations est connu (dix) : le schéma itératif POUR est donc à utiliser.
I.U.T.
Valeur de pam (boucle POUR)
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.
Informatique,
année
universitaire
2013/2014

AP1
-
algorithmique

TD3
-
page
1/3
Exercice 5 – La démographie de la ville de Poitiers
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
rg ← 1
rgmax ← 1
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
{ initialisation du maximum courant à la première valeur saisie }
{ 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
I.U.T.
d’Amiens,
département
Informatique,
année
universitaire
2013/2014

AP1

TD3
cor
-
page
2/3