Comparaisons et branchements
publication: 7 février 2023 / mis à jour 23 février 2023
Comparaisons et branchements
ESP32forth vous permet de comparer deux nombres sur la pile, en utilisant les opérateurs relationnels >
, <
et =
.
hex 2 3 = . \ display: 0 2 3 > \ display: 0 2 3 < \ display: ffff
Ces opérateurs consomment les deux arguments et laissent un indicateur, pour représenter le résultat booléen.
Ci-dessus, on voit que «2 est égal à 3» est faux (valeur 0), «2 est supérieur à 3» est également
faux, tandis que "2 est inférieur à 3" est vrai. Le drapeau vrai a tous les bits mis à 1, d'où la
représentation hexadécimale 16 bits ffff et la représentation signée correspondante -1.
ESP32forth fournit également les opérateurs relationnels 0=
et 0<
qui testent si le TOS est nul
et négatif, respectivement.
Les mots relationnels sont utilisés pour la ramification et le contrôle. Par exemple:
: test 0= invert if cr ." Not zero!" then ; 0 test \ no display -14 test \ display: Not zero!
Le sommet de pile est comparé à zéro et l'opérateur d'inversion (complément à un) retourne tous les
bits dans le drapeau résultant. Si le sommet de pile est différent de zéro, le mot if consomme le drapeau et s'exécute
tous les mots entre lui-même et la terminaison then
. Si le sommet de pile est nul, l'exécution saute
au mot qui suit then
. Le mot cr
émet un retour chariot (newline).
Le mot else
peut être utilisé pour fournir un autre chemin d'exécution, comme illustré ici.
: truth 0= if ." false" else ." true" then ; 1 truth \ display: true 0 truth \ display: false
Un sommet de pile non nul entraîne l'exécution de mots entre if
et else
, et les mots
entre else
et then
à ignorer. Une valeur nulle produit le comportement inverse.
Les opérateurs booléens
Le langage FORTH ne gère aucun autre type de données que des entiers traités par la pile de paramètres.
Les entiers de la version ESP32forth sont au format 32 bits. Il n'existe donc pas de type booléen en Forth, à fortiori avec ESP32forth.
Legal: site web personnel sans commerce / personal site without seling