Previous Next Up Index Contents

6.3. for

La structure for en Pascal et la structure pour en langage algorithmique sont utilisées pour faciliter la programmation de boucles de comptage. La structure for en C est plus générale et beaucoup plus puissante.

La structure for en C

   for ( <expr1> ; <expr2> ; <expr3> )
         <bloc d'instructions>
est équivalent à :
   <expr1>;
   while ( <expr2> )
      {
       <bloc d'instructions>
       <expr3>;
      }
<expr1> est évaluée une fois avant le passage de la boucle.
Elle est utilisée pour initialiser les données de la boucle.

<expr2> est évaluée avant chaque passage de la boucle.
Elle est utilisée pour décider si la boucle est répétée ou non.

<expr3> est évaluée à la fin de chaque passage de la boucle.
Elle est utilisée pour réinitialiser les données de la boucle.

Le plus souvent, for est utilisé comme boucle de comptage :

  for ( <init.> ; <cond. répétition> ; <compteur> )
       <bloc d'instructions>

Exemple

int I;
for (I=0 ; I<=20 ; I++)
     printf("Le carré de %d est %d \n", I, I*I);

En pratique, les parties <expr1> et <expr2> contiennent souvent plusieurs initialisations ou réinitialisations, séparées par des virgules.

Exemple

int n, tot;
for (tot=0, n=1 ; n<101 ; n++)
      tot+=n;
printf("La somme des nombres de 1 à 100 est %d\n", tot);

Exemple

Cet exemple nous présente différentes variations pour réaliser le même traitement et nous montre la puissance de la structure for. Les expressions suivantes lisent un caractère au clavier et affichent son code numérique en notation binaire :

/* a */
/* notation utilisant la structure while */
int C, I;
C=getchar();
I=128;
while (I>=1) 
      {
       printf("%i ", C/I);
       C%=I;
       I/=2;
      }

/* b */
/* notation utilisant for  - très lisible - */
/* préférée par les débutants en C          */
int C, I;
C=getchar();
for (I=128 ; I>=1 ; I/=2) 
      {
       printf("%i ", C/I);
       C%=I;
      }
/* c */
/* notation utilisant for  - plus compacte - */
/* préférée par les experts en C             */
int C, I;
C=getchar();
for (I=128 ; I>=1 ; C%=I, I/=2) 
       printf("%i ", C/I);
/* d */
/* notation utilisant for  - à déconseiller -  */
/* surcharge et mauvais emploi de la structure */
int C, I;
for(C=getchar(),I=128; I>=1 ;printf("%i ",C/I),C%=i,i/=2)
      ;


Previous Next Up Index Contents

Feedback - Copyright © 1993,1996,1997 F.Faber