Académique Documents
Professionnel Documents
Culture Documents
Mathématiques et
Informatique
Algorithmique et programmation
langage C
Chapitre 5 : LES INSTRUCTIONS DE CHOIX
-STRUCTURES CONDITIONNELLES-
ASMAE OUHMIDA
UNIVERSITÉ HASSAN II
ECOLE NORMALE SUPÉRIEURE
D’ENSEIGNEMENT TECHNIQUE
PLAN
► L ’opérateur conditionnel
► L’instruction conditionnelle IF
► Il existe un seul opérateur ternaire en C. Cet opérateur permet d'écrire des expressions
conditionnelles : inclusion d’une expression conditionnelle dans le calcul d’une
expression
► L'expression conditionnelle débute par un test suivi du caractère ? puis la valeur lorsque
le test est vrai puis le caractère : et enfin la valeur lorsque le test est faux
► Syntaxe
Test est
Test Test est faux
vrai
Exemples
La société X applique une remise de 20% si le nombre d’articles achetés est strictement
supérieur à 3.
Ecrire l’expression qui permet de valoriser la variable MontantAPayer à partir des deux
variables supposées renseignées : TotalAchats et NbProduits qui représentent
respectivement le montant total des achats et le nombre d’articles achetés
L'OPÉRATEUR CONDITIONNEL
Exercice : Remise de 20% pour plus de 3 articles achetés
# include <stdio.h>
main()
{ int NbProduits;
float MontantAPayer, TotalAchats;
printf("donner le Total Achats : ") ; scanf("%f",&TotalAchats) ;
printf("\n donner le Nn de produits : "); scanf("%d",&NbProduits) ;
MontantAPayer = (NbProduits>3)?
TotalAchats-(TotalAchats*0.20):TotalAchats;
printf("Le montant à payer est : %f \n", MontantAPayer) ;
system("PAUSE");
L'INSTRUCTION CONDITIONNELLE IF
if (expression booléenne)
{
bloc1 d’instructions
}
else
{
bloc2 d’instructions
}
► Description : La valeur de l'expression est évaluée et, si elle est non nulle (vraie), les
instructions du bloc1 sont exécutées sinon (fausse) les instructions du bloc2 sont exécutées
L'INSTRUCTION CONDITIONNELLE IF
► Remarques :
Dans le cas où le bloc est formé d’une seule instruction il n’est pas utile de
► Exemples :
1) if (i < 10) i++;
2) if (delta > 0)
printf("2 racines réelles\n");
else
if (delta == 0)
printf("racine double\n");
else
printf("pas de racines réelles\n");
3) if (a) i++; /* équivalent : if ( a ! = 0 ) */ ;
L'INSTRUCTION CONDITIONNELLE IF
Exercice :
Soient deux joueurs A et B se cachent la main droite derrière le dos. Chacun choisit de
tendre un certain nombre de doigts (de 0 à 5), toujours derrière le dos. Les deux
doigts montrés est paire, le premier joueur a gagné, sinon c'est le second. Le problème
#include <stdio.h>
int NA, NB, Reste;
main()
{
printf("Introduisez le nombre de doigts montrés par le joueur A : ");
scanf("%d",&NA);
printf("Introduisez le nombre de doigts montrés par le joueur B : ");
scanf("%d",&NB);
Reste = (NA + NB)%2;
if (Reste==0) printf("Le joueur A a gagné. \n");
else printf("Le joueur B a gagné. \n");
printf("Bravo pour le gagnant! \n");
system("PAUSE");
L'INSTRUCTION CONDITIONNELLE IF
► Exercice : Remise de 20% pour plus de 3 articles achetés
# include <stdio.h>
main()
{ int NbProduits;
float MontantAPayer, TotalAchats;
printf("donner le Total Achats : ") ; scanf("%f",&TotalAchats) ;
printf("\n donner le Nn de produits : "); scanf("%d",&NbProduits) ;
if (NbProduits>3) MontantAPayer=TotalAchats-(TotalAchats*0.20);
else MontantAPayer= TotalAchats;
printf("Le montant à payer est : %f \n", MontantAPayer);
system("PAUSE");
}
L'INSTRUCTION DE SÉLECTION SWITCH
► tester le résultat d’une expression avec de nombreuses valeurs et déclencher des
traitements particuliers pour chacune de ces valeurs.
► Il est recommandé d’utiliser l’instruction “ switch ” plutôt qu’une imbrication
d’instructions “ if …else … ”.
► La syntaxe de cette instruction a la forme suivante :
switch (expression)
{
case e1 : bloc instructions1 ;
case e2 : bloc instructions2 ;
...
case e3 : bloc instructions3 ;
default : bloc instructions_default ;
}
L'INSTRUCTION DE SÉLECTION SWITCH
► Organigramme de l’instruction de sélection SWITCH
non
Expression==e1
oui non
Expression==e2
Bloc instructions1
oui non
Expression==e3
Bloc instructions2
oui
Bloc instructions3
Bloc
instructions_default
Fin de switch
L'INSTRUCTION DE SÉLECTION SWITCH
Description :
► L’évaluation de l’expression doit donner pour résultat une valeur de type int ou char
► e1, e2, e3 ... sont des expressions constantes qui doivent être un entier unique de type int ou char
► La valeur de l’expression est recherchée successivement parmi les valeurs des différentes expressions
constantes e1, e2, e3...
► S'il n'y a pas de valeur correspondante, on exécute les instructions du cas default (s'il existe)
L'INSTRUCTION DE SÉLECTION SWITCH
► Remarques :
Pour passer à l’instruction qui suit le switch, il faut que la dernière instruction
associée à chaque bloc d’instructions soit break (à l’exception default)
L'INSTRUCTION DE SÉLECTION SWITCH
Exemple :
Le règlement d’un jeu de tire à la carabine est le suivant :
- Si la cible est touchée 0 fois on gagne rien ;
- Si la cible est touchée 1 fois on gagne un livre ;
- Si la cible est touchée 2 fois on gagne une cafetière ;
- Si la cible est touchée 3 fois on gagne une bicyclette VTT ;
- Si la cible est touchée 4 fois on gagne une Télévision ;
- Si la cible est touchée plus de 5 fois on gagne une machine à laver ;
Ecrire le programme C qui permet de lire le nombre de fois que la cible a été
touchée et afficher l’objet gagné.
L'INSTRUCTION DE SÉLECTION SWITCH
#include <stdio.h>
int Nombre_Tire ;
main() {
printf(" Entrez le nombre de fois que la cible a été touchée : ") ;
scanf("%d", &Nombre_Tire) ;
switch (Nombre_Tire) {
case 0 : { printf(" Vous n’avez rien gagné \n"); break ; };
case 1 : { printf(" Vous avez gagné un livre \n ") ; break ; };
case 2 : { printf(" Vous avez gagné une cafetière \n "); break ; };
case 3 : { printf(" Vous avez gagné une bicyclette VTT \n "); break ; };
case 4 : { printf(" Vous avez gagné une télévision \n"); break ; };
default : printf(" Vous avez gagné une machine à laver \n ");
}
system("PAUSE ");
}
L'INSTRUCTION DE SÉLECTION SWITCH
Voyez cet exemple, dans lequel nous avons volontairement omis certains break.
Exemple général d’instruction switch
main()
{
int n ;
printf ("donnez un entier : ") ; donnez un entier : 1
scanf ("%d", &n) ; petit
switch (n) moyen
{ case 0 : printf ("nul\n") ; break ; ______
donnez un entier : 4
case 1 :
moyen
case 2 : printf ("petit\n") ; ______
case 3 : donnez un entier : 25
case 4 : grand
case 5 : printf ("moyen\n") ; break ;
default : printf ("grand\n") ;
}
}
Exercice à faire :