Livre_silo 30 août 2013 16:32 Page 108
¨
©
¨
©
¨
©
¨
©
C o p y r i g h t E y r o l l e s
108
Informatique pour tous
EN PRATIQUE Dans les versions Python 2.x
Ce comportement est différent : range renvoie toujours une liste. L’avantage de ne pas
calculer cette plage de valeurs en Python 3.x est qu’on peut ainsi utiliser des valeurs comme
range(2**32) qui seraient très coûteuses à calculer.
SAVOIR-FAIRE Choisir entre une boucle for et une boucle while
Si on connaît à l’avance le nombre de répétitions à effectuer, ou plus généralement, si
on veut parcourir une valeur itérable, on choisit une boucle for.
À l’inverse, si la décision d’arrêter la boucle ne peut s’exprimer que par un test, c’est
la boucle while qu’il faut choisir.
Exercice 4.29 Quelle boucle est adaptée à l’écriture de programmes traitant les problèmes suivants :
1 Calculer la valeur absolue d’un nombre donné.
2 Calculer la norme d’un vecteur dans un espace vectoriel de dimension finie (pour une des normes
usuelles).
3 Déterminer tous les diviseurs d’un nombre entier donné.
4 Déterminer le plus petit diviseur (différent de 1) d’un nombre entier donné.
5 Déterminer la date du prochain vendredi 13 connaissant la date d’aujourd’hui.
1 Il n’y a pas besoin de boucle.
2 Une boucle for : le nombre d’itérations sera la dimension de l’espace vectoriel car toutes les normes
usuelles demandent de parcourir les coordonnées du vecteur. Il est d’ailleurs probable qu’on représente
un vecteur sous forme d’une valeur itérable.
3 Une boucle for : tous les diviseurs de n sont compris entre 1 et n. Si on s’y prend bien, on peut obtenir
l’ensemble des diviseurs de n en parcourant un intervalle nettement moins grand, mais même avec cet
algorithme amélioré, la boucle for reste la plus adaptée.
4 Une boucle while : il n’est pas nécessaire de parcourir tous les diviseurs de n, on s’arrête au premier
rencontré, ce que l’on traduit dans la condition de la boucle.
5 En principe, une boucle while : on ne sait pas dans combien de mois aura lieu le prochain vendredi
13 puisque c’est justement ce qu’on cherche. Il est certainement possible de trouver une formule qui
répond directement à la question, mais cela demande un travail préliminaire à l’écriture du programme.
Exercice 4.30 Écrire les programmes proposés dans l’exercice précédent.
4.4.4 Interrompre une boucle
Dans la section précédente, on a vu que selon ce qu’on cherche à programmer, l’une des
deux boucles est plus appropriée que l’autre. Pour certains problèmes, la décision n’est pas
si simple.
Précédent

- 121/402

Suivant