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