Accueil > Langage C > Langage C – Les boucles

Langage C – Les boucles

This entry is part 8 of 10 in the series Langage C - Tutoriel
  1. La boucle while
  2. La boucle do…while
  3. La boucle for
  4. Imbrication
  5. break et continue

Les boucles (ou structures repetitives) permettent de repeter des instructions que l’on veut executer plusieurs fois.
Il existe 3 sortes de boucles en langages C.

La boucle while

La boucle while est composée de deux choses :

  • d’une instruction ou d’un bloc d’instruction.
  • une condition

while peut être traduit par tant que. Les instructions seront donc executées tant que
la condition sera analysée comme vrai (c’est à dire valant 1).
Voici la syntaxe de while :

while(condition)instruction;

while(condition){
instruction1;
instruction2;
instruction3;
}

Voici un exemple de code, qui permet d’afficher la table de 7 :

#include <stdio.h>

int main(){
int i=0;

printf("Apprenons la table de 7\n\n");

while(i < 10){/* TANT QUE i < 10     */
i++;/* repeter les instructions */
printf("%d x 7 = %d\n", i, i * 7);/* suivantes    */
}

return 0;
}

La boucle do...while

do...while est une variante de while.
Dans une structure en while, la condition est testé en entrant dans la boucle. Dans l'exemple
précedent, si on avait affecté une valeur supérieur à 10 à i avant while,
la boucle n'aurait pas été executée.
Pour preuve :

#include <stdio.h>

int main(){
int i=20;/* 20 > 10  (!) */

printf("Apprenons la table de 7\n\n");

while(i < 10){/* i > 10 -> la boucle n'est pas executée */
i++;
printf("%d x 7 = %d\n", i, i * 7);
}

return 0;
}

Avec une boucle do...while, la condition est testée à la sortie de la boucle. Les instructions
seront donc obligatoirement executées au moins une fois, quoi qu'il arrive.
Voici la syntaxe de la boucle do...while :

do{
instruction1;
instruction2;
instruction3;
}while(condition);

Voici un exemple :

#include <stdio.h>

int main(){
int age=32;

do{
printf("Quel est votre age ? ");
scanf("%d", &age);
}while(age < 18);

return 0;
}

Dans ce programme, une instruction nouvelle intervient : scanf. Comme pour printf, l'utilisation
de scanf est assez complexe. Nous l'etudierons donc plus tard.
Pour l'instant, gardez juste à l'esprit que cette instruction permet à l'utilisateur d'affecter une valeur
à la variable age dans notre cas.
Dans notre code, l'utilisation de la boucle do...while permet de demender l'age de l'utilisateur
jusqu'a ce que celui ci soit supérieur à 18. On voit également que bien que nous ayons initalisé
la variable age avec une valeur supérieur à 32, les instructions sont bien executées
au moins une fois.

La boucle for

Dans le premier exemple, avec la boucle while, nous incrementions la variable i à
chaque iteration (execution) de la boucle. La boucle for permet de simplifier tout ce code.
En effet, for est une boucle disposant d'un compteur, c'est à dire qu'a chaque iteration de la boucle,
for va incrementer (ou décrementer, c'est selon) la variable, mais aussi tester une condtion. Si cette
condition est vrai, alors les instructions sont executées. Sinon, on sort de la boucle.
Voici la syntaxe de cette boucle :

for([initialisation], [condition], [incrementation]){
instruction1;
instruction2;
instruction3;
}

for([initialisation], [condition], [incrementation])
instruction1;

initialisation, condition et incrementation peuvent tous être optionels.
À la toute première iteration de la boucle, initialisation est executé. Ce peut être une instruction
du genre i=0.
Ensuite, à la fin de chaque iteration, incrementation est executé. On utilise en general des instructions
comme i++ ou i--.
Voici un exemple, permettant d'afficher la table de 7 :

#include <stdio.h>

int main(){
int i=0;

for(i=0; i < 10; i++)
printf("%d x 7 = %d\n", i, i * 7);

return 0;
}

Imbrication

On designe par imbrication le fait d'utiliser une ou plusieurs boucles les unes dans les autres. Cette opération
est tout à fait possible et dans certains cas, très interessante, comme le montre l'exemple suivant :

#include <stdio.h>

int main(){
int i,j;

/* On calcule toute les tables de 0 à 9 */

for(i=0; i < 10; i++){
for(j=0; j < 10; j++){
printf("%d x %d = %d\n", i, j, i * j);
}
}

return 0;
}

break et continue

Dans certains cas, on peut souhaiter que pour une raison X, l'execution d'une boucle soit stoppée avant
sa fin.
On utilise pour cela break, le même que pour sortir d'une structure en switch.
Par exemple, pour quitter la boucle precedente lorsque la variable i vaut 5, on aurait
écrit :

#include <stdio.h>

int main(){
int i=0;

for(i=0; i < 10; i++){
if(i==5)break;/* Si i==5, alors on quitte */
printf("%d x 7 = %d\n", i, i * 7);
}

return 0;
}

continue et similaire à break, à la difference que continue ne quitte pas
la boucle mais termine l'iteration de celle-ci.
Donc, dans notre exemple, remplacer break par continue reviendrai à ne pas executer
les instructions de la boucle lorsque la variable i est égale à 5 :

#include <stdio.h>

int main(){
int i=0;

for(i=0; i < 10; i++){
if(i==5)continue;/* Si i==5, alors on termine l'iteration */
printf("%d x 7 = %d\n", i, i * 7);
}

return 0;
}
Series Navigation«Langage C – Les casLangage C – Fonctions»
Categories: Langage C Tags:
  1. Pas encore de commentaire
  1. Pas encore de trackbacks