Le chat d'octets

Photo de Gribouille

Les traitements conditionnels

L'instruction for

La boucle "for" permet d'exécuter un certain nombre de fois déterminé une série d'instructions.

Syntaxe


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.

Exemple


//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 while

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.

Syntaxe de la première variante


while(condition)
{
	//instruction 1
	// instruction 2
	// ....
	// instruction n
}

Syntaxe de la deuxième variante


do
{
	//instruction 1
	// instruction 2
	// ....
	// instruction n
}while(condition) 

Exemple (1ère variante)


//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);
}

Exemple (2ème variante)


//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);
}    

L'instruction if - else

Cette instruction permet un branchement conditionnel. Il existe trois variantes.

Syntaxe de la première variante

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
}

Syntaxe de la deuxième variante

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
}

Syntaxe de la troisième variante

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
}    

Exemple

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

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à.

Syntaxe


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.

Exemple

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");
	}
}

Les sorties de boucle

Il existe deux commandes qui permettent de sortir de sortir d'une boucle lorsqu'une certaine condition est satisfaite.

Exemple


#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;
}
}