Adloun

Suivre une boucle while pas à pas

Exercice d'entraînement · niveau 2 · mathématiques (ECT 1re année), chapitre 13 — Informatique et algorithmique · Lire, corriger et écrire un script

Énoncé

Qu'affiche ce script ? Détailler les valeurs successives de u et de n.

u = 3
n = 0
while u < 50:
    u = 2*u + 1
    n = n + 1
print(n, u)

Corrigé

Le mécanisme. Une boucle while teste sa condition avant chaque tour. Tant que u est strictement inférieur à , on remplace u par 2*u + 1 et on ajoute au compteur n.

Les tours, un par un.

avant le tourtest u &lt; 50u aprèsn après
vrai
vrai
vrai
vrai
faux——

L'affichage. Au cinquième test, est faux : la boucle s'arrête sans rien modifier. Le script affiche donc

4 63

Le point délicat. La valeur finale de u est , et non : la boucle ne s'arrête pas « juste avant » de dépasser le seuil, elle exécute un tour de trop du point de vue du seuil. Le dernier u calculé est le premier qui dépasse — c'est précisément ce qu'on cherche quand on programme un rang d'arrêt.

Pourquoi la boucle se termine. À chaque tour u est remplacé par dès que : la suite croît strictement, elle finira donc par dépasser . C'est la question à se poser avant tout while : qu'est-ce qui fait progresser vers l'arrêt ?

Les autres exercices de ce chapitre Le cours du chapitre

Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.