Un test conditionnel permet de n’exécuter une instruction ou ensemble d’instructions que si une ou plusieurs conditions sont remplies.
Condition simple : SI condition réalisée ALORS action
Les tests conditionnels sont une structure de programmation courante, facile à programmer qui se traduit ainsi en C : IF condition réalisée THEN action. La condition doit être entourée de parenthèses.
Exemple :
If (age>=18) { printf "Le sujet est majeur"; }
L’action PRINTF “Le sujet est majeur” ne sera exécutée que si le contenu de la variable age est supérieur ou égal à 18.
Le test conditionnel repose sur une comparaison. C’est la réalisation ou non de la condition qui conditionne l’action à exécuter.
Expression de la comparaison :
La condition utilise une variable (dans l’exemple précédent la variable age), des opérateurs de comparaison (ici : >=) et des nombres et du texte. La notion de variable a déjà été introduite.
Les opérateurs de comparaison utilisés pour exprimer la condition sont pour une bonne part repris du monde des mathématiques :
- < (inférieur à),
- > (supérieur à),
- <> (différent de),
- = (égal à),
- <= (inférieur ou égal à),
- >= (supérieur ou égal à),
- NOT (non)
Expression de conditions multicritères :
Le précédent exemple ne comprenait qu’un seul critère. La condition peut comprendre plusieurs critères. Chaque critère est lié au précédent par un opérateur && (et) ou || (ou).
Exemple :
If (age>=18) && (age<=30)… : Si l’âge est compris entre 18 et 30 ans (bornes comprises) alors…
If (age=30) || (age=45)… : Si l’âge est égal à 18 ans ou à 45 alors…
Attention aux conditions impossibles : par exemple, pour reprendre l’exemple précédent, la condition : If (age=30) && (age=45)… est irréalisable puisque la variable (ou un être humain normalement constitué d’ailleurs) ne peut simultanément prendre les valeurs 30 et 45.
Il est parfaitement possible d’imbriquer des conditions et de définir les priorités entre elles à l’aide de parenthèses. Dans ce cas, le régime des priorités répond aux mêmes règles qu’en mathématiques. A noter, chaque parenthèse ouverte doit être refermée…
Exemple :
If ((typeclient="Grand Compte") && ((CA>1000000) && (CA<5000000))) || ((typeclient="PME") && ((CA>10000) && (CA<50000))) { TauxRemise = 0.10 }
Si le client est un grand compte et que son chiffre d’affaires est compris entre 1 et 5 millions ou s’il s’agit d’une PME et que son CA est compris entre 10 et 50 K€ alors le taux de remise appliqué est de 10 %.
Et sinon ?
Pour l’instant, nous avons programmé l’action à réalisé si la condition est remplie. Mais quid si l’action n’est pas remplie ? L’instruction Else permettra l’exécution d’une action alternative si la condition n’est pas remplie.
Exemple :
If (age>=18) { Printf "Le sujet est majeur"; } Else { Printf "Le sujet est mineur"; }
Normalement, si vous avez bien suivi le cours, vous avez tout compris…
Tests conditionnels imbriqués :
La réalité des choses (et quelquefois la perversité du programmeur, poète à sa manière) conduit le programmeur à imbriquer des tests.
Ces tests seront effectués jusqu’à ce qu’une condition ne soit pas remplie ; dans ce cas le programme sort de la séquence de tests et continue son exécution.
La structure de programmation est la suivante :
If condition { If… { Else {…} : SI ALORS SINON SI ALORS SINON…
Le programmeur peut laisser libre cours à son imagination…
Et dans d’autres langage ?
La structure de programmation est “relativement” semblable d’un langage à l’autre.
Basic :
If age>=18 Then Etat="Majeur" Else Etat="Mineur"
VBA :
If age>=18 Then Etat="Majeur" Else Etat="Mineur"
(EndIf clôturera la structure conditionnelle si le test est présenté sur plusieurs lignes)
DELPHI :
If age>=18 Then Etat:='Majeur' Else Etat='Mineur';
PHP :
if($age >= 18): $etat="Majeur"; else: $etat="Mineur"; endif;
Approfondir le sujet : programmer en langage C


Derniers articles parBenoît RIVIERE (voir tous)
- Projet IXP (v1.21beta) : nouvelle version en ligne - mardi 7 janvier 2025
- Excel : conserver les zéros non significatifs à gauche - dimanche 5 janvier 2025
- Excellente année 2025 ! - mercredi 1 janvier 2025
- Projet IXP (v1.21beta) : contrôles de cohérences et gestion MULTIFEC - lundi 30 décembre 2024
- Joyeuses fêtes de fin d’année ! - mardi 24 décembre 2024