En C, il existe plusieurs types de boucles :

La boucle for :

for (initialisation ; condition d'arrêt ; incrémentation) { ... }

En général, on utilise une boucle for quand on sait a l'avance le nombre de boucles à effectuer.

Ce qui est entre les parenthèses est découpé en 3 parties séparées par des ; (point virgule). Tout d'abord, on a la partie appelée initialisation. on initialise donc les variables dont on aura besoin dans la boucle (par exemple : un compteur) . Ensuite : la condition d'arrêt, c'est un test (les différents opérateurs de comparaison sont : <, >, <= (inférieur ou égal), >=, == (égal) et != (différent)), tant que ce condition sera vraie, on continuera a faire les instructions qui sont dans la boucle (ce qui est entre les accolades) et appelées corps de boucle. Et enfin : la partie incrémentation, cette partie est traitée après que le corps de boucle soit termine et avant de tester la condition d'arrêt, elle est appelée incrémentation, car c'est généralement là que l'on incrémente les variables utilisées dans le corps de boucle. Tout est donc traité dans cet ordre :

Un ch'tit exemple :

#include &lt;stdio.h&gt; /* directives au preprocesseur */ #define TAILLE 8 /* Definit une constante */ void main() { int i, j; /* Variable simple */ int t[TAILLE]; /* Variable tableau */ j = 0; printf ("Entrez moi %d entiers", TAILLE); /* Demande d'entree d'autant d'elements qu'il y a de place dans le tableau */ /* Une boucle pour entrer tous les elements du tableau */ for (i = 0 ; i < TAILLE ; i = i + 1 ) { scanf("%d",&t[i]); /* On met la valeur entree par l'utilisateur dans la case correspondante de t */ j = j + t[i] ; /* fait la somme des entiers entres par l'utilisateur */ } printf ("Les entiers entres sont :\n"); for (i = 0 ; i < taille ; i = i + 1 ) { printf("%d ",t[i]) /* On affiche sur une seule ligne tout les nombres */ } printf ("la somme de tous ces nombres est : %d\n", j); }

Tout d'abord : #define. C'est une directive du préprocesseur qui remplace toutes les occurrences du premier terme à la suite (ici TAILLE) par ce qu'il reste sur la ligne (ici le 8 et le commentaire). Cela permet de définir des constantes.

Puis le for (i = 0 ; i < TAILLE ; i = i + 1 ) { ... }. ici, l'initialisation est : i = 0. La condition d'arrêt est : i < TAILLE. La partie incrémentation est : i = i + 1.

Il est possible de ne pas spécifier la taille des tableaux, spécialement quand il s'agit de chaînes de caractères, si on donne le tableau à mettre directement. par exemple char c[] = "Message". Le compilateur est capable d'évaluer la taille de la chaîne et de dimensionner le tableau en conséquences

Exercices :

Ecrire un programme qui crée un tableau de 10 entiers, demande à l'utilisateur d'entrer les nombres, puis fait la moyenne et l'affiche. solution

La boucle while

while (condition d'arrêt) { ... }

On utilise la boucle while quand on ne sait pas combien d'itérations seront nécessaires.

La boucle while est plus simple a utiliser. Au début, elle commence par tester la condition, si elle est vraie, on exécute le corps de boucle, puis on reteste la condition... si la condition est fausse, on passe a la suite :

par exemple :

#include &lt;stdio.h&gt; /* directives au preprocesseur */ #include &lt;math.h&gt; /* pour avoir acces a des fonctions mathematiques */ void main () { int i; double j; printf("Entrez moi un entier : "); scanf("%d",&i); j=sqrt(i); /* sqrt == square root == racine carree */ while (i >= j) { printf("%f",i); i = i - 1 ; } }

Ce programme demande un nombre à l'utilisateur et affiche tous les nombres entiers entre ce nombre et sa racine carrée.

La boucle do ... while

do { ... } while (condition d'arrêt);

On utilise la boucle do ... while quand on ne sait pas combien d'itérations seront nécessaires, et quand on veux que le corps de boucle soit exécute au moins une fois.

Cette boucle se comporte ainsi :

Exercice :

Affichage d'un triangle

Ecrire un programme qui lit un entier n entré par l'utilisateur et affiche un triangle isocèle de base 2n-1 et de hauteur n. Par exemple, pour n=4 :

*

**

***

****

***

**

*

Comment permettre à l'utilisateur de choisir le symbole utilisé ?

solution



Dernière révision :
Date de Création : 18 mars 1998
Copyright ©
Mathieu ARNOLD 1998