Académique Documents
Professionnel Documents
Culture Documents
CHAPITRE 3
STRUCTURES DE CONTRÔLE CONDITIONNELLES
Objectif
Eléments de contenu
Définition d’une structure conditionnelle
La structure conditionnelle simple
La structure alternative
La structure conditionnelle à choix multiple.
CHAPITRE 3
STRUCTURES DE CONTRÔLE CONDITIONNELLES
on doit prévoir un calcul à résultat booléen (vrai ou faux), c'est à dire écrire une
expression avec des opérateurs donnant un résultat booléen, par exemple : (x<=4) et
(2*x>=2)
on prévoit les traitements à effectuer ou à ne pas effectuer selon le résultat (vrai ou
faux) de ce calcul, selon les données fournies par l'utilisateur.
Tous les langages de programmation offrent divers moyens de contrôler de cette façon les
traitements à effectuer.
Pour l'écriture d'un algorithme (indépendant d'un langage particulier) on utilise les
constructions suivantes :
Pour résoudre des problèmes plus complexes (plus de 2 cas), on peut de plus :
Syntaxe
2- La structure alternative
a) En algorithmique
Syntaxe
b) Traduction en C
Syntaxe
if ( <expression> )
<bloc d'instructions 1>
else <bloc d'instructions 2>
Avec :
La partie <expression> peut désigner :
Exemple 1
Ecrire un programme qui lit un entier au clavier et affiche entier positif, s’il est supérieur
ou égal à zéro, ou affiche entier négatif s’il est strictement négatif.
#include <stdio.h>
void main()
{
int x;
printf(“saisir un entier”);
scanf(“%d”, &x);
if (x>=0)
{
printf(“entier positif”); //ce bloc contient une seule instruction
}
else
{
printf(“entier négatif”); //ce bloc contient une seule instruction
}
}
Remarque
Les blocs qui suivent le if et le else contiennent une seule instruction. Les accolades sont donc
facultatives. Le programme peut s’écrire ainsi :
#include <stdio.h>
void main()
{
int x;
printf(“saisir un entier”);
scanf(“%d”, &x);
Exemple 2
#include <stdio.h>
void main()
{
int x,y;
printf(“saisir deux entiers ”);
scanf(“%d%d”, &x,&y) ;
if (x>y) printf(« le maximum est %d », x) ;
else printf(« le maximum est %d », y) ;
}
Application 1
Ecrire un programme C qui accepte un caractère du clavier et affiche :
- Minuscule si le caractère est minuscule.
- Majuscule si le caractère est majuscule.
- Chiffre si le caractère est différent des cas précisés.
Application 2
Ecrire un programme C qui détermine le montant à payer par un abonné à la STEG, sachant
qu’il :
- Paye des frais fixes s’élevant à 500 millimes.
- Paye sa consommation en électricité selon un tarif à tranches :
70 millimes par KHW pour 100 premiers KHW.
85 millimes par KHW pour 150 KHW suivants.
95 millimes par KHW pour la fraction de consommation qui excède les
250 KHW.
Cette dernière construction diffère des précédentes, car elle ne fait pas usage d'expression
booléenne.
a) En algorithmique
Syntaxe
l'expression est tout d'abord calculée, elle doit avoir un résultat de type "énumérable",
c'est-à-dire dont on peut énumérer les valeurs : en pratique de type entier ou caractère,
si le résultat du calcul donne une des valeurs prévues, alors les instructions
correspondantes sont exécutées,
si le résultat du calcul donne une valeur qui n'était pas prévue, les instructions
associées au cas sinon sont exécutées. Le cas sinon est facultatif.
Exemple
Cette construction est pratique pour la partie d'algorithme suivante, dans laquelle on suppose
que la variable jour contient un entier - compris entre 1 et 7 - représentant le jour de la
semaine (du lundi au dimanche). L'algorithme affiche en toutes lettres le nom du jour
correspondant.
...
selon jour faire
1 : ecrire('Lundi')
2 : ecrire('Mardi')
3 : ecrire('Mercredi')
4 : ecrire('Jeudi')
5 : ecrire('Vendredi')
6 : ecrire('Samedi')
7 : ecrire('Dimanche')
sinon : ecrire('Erreur')
fin selon
...
b) Traduction en C
Syntaxe
switch (expression)
{
case constante_1: [suite_inst_1] ; break ;
case constante_2: [suite_inst_2] ; break ;
case constante_3: [suite_inst_3] ; break ;
[default: suite_inst] ;
}
Exécution du switch…case :
1. Évaluer l’expression figurant après le mot switch
2. Rechercher dans le bloc qui suit s’il existe une étiquette de la forme
«constante_i» correspondant à la valeur ainsi obtenue (évaluation de l’expression) :
Si c’est le cas, on se branche à l’instruction figurant après cette étiquette
Dans le cas contraire on passe à l’instruction qui suit le bloc
Remarque: l’instruction break demande de sortir du bloc
Exemple
#include <stdio.h>
void main()
{
int x;
printf(“saisir un entier “);
scanf(“%d”, &x);
switch (x)
{
case 1: printf(« Lundi » ) ;
break;
case 2: printf(« Mardi » ) ;
break;
case 3: printf(« Mercredi » ) ;
break;
case 4: printf(« Jeudi » ) ;
break;
case 5: printf(« Vendredi » ) ;
break;
case 6: printf(« Samedi » ) ;
break;
case 7: printf(« Dimanche » ) ;
break;
default: printf(« Autre » ) ;
}
}