Cours 6.1. La boucle do..while en C

Il est possible de répéter automatiquement des blocs d'instructions jusqu'à ce qu'une condition soit vraie. Cette répétition est faite à l'aide d'une boucle (loop en anglais). En C, il existe 3 boucles :

Dans ce chapitre, nous allons étudier chacune de ces boucles en commençant par le do..while.

Syntaxe

La boucle do..while répète une séquence d'instructions tant que la condition est vraie :

do {
    // ...
    Bloc d'instructions
    // ...
}
while (test);

Voici l'organigramme correspondant à la boucle do..while :

Organigramme de la boucle do..while en C

Le bloc d'instructions est aussi appelé le corps de la boucle. C'est la partie entre les accolades. Une exécution de la boucle est appelée une itération.

Avec la boucle do..while, le corps de la boucle est néssairement exécuté une fois, même si le test est faux dès la première itération.

Exemple

Voici un exemple de boucle do..while qui demande à l'utilisateur de saisir un nombre tant que ce dernier n'est pas strictement négatif.

int n;
do {
  // Corps de la boucle : demande la saisie d'un nombre
  printf ("Entrez un nombre négatif : ");
  scanf ("%d", &n);
}
while (n>0);
printf ("Vous avez saisi %d.\n", n);

La boucle sera répétée tant que n sera positif ou nul.

Exercice

Exercice 1

Écrire un programme qui demande à l'utilisateur de saisir une note tant que la note n'est pas comprise entre 0 et 20.

  float note;

  // Saisie de la note entre 0 et 20
  // COMPLETEZ ICI

  // Affichage de la note
  printf ("La note est %.1f.\n", note);

Voici la sortie attendue :

Entrez la note entre 0 et 20 : -5
Entrez la note entre 0 et 20 : 22
Entrez la note entre 0 et 20 : 16.4
La note est 16.4.

Exercice 2

Écrire un programme avec une boucle do..while qui compte de 3 à 22 selon le modèle suivant :

3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 

Exercice 3

Avec une boucle do..while, affichez la suite suivante :

$$ U_{n+1} = U_{n} * 2 $$

avec \( U_0 = 1 \)

Affichez la suite jusqu'à ce que \(U_n\) soit inférieur ou égal à 1024 selon le modèle suivant :

1 2 4 8 16 32 64 128 256 512 1024

Quiz

Pour l'analyse des programmes ci-dessous, il est préférable de disposer d'un papier et d'un crayon.

En programmation, à quoi peut servir une boucle ?

Vérifier Bravo ! Sur les systèmes embarqués il est fréquent de bloquer un programme ( while(1); ) ou d'attendre un événement extérieur avec une boucle. Essaie encore ...

Quelles sont les boucles en C ?

Vérifier Bravo ! En C, toutes les boucles s'exécutent tant que la condition est vraie. Essaie encore ...

Qu'affiche le code suivant ?

int x=7;
do {
    printf ("%d ", ++x);
} while (x<10);
Vérifier Bravo ! La pré-incrémentation se fait avant l'affichage et dans la dernière itération, x vaut 9 avant incrément. Essaie encore ...

Qu'affiche le code suivant ?

int x=7;
do {
    printf ("%d ", x--);
} while (x>=5);
Vérifier Bravo ! La post-incrémentation se fait après l'affichage et dans la dernière itération, x vaut 5 avant le printf. Essaie encore ...

Qu'affiche le code suivant ?

int x=2;
do{ 
    x=x+1; 
} while (x<=10);
printf ("%d", x);
Vérifier Bravo ! Tant que x est inférieur ou égale à 10, on continue. Donc on sort de la boucle à 11. Essaie encore ...

Que doit saisir l'utilisateur pour sortir de la boucle ?

int x;
do{ 
    scanf ("%d", &x);
} while (x<0 || x>100);
Vérifier Bravo ! Tant que x est strictement inférieur à 0 ou strictement supérieur à 100, on continue la boucle. Essaie encore ...

Que doit saisir l'utilisateur pour sortir de la boucle ?

int x;
do{ 
    scanf ("%d", &x);
} while (x<0 && x>100);
Vérifier Bravo ! Il n'existe pas de nombre qui soit à la fois plus petit que zéro et plus grand que 100. Donc le test sera toujours faux. Essaie encore ...

Voir aussi


Dernière mise à jour : 22/11/2022