Imbrication de conditions | Algorithmique Seconde
Introduction
Découvrez comment imbriquer des structures conditionnelles
Définition de l'imbrication
Qu'est-ce que l'imbrication ?
L'imbrication de conditions consiste à placer une structure conditionnelle à l'intérieur d'une autre structure conditionnelle.
Cela permet de tester plusieurs conditions successivement ou en cascade.
instructions
SI condition_intérieure ALORS
instructions
FIN SI
FIN SI
Exemple simple d'imbrication
Structure conditionnelle imbriquée
Variables age, permis : Entier
Afficher("Entrez votre âge : ")
Lire(age)
SI age >= 18 ALORS
Afficher("Vous êtes majeur")
Afficher("Entrez votre situation de permis (1=oui, 0=non) : ")
Lire(permis)
SI permis = 1 ALORS
Afficher("Vous pouvez conduire")
SINON
Afficher("Vous ne pouvez pas conduire")
FIN SI
SINON
Afficher("Vous êtes mineur")
FIN SI
La structure conditionnelle intérieure (sur le permis) n'est exécutée que si la condition extérieure (âge ≥ 18) est vraie.
La condition intérieure dépend de la condition extérieure.
Niveaux d'imbrication
Profondeur de l'imbrication
- Niveau 1 : Une condition dans une autre (simple)
- Niveau 2 : Une condition dans une condition dans une autre
- Niveau 3 : Trois niveaux d'imbrication
- etc. : On peut aller plus loin si nécessaire
SI condition2 ALORS
SI condition3 ALORS
instructions
FIN SI
FIN SI
FIN SI
Indentation et lisibilité
Importance de l'indentation
L'indentation permet de :
- Visualiser la hiérarchie des structures
- Comprendre facilement le flot d'exécution
- Repérer les erreurs de syntaxe
- Améliorer la lisibilité du code
SI condition1 ALORS
instructions1
SI condition2 ALORS
instructions2
SI condition3 ALORS
instructions3
FIN SI
FIN SI
FIN SI
SI condition1 ALORS
instructions1
SI condition2 ALORS
instructions2
SI condition3 ALORS
instructions3
FIN SI
FIN SI
FIN SI
Exemple complexe
Système de classification
Variables note, age, nationalite : Chaîne
Variables score : Réel
Afficher("Entrez la note : ")
Lire(note)
Afficher("Entrez l'âge : ")
Lire(age)
Afficher("Entrez la nationalité : ")
Lire(nationalite)
SI note >= 10 ALORS
SI age >= 18 ALORS
SI nationalite = "Français" ALORS
score ← 100
Afficher("Candidat retenu avec score : ", score)
SINON
SI note >= 15 ALORS
score ← 90
Afficher("Candidat retenu avec score : ", score)
SINON
score ← 50
Afficher("Candidat en attente de validation")
FIN SI
FIN SI
SINON
SI note >= 14 ALORS
score ← 80
Afficher("Candidat retenu avec score : ", score)
SINON
Afficher("Candidat refusé")
FIN SI
FIN SI
SINON
Afficher("Note insuffisante")
FIN SI
Cet exemple montre :
- 3 niveaux d'imbrication
- Conditions dépendantes les unes des autres
- Différents chemins d'exécution possibles
- Importance de l'indentation pour la lisibilité
Trace d'exécution
Suivi de l'exécution
Soit : note = 16, age = 20, nationalite = "Français"
| Instruction | Condition | Résultat | Action |
|---|---|---|---|
| Lecture de note | - | note = 16 | Affectation |
| SI note >= 10 | 16 >= 10 | Vrai | Entre dans le bloc |
| SI age >= 18 | 20 >= 18 | Vrai | Entre dans le bloc |
| SI nationalite = "Français" | "Français" = "Français" | Vrai | score = 100 |
- Comprendre le flot d'exécution
- Détecter les erreurs logiques
- Valider le comportement attendu
- Apprendre à lire un algorithme
Applications concrètes
Où utiliser l'imbrication ?
- 1 Systèmes de validation : formulaire avec dépendances
- 2 Calculs de tarifs : réductions selon plusieurs critères
- 3 Jeux : collisions, niveaux, scores
- 4 Contrôles de sécurité : accès selon rôles et permissions
Variables age, panier, membre, reduction : Réel
Afficher("Entrez votre âge : ")
Lire(age)
Afficher("Entrez le montant du panier : ")
Lire(panier)
Afficher("Êtes-vous membre ? (1=oui, 0=non) : ")
Lire(membre)
SI age >= 65 ALORS
reduction ← 20 // 20% de réduction
SINON
SI age <= 12 ALORS
reduction ← 30 // 30% de réduction
SINON
SI membre = 1 ALORS
SI panier > 100 ALORS
reduction ← 15 // 15% de réduction
SINON
reduction ← 5 // 5% de réduction
FIN SI
SINON
reduction ← 0
FIN SI
FIN SI
FIN SI
Afficher("Réduction appliquée : ", reduction, "%")
Exercice d'application
Problème à résoudre
Écrire un algorithme qui détermine le type de triangle en fonction de la longueur de ses côtés :
- Si les trois côtés sont égaux : triangle équilatéral
- Si deux côtés sont égaux et le troisième est différent : triangle isocèle
- Si les trois côtés sont différents : triangle scalène
- Si le triangle est isocèle et que le carré d'un côté égale la somme des carrés des deux autres : triangle isocèle rectangle
On suppose que l'utilisateur entre les longueurs des trois côtés a, b et c.
Solution de l'exercice
Correction détaillée
Variables a, b, c : Réel
Afficher("Entrez la longueur du côté a : ")
Lire(a)
Afficher("Entrez la longueur du côté b : ")
Lire(b)
Afficher("Entrez la longueur du côté c : ")
Lire(c)
SI (a = b) ET (b = c) ALORS
Afficher("Triangle équilatéral")
SINON
SI (a = b) OU (b = c) OU (a = c) ALORS
SI (a*a = b*b + c*c) OU (b*b = a*a + c*c) OU (c*c = a*a + b*b) ALORS
Afficher("Triangle isocèle rectangle")
SINON
Afficher("Triangle isocèle")
FIN SI
SINON
Afficher("Triangle scalène")
FIN SI
FIN SI
- On teste d'abord si le triangle est équilatéral
- Si non, on teste s'il est isocèle
- Si c'est un isocèle, on teste s'il est aussi rectangle
- Si ce n'est ni équilatéral ni isocèle, c'est scalène
Exercice supplémentaire
Système de notation
Écrire un algorithme qui détermine la mention d'un élève en fonction de sa note et de sa participation :
- Si la note est ≥ 16 : mention "Très Bien"
- Si la note est ≥ 14 : mention "Bien"
- Si la note est ≥ 12 : mention "Assez Bien"
- Si la note est ≥ 10 : mention "Passable"
- Si la note est < 10 : refusé
- Si la note est ≥ 10 mais participation = "excellente" : mention "Bien"
On suppose que l'utilisateur entre la note et la participation.
Solution de l'exercice supplémentaire
Correction détaillée
Variables note : Réel
Variables participation : Chaîne
Afficher("Entrez la note : ")
Lire(note)
Afficher("Entrez la participation (excellente/bonne/moyenne) : ")
Lire(participation)
SI note >= 16 ALORS
Afficher("Très Bien")
SINON
SI note >= 14 ALORS
Afficher("Bien")
SINON
SI note >= 12 ALORS
Afficher("Assez Bien")
SINON
SI note >= 10 ALORS
SI participation = "excellente" ALORS
Afficher("Bien")
SINON
Afficher("Passable")
FIN SI
SINON
Afficher("Refusé")
FIN SI
FIN SI
FIN SI
FIN SI
Cet algorithme montre une imbrication de 3 niveaux avec des conditions dépendantes de la note et de la participation.
Optimisation des structures
Meilleures pratiques
- Évitez les imbrications trop profondes (max 3-4 niveaux)
- Utilisez des variables intermédiaires pour simplifier
- Structurez votre code avec une indentation claire
- Commentez les parties complexes
Au lieu d'écrire une structure très imbriquée, on peut :
condition2 ← (permis = "oui")
condition3 ← (assurance = "oui")
SI condition1 ALORS
SI condition2 ALORS
SI condition3 ALORS
instructions
FIN SI
FIN SI
FIN SI
Complexité de l'imbrication
Analyse de performance
| Type de structure | Complexité | Exemple | Note |
|---|---|---|---|
| Simple | O(1) | SI a > 5 ALORS | Très rapide |
| Avec imbrication | O(n) | SI a > 5 ALORS SI b < 10 ALORS | Dépend de la profondeur |
| Profonde imbrication | O(n) | SI a > 5 ALORS SI b < 10 ALORS SI c = 0 ALORS | Plus lent avec 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 quand c'est possible
Résumé
Points clés
- Consiste à placer une structure conditionnelle dans une autre
- Permet de tester plusieurs conditions successivement
- Utilise l'indentation pour la lisibilité
- Peut atteindre plusieurs niveaux d'imbrication
- Systèmes de validation
- Calculs conditionnels
- Contrôles de sécurité
- Jeux et simulations
- Éviter les imbrications trop profondes
- Utiliser une indentation claire
- Commenter les structures complexes
- Tester avec des cas variés
Conclusion
Félicitations !
Continuez à pratiquer pour renforcer vos compétences en algorithmique