Adloun

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

Faire l'exercice suivant avec le tuteur

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.

Le cours du chapitre · Tous les exercices du chapitre

Exercice suivant avec le tuteur →