📘 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).

Schéma des conditions

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.

Syntaxe
Si (condition) Alors
    // Instructions si Vrai
FinSi

Exemple 1 : Vérifier si un nombre est positif

Algorithme
Si (nombre > 0) Alors
    Ecrire("Le nombre est positif")
FinSi

Exemples de simulation

- Pour nombre = 20 → condition vraie → message affiché "nombre positif"
- Pour nombre = -3 → condition fausse → rien ne s’exécute  

💡 Remarque

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.

Syntaxe
Si (condition) Alors
    // Bloc 1
Sinon
    // Bloc 2
FinSi

Exemple 2 : Pair ou impair

Algorithme
Si (nombre % 2 == 0) Alors
    Ecrire("Le nombre est pair")
Sinon
    Ecrire("Le nombre est impair")
FinSi

Exemples de simulation

- 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

Syntaxe
Si (condition1) Alors
    // Bloc 1
SinonSi (condition2) Alors
    // Bloc 2
Sinon
    // Cas par défaut
FinSi

Exemple 3 : Comparer deux nombres

Algorithme
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

Exemples de simulation

- 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

💡 Remarque
  • 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é

Algorithme
Si (identifiant == "admin" ET mot_de_passe == "1234") Alors
    Ecrire("Bienvenue")
Sinon
    Ecrire("Erreur d'authentification")
FinSi

Explication

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.

Syntaxe
Selon (variable)
    Valeur_1 : // Instructions
    Valeur_2 : // Instructions
    Sinon : // Par défaut
FinSelon

Exemple 5 : Jour de la semaine

Algorithme
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é

Algorithme
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

Explication du corrigé

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.

💡 Remarque

L’ordre des opérations est essentiel :

  1. calcul du prix
  2. réduction
  3. supplément
  4. plafonnement

Changer cet ordre peut donner un résultat incorrect.