Sigma

Exercices / 1re / Algorithmique

Mathématiques · 1re · Algorithmique

Algorithmique — boucles et recherche de seuil

Deux exercices type : lire et faire tourner un algorithme (boucle « pour »), puis écrire un algorithme de seuil (boucle « tant que »).

2 exercices corrigés

Exercice 1 — Lire et faire tourner un algorithme

Faire tourner un algorithme = suivre ses instructions pas à pas en notant l'évolution des variables (un tableau d'exécution évite les erreurs). On considère : u←5u\leftarrow5 ; Pour ii de 11 à 33 : u←2u+1u\leftarrow2u+1 ; Renvoyer uu.
  1. Faire tourner l'algorithme en donnant la valeur de uu après chaque passage dans la boucle.
  2. Écrire un algorithme qui calcule et renvoie la somme S=1+2+⋯+nS=1+2+\cdots+n pour un entier nn donné.
Voir la correction

1. On note uu après chaque tour. Départ : u=5u=5. 1er tour : u=2×5+1=11u=2\times5+1=11. 2e : u=2×11+1=23u=2\times11+1=23. 3e : u=2×23+1=47u=2\times23+1=47. L'algorithme renvoie u=47u=47.

2. On accumule dans une variable SS initialisée à 00, puis on ajoute chaque entier : S←0S\leftarrow0 ; Pour kk de 11 à nn : S←S+kS\leftarrow S+k ; Renvoyer SS.

Le réflexe à retenir

Pour faire tourner, tiens un petit tableau des variables tour par tour : c'est infaillible. Pour sommer/compter, le patron est toujours : une variable accumulateur initialisée à 00 (ou 11 pour un produit), qu'on met à jour dans la boucle.

Exercice 2 — Recherche d'un seuil

Une boucle « tant que » répète tant qu'une condition est vraie : idéale quand on ne connaît pas d'avance le nombre d'étapes (problème de seuil).
  1. On pose u0=1u_0=1 et un+1=2unu_{n+1}=2u_n. Écrire un algorithme déterminant le plus petit entier nn tel que un>1000u_n>1000.
  2. Quelle valeur de nn l'algorithme renvoie-t-il ?
Voir la correction

1. On avance dans la suite tant qu'on n'a pas dépassé 10001000, en comptant les étapes : u←1u\leftarrow1 ; n←0n\leftarrow0 ; Tant que u⩽1000u\leqslant1000 : u←2uu\leftarrow2u ; n←n+1n\leftarrow n+1 ; Renvoyer nn.

2. Ici un=2nu_n=2^n. On cherche la première puissance de 22 qui dépasse 10001000 : 29=512⩽10002^9=512\leqslant1000 mais 210=1024>10002^{10}=1024>1000. L'algorithme renvoie donc n=10n=10.

Le réflexe à retenir

Seuil ⇒ boucle « tant que » : on répète tant que la condition n'est pas atteinte, en incrémentant un compteur nn. À la sortie, nn est le premier rang qui franchit le seuil.