Étape 1
Analyse du fonctionnement de la boucle `while` : La variable $i$ prend successivement toutes les valeurs entières de $1$ à $10$ inclus. La boucle s'exécute donc exactement $10$ fois.
Étape 2
Analyse de la condition `if i % 3 == 0` : L'expression `i % 3 == 0` signifie que $i$ est un multiple de $3$. Dans l'ensemble des entiers de $1$ à $10$, les multiples de $3$ sont $3$, $6$ et $9$, soit $3$ valeurs au total.
Étape 3
Calcul de la valeur finale de $s$ en fonction de $v$ :– Pour les $3$ itérations où $i$ est un multiple de $3$, le bloc `if` est exécuté et ajoute $2v$ à $s$, soit un ajout total de $$3 \times 2v = 6v$$– Pour les $7$ autres itérations ($i \in \{1, 2, 4, 5, 7, 8, 10\}$), le bloc `else` est exécuté et ajoute $v - 4$ à $s$, soit un ajout total de $$7 \times (v - 4) = 7v - 28$$En additionnant ces contributions, la valeur finale de la variable $s$ s'exprime par $$s = 6v + (7v - 28) = 13v - 28$$
Étape 4
Résolution de l'équation : On sait qu'à la fin de l'exécution, $s = 206$. On pose donc l'équation $$13v - 28 = 206$$Ce qui équivaut à $$13v = 206 + 28 = 234$$D'où $$v = \frac{234}{13} = 18$$
Étape 5
La valeur initiale de la variable $v$ était donc $18$.
Méthode clé
Pour retrouver une valeur initiale à partir du résultat d'un algorithme, il faut déterminer le nombre exact d'exécutions de chaque branche conditionnelle afin d'exprimer le résultat sous forme d'une équation du premier degré.
Piège à éviter
Confondre le nombre total d'itérations de la boucle `while i <= 10` (qui s'exécute $10$ fois, de $i=1$ à $i=10$) ou mal dénombrer les multiples de $3$ entre $1$ et $10$.