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.
<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) ;