Expression de Conditions en C


 

Une condition est utilisée dans un programme quand la suite de celui-ci dépend de la valeur d'une ou plusieurs variables. Il est necessaire de tester la ou les valeurs, et d'executer tel ou tel bloc de programme suivant le resultat du test.

Je vous conseille de vous familiariser un peu avec la logique Booléenne. Je taperais surement un jour un truc la-dessus, mais pour l'instant j'ai pas le temps.

 

Syntaxe des opérateurs de test

Pour combiner plusieurs tests en un, un certain nombre d'opérateurs existent. Voici leur liste :

Opérateur Signification Exemple
== (deux signes =) égalité (5==3) est faux, (x==3) est vrai si x est égal à 3
!= non-égalité (5!=3) est vrai, (x!=5) est vrai si x est non-égal à 5
< inférieur 3<5 est vrai, 5<3 est faux
> supérieur ...
<= inférieur ou égal  
>= supérieur ou égal  
&& ET logique x&&y est vrai si x est vrai ET y est vrai
|| OU logique x||y est vrai si x et vrai OU y est vrai
! NON logique !x est vrai si x est faux

 

IF..THEN...ELSE

L'instruction IF permet de tester la valeur d'une condition logique.

Observons cet exemple :

if(x<=5)
{

printf("\n x est inférieur (ou égal) à 5");

}
else
{

printf("\n x est plus grand que 5.");

}

Suivant la valeur de x, testée par l'instruction IF, le premier bloc de programme est executé, l'autre est ignoré ou l'inverse. Il n'y a qu'un seul bloc executé. L'instruction ELSE determine le bloc à executer si la condition testée par IF est fausse.

On peut châiner des instructions IF comme ceci :

if(x<5)
{

printf("\n x plus petit que 5");

}
else if(x<3)
{

printf("\n x plus petit que 3.");

}
else /* à suivre..... */

Il est important de noter que la condition testée par IF doit être entre parenthèses. Attention au piège classique : si l'on veut tester si x est égal à 3, l'instruction correcte est : if(x==3) et non pas if(x=3). Le piège est qu'il n'y aura aucune erreur annoncée par le compilateur dans le deuxième cas. Mais ce n'est pas un test ! Dans le deuxième cas on affecte la valeur 3 à x. On modifie donc la variable, est de plus la condition est forcément vraie car différente de 0 ! Un bug dans le programme guette, et peut être très difficile à retrouver. Attention donc !!

Choix Multiples

On a vu qu'on pouvait chaîner plusieurs IF...ELSE IF...ELSE IF...ELSE. Mais s'il s'agit d'effectuer un choix multiples, il existe en C une instruction très pratique : SWITCH.

SWITCH réalise un branchement suivant la valeur d'une variable. Observons le bloc de programme ci-dessous :

switch(a)
{

case 1:
/* bloc d'instruction de progamme n°1 */
break;

case 5:
/* autre bloc d'instructions...*/
break;

/* autres case...*/

default:
/* dernier bloc de programme..*/
break;

}

L'instruction SWITCH teste la valeur de a, qui est ici un entier (mais qui peut être de n'importe quel type C). Suivant la valeur, le bloc de programme correspondant est executé. L'instruction break est necessaire pour sortir du switch, sinon les bloc suivants seraient executés. Il peut y avoir un cas "par défaut", dont le bloc est executé si aucun des autres cas n'est présent.

 

Opérateur ?

L'opérateur ? cache en fait une utilisation compactée d'un IF. L'instruction suivante :
int min=(a<b)?a:b;
est équivalente au bloc de programme suivant :
int min;
if(a<b) min=a;
else min=b;

Cette écriture est moins lisible, mais elle est très compacte, et donc très pratique et rapide à utiliser.