IF ... THEN ... END
Si vous n'avez pas besoin de la clause ELSE, vous pouvez l'omettre de
la structure. L'exemple suivant vérifie si l'objet au niveau 1 est plus
grand que celui au niveau 2 et les échange si nécessaire.
IF DUP2
f
THEN SWAP END
Remarquez l'utilisation de DUP2 pour copier les objets. Les copies
sont ensuite détruites par la comparaison
f.
La section
«
SORT (tri
d'une liste)
»
en page 270 fournit un autre exemple de IF
THEN ... END.
1FT (commande If-Then-End)
Vous auriez pu écrire l'exemple précédent en utilisant la commande
1FT au lieu de la structure de programme
DUP2
f
« SWAP» 1FT
La séquence DUP2
f
laisse un indicateur dans la pile, le programme
.:;:
::;
~.j
A P : : , : . se place dans la pile et la commande 1 FT utilise
l'indicateur et le programme comme arguments. Si l'indicateur est
vrai, 1FT évalue le programme; si l'indicateur est faux, 1FT élimine le
programme. Le résultat est identique
à
celui de la structure de
programme.
Détection d'erreur
Dans certains cas, vous pouvez prédire qu'une erreur est possible
pendant l'exécution d'un programme. Les erreurs arrêtent normale-
ment l'exécution des programmes; mais vous pouvez utiliser
détecter
l'erreur en plaçant la commande qui la provoque dans une structure
particulière.
Le problème (sin x)/x, par exemple donne une erreur
«
Infinite
Result» lorsque x
=
O. Néanmoins, vous pouvez définir (sin 0)/0
1 en utilisant :
IFERR X SIN X / TH EN DROP2 1 END
26 : Structures de programmes
227