Académique Documents
Professionnel Documents
Culture Documents
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é.
Si (expression_logique) Alors
Instruction 1
Instruction 2
...
Instruction n
FinSi
Figure 3.1 : Structure alternative simple à un seul choix
Si (expression_logique)
Alors bloc d'instructions1
Sinon bloc d'instructions2
FinSi
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
Si (expression_logique1)
Alors bloc d'instructions 1
Sinon
Si (expression_logique2)
Alors bloc d'instructions 2
Sinon
Si ...
FinSi
…
FinSi
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.
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 :
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
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