Vous êtes sur la page 1sur 6

Chapitre 3 : Structures alternatives (décisionnelles)

Objectif général : Utiliser les structures décisionnelles dans la construction des algorithmes.

I. Introduction
I.1. Exemple introductif
Souvent, on est confronté à des situations où il faut faire un choix en se basant sur des critères qui
sont exprimés par des conditions. Cette notion est exprimée par les structures décisionnelles ou
conditionnelles. Voici dans ce qui suit un exemple qui explique cette notion.
Exemple
On se propose de déterminer les différents résultats relatifs aux moyennes des étudiants d’une
institution. Pour ce faire, il faut avoir la moyenne déjà calculée puis la faire passer à travers des filtres
ou ce qu’on appelle tests ou encore conditions. Si elle vérifie l’une des conditions, la mention
correspondante sera communiquée. Les filtres à exprimer sont les suivants :
 Si (moyenne  0) et (moyenne < 10) Alors le résultat est : Redouble.
 Si (moyenne  10) et (moyenne < 12) Alors le résultat est : Admis Passable.
 Si (moyenne  12) et (moyenne < 14) Alors le résultat est : Admis Assez Bien.
 Si (moyenne  14) et (moyenne < 16) Alors le résultat est : Admis Bien.
 Si (moyenne  16) et (moyenne  20) Alors le résultat est : Admis Très Bien.
 Si (moyenne > 20) ou (moyenne < 0) Alors le résultat est : Moyenne invalide.
L’évaluation de chacune des conditions donne deux valeurs possibles, Vrai ou Faux, c’est une valeur
logique. Si la condition a la valeur Vrai, le traitement qui suit est alors effectué.

I.2. Définition de choix


On a vu, jusqu'ici, qu'on peut souvent rencontrer des situations qui ne peuvent pas être traitées par
les seules séquences utilisant les instructions de base. En effet, on a besoin parfois de choisir entre
deux ou plusieurs traitements selon la réalisation ou non d'une certaine condition, d'où la notion de
traitement conditionnel. On peut distinguer trois structures de traitement conditionnel :
 Une structure conditionnelle simple : dans laquelle on a à choisir entre deux traitements au plus.
On distingue deux structures conditionnelles simples :
 Une structure conditionnelle à un seul choix (structure simple réduite).
 Une structure conditionnelle à deux choix (structure simple complète).
 Une structure conditionnelle à plusieurs choix (structure généralisée) : dans laquelle on a la
possibilité de choisir un traitement parmi plusieurs.

Hind Elouedi Page 1


Chapitre 3 : Structure alternatives (décisionnelles)

II. Structures alternatives simples


II.1. structure conditionnelle à un seul choix
La structure conditionnelle à un seul choix se présente comme suit :

Si (expression_logique) Alors
Instruction 1
Instruction 2
...
Instruction n
FinSi
Figure 3.1 : Structure alternative simple à un seul choix

II.2. Structure alternative à deux choix


La structure conditionnelle à deux choix se présente comme suit :

Si (expression_logique)
Alors bloc d'instructions1
Sinon bloc d'instructions2
FinSi

Figure 3.2 : Structure alternative simple à deux choix

Remarque
Si l'expression logique mentionnée après le mot Si, a la valeur logique Vrai, on exécute ce qui figure
après le mot Alors ; si l'expression logique a la valeur logique Faux, on exécute ce qui figure après le
mot Sinon.
Exemple 1
L’algorithme suivant permet de lire un nombre entier, puis de vérifier s'il est pair ou impair.
 Déclarer deux variables de type entier : une pour recevoir un nombre à partir du clavier, l'autre
pour recevoir le reste de la division entière par 2.
 Calculer, à l'aide de la fonction Mod, le reste de la division entière du nombre par 2.
 Tester pour voir si le reste est égal à 0, dans ce cas le nombre est pair ; dans le cas contraire le
nombre est impair.
Algorithme Pair_Impair
Variable
nombre, reste : Entier
Début
Ecrire ("Donnez un nombre entier : ")
Lire (nombre)
reste  nombre Mod 2
Si (reste = 0) -- ou bien Si (nombre Mod 2 = 0)
Alors Ecrire ("Le nombre ", nombre, " est pair")
Sinon Ecrire ("Le nombre ", nombre, " est impair")
FinSi
Fin

Hind Elouedi Page 2


Chapitre 3 : Structure alternatives (décisionnelles)
Exemple 2 : Evaluation d'une expression logique (Prédicat).
Algorithme Prédicat
Variable
Ok, Yes, No : Booléen --déclarer 3 variables de type logique
Début
Yes  Vrai No  Faux --affecter à Yes la valeur logique Vrai et Faux à No
Ok  Non (Yes Ou Yes) Et ((No Et No) Ou (No Ou Non Yes)) --affecter à Ok un prédicat
Si (Ok = Vrai) -- ou bien Si (Ok) --Tester pour voir si Ok est vrai
Alors Ecrire ("OK = Vrai (True)") --Attention ! Ecrire ("OK = ", OK) incorrecte.
Sinon Ecrire ("OK = Faux (False)")
FinSi
Fin

III. Structures alternatives à choix multiples


III.1. Structures alternatives imbriquées
Les structures conditionnelles imbriquées (ou emboitées) se présentent comme suit :

Si (expression_logique1)
Alors bloc d'instructions 1
Sinon
Si (expression_logique2)
Alors bloc d'instructions 2
Sinon
Si ...
FinSi

FinSi

Figure 3.3 : Structures alternatives imbriquées

Exemple
Calcul de remise : A partir d'un montant lu en donnée, on détermine un montant net par application
d'une remise de :
 5% si le montant est compris entre 2000 DT (inclus) et 5000 DT (inclus).
 10% si le montant est supérieur ou égal à 5000 DT.

Analyse
 Déclarer trois variables (Montant, Taux et Remise) de type numérique.
 Lire le montant à partir du clavier.
 Tester pour voir si le montant introduit par l'utilisateur est inférieur ou égal à 2000 DT, dans ce
cas affecter à Taux la valeur 0 ; dans le cas contraire tester pour voir si le montant est inférieur
à 5000 DT. Si cette dernière condition est vérifiée, affecter à Taux la valeur 5 sinon la valeur 10.
 Calculer le montant de remise
 Affecter à Montant le montant net.

Hind Elouedi Page 3


Chapitre 3 : Structure alternatives (décisionnelles)

Algorithme Calcul_remise_Version1
Variable
Montant, Remise : Réel
Taux : Entier
Début
Ecrire ("Montant ? (en Dinars) :")
Lire (Montant)
Si (Montant  2000)
Alors Taux  0
Sinon Si (Montant = 5000)
Alors Taux  5
Sinon Taux  10
FinSi
FinSi
Remise  Montant * Taux / 100
Montant  Montant – Remise
Ecrire ("Montant Net :", Montant)
Fin
Remarque
Notez que beaucoup d'autres formulations sont possibles. Ainsi, par exemple, on peut éviter l'emploi
de choix imbriqués en utilisant trois structures conditionnelles simples :
Si (Montant  2000)
Alors Taux  0
FinSi
Si (Montant = 2000) Et (Montant  = 5000)
Alors Taux  5
FinSi
Si (Montant  5000)
Alors Taux  10
FinSi
III.2. Structure Selon
La structure conditionnelle Selon est utilisée pour sélectionner une séquence possible d'instructions
parmi plusieurs. Elle ressemble à la structure Si...Alors...Sinon, mais elle est plus efficace lorsqu'il
s'agit de tester la même variable plusieurs fois pour des valeurs fixes. Sa forme se présente de la
manière suivante :

Selon Sélecteur Faire


Liste_valeurs1 : instructions exécutées si Sélecteur est inclus dans Liste_valeurs1
Liste_valeurs2 : instructions exécutées si Sélecteur est inclus dans Liste_valeurs2
...
Liste_valeursN : instructions exécutées si Sélecteur est inclus dans Liste_valeursN
[Sinon : instructions à exécuter si rien ne correspond]
FinSelon

Figure 3.4 : Structure généralisée Selon

Hind Elouedi Page 4


Chapitre 3 : Structure alternatives (décisionnelles)

 Sélecteur : est un identificateur de variable ou une expression de type scalaire.


 Liste_valeurs1..Liste_valeursN : ce sont des valeurs servant aux tests. Elles peuvent être
données sous forme de constantes et/ou d'intervalles constants de type compatible avec le
sélecteur.
 Liste_Valeurs1 (exemple 1 : 1..10 / exemple 2 : 1,3,5,7,9 / exemple 3 : 1..10, 20..30)
 [...] : bloc facultatif.

Remarque
Si le contenu du sélecteur mentionné après le mot Selon correspond à une valeur parmi les listes des
valeurs mentionnées après le mot Faire, on exécute toutes les instructions qui suivent cette valeur
jusqu'à la liste de valeurs suivante. Si rien ne correspond, on exécute les instructions qui figurent
après le mot Sinon. Puis l'algorithme sort de la structure et continue l'exécution après le mot
FinSelon.

Exemple 1
Cet algorithme permet de saisir une date sous la forme jj, mm, aa et d'afficher le nombre de jours du
mois mm et le nombre de jours qui restent pour la fin de ce mois.
Analyse
 Déclarer 5 variables de type entier :
 3 variables (jj, mm et aa) pour recevoir la date.
 1 variable (jtot) pour recevoir le nombre total de jours du mois mm.
 1 variable (jreste) pour calculer le nombre de jours restant pour la fin du mois mm.
 Lire la date sous la forme demandée.
 Sélectionner le bon mois.
 Déterminer les valeurs des variables jtot et jreste en tenant compte des années bissextiles. Une
année bissextile se dit de l’année de 366 jours sui revient généralement tous les 4 ans.
Algorithme Jours
Variable
jj, mm, aa, jtot, jreste : Entier
Début
Ecrire ("Donnez la date sous la forme JJ MM AA : ")
Lire (jj, mm, aa) --on suppose que la date saisie par l'utilisateur est valide
Selon mm Faire
1, 3, 5, 7, 8, 10, 12 : jtot  31 --Janvier, Mars, Mai, Juillet, Août, Oct., Déc.
4, 6, 9, 11 : jtot  30 --Avril, Juin, Sept. et Nov.
Sinon : --mois de Février
Si (aa Mod 4 = 0) --année bissextile (février a 29 jours)
Alors jtot  29
Sinon jtot  28
FinSi
FinSelon
jreste  jtot – jj
Ecrire ("Le mois ", mm, " a ", jtot, " jours et il reste encore ", jreste, " jours pour sa fin")
Fin

Hind Elouedi Page 5


Chapitre 3 : Structure alternatives (décisionnelles)
Exemple 2
Écriture d'un type scalaire (Sport) : Sachant que le type scalaire ne se lit pas et ne s’affiche pas
directement, on va écrire un algorithme qui permet de manipuler ce type de données.
Analyse :
 Définir le type Sport.
 Déclarer une variable entière Ordre qui contient l’ordre du sport à choisir.
 Déclarer une variable Sp de type Sport.
 Selon la valeur de la variable S, on va déterminer le sport choisi.
 On affichera ensuite le nom du sport choisi.

Algorithme Ecriture_Scalaire
Type
Sport = {Foot, Hand, Volley, Basket, Rugby} -- définition d'un type scalaire (Sport)
Variable
Sp : Sport --déclaration d'une variable de type Sport
S : Entier
Début
Ecrire ("Donner un entier entre 1 et 5 :")
Lire (S)
Ecrire ("Le sport pratiqué est :")
Selon S Faire
1 : Sp  Foot --ou bien Sp  Min(Sport)
Ecrire ("Foot ball") --Attention ! l'instruction Ecrire (Sp) n'est pas autorisée
2 : Sp  Hand --ou bien Sp  Succ(Min(Sport))
Ecrire ("Hand ball")
3 : Sp  Volley
Ecrire ("Volley ball")
4 : Sp  Basket -- ou bien Sp  Pred(Max(Sport))
Ecrire ("Basket ball")
5 : Sp  Rugby -- ou bien Sp  Max(Sport)
Ecrire ("Rugby")
Sinon : Ecrire ("Erreur de choix ! La plage autorisée est 1..5")
FinSelon
Fin

Hind Elouedi Page 6

Vous aimerez peut-être aussi