Plan du cours
📘 Les conditions
Introduction
Jusqu'à présent, vos algorithmes s'exécutaient de la première à la dernière ligne sans jamais dévier.
Mais dans la vraie vie, tout dépend du contexte :
- Si le solde est suffisant, alors le retrait est autorisé, sinon il est refusé.
- Si le feu est vert, alors la voiture peut passer, sinon elle doit s'arrêter.
L’instruction conditionnelle permet à l’algorithme de choisir entre plusieurs chemins possibles en fonction d’une condition (une question dont la réponse est Vrai ou Faux).
La condition
Une condition est une expression booléenne construite à l’aide d’opérateurs de comparaison :
| Opérateur | Signification | Exemple | Résultat |
|---|---|---|---|
| == | Égal à | 10 == 10 | Vrai |
| != | Différent de | 10 != 5 | Vrai |
| > | Strictement supérieur | 8 > 12 | Faux |
| < | Strictement inférieur | 3 < 7 | Vrai |
| >= | Supérieur ou égal | 5 >= 5 | Vrai |
| <= | Inférieur ou égal | 4 <= 2 | Faux |
Structure Si ... Alors
On exécute un bloc d’instructions uniquement si la condition est vraie.
Si (condition) Alors
// Instructions si Vrai
FinSi
Exemple 1 : Vérifier si un nombre est positif
Si (nombre > 0) Alors
Ecrire("Le nombre est positif")
FinSi
- Pour nombre = 20 → condition vraie → message affiché "nombre positif"
- Pour nombre = -3 → condition fausse → rien ne s’exécute
Les instructions en dehors du bloc Si sont exécutées normalement.
Structure Si ... Alors ... Sinon
On prévoit un plan alternatif si la condition est fausse.
Si (condition) Alors
// Bloc 1
Sinon
// Bloc 2
FinSi
Exemple 2 : Pair ou impair
Si (nombre % 2 == 0) Alors
Ecrire("Le nombre est pair")
Sinon
Ecrire("Le nombre est impair")
FinSi
- Pour nombre = 18 → condition vraie → message affiché "Le nombre est pair"
- Pour nombre = 3 → condition fausse → message affiché "Le nombre est impair"
Conditions imbriquées
Si (condition1) Alors
// Bloc 1
SinonSi (condition2) Alors
// Bloc 2
Sinon
// Cas par défaut
FinSi
Exemple 3 : Comparer deux nombres
Si (a > b) Alors
Ecrire("a est plus grand")
SinonSi (a < b) Alors
Ecrire("b est plus grand")
Sinon
Ecrire("a et b sont égaux")
FinSi
- Pour a = 10 et b = 5 :
→ le premier bloc est exécuté car a > b
- Pour a = 5 et b = 10 :
→ le deuxième bloc est exécuté car a < b
- Pour a = 5 et b = 5 :
→ le troisième bloc est exécuté car aucune des deux conditions n’est vraie
Opérateurs logiques
On utilise ces opérateurs pour combiner plusieurs conditions :
- ET (AND) : toutes les conditions doivent être vraies
- OU (OR) : au moins une condition doit être vraie
- NON (NOT) : inverse le résultat
Table de vérité des opérateurs logiques
| A | B | A ET B | A OU B |
|---|---|---|---|
| Vrai | Vrai | Vrai | Vrai |
| Vrai | Faux | Faux | Vrai |
| Faux | Vrai | Faux | Vrai |
| Faux | Faux | Faux | Faux |
Opérateur NON
| A | NON A |
|---|---|
| Vrai | Faux |
| Faux | Vrai |
- ET nécessite que toutes les conditions soient vraies
- OU nécessite au moins une condition vraie
- NON inverse le résultat
Exemple 4 : Accès sécurisé
Si (identifiant == "admin" ET mot_de_passe == "1234") Alors
Ecrire("Bienvenue")
Sinon
Ecrire("Erreur d'authentification")
FinSi
Le message "Bienvenue" n'est affiché que lorsque l'identifiant est égal à admin et le mot de passe est "1234" sinon l'utilisateur ne sera autorisé à l'accès.
Instruction Selon
L’instruction Selon permet de simplifier les cas où une variable peut prendre plusieurs valeurs.
Selon (variable)
Valeur_1 : // Instructions
Valeur_2 : // Instructions
Sinon : // Par défaut
FinSelon
Exemple 5 : Jour de la semaine
Selon (jour_num)
1 : Ecrire("Lundi")
2 : Ecrire("Mardi")
3 : Ecrire("Mercredi")
4 : Ecrire("Jeudi")
5 : Ecrire("Vendredi")
6 : Ecrire("Samedi")
7 : Ecrire("Dimanche")
Sinon : Ecrire("Erreur : jour invalide")
FinSelon
Exercice d'entraînement
Un parking applique des tarifs selon la durée et le statut du client. Lire :
- heures
- abonne (oui/non)
Calculer :
- 0 à 2 h → 5 dh/h
- 3 à 5 h → 4 dh/h
- sup à 5 h → 3 dh/h
Règles :
- abonné → réduction de 20%
- heures > 10 → +10 dh
- prix > 100 → plafond à 100
Afficher le montant final.
Corrigé
Variables
heures : Entier
prix : Réel
abonne : Chaine
Début
Ecrire("Entrer le nombre d'heures :")
Lire(heures)
Ecrire("Êtes-vous abonné ? (oui/non)")
Lire(abonne)
Si (heures <= 2) Alors
prix ← heures * 5
SinonSi (heures <= 5) Alors
prix ← heures * 4
Sinon
prix ← heures * 3
FinSi
Si (abonne == "oui") Alors
prix ← prix * 0.8
FinSi
Si (heures > 10) Alors
prix ← prix + 10
FinSi
Si (prix > 100) Alors
prix ← 100
FinSi
Ecrire("Montant à payer :", prix)
Fin
1. Lecture des données
On demande à l’utilisateur :
- Le nombre d’heures
- S’il est abonné
2. Calcul du prix de base
Le tarif dépend des heures :
- ≤ 2 → 5 dh/h
- ≤ 5 → 4 dh/h
- sup à 5 → 3 dh/h
=> prix ← heures × tarif
3. Réduction abonné
Si le client est abonné , appliquer une réduction sur le prix de base déjà calculé.
=> prix ← prix × 0.8
4. Supplément
Si heures > 10 :
=>prix ← prix + 10
5. Plafonnement
Si prix > 100 :
=>prix ← 100
6. Affichage
On affiche le montant final.
L’ordre des opérations est essentiel :
- calcul du prix
- réduction
- supplément
- plafonnement
Changer cet ordre peut donner un résultat incorrect.