NSI (première) · Chapitre 3 · Application directe du cours
Donner un exemple de boucle while qui ne se termine jamais, et un…
Langages et programmation · Reconnaître les constructions et les langages · niveau 1 (application)
Énoncé
Donner un exemple de boucle while qui ne se termine jamais, et un exemple de boucle while dont on ne peut pas dire à l'avance combien de tours elle fera, mais dont on est certain qu'elle se termine.
Corrigé
def somme_bornee(n):
"""Somme des entiers de 1 a n, par boucle bornee."""
total = 0
for i in range(1, n + 1):
total = total + i
return total
def somme_non_bornee(n):
"""Somme des entiers de 1 a n, par boucle non bornee."""
total = 0
i = 1
while i <= n:
total = total + i
i = i + 1
return total
Vérification.
for n in range(0, 300):
assert somme_bornee(n) == somme_non_bornee(n) == n * (n + 1) // 2
Les cas passent, et coïncident avec la formule .
Laquelle préférer ? La bornée, sans hésiter. Trois raisons, dans l'ordre d'importance :
- elle s'arrête toujours : rien à démontrer ;
- elle ne comporte pas de ligne
i = i + 1à oublier — l'oubli le plus classique, et il produit une boucle infinie ; - elle dit son intention : « pour chaque de à ».
La règle générale : quand le nombre de tours est connu avant d'entrer dans la boucle, on emploie une boucle bornée. La boucle non bornée est réservée aux cas où ce nombre dépend de ce qui se passe pendant l'exécution.
100 % gratuit
Essaie le suivant avec le tuteur
- L'exercice suivant avec le tuteur, sans compte : il guide pas à pas, sans donner la réponse
- 16 autres exercices corrigés dans ce chapitre, et 20 à chercher avec le tuteur
- Le podcast et la vidéo du chapitre et la correction filmée du TD : 2 minutes sans compte
Sans compte : le cours, 2 minutes de podcast et de vidéo et un exercice avec le tuteur. Pour tout le reste : inscription gratuite en 30 secondes, sans carte bancaire.