Programmation en C :

8. Les boucles (structures de contrôle)

codecommentaire
/* prog8a.c */
#include <stdio.h>
int i, j, n, p;
char k;
 
main() {
  printf("entier ? "); scanf("%d",&n);
  p=0;
  for (i=1;i<=n;i++) p=p+i;
  printf("somme de 1 à %d=%d\n",n,p);

  printf("alphabet : ");
  for (k='A';k<='Z';k++) printf("%c ",k);
  printf("\n");

  printf("table d'addition :\n");
  for (i=1;i<10;i++) {
    for (j=1;j<10;j++) {
      p=i*j;
    if (p<10) printf(" ");
      printf("%d ",p);
    }
    printf("\n");
  }
}
Boucle déterminée :
Algorithmique :
Pour i de valeur_initiale à valeur_finale faire :
action.

En C :
for (initialisation; condition_d'arrêt; instruction_d'étape) ...
Cette forme est plus puissante qu'une boucle déterminée classique car ses trois paramètres peuvent prendre une forme plus variée.
/* prog8b.c */
#include <stdio.h>
int i, n, p;
 
main() {
  printf("entier non nul ? ");
  scanf("%d",&n);
  i=0; p=n;
  while (p%2==0) {
    i++; p=p/2;
  }
  printf("%d divisions par 2: %d->%d\n",i,n,p);
}
Boucle pré-contrôlée :
Tantque p est pair faire :
diviser p par 2 et incrémenter i.

N.B. Le programme boucle indéfiniment si l'utilisateur entre le nombre 0.
/* prog8c.c */
#include <stdio.h>
int n;
 
main() {
  do {
    printf("entier positif ? ");
    scanf("%d",&n);
  } while (n<0);
}
Boucle post-contrôlée :
Algorithmique :
Répéter :
Lire un entier n;
jusqu'à n≥0.

En C :
Faire :
Lire un entier n;
tantque n<0.
La condition d'arrêt est remplacée par une condition de poursuite.

Remarque. Que se passe-t-il si l'utilisateur saisit 9.36 ? ou -12-8 ? Pourquoi ?