Bo

Boucles en C++

12 exercices

À propos de Boucles

Les boucles servent à exécuter plusieurs fois une même logique. Les deux types les plus courants sont la while loop (boucle indéfinie) et la for loop (boucle définie, ou comptée). Il existe aussi la boucle for each, que l'on verra dans un concept ultérieur.

Syntaxe générale

La for loop se compose d'un en-tête et d'un bloc de code, qui contient le corps de la boucle entre accolades. L'en-tête se compose de 3 éléments séparés par des points-virgules ; : init-statement, condition, et une autre expression. Chacun d'eux peut être vide.

for (init-statement; condition; expression) {
  some_statement;
}
  • L'élément init est du code qui ne s'exécute qu'une seule fois, avant le démarrage de la boucle.
  • L'élément condition doit être une expression qui s'évalue en un booléen et qui détermine quand la boucle doit s'arrêter. Le code à l'intérieur de la boucle s'exécute tant que cette condition est vraie. Dès que cette expression devient fausse, la boucle ne fait plus aucune itération.
  • L'élément expression est du code qui s'exécute à la fin de chaque itération.

La while loop exécute son corps tant que sa condition est vraie. L'extrait de code ci-dessous montre comment transformer une boucle for en boucle while.

init-statement;
while(condition) {
    some_statement;
    expression;
}

Intermède : incréments et décréments

Quand on travaille avec des boucles, il faut souvent ajouter 1 ou retrancher 1 à une variable compteur. C'est tellement courant que l'opération dispose d'opérateurs dédiés : ++ et --.

Ils existent sous une forme préfixée et une forme postfixée. La forme préfixée modifie la variable avant son utilisation dans l'instruction, et la forme postfixée le fait après. La plupart du temps, tu voudras sans doute la version préfixée.

int a{3};
int b{--a};
// b is 2, a is now 2
int c{a++};
// c is 2, a is now 3

Les boucles for - un exemple

L'élément init initialise en général une variable compteur, la condition vérifie si la boucle doit continuer ou s'arrêter, et l'élément post incrémente généralement le compteur à la fin de chaque répétition.

int sum{0};
for (int i{1}; i < 10; ++i) {
  sum += i;
}

Cette boucle additionne les nombres de 1 à 9 (9 compris).

break et continue

À l'intérieur du corps d'une boucle, tu peux utiliser le mot-clé break pour arrêter complètement l'exécution de la boucle :

int sum{2};
while(true) {
    sum *= 2;
    if (sum > 1000)
        break;
}
// sum is now 1024

À l'inverse, le mot-clé continue arrête seulement l'exécution de l'itération en cours et passe à la suivante :

int equal_sum{0};
for (int i{1}; i < 7; ++i) {
  if  (n%2 == 1) {
    continue;
  }
  equal_sum += i;
}
// equal_sum is now 12

Remarque : il est généralement plus facile de comprendre la logique de la boucle quand l'usage de break et continue est réduit au minimum, voire complètement évité.

Modifie via GitHub Le lien s'ouvre dans une nouvelle fenêtre ou un nouvel onglet

Apprends Boucles

L'entraînement est verrouillé

Déverrouille 4 exercices de plus pour t'entraîner sur Boucles