Bonjour ! Bienvenue dans ce deuxième module de votre parcours en algorithmique. Vous avez brillamment terminé les fondamentaux, et il est temps d'ajouter une nouvelle dimension à vos algorithmes : l'intelligence de la prise de décision.
Introduction
Dans la leçon précédente, vous avez appris à concevoir des algorithmes séquentiels, qui suivent un chemin unique et prédéfini, un peu comme une recette de cuisine où chaque étape suit la précédente sans exception. C'est une base essentielle.
Cependant, la plupart des problèmes intéressants nécessitent de faire des choix. Par exemple, "Si l'utilisateur a plus de 18 ans, afficher 'Majeur', sinon afficher 'Mineur'". Un algorithme purement séquentiel ne peut pas gérer ce type de logique.
L'objectif de cette leçon est donc de vous apprendre à utiliser la structure la plus fondamentale pour la prise de décision : le Si...Alors...Sinon. Grâce à elle, vos algorithmes ne seront plus de simples exécutants, mais pourront analyser une situation et agir différemment en fonction des données. C'est un pas de géant vers la création de programmes plus complexes et utiles, et un pilier de l'écriture d'un "code clean" qui modélise fidèlement la réalité.
1. Pourquoi les conditions sont-elles nécessaires ?
Imaginez un algorithme qui doit calculer le montant à payer sur un site d'e-commerce. Le chemin séquentiel serait : Lire le prix, Lire la quantité, Calculer le total, Afficher le total.
Maintenant, que se passe-t-il si le site offre une livraison gratuite pour toute commande supérieure à 50 € ? La logique séquentielle se brise. Le calcul des frais de port n'est plus systématique ; il dépend d'une condition (le montant total est-il supérieur à 50 € ?).
Pour gérer ces embranchements logiques, nous devons introduire des structures de contrôle conditionnelles. Elles permettent à un algorithme d'évaluer une situation et de choisir le chemin à suivre.
2. La structure Si...Alors...Sinon
La structure Si...Alors...Sinon est l'outil principal pour implémenter une décision binaire (un choix entre deux options).
Pour découvrir sa syntaxe formelle et un premier exemple concret, je vous invite à consulter la ressource suivante.
CHAP2 NOTION D'ALGORITHME ET DE PROGRAMME
Ce document explique parfaitement pourquoi les algorithmes séquentiels ne suffisent pas toujours et introduit la structure 'Si...Alors...Sinon' avec un exemple clair : le calcul du prix d'une commande où une remise s'applique en fonction de la quantité.
Commencez à lire à la section intitulée '1-La structure alternative' (page 9) et poursuivez jusqu'à la fin de l'algorithme 'Commande' sur la page 10. Concentrez-vous sur la syntaxe 'Si ... Alors ... Sinon ... FinSi' et sur la manière dont elle est utilisée pour choisir entre deux calculs différents pour la variable 'montant'.
Anatomie de la structure
Comme vous l'avez vu dans l'exemple, la structure se décompose ainsi en pseudo-code :
Si <condition> Alors
// Bloc d'instructions A
// Ce code est exécuté SEULEMENT si la condition est VRAIE.
Sinon
// Bloc d'instructions B
// Ce code est exécuté SEULEMENT si la condition est FAUSSE.
FinSi
Si <condition>: C'est le point de décision. Laconditionest une expression qui sera évaluée et dont le résultat ne peut être queVRAIouFAUX.Alors: Indique le début du bloc de code à exécuter si la condition estVRAI.Sinon: Indique le début du bloc de code à exécuter si la condition estFAUX. Cette partie est optionnelle ; si on l'omet, rien de spécial ne se passe lorsque la condition est fausse.FinSi: Marque la fin de la structure conditionnelle. Après ce point, l'algorithme reprend son exécution séquentielle normale.
L'organigramme suivant représente visuellement ce flux :

3. Qu'est-ce qu'une condition ?
Une condition est simplement une expression logique (ou booléenne), c'est-à-dire une affirmation qui peut être VRAIE ou FAUSSE.
Dans nos algorithmes, les conditions les plus courantes sont des comparaisons entre des variables ou des valeurs. Vous vous souvenez des opérateurs de comparaison du premier module ? Les voici de nouveau :
| Opérateur | Signification | Exemple | Résultat si age vaut 20 |
|---|---|---|---|
== |
Égal à | age == 18 |
FAUX |
!= |
Différent de | age != 18 |
VRAI |
< |
Strictement inférieur à | age < 18 |
FAUX |
> |
Strictement supérieur à | age > 18 |
VRAI |
<= |
Inférieur ou égal à | age <= 20 |
VRAI |
>= |
Supérieur ou égal à | age >= 21 |
FAUX |
C'est le résultat (VRAI ou FAUX) de l'évaluation de cette expression qui dicte si le bloc Alors ou le bloc Sinon sera exécuté.
4. Mise en pratique : premiers algorithmes conditionnels
La meilleure façon de maîtriser ce concept est de l'appliquer. Analysons ensemble un premier exemple, puis ce sera à votre tour !
Exemple : Vérifier si un nombre est pair ou impair
Un nombre entier est pair s'il est divisible par 2 sans reste. Sinon, il est impair. L'opérateur mod (modulo) nous donne le reste d'une division. Donc, la condition est nombre mod 2 == 0.
Voici l'algorithme correspondant, inspiré par un des exercices de la ressource Exercices Corrigés En Algorithme - Structure conditionnelle.
Algorithme PairImpair
Variable
nbr : Entier
Début
Ecrire("Veuillez entrer un nombre entier :")
Lire(nbr)
Si (nbr mod 2 == 0) Alors
Ecrire("Le nombre ", nbr, " est pair.")
Sinon
Ecrire("Le nombre ", nbr, " est impair.")
FinSi
Fin
Analyse de l'exécution :
- Si l'utilisateur saisit
8: La condition8 mod 2 == 0s'évalue à0 == 0, ce qui estVRAI. Le blocAlorss'exécute et affiche "Le nombre 8 est pair." - Si l'utilisateur saisit
7: La condition7 mod 2 == 0s'évalue à1 == 0, ce qui estFAUX. Le blocSinons'exécute et affiche "Le nombre 7 est impair."
À vous de jouer !
Prenez une feuille de papier et essayez de concevoir les algorithmes suivants en utilisant la méthode que nous avons vue (Analyse, Entrées/Sorties, Variables, Séquence d'instructions).
Exercice 1 : Valeur absolue
Concevez un algorithme qui demande un nombre à l'utilisateur et affiche sa valeur absolue. La valeur absolue d'un nombre positif ou nul est le nombre lui-même. La valeur absolue d'un nombre négatif est son opposé (par ex., la valeur absolue de -5 est 5).
Cliquez ici pour voir une solution possible
1. Analyse : Calculer la valeur absolue d'un nombre.
2. Entrées/Sorties :
- Entrée : un nombre (
n). - Sortie : sa valeur absolue (
val_abs).
3. Variables : n : Réel
4. Séquence :
Algorithme ValeurAbsolue
Variable
n : Réel
Début
Ecrire("Entrez un nombre :")
Lire(n)
Si (n >= 0) Alors
Ecrire("La valeur absolue de ", n, " est ", n)
Sinon
// Si n est négatif, son opposé est -n
Ecrire("La valeur absolue de ", n, " est ", -n)
FinSi
Fin
Exercice 2 : Vérification de la majorité
Concevez un algorithme qui demande l'âge de l'utilisateur et affiche "Vous êtes majeur." si l'âge est supérieur ou égal à 18, et "Vous êtes mineur." sinon.
Cliquez ici pour voir une solution possible
1. Analyse : Déterminer si une personne est majeure ou mineure selon son âge.
2. Entrées/Sorties :
- Entrée : un âge (
age). - Sortie : un message textuel.
3. Variables : age : Entier
4. Séquence :
Algorithme VerificationMajorite
Variable
age : Entier
Début
Ecrire("Quel est votre âge ?")
Lire(age)
Si (age >= 18) Alors
Ecrire("Vous êtes majeur.")
Sinon
Ecrire("Vous êtes mineur.")
FinSi
Fin
Conclusion
Félicitations ! Vous venez de franchir une étape décisive. Vos algorithmes ne sont plus de simples automates, ils peuvent désormais prendre des décisions.
Points clés à retenir :
- La structure
Si...Alors...Sinonpermet d'exécuter des blocs de code différents en fonction d'une condition. - Une condition est une expression logique qui s'évalue à
VRAIouFAUX, souvent basée sur des opérateurs de comparaison. - Le
FinSiest essentiel pour délimiter la fin de la structure conditionnelle et indiquer où le flux d'exécution normal doit reprendre.
Et après ?
Nous avons appris à gérer un choix entre deux options. Mais que faire si nous avons plus de deux cas possibles ? Par exemple, "Si la note est supérieure à 15, mention 'Très Bien'. Si elle est entre 12 et 15, mention 'Bien'. Sinon, mention 'Passable'."
Dans la prochaine leçon, nous verrons comment imbriquer les structures conditionnelles avec le Si...SinonSi...Sinon pour gérer élégamment des cas multiples et construire une logique encore plus fine.