Étape 1
Pour déterminer la valeur renvoyée par la fonction, suivons pas à pas l'évolution des variables $u$ et $S$ à chaque itération de la boucle `for k in range(4)`.
Étape 2
Avant l'entrée dans la boucle, les variables sont initialisées ainsi : $$u = 3 \quad \text{et} \quad S = 0$$
Étape 3
La commande `range(4)` produit la séquence d'entiers $0, 1, 2, 3$. La boucle s'exécute donc 4 fois :
Étape 4
Itération 1 ($k = 0$) :
• $S \leftarrow S + u = 0 + 3 = 3$
• $u \leftarrow 2 \times u - 1 = 2 \times 3 - 1 = 5$
Étape 5
Itération 2 ($k = 1$) :
• $S \leftarrow S + u = 3 + 5 = 8$
• $u \leftarrow 2 \times u - 1 = 2 \times 5 - 1 = 9$
Étape 6
Itération 3 ($k = 2$) :
• $S \leftarrow S + u = 8 + 9 = 17$
• $u \leftarrow 2 \times u - 1 = 2 \times 9 - 1 = 17$
Étape 7
Itération 4 ($k = 3$) :
• $S \leftarrow S + u = 17 + 17 = 34$
• $u \leftarrow 2 \times u - 1 = 2 \times 17 - 1 = 33$
Étape 8
La boucle s'arrête après $k = 3$. L'instruction `return S` renvoie la valeur contenue dans la variable $S$, soit $34$.
Méthode clé
Pour dérouler un algorithme à la main, tracez un tableau des variables et mettez-les à jour ligne par ligne dans l'ordre exact d'exécution des instructions.
Piège à éviter
Attention à l'ordre des instructions dans la boucle : la variable S est augmentée de la valeur actuelle de u avant que u ne soit modifiée.