IF ... THEN ... ELSE
GW-Basic, utilisé par PC-Basic
Exemple de programmation
Pour prendre une décision concernant le déroulement du programme en fonction du résultat renvoyé par une expression.
Syntaxe:
IF expression[,] THEN statement(s)[,][ELSE statement(s)]
IF expression[,] GOTO line number[[,] ELSE statement(s)]
Commentaires:
Si le résultat de l'expression est
différent de zéro (vrai logique), le numéro de ligne THEN ou GOTO est exécuté.
Si le résultat de l'expression est zéro (faux), le numéro de ligne THEN ou
GOTO est ignoré et le numéro de ligne ELSE, s'il est présent, est exécuté.
Sinon, l'exécution continue avec
la prochaine instruction exécutable. Une virgule est autorisée avant THEN et
ELSE.
THEN et ELSE peuvent être suivis soit d'un numéro de ligne pour le
branchement, soit d'une ou plusieurs instructions à exécuter.
GOTO est
toujours suivi d'un numéro de ligne.
Si l'instruction ne contient pas le
même nombre de numéros de ligne ELSE et THEN, chaque ELSE est mis en
correspondance avec le THEN sans correspondance le plus proche.
Par exemple:
IF A=B THEN IF B=C THEN PRINT "A=C" ELSE PRINT "A < > C"
n'imprimera pas "A < > C" quand A
< > B.
Si une instruction IF...THEN est suivie d'un numéro de ligne en
mode direct, une erreur "Numéro de ligne non défini" se produit, sauf si une
instruction avec le numéro de ligne spécifié a été précédemment entrée en mode
indirect.
Étant donné que IF ..THEN...ELSE est une seule instruction, la
clause ELSE ne peut pas figurer sur une ligne distincte. Tout doit être sur une
seule ligne.
Imbrication des instructions IF
Les instructions IF...THEN...ELSE peuvent être imbriquées. L'imbrication n'est limitée que par la longueur de la ligne.
Par exemple, voici une déclaration légale :
100 IF X > Y THEN PRINT "GREATER" ELSE IF Y > X THEN & 110 PRINT "LESS THAN" 200 ELSE PRINT "EQUAL"
Tester l'égalité
Lorsque vous utilisez IF pour
tester l'égalité d'une valeur résultant d'un calcul en virgule flottante,
n'oubliez pas que la représentation interne de la valeur peut ne pas être
exacte. Par conséquent, testez par rapport à la plage sur laquelle la précision
de la valeur peut varier.
Par exemple, pour tester une variable calculée
A par rapport à la valeur 1,0, utilisez l'instruction suivante :
IF ABS
(A-1.0)<1.0E-6 THEN ...
Ce test renvoie vrai si la valeur de A est 1,0 avec
une erreur relative inférieure à 1,0E-6.
Exemples:
L'instruction suivante obtient le
numéro d'enregistrement N, si N n'est pas zéro.
200 IF N THEN OBTENIR#1,
N
Dans l'exemple suivant, un test
détermine si N est supérieur à 10 et inférieur à 20. Si N est dans cette plage,
DB est calculé et l'exécution passe à la ligne 300. Si N n'est pas dans cette
plage, l'exécution continue à la ligne 110.
100 IF (N<20) AND (N>10) THEN
DB=1979-1 : GOTO 300
110 PRINT "HORS PLAGE"
L'instruction suivante entraîne
l'envoi de la sortie imprimée soit vers le terminal, soit vers l'imprimante de
ligne, selon la valeur d'une variable (IOFLAG). Si IOFLAG est égal à zéro, la
sortie est dirigée vers l'imprimante; sinon, la sortie va au terminal.
210 IF IOFLAG THEN PRINT A$ ELSE LPRINT A$