Étape 1
Pour déterminer la valeur finale de la variable $p$, suivons l'évolution des variables $a$, $b$ et $p$ étape par étape.
Étape 2
Avant le début de la boucle, les variables sont initialisées ainsi : $a = 13$, $b = 11$ et $p = 0$.
Étape 3
Étape 1 : $a = 13$, la condition $a > 0$ est vérifiée.
- Comme $13 \% 2 = 1$ ($13$ est impair), la condition du bloc conditionnel est vraie. On calcule : $$p = 0 + 11 = 11$$
- On effectue ensuite la division entière de $a$ par $2$ : $a = 13 // 2 = 6$.
- On double la valeur de $b$ : $b = 11 \times 2 = 22$.
Étape 4
Étape 2 : $a = 6$, la condition $a > 0$ est vérifiée.
- Comme $6 \% 2 = 0$ ($6$ est pair), la condition est fausse. La valeur de $p$ ne change pas ($p = 11$).
- On effectue la division entière de $a$ par $2$ : $a = 6 // 2 = 3$.
- On double la valeur de $b$ : $b = 22 \times 2 = 44$.
Étape 5
Étape 3 : $a = 3$, la condition $a > 0$ est vérifiée.
- Comme $3 \% 2 = 1$ ($3$ est impair), la condition est vraie. On calcule : $$p = 11 + 44 = 55$$
- On effectue la division entière de $a$ par $2$ : $a = 3 // 2 = 1$.
- On double la valeur de $b$ : $b = 44 \times 2 = 88$.
Étape 6
Étape 4 : $a = 1$, la condition $a > 0$ est vérifiée.
- Comme $1 \% 2 = 1$ ($1$ est impair), la condition est vraie. On calcule : $$p = 55 + 88 = 143$$
- On effectue la division entière de $a$ par $2$ : $a = 1 // 2 = 0$.
- On double la valeur de $b$ : $b = 88 \times 2 = 176$.
Étape 7
Étape 5 : $a = 0$, la condition $a > 0$ devient fausse. La boucle `while` prend fin.
Étape 8
À la fin de l'exécution du programme, la variable $p$ contient la valeur $143$ (qui correspond au produit $13 \times 11$ calculé selon l'algorithme de multiplication égyptienne).
Méthode clé
Construire un tableau de suivi des variables pas à pas en respectant scrupuleusement l'ordre des instructions à chaque itération de la boucle.
Piège à éviter
Mettre à jour la variable p avec la valeur de b après sa multiplication par 2, alors que p doit recevoir l'ancienne valeur de b.