Lyc´ee Benjamin Franklin PTSI−2012-2013
D. Blotti`ere Algorithmique
TD n˚2
Boucle it´ erative non conditionnelle
1. Un exemple d’algorithme utilisant une boucle it´ erative non conditionnelle
On d´efinit les variables suivantes : – variablei contenant un entier ; – variablesomme contenant un entier.
On se donne un entier naturel non nulnfix´e, puis on consid`ere l’algorithme suivant.
Algorithme 1 1 somme←0
2
3 Pour iallant de 1 `a n, par pas de 1, Faire 4 somme←somme+i
5 Fin du Faire 6
7 Afficher(somme)
Question 1
1. On suppose quen= 4. Donner les valeurs des variablesiet n, ligne apr`es ligne, lorsqu’on ex´ecute l’algo- rithme.
On recopiera et on compl`etera le tableau suivant.
Num´ero de ligne Valeur de i Valeur desomme
1 ? 0
2 ? 0
... ... ...
2. D´ecrire le probl`eme auquel r´epond cet algorithme, `a l’aide d’une phrase.
3. Proposer un algorithme, sans boucle it´erative non conditionnelle, qui r´eponde ´egalement au probl`eme
´
enonc´e en 2.
1
2. Qu’est-ce qu’une boucle it´ erative non conditionnelle ?
Une boucle it´erative non conditionnelle permet de r´ep´eter un nombre de foisd´efini `a l’avanceune mˆeme suite d’instructions.
Par exemple, dans l’agorithme n˚1, on r´ep`etenfois l’affectation somme←somme+i
avec une valeur de i qui vaut 1 au d´ebut, puis qui augmente de 1 `a chaque it´eration (r´ep´etition), jusqu’`a ce qu’elle atteigne la valeurn.
Une boucle it´erative non conditionnelle a la structure suivante
Structure d’une boucle it´erative non conditionnelle Pouriallant dev init`av f in par pas dev pas, Faire
suite d’instructions `a r´ep´eter ou
corps de la boucle Fin du Faire
o`u
– i d´esigne l’indice d’it´eration (le num´ero de l’it´eration) ; – v initd´esigne la valeur de d´epart de l’indice d’it´eration ; – v f in d´esigne la valeur de fin de l’indice d’it´eration ;
– v pasd´esigne la valeur du pas (incr´ement) de laquelle est augment´e l’indice `a chaque nouvelle it´eration.
Remarque
Comme indiqu´e ci-dessus, la valeur deiest le num´ero de l’it´eration. Elle est une variable de l’algorithme (avec une valeur assign´ee d`es qu’on rentre dans la boucle) et peut, `a ce titre, ˆetre utilis´ee dans le corps de la boucle (cf. algorithme 1).
3. Exercices
Exercice 5
Soitnun entier naturel non nul.
Ecrire un algorithme qui affiche´ nfois
Bonjour !
avec un retour `a la ligne, apr`es chaque affichage de la chaˆıne de caract`eresBonjour !. Exercice 6
Soitnun entier naturel non nul.
Ecrire un algorithme qui affiche la liste des´ npremiers multiples de 7 (le premier ´etant 0), avec un retour `a la ligne, apr`es chaque affichage d’un des multiples.
Exercice 7
Soitnun entier naturel non nul.
1. ´Ecrire un algorithme, utilisant une boucle it´erative non conditionnelle, qui affiche la valeur de la somme desnpremiers entiers impairs (le premier entier impair ´etant 1).
2. Proposer un algorithme affichant la somme des n premiers entiers impairs, qui n’utilise pas de boucle it´erative non conditionnelle.
2
Exercice 8
Soitq∈R\ {1} et soitn∈N∗. On noteS(n, q) la somme d´efinie par : S(n, q) =
n
X
k=0
qk.
1. ´Ecrire un algorithme, utilisant une boucle it´erative non conditionnelle, qui affiche la valeur deS(n, q).
2. Discuter la complexit´e (e.g. du nombre de multiplications) de l’algorithme ´ecrit en 1..
3. Proposer un algorithme affichant la valeur deS(n, q), qui n’utilise pas de boucle it´erative non condition- nelle.
Exercice 9
On rappelle que pour toutn∈N∗, la factorielle den, not´een!, est le nombre entier naturel d´efini par : n! = 1×2×3×. . .×(n−1)×n.
On a donc 1! = 1 et la relation de r´ecurrence :
(n+ 1)! = (n+ 1)×n!
valable pour toutn∈N∗. 1. Soitn∈N∗.
Ecrire un algorithme qui affiche la valeur de´ n!.
2. Soitn∈N∗.
Ecrire un algorithme qui affiche les´ npremi`eres factorielles (la premi`ere ´etant 1!), avec un retour `a la ligne apr`es chaque affichage d’une factorielle.
Exercice 10
Soit (un)n∈Nla suite d´efinie paru0= 1 et la relation de r´ecurrence : un+1= 3un−1 valable pour toutn∈N.
Soitn∈N.
1. ´Ecrire un algorithme qui affiche la valeur deun.
2. ´Ecrire un algorithme qui affiche la valeur de la sommeSn d´efinie par : Sn=
n
X
k=0
uk.
Exercice 11
Soitn∈N∗. On noteSn la double somme d´efinie par :
n
X
i=1 i
X
j=1
ij.
1. ´Ecrire un algorithme, utilisant deux boucles it´eratives non conditionnelles imbriqu´ees, qui affiche la valeur deSn.
2. Proposer un algorithme affichant la valeur deSn, qui n’utilise aucune boucle it´erative non conditionnelle.
3