IF

Fonction de test conditionnel simple

Grâce à cette fonction on va dire au programme de tester quelque chose et si le test se révèle vrai (true ou T) dire au programme d'exécuter une action et si le test se révèle faux (false ou nil) dire au programme d'exécuter une autre action, par exemple dans la vie de tous les jours :
Choix : si la pluie se met à tomber (choisir d'un test)
je mettrai un manteau imperméable (faire cette action)
sinon je resterai en polo (faire cette autre action)
La fonction (if) permet ce simple contrôle, je dis simple car c'est dichotomique quoiqu'il soit possible de mettre un (if) en réponse vraie à un test et plusieurs fois de suite en cascade mais le principe est de vérifier du "vrai" ou "faux".

 

Syntaxe :
Arguments :
(if test faire-ceci [sinon-faire-cela])
test Expression à évaluer
faire-ceci Si l'évaluation se vérifie, (résultat du test différent de nil),
-> ligne de code à exécuter
sinon-faire-cela (facultatif)
Dans le cas contraire, (résultat du test faire ceci égale nil),
-> autres lignes de code à exécuter (ou ne rien faire)

Dans le cas où le test se révèle exact et qu'on veuille lancer plusieurs lignes de code il faudra les encapsuler dans un (progn) voir cette commande plus loin sur le site.

Dans le cas où l'argument sinon-faire-cela n'est pas indiqué car il est facultatif ce qui signifie qu'il n'est pas nécessaire de dire explicitement en code ce qu'il faut faire si le test faire-ceci se révèle FAUX.
Si cet argument n'est pas clairement exprimé le programme continue tout simplement.

Exemples :

syntaxe

résultat du test

Valeur renvoyée

 IF_01

faux

NON

 IF_02

vrai

OUI

 IF_03

vrai

Correct

 IF_04

faux

Incorrect

Autre exemple que vous pouvez tester :

IF_06

Ce qui équivaut à vérifier le contenu de la variable "age",

  • si ce contenu est inférieur à 18 la variable "tarif" prendra la valeur "gratuit"
  • si ce n'est pas le cas la variable "tarif" prendra la valeur "adulte".

Ensuite dans le programme on pourra refaire un test sur la variable "tarif" et en fonction de son contenu lancer telle ou telle autre option.

parenthèses_01Attention à la susceptibilité du logiciel lorsqu'on fait des tests sur des  valeurs numériques, certaines valeurs ne sont pas considérées comme égales même si le bon sens humain les considéreraient comme l'étant.
Donc je vous mets en garde de tester les valeurs qui sont sujet au test de la commande (if) car il existe des solutions pour contourner cette "erreur" informatique que vous verrez avec les fonctions (equal) et (eq) mais aussi fuzz.
Avant de douter de la fonction (if) il faut douter de l'ordinateur comme vous allez le voir :IF_05
Vous pourriez croire que le résultat renvoyé par cette ligne de code sera vrai et pourtant l'ordinateur va renvoyer nil par erreur.
J'en montre un exemple dans les opérateurs de comparaison avec la fonction (eq).
c'est un souci de codage des nombres dans le système d'opération qui en est la cause et ce n'est pas le sujet ici, toutefois, ne perdez pas de vue qu'il existe de telles "erreurs" et que ma mise en garde n'est pas anodine.

Haut de page

revenir au menu "boucles et conditions"

26 mai 2017