La boucle "for" permet d'exécuter un certain nombre de fois déterminé une série d'instructions.
for(expr1 ; expr2; expr3)
{
//instruction 1
// instruction 2
// ....
// instruction n
}
Les accolades ne sont pas obligatoires quand il n'y a qu'une seule instruction.
//ce programme additionne les 10 premiers nombres
#include <stdio.h>
void main()
{
//variable qui contiendra le résultat de l'addition
int resultat;
int i;
//on parcourt la boucle de 1 à 10.
//Ici i++ est identique i = i + 1
for(i=1; i<=10; i++)
resultat = resultat + i;
printf("Résultat = %d\n",resultat);
}
La boucle est parcourue tant que la condition est vérifiée. Il existe deux variantes, la première vérifie la condition avant d'entrer dans la boucle. La deuxième, vérifie la condition après avoir parcouru au moins une fois la boucle.
while(condition)
{
//instruction 1
// instruction 2
// ....
// instruction n
}
do
{
//instruction 1
// instruction 2
// ....
// instruction n
}while(condition)
//ce programme additionne les 10 premiers nombres
#include <stdio.h>
void main()
{
//variable qui contiendra le résultat de l'addition
int resultat;
int i;
i = 1;
resultat = 0;
while(i<=10)
{
resultat = resultat + i;
i++;
}
printf("Résultat = %d\n",resultat);
}
//ce programme additionne les 10 premiers nombres
#include <stdio.h>
void main()
{
//variable qui contiendra le résultat de l'addition
int resultat;
int i;
i = 1;
resultat=0;
do
{
resultat = resultat + i;
i++;
}while(i<=10)
printf("Résultat = %d\n",resultat);
}
Cette instruction permet un branchement conditionnel. Il existe trois variantes.
Le programme exécute les lignes d'instructions se trouvant entre les accolades si la condition se trouvant après l'instruction if est vérifiée.
if (condition)
{
//lignes d'instructions
}
Dans cette variante, si la condition n'est pas vérifiée dans la boucle de condition if, alors le programme exécute les instructions se trouvant après l'instruction else.
if (condition)
{
//lignes d'instructions
}
else
{
//lignes d'instructions
}
Le programme exécute soit le premier, soit le deuxième bloc, sinon il exécute les instructions se trouvant après l'instruction else. Cette troisième variante, peut être remplacer par l'instruction switch (voir plus bas).
if (condition 1)
{
//lignes d'instructions
}
else if(condition 2)
{
//lignes d'instructions
}
else
{
//lignes d'instructions
}
Dans ce programme, nous allons demander à l'utilisateur un nombre puis nous affichons si le nombre est négatif, positif ou nul.
#include <stdio.h>
void main()
{
int nombre;
printf("Entrez un nombre : ");
scanf("%d",&nombre);
if(nombre < 0)
printf("Ce nombre est négatif\n");
else if(nombre==0)
printf("Ce nombre est nul\n");
else
printf("ce nombre est positif\n");
}
L'instruction "switch" est plus facile à utiliser dans le cas de condition complexe. En effet, avec l'instruction "if", on peut avoir des instructions imbriquées qui peuvent être difficiles à gérer. L'instruction "switch" sera donc plus adaptée dans ces cas là.
switch(expression)
{
case expr_1 :
//instruction
break;
case expr_2 :
//instruction
break;
case expr_n :
//instruction
break;
default :
//instruction
}
L'expression conditionnelle (expression) est évaluée en premier. Si elle est égale à expr_1, alors les instructions correspondantes sont exécutées. Sinon on vérifie si elle est égale à expr_2 ou expr_3 ... Si aucune ne convient, alors on exécute les instructions de la case par défaut (default).
Attention, comme on peut le constater, chaque cas se termine par l'instruction break. Si cette instruction n'est pas mise, le programme exécutera les instructions suivantes jusqu'à trouver l'instruction break. Par exemple si l'instruction n'existe pas dans expr_1 et que l'expression est égale à expr_1, le programme exécute les instruction de expr_1 mais aussi de expr_2.
Dans ce programme, nous demandons à l'utilisateur un chiffre correspondant à un mois, puis nous affichons le mois correspondant.
#include <stdio.h>
void main()
{
int mois;
printf("Entrez un mois en chiffre (1 à 12) : ");
scanf("%d",&mois);
switch(mois)
{
case "1" : printf("Janvier"); break;
case "2" : printf("février"); break;
case "3" : printf("mars"); break;
case "4" : printf("avril"); break;
case "5" : printf("mai"); break;
case "6" : printf("juin"); break;
case "7" : printf("juillet"); break;
case "8" : printf("aout"); break;
case "9" : printf("septembre"); break;
case "10" : printf("octobre"); break;
case "11" : printf("novembre"); break;
case "12" : printf("décembre"); break;
default : printf("Ce n'est pas un mois");
}
}
Il existe deux commandes qui permettent de sortir de sortir d'une boucle lorsqu'une certaine condition est satisfaite.
break : permet de sortir directement d'une bouclecontinue : permet de passer directement à l'itération suivante
#include <stdio.h>
void main()
{
int i, j;
//tant que i et j sont supérieurs à 0
for(i = 6 et j = 10; i > 0 && j > 0; i--, j--)
{
//si i=5 nous ne continuons pas la suite
//des instructions et
//nous passons à l'itération suivante (i=4)
if (i == 5)
continue;
printf("i = %d et j = %d\n", i,j);
//si j=5, alors nous sortons de la boucle
if (j==5)
break;
}
}