Les instructions de boucle

** La boucle for

L'instruction for permet d'exécuter plusieurs fois la même instruction ou série d'instructions : c'est une boucle.

La syntaxe est la suivante : for(<Initialisation> ; <Condition> ; <Itération>) <Instruct>.

  • Instruct est l'instruction (ou bloc) dont l'exécution est conditionnée par l'instruction for,

  • Initialisation permet de définir des conditions de début de boucle,

  • Condition est une expression booléenne qui doit être vraie pour la poursuite de la boucle, c'est-à-dire une nouvelle exécution de instruct,

  • Itération réalise un changement d'état de la ou des variables utilisées dans le contrôle de l'itération de boucle.

Exemple

for (j=0; j<10; j++) /*j= variable compteur, j<10 la condition et j++ expression d'évolution de boucle */

{

  printf("%d", j) ; // instruction de la boucle

}

Cette boucle affiche la valeur de j, c'est-à-dire 0,1, 2, 3, 4, 5,6,7,8,9.

Elle commence à j=0, vérifie que j est bien inférieur à 10, exécute l'instruction de boucle puis l'itération (j++) et recommence le test sur la valeur de j, jusqu'à ce que celui-ci soit faux.

Lorsque j=10, la condition (j<10) n'est pas réalisée, la boucle s'interrompt donc et le programme continue sur l'instruction qui suit.

Remarque

Les trois clauses Initialisation, Condition et Itération sont séparément optionnelles.

Les clauses Initialisation et Itération peuvent être composées de plusieurs instructions. Dans ce cas, celles-ci sont séparées par une virgule.

On trouve parfois dans un fichier d'inclusion une définition de ce type : #define FOREVER for(;;).

L'instruction while représente un autre moyen d'exécuter plusieurs fois la même série d'instructions. La syntaxe de cette expression est la suivante :

while (Condition)

{

  liste d'instructions ;

}

Cette instruction exécute la liste d'instructions tant que la condition est réalisée.

Une autre forme est la suivante :

do

  instruction ;

while (Condition)

qui permet au minimum une exécution avant de tester la condition.

ExempleInstruction while

x=1;

while (x<=10) {

  if (x == 7) {

    printf("x=%d, Division par zéro !\n", x);

  }

  else {

    a = 1/(x-7);

    printf("x=%d %f\n",x, a);

    x++;

}