Conditions simples et composées | Algorithmique Seconde
Introduction
Découvrez comment combiner des conditions pour des décisions complexes
Conditions simples
Test d'une seule condition
Une condition simple est une condition qui ne teste qu'une seule expression logique :
instructions
FIN SI
- SI age >= 18 ALORS → condition sur un âge
- SI note > 10 ALORS → condition sur une note
- SI temperature < 0 ALORS → condition sur température
Opérateurs de comparaison
Symboles de comparaison
- = : égal à
- ≠ ou <> : différent de
- < : strictement inférieur à
- > : strictement supérieur à
- <= : inférieur ou égal à
- >= : supérieur ou égal à
- SI a = b ALORS → test d'égalité
- SI x ≠ y ALORS → test de différence
- SI note >= 10 ALORS → test de seuil
- SI temperature < 0 ALORS → test de seuil inférieur
Conditions composées
Combinaison de plusieurs conditions
Une condition composée combine plusieurs conditions simples avec des opérateurs logiques :
instructions
FIN SI
- SI age >= 18 ET permis = "oui" ALORS → conduire autorisé
- SI note1 >= 10 ET note2 >= 10 ALORS → admis
- SI a > 0 ET b > 0 ET c > 0 ALORS → triangle possible
Opérateurs logiques
ET, OU, NON
- ET : toutes les conditions doivent être vraies
- OU : au moins une condition doit être vraie
- NON : inverse la valeur de vérité
| A | B | A ET B |
|---|---|---|
| Vrai | Vrai | Vrai |
| Vrai | Faux | Faux |
| Faux | Vrai | Faux |
| Faux | Faux | Faux |
| A | B | A OU B |
|---|---|---|
| Vrai | Vrai | Vrai |
| Vrai | Faux | Vrai |
| Faux | Vrai | Vrai |
| Faux | Faux | Faux |
Priorité des opérateurs
Ordre d'évaluation
- NON : priorité la plus élevée
- ET : priorité moyenne
- OU : priorité la plus basse
- SI a = 5 ET b = 10 OU c = 20 ALORS
→ D'abord ET, puis OU - SI a = 5 ET b = 10 OU c = 20 ET d = 30 ALORS
→ D'abord les ET, puis le OU - SI NON a = 5 ET b = 10 ALORS
→ D'abord NON, puis ET
Exemple complet d'algorithme
Validation d'une carte bancaire
Variables numero, code, date_expiration, solde : Chaîne
Variables age : Entier
Afficher("Entrez le numéro de carte : ")
Lire(numero)
Afficher("Entrez le code PIN : ")
Lire(code)
Afficher("Entrez la date d'expiration : ")
Lire(date_expiration)
Afficher("Entrez votre âge : ")
Lire(age)
Afficher("Entrez le solde : ")
Lire(solde)
SI (Longueur(numero) = 16) ET (EstNumerique(numero)) ALORS
SI (Longueur(code) = 4) ET (EstNumerique(code)) ALORS
SI (DateValide(date_expiration)) ET (age >= 18) ALORS
SI (solde >= 10) ALORS
Afficher("Paiement validé")
SINON
Afficher("Solde insuffisant")
FIN SI
SINON
Afficher("Date expirée ou âge insuffisant")
FIN SI
SINON
Afficher("Code PIN invalide")
FIN SI
SINON
Afficher("Numéro de carte invalide")
FIN SI
Cet exemple montre :
- Des conditions simples (Longueur(numero) = 16)
- Des conditions composées avec ET
- Des structures conditionnelles imbriquées
- Des validations multiples avant l'action finale
Parenthèses et groupement
Contrôle de l'ordre d'évaluation
Les parenthèses permettent de modifier l'ordre d'évaluation des opérateurs logiques :
→ D'abord A OU B, puis le résultat ET C
- SI (a = 5 OU b = 10) ET c = 20 ALORS
→ a=5 ou b=10, ET c=20 - SI a = 5 ET (b = 10 OU c = 20) ALORS
→ a=5, ET (b=10 ou c=20) - SI ((a = 5 OU b = 10) ET c = 20) OU d = 30 ALORS
→ ((a=5 ou b=10) et c=20) ou d=30
Applications concrètes
Où utiliser les conditions composées ?
- 1 Systèmes de sécurité : accès autorisé si authentifié ET rôle approprié
- 2 Validation de formulaires : champs remplis ET format correct
- 3 Jeux : collision si position A ET vitesse > seuil
- 4 Calculs de tarifs : réduction si client fidèle OU panier > seuil
Variables client_fidele, panier, age, reduction : Réel
SI (client_fidele = "oui") ET (panier > 100) ALORS
reduction ← 15 // 15% de réduction
SINON
SI (age < 25) OU (age > 65) ALORS
reduction ← 10 // 10% de réduction
SINON
reduction ← 0
FIN SI
FIN SI
Afficher("Réduction appliquée : ", reduction, "%")
Exercice d'application
Problème à résoudre
Écrire un algorithme qui détermine si un candidat est admis à un concours sachant que :
- Il doit avoir une note de français ≥ 10
- Il doit avoir une note de maths ≥ 10
- Il est admis si la moyenne des deux notes est ≥ 12
- Il est également admis s'il a une note de français ≥ 15
On suppose que l'utilisateur entre les notes de français et de maths.
Solution de l'exercice
Correction détaillée
Variables francais, maths, moyenne : Réel
Afficher("Entrez la note de français : ")
Lire(francais)
Afficher("Entrez la note de maths : ")
Lire(maths)
moyenne ← (francais + maths) / 2
SI (francais >= 10) ET (maths >= 10) ALORS
SI (moyenne >= 12) OU (francais >= 15) ALORS
Afficher("Admis")
SINON
Afficher("Refusé")
FIN SI
SINON
Afficher("Refusé")
FIN SI
- On vérifie d'abord que les deux notes sont ≥ 10 (ET)
- Si c'est le cas, on vérifie si la moyenne ≥ 12 OU français ≥ 15 (OU)
- On combine des conditions simples et composées
Exercice supplémentaire
Système de transport
Écrire un algorithme qui détermine le mode de transport optimal en fonction des conditions météo et de la distance à parcourir :
- Si la distance est ≤ 2 km : marche ou vélo
- Si la distance est > 2 km et ≤ 10 km : vélo ou bus
- Si la distance est > 10 km : bus ou voiture
- Si il pleut : vélo exclu
- Si il neige : bus exclu
- Si la température est < 0°C : marche exclue
On suppose que l'utilisateur entre la distance, la température et la météo (pluie/neige/soleil).
Solution de l'exercice supplémentaire
Correction détaillée
Variables distance, temperature : Réel
Variables meteo : Chaîne
Afficher("Entrez la distance (km) : ")
Lire(distance)
Afficher("Entrez la température (°C) : ")
Lire(temperature)
Afficher("Entrez la météo (pluie/neige/soleil) : ")
Lire(meteo)
SI distance <= 2 ALORS
SI (meteo ≠ "pluie") ET (temperature >= 0) ALORS
Afficher("Marche ou vélo")
SINON
SI (meteo ≠ "pluie") ET (temperature >= 0) ALORS
Afficher("Marche")
SINON
SI (meteo ≠ "pluie") ALORS
Afficher("Vélo")
SINON
Afficher("Transport public ou voiture")
FIN SI
FIN SI
FIN SI
SINON
SI distance <= 10 ALORS
SI meteo ≠ "pluie" ALORS
Afficher("Vélo")
SINON
SI meteo ≠ "neige" ALORS
Afficher("Bus")
SINON
Afficher("Voiture")
FIN SI
FIN SI
SINON
SI meteo ≠ "neige" ALORS
Afficher("Bus")
SINON
Afficher("Voiture")
FIN SI
FIN SI
FIN SI
Cet algorithme montre l'utilisation de nombreuses conditions composées avec ET et OU, ainsi que des structures conditionnelles imbriquées pour traiter tous les cas possibles.
Optimisation des conditions
Meilleures pratiques
- Utilisez des parenthèses pour clarifier l'ordre d'évaluation
- Évitez les conditions trop complexes (max 3-4 opérateurs)
- Utilisez des variables booléennes pour simplifier les expressions
- Structurez votre code avec une indentation claire
Au lieu d'écrire :
On peut écrire :
condition2 ← (c = 20 ET d ≠ 0)
SI condition1 OU condition2 ALORS
Complexité des conditions
Analyse de performance
| Type de condition | Complexité | Exemple | Note |
|---|---|---|---|
| Simple | O(1) | SI a > 5 ALORS | Très rapide |
| Avec ET | O(1) | SI a > 5 ET b < 10 ALORS | Rapide |
| Avec OU | O(1) | SI a > 5 OU b < 10 ALORS | Rapide |
| Imbriquées | O(n) | SI a > 5 ALORS SI b < 10 ALORS | Dépend de la profondeur |
- Placer les conditions les plus probables en premier
- Éviter les répétitions de calculs dans les conditions
- Utiliser des variables pour stocker des résultats intermédiaires
- Minimiser l'imbrication des structures conditionnelles
Résumé
Points clés
- Ne testent qu'une seule expression logique
- Utilisent des opérateurs de comparaison (=, ≠, <, >, ≤, ≥)
- Syntaxe : SI condition ALORS instructions FIN SI
- Combinent plusieurs conditions avec ET, OU, NON
- Ont un ordre de priorité : NON > ET > OU
- Utilisent des parenthèses pour contrôler l'ordre d'évaluation
- Systèmes de validation
- Calculs conditionnels
- Contrôles de sécurité
- Jeux et simulations
Conclusion
Félicitations !
Continuez à pratiquer pour renforcer vos compétences en algorithmique