Autres articles / Other articles

Comparaisons et branchements

publication: 7 février 2023 / mis à jour 23 février 2023

Read this page in english

 

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