Cours : Algorithmique & Programmation C Chapitre : Les Structures Conditionnelles
COURS
ALGORITHMIQUE & PROGRAMMATION C
CHAPITRE :
LES STRUCTURES CONDITIONNELLES
IF - SWITCH
Cours : Algorithmique & Programmation C Chapitre : Les Structures Conditionnelles
1. INTRODUCTION
Un programme en langage C comporte 2 types d’instructions : les instructions de base et les
instructions de structuration du programme.
Les instructions de base permettent de manipuler des constantes, des variables ou bien des
expressions :
Affectation,
Lecture,
Ecriture.
Les instructions de structuration du programme précisent comment s’enchaînent les
instructions de base :
Structure conditionnelle (structure alternative),
Structure répétitive.
2. LA STRUCTURE ALTERNATIVE EN C (IF-ELSE)
2.1 if – else
Il s'agit de l'instruction: Si (expression conditionnelle vraie) alors
<BLOC 1 D'INSTRUCTIONS>
Sinon
<BLOC 2 D'INSTRUCTIONS>
Finsi
oui condition non
vraie
Bloc 1 Bloc 2
d’instructions d’instructions
suite du programme
1
Cours : Algorithmique & Programmation C Chapitre : Les Structures Conditionnelles
Syntaxe:
if (<expression>)
<bloc 1 d'instructions>
else
<bloc 2 d'instructions>
<expression> :
• une variable numérique
• une expression fournissant un résultat numérique
<bloc d’instructions> :
• Un ensemble d’instructions compris entre {}
• Une seule instruction
Valeur de l’<expression> :
• Si l’<expression> fournit une valeur différente de 0 alors le <bloc1
d’instructions> est exécuté.
• Si l ’<expression> fournit la valeur 0 alors le <bloc d’instructions 2> est exécuté
REMARQUE :
le <bloc d’instructions> peut contenir d’autres instructions conditionnelles!
les {} ne sont pas nécessaires lorsque les blocs ne comportent qu'une seule
instruction.
Exemple:
if (A > B)
max = A;
else
max = B;
2.2 if sans else
Le bloc "sinon" est optionnel: si (expression vraie)
Alors
<BLOC D'INSTRUCTIONS>
oui non
condition
vraie
bloc d'
instructions
suite du programme
2
Cours : Algorithmique & Programmation C Chapitre : Les Structures Conditionnelles
Syntaxe:
if (<expression>)
<bloc d'instructions>
Exemple:
if (A > 0)
Valeur_Absolue = A;
else
Valeur_Absolue = -A;
Peut être remplacée par :
Valeur_Absolue = A;
if (A < 0)
Valeur_Absolue = -A;
2.3 if…else imbriqué (if - else if - ... – else)
Autre utilisation de l’instruction if :
Syntaxe:
if (<expr1>)
<bloc1>
else if (<expr2>)
<bloc2>
...
else if (<exprN>)
<blocN>
else
<blocN+1>
Les expressions <expr1>… <exprN> sont évaluées de haut vers le bas jusqu’à ce que
l’une d’elles soit vrai
Si une expression est vérifiée, le bloc y lié est exécuté et le traitement s’arrête
La dernière else traite le cas où aucune des conditions n’a été remplie (elle est
optionnelle).
Exemple:
if (note >= 10)
printf (" Succès \n");
else if (note >= 9)
printf (" Rachat \n");
else if (note >= 8)
printf (" Contrôle \n");
else
printf (” Echec \n” );
3
Cours : Algorithmique & Programmation C Chapitre : Les Structures Conditionnelles
3. LA STRUCTURE ALTERNATIVE EN C (SWITCH)
L'instruction switch permet des choix multiples uniquement sur des entiers (int) ou des
caractères (char).
Syntaxe:
switch (<variable>)
{
case <valeur1> : <bloc1>
break;
...
case <valeurN> : <blocN>
break;
default : <blocN+1>
}
On teste si <variable> est égale à <valeur1> ... <valeurN> de haut vers le bas
Si <variable> est égale à une valeur <valeuri>, le bloc y lié est exécuté et le
traitement s’arrête (break)
Default traite le cas où aucune des conditions n ’a été remplie (elle est optionnelle et
pas de break).
REMARQUE :
L’instruction switch correspond à une cascade d’instructions if ...else mais avec des
tests d'égalité uniquement.
Exemple1:
switch (trouve)
{ case 0 : printf (" Pas de solution\n");
break;
case 1: printf (" j’ai trouvé une solution \n");
break;
case 2: printf (" j’ai trouvé deux solutions \n");
break;
case -1:printf (" Impossible de résoudre \n");
break;
}
Exemple2:
switch (operateur)
{ case ‘+’ : printf (" c’est l’addition ");
break;
case ‘-’ : printf (" c’est la soustraction ");
break;
case ‘*’ : printf (" c’est la multiplication ");
break;
case ‘/’ : printf (" c’est la division ");
break;
default : printf (" opérateur non connu ");
}
4
Cours : Algorithmique & Programmation C Chapitre : Les Structures Conditionnelles
4. LES OPÉRATEURS CONDITIONNELS
Le langage C possède une paire d'opérateurs un peu exotiques qui peut être utilisée comme
alternative à if - else et qui a l'avantage de pouvoir être intégrée dans une expression:
Les opérateurs conditionnels
<expr1> ? <expr2> : <expr3>
* Si <expr1> fournit une valeur différente de zéro, alors la valeur de <expr2> est fournie comme
résultat.
* Si <expr1> fournit la valeur zéro, alors la valeur de <expr3> est fournie comme résultat.
Exemple :
La suite d'instructions :
if (A>B)
MAX=A;
else
MAX=B;
peut être remplacée par:
MAX = (A > B) ? A : B;
Employés de façon irréfléchis, les opérateurs conditionnels peuvent nuire à la lisibilité d'un
programme, mais si on les utilise avec précaution, ils fournissent des solutions très élégantes:
Exemple
printf("Vous avez %i carte%c \n", N, (N==1) ? ' ' : 's');
Les règles de conversion de types s'appliquent aussi aux opérateurs conditionnels ? : Ainsi, pour un
entier N du type int et un rationnel F du type float, l'expression
(N>0) ? N : F
va toujours fournir un résultat du type float, n'importe si N est plus grand ou plus petit que zéro!