Jusqu’à maintenant, notre programme exécute toutes les instructions les unes après les autres. Lors de l’étape précédente, nous avons vu qu’à l’aide de boucles, le programme peut réitérer l’exécution de certaines instructions. Lors de la présente étape d’initiation à FreeBasic, nous allons aborder les tests conditionnels. Nous en profiterons pour introduire cette notion dans différents langages afin de démontrer la relative portabilité des programmes d’un langage à l’autre.
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 Basic : IF condition réalisée THEN action.
Exemple :
If age>=18 Then Print "Le sujet est majeur"
L’action PRINT “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 AND (et), OR (ou), XOR (ou exclusif).
Exemple :
If (age>=18) AND (age<=30) Then… : Si l’âge est compris entre 18 et 30 ans (bornes comprises) alors…
If (age=30) OR (age=45) Then… : 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) AND (age=45) Then… 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") And ((CA>1000000) And (CA<5000000))) Or ((typeclient="PME") And ((CA>10000) And (CA<50000))) Then 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 (Then). Mais quid si l’action n’est pas remplie ? L’instruction Else permettra l’exécution d’action si la condition n’est pas remplie.
Exemple :
If age>=18 Then Print "Le sujet est majeur" Else Print "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 Then If… Then 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;
Calcul d’emprunt : ajout d’une ligne d’intitulé de colonne
Pour reprendre l’exemple qui nous sert de fil conducteur depuis le début de cette initiation à FreeBasic, nous allons ajouter un test conditionnel qui ajoutera à chaque période de douze mois (douze échéances) un intitulé de colonne “Capital restant – Intérêts – Capital remboursé – Capital restant” :
if (i+11) mod 12=0 then print "Capital restant - Intérêts - Capital remboursé - Capital restant" end if
Explication :
if (i+11) mod 12=0 : signifie Si le reste de la division (i+11)/12 est nul Alors… (le reste de la division est nul lorsque l’échéance en cours (i) est la première d’une période de 12 mois…
Comme d’habitude, le code-source du programme de calcul d’emprunt est téléchargeable ci-après.
Approfondir le sujet : Initiation au langage Basic (série d’articles)
Derniers articles parBenoît RIVIERE (voir tous)
- Projet IXP (v1.2beta) : quelques nouvelles de mon interpréteur d’expressions - dimanche 1 décembre 2024
- Nouveautés de l’interpréteur de formules de calcul (v1.1) - dimanche 3 novembre 2024
- Dématérialisation de la facturation : nouvelles mentions obligatoires - lundi 28 octobre 2024
- Interpréteur de formules de calcul en Python - dimanche 13 octobre 2024
- Les données de la facturation électronique - mercredi 9 octobre 2024
Pingback: EXCEL et VBA : Manipuler des plages de cellules dans des variables tableaux | Audit & Systèmes d'Information
Bonsoir Monsieur,
Je vous remercie sincèrement parce que grâce à votre cours, c’est maintenant je comprends mes problèmes quand je fait mon programmation.
Bien cordialement,
NGUYEN Nhu Phuong
Bonjour,
Ravi que mon article ait atteint son objectif.
Bien cordialement,
Benoît RIVIERE
Pingback: Analyse de données : interroger une base de données avec une requête SQL – Audit & Systèmes d'Information
Pingback: Les opérateurs de comparaison – Audit & Systèmes d'Information
Pingback: Algèbre de Boole (ou arithmétique booléenne) - Audit & Systèmes d'Information
Pingback: Fusionner plusieurs fichiers PDF avec Python - Audit & Systèmes d'Information