|
Page 6 sur 13
La boucle WHILE
On a souvent besoin de répéter une même suite d'instructions, ou des instructions du même type, par exemple si on veut afficher tous les nombres entiers de 1 à 15 un par un. Cela signifie qu'il faudrait effectuer les instructions :
print 1 print 2 print 3 print 4 print 5 print 6 print 7 print 8 print 9 print 10 print 11 print 12 print 13 print 14 print 15
Assez embêtant de l'écrire tel quel.
Heureusement la boucle while permet cela. La syntaxe est :
while (condition): instruction 1 instruction 2 ... instruction n # retour à la ligne pour la suite du programme
Tant que la condition est vérifiée, les instructions de 1 à n seront effectuées. Bien faire attention à respecter la même indentation pour chaque instruction dans la boucle. Le retour à la ligne signifie la fin des instructions à répéter dans la boucle while.
Avant d'écrire ce genre de boucles, assurez-vous qu'elle n'est pas infinie ! Ou prévoyez un moyen de sortir à un moment donnée de sortir de la boucle.
Par exemple, le code suivant lancera un programme qui ne s'arrêtera jamais :
1 2 3
|
n = 5 while (n > 0): print n
|
Le problème est que la valeur de n ne change pas, et donc la condition n > 0 est toujours vérifiée, la boucle ne se finit jamais.
Pour corriger, il faut qu'à un moment donné n devienne négatif ou nul, voici un exemple de solution :
1 2 3 4
|
n = 5 while (n > 0): print n n = n - 1
|
La valeur de n baisse d'un cran à chaque fois que la boucle s'exécute, et atteindra un moment ou un autre 0.
D'ailleurs, combien de fois va-t-on avoir un résultat affiché dans le code ci-dessus ?
Exercices :
- Réécrire le programme calculant les intérêts gagnés au bout d'un certain nombre d'années d'une somme sur à compte à 3%, à l'aide d'une boucle while.
- Ecrire un programme calculant la factorielle d'un nombre. Pour rappel, la factorielle d'un nombre n est n! = n*(n-1)*...*2*1.
Par exemple : 10! = 10*9*8*7*6*5*4*3*2*1 = 3 628 800.
- Les tables de multiplication :
- Afficher les 100 premiers nombres de la table de 7, avec une étoile pour les multiples de 3.
- Afficher la table de multiplication complète jusqu'à 10.
Les résultats pourront être sous la forme suivante :
- Réservé aux connaisseurs : conversions binaire ←→ décimal :
- Ecrire un programme effectuant la conversion binaire --> décimal ( voir rappels sur les nombres binaires en cas de besoin),
- Ecrire un programme effectuant la conversion décimal --> binaire ( c'est plus difficile, donc voici une indication : il faut effectuer des divisions entières successives par le nombre ..... ).
- Fusionner les deux programmes précédents en un unique avec menu au départ permettant le choix de la conversion à faire :
|