Cours structures conditionnelles en algorithmique et langage
Télécharger PDFLes structures conditionnelles
Les structures conditionnelles sont fondamentales en programmation et en algorithmique. Elles permettent de n'exécuter une séquence d'instructions que si une condition spécifique est vraie. Ce mécanisme de décision est crucial pour créer des programmes qui s'adaptent à différentes situations.
En résumé, une structure conditionnelle est un test qui évalue une condition et oriente l'exécution du programme en fonction du résultat de cette évaluation (vrai ou faux).
Qu'est-ce qu'une condition ?
Une condition est une expression logique qui, à un moment donné de l'exécution d'un programme, est soit vraie (TRUE), soit fausse (FALSE). Elle est souvent le résultat d'une comparaison ou d'une combinaison de comparaisons.
Les opérateurs de comparaison
Les opérateurs de comparaison couramment utilisés pour former une condition sont :
=ou==(égal à)≠ou!=(différent de)<(inférieur à)<=(inférieur ou égal à)>(supérieur à)>=(supérieur ou égal à)
Conditions simples et conditions composées
Une condition peut être simple ou composée :
- Condition simple : C'est une expression qui utilise un seul opérateur de comparaison. Par exemple :
x > 0. - Condition composée : Elle est formée de plusieurs conditions simples reliées par des opérateurs logiques.
Les opérateurs logiques
Les opérateurs logiques permettent de combiner des conditions simples :
- ET (AND) : La condition composée est vraie si TOUTES les conditions simples qui la composent sont vraies.
- OU (OR) : La condition composée est vraie si AU MOINS UNE des conditions simples qui la composent est vraie.
- NON (NOT) : Inverse la valeur de vérité d'une condition.
Exemples de conditions composées :
xest compris entre 2 et 6 :(x > 2) ET (x < 6)nappartient à l'intervalle ]2,4] :(n > 2) ET (n <= 4)
Les formes conditionnelles en algorithmique
En algorithmique, il existe différentes manières de structurer un test, en fonction de la complexité de la décision à prendre.
1. La forme conditionnelle simple (ou réduite)
Cette forme permet d'exécuter un bloc d'instructions uniquement si la condition est vraie. Si la condition est fausse, le programme passe à l'instruction suivante sans exécuter le bloc.
Structure :
Si condition Alors
Instructions à exécuter (si la condition est VRAIE)
Fin Si
Remarque : Dans le cas où l'évaluation de la condition est FAUX, les instructions contenues dans le bloc "Alors" ne seront pas exécutées.
Exemple 1 : Calcul de la valeur absolue (forme simple)
Algorithme qui calcule et affiche la valeur absolue d'un nombre quelconque lu au clavier.
Algorithme Valeur_Absolue_Simple
Var : x, abs : entier
Début
Ecrire('Entrer un entier')
Lire(x)
abs ← x
Si (x < 0) Alors
abs ← -x
Fin Si
Ecrire('La valeur absolue de ', x, ' est ', abs)
Fin
2. La forme conditionnelle complète (ou alternative)
Cette forme permet d'exécuter un bloc d'instructions si la condition est vraie, OU un autre bloc d'instructions si la condition est fausse.
Structure :
Si condition Alors
Instructions 1 (si la condition est VRAIE)
Sinon
Instructions 2 (si la condition est FAUSSE)
Fin Si
Exemple 2 : Calcul de la valeur absolue (forme alternative)
Algorithme qui calcule et affiche la valeur absolue d'un nombre quelconque lu au clavier.
Algorithme Valeur_Absolue_Alternative
Var : x, abs : entier
Début
Ecrire('Entrer un entier')
Lire(x)
Si (x >= 0) Alors
abs ← x
Sinon
abs ← -x
Fin Si
Ecrire('La valeur absolue de ', x, ' est ', abs)
Fin
Exemple 3 : Vérifier la divisibilité par 3
Algorithme qui demande un nombre entier à l'utilisateur et affiche s'il est divisible par 3.
Algorithme Divisible_par3
Var : n : entier
Début
Ecrire('Entrer un entier')
Lire(n)
Si (n % 3 == 0) Alors
Ecrire(n, ' est divisible par 3')
Sinon
Ecrire(n, ' n''est pas divisible par 3')
Fin Si
Fin
Exemple 4 : Calculer le maximum de deux entiers
Version 1 : avec une forme alternative
Algorithme Maximum1
Var : x,y,maxi : entier
Début
Ecrire('Entrer deux entiers x et y')
Lire(x,y)
Si (x < y) Alors
maxi ← y
Sinon
maxi ← x
Fin Si
Ecrire('Le maximum de ', x, ' et ', y, ' est ', maxi)
Fin
Version 2 : avec une forme simple (initialisation + test)
Algorithme Maximum2
Var : x,y,maxi : entier
Début
Ecrire('Entrer deux entiers x et y')
Lire(x,y)
maxi ← x // Supposons que x est le maximum initialement
Si (x < y) Alors
maxi ← y // Si y est plus grand, mettons à jour maxi
Fin Si
Ecrire('Le maximum de ', x, ' et ', y, ' est ', maxi)
Fin
3. La forme conditionnelle généralisée (tests imbriqués)
Une condition simple permet de choisir entre deux actions (vrai/faux). Cependant, dans de nombreux cas, le choix doit se faire entre plus de deux options. Pour cela, on utilise des structures conditionnelles imbriquées ou une forme généralisée du "Si... Alors... Sinon...".
Structure :
Si condition 1 Alors
Instructions 1
Sinon Si condition 2 Alors
Instructions 2
Sinon Si condition 3 Alors
Instructions 3
...
Sinon
Instructions N (si aucune des conditions précédentes n'est vraie)
Fin Si
Fin Si
Fin Si (autant de Fin Si que de Si)
Les structures de tests imbriqués sont un outil indispensable à l'organisation et à l'optimisation des algorithmes complexes.
Exemple 5 : État de l'eau selon la température
Un algorithme qui donne l'état de l'eau selon sa température (solide, liquide, gazeux).
Algorithme Température_Eau
Var : Temp : réel
Début
Ecrire('Entrer la température de l''eau')
Lire(Temp)
Si (Temp <= 0) Alors
Ecrire('C''est de la glace (état solide)')
Sinon Si (Temp < 100) Alors // Implicitement (Temp > 0 ET Temp < 100)
Ecrire('C''est du liquide (état liquide)')
Sinon // Implicitement (Temp >= 100)
Ecrire('C''est de la vapeur (état gazeux)')
Fin Si
Fin
Exemple 6 : Signe du produit de deux nombres
Algorithme qui détermine si le produit de deux nombres est négatif, positif ou nul.
Algorithme Signe_Produit
Var : x,y : réels
Début
Ecrire('Entrer deux réels x et y')
Lire(x,y)
Si (x = 0) OU (y = 0) Alors
Ecrire("Le produit est nul")
Sinon Si ( (x < 0 ET y < 0) OU (x > 0 ET y > 0) ) Alors
Ecrire("Le produit est positif")
Sinon // Un des nombres est négatif et l'autre positif
Ecrire("Le produit est négatif")
Fin Si
Fin
4. Le choix multiple (structure "Selon")
La structure de choix multiple, souvent appelée "Selon" en algorithmique, est utilisée lorsque plusieurs chemins d'exécution dépendent de la valeur exacte d'une seule expression ou variable. C'est une alternative plus lisible aux séries de "Sinon Si" pour certains cas.
Structure :
Selon <expression> faire
Valeur1: Première séquence d'instructions;
Valeur2: Deuxième séquence d'instructions;
...
ValeurN: Nème séquence d'instructions;
Sinon: (N+1)ème séquence d'instructions; // Optionnel : si aucune valeur ne correspond
Fin Selon
Exemple 7 : Mois ayant 30 jours
Algorithme qui détermine si un mois donné (par son numéro) a 30 jours.
Algorithme MoisA30Jours
Var : mois : Entier
résultat : Booléen
Début
Ecrire('Entrer le numéro du mois (1-12)')
Lire(mois)
Selon mois faire
4, 6, 9, 11 : résultat ← VRAI
Sinon : résultat ← FAUX
Fin Selon
Si (résultat) Alors
Ecrire('Le mois ', mois, ' a 30 jours.')
Sinon
Si (mois = 2) Alors
Ecrire('Le mois de février a 28 ou 29 jours.')
Sinon
Ecrire('Le mois ', mois, ' a 31 jours.')
Fin Si
Fin Si
Fin
De l'algorithmique au langage C
Les structures conditionnelles en algorithmique ont des équivalents directs dans les langages de programmation comme le C.
Traduction de "Si...Alors...Sinon"
La structure Si...Alors...Sinon se traduit en C par if...else if...else.
Forme simple réduite :
if (condition_réalisée) {
// liste d'instructions à exécuter
}
Forme complète ou alternative :
if (condition_réalisée) {
// liste d'instructions (si VRAI)
} else {
// autre série d'instructions (si FAUX)
}
Forme généralisée (imbriquée) :
if (condition1) {
// Instructions si condition1 est vraie
} else if (condition2) {
// Instructions si condition2 est vraie (et condition1 fausse)
} else if (condition3) {
// Instructions si condition3 est vraie (et condition1 et condition2 fausses)
}
...
else {
// Instructions si aucune des conditions précédentes n'est vraie
}
Traduction de "Selon" (Choix multiple)
La structure Selon se traduit en C par l'instruction switch. Elle est utilisée pour exécuter différentes actions en fonction de la valeur d'une seule variable.
Structure :
switch (variable) {
case Valeur1:
// Liste d'instructions pour Valeur1
break;
case Valeur2:
// Liste d'instructions pour Valeur2
break;
...
case ValeurN:
// Liste d'instructions pour ValeurN
break;
default:
// Liste d'instructions pour toute autre valeur de la variable
}
Remarque importante : Vous devez obligatoirement mettre une instruction break; à la fin de chaque bloc case. Si vous ne le faites pas, alors l'ordinateur continuera à lire et exécuter les instructions des blocs case suivants, même si leurs valeurs ne correspondent pas (phénomène appelé "fall-through"). L'instruction break; commande en fait de "sortir" du bloc switch.
Foire Aux Questions (FAQ)
Qu'est-ce qu'une structure conditionnelle en programmation ?
Une structure conditionnelle est un élément de code qui permet à un programme de prendre des décisions. Elle exécute des instructions spécifiques uniquement si une condition donnée est évaluée comme vraie, ou d'autres instructions si la condition est fausse, guidant ainsi le flux d'exécution du programme.
Quelle est la différence entre un "Si...Alors" et un "Si...Alors...Sinon" ?
Un "Si...Alors" (forme simple) exécute un bloc d'instructions seulement si la condition est vraie. Si la condition est fausse, le programme continue après le bloc. Un "Si...Alors...Sinon" (forme complète ou alternative) exécute un premier bloc d'instructions si la condition est vraie, et un second bloc d'instructions différent si la condition est fausse, garantissant toujours une action.
Quand faut-il utiliser une structure "Selon" (switch) plutôt qu'une série de "Si...Sinon Si" ?
La structure "Selon" (switch en C) est préférable lorsque vous devez tester les différentes valeurs possibles d'une seule variable ou expression. Elle offre une meilleure lisibilité et est souvent plus performante qu'une longue série de "Si...Sinon Si" lorsque le nombre de cas est élevé et basé sur des valeurs discrètes.