Les itératives: variante 1 (do ... while)
printf("Tapez un nombre compris entre 1 et 5");
scanf("%d", &nombre);
while (nombre < 1 || nombre > 5)
       
{printf("Un nombre compris entre 1 et 5");
          scanf("%d", &nombre);}

Le problème de cette version est que l'on est obligé de répéter le scanf ce qui semble redondant
nombre = 6;
while (nombre < 1 || nombre > 5)
       
{printf("Un nombre compris entre 1 et 5");
          scanf("%d", &nombre);}

Cette version résout le problème du scanf redondant mais force l'entrée dans la boucle par une initialisation  totalement artificielle de nombre
    1) Il faut scanf au moins une fois le nombre à l'utilisateur.
    2) Le condition de l'itérative porte justement sur une variable qui est initialisée dans le corps de l'itérative.


==> L'itérative do ... while (faire ... tant que). Pour cette itérative la condition est à la fin de l'itérative donc le corps de l'itérative est exécuté au moins une fois.

Reprenons notre exemple: 

do
    {
     instruction1;

      ...
     instructionx;
      }

while (expressionBool);
/* fin du do ... while */

do
   
{printf("Un nombre compris entre 1 et 5");
     scanf("%d", &nombre);}

while (nombre < 1 || nombre > 5);
/* fin du do ... while *

Dans cette version, il n'y a pas redondance, il n'y a pas d'initialisation artificielle. Le do ... while est  parfaitement adapté à ce genre de problème.
suivant         plan