Utilisation des opérateurs logiques dans Flowcode

 

Cette page vous montre comment réaliser rapidement dans Flowcode une équation en logique combinatoire.

Flowcode connaît seulement les 4 opérateurs logiques suivants :

Opérateur logique Syntaxe dans Flowcode
et
AND
ou
OR
ou-exclusif
XOR
non
NOT

On peut déjà remarquer que dans Flowcode les opérateurs logiques sont écrit en anglais et en majuscule.

Les fonctions logiques ET-NON, OU-NON et OU-Exclusif-NON n'existant pas directement on pourra les créer avec les équations suivantes :

S = NOT (A AND B)

S = NOT (A OR B)

S = NOT (A XOR B)

Mais dans Flowcode les opérateurs logiques sont des opérateurs binaires agissant sur tout un octet (et non sur un seul bit).

Pour réaliser des équations logiques dans Flowcode il faut alors prendre certaines précautions comme le montre l'exemple suivant.

 

Exemple : on veut réaliser l'équation logique S = A.B + /C avec les entrées A, B et C actionnées par 3 interrupteurs et l'état de la sortie S indiquée par une LED.

L'algorigramme réalisant une telle équation est le suivant :


La LED s'allume si on a "A et B ou pas C"

Exemple d'utilisation de la macro Allumer_LED : il suffit d'y inscrire le numéro de la LED (entre 0 et 7) à allumer (et pas une puissance de 2, ni le nom A0 de la LED, ni un nom de variable). La macro Eteindre_LED s'utilise de la même manière :


Allume la LED A0

Exemple d'utilisation de la macro Lire_Etat pour récupérer l'état d'un interrupteur dans une variable : on indique le numéro de l'interrupteur (entre 0 et 7) dans le premier champ (et pas une puissance de 2, ni le nom B0 de l'interupteur, ni un nom de variable), ainsi que le nom d'une variable (variable de type octet à créer) dans le second champ :


Récupère dans la variable a l'état de l'interrupteur B0

ATTENTION :

Le numéro zéro est systématiquement attribué à la première LED de la barre de LED quelque soit le nombre de LED. Par exemple si on a une barre composée seulement des LED A5 et A6 comme celle-ci

alors la LED A5 porte le numéro 0 pour les macros (première LED) et la LED A6 porte le numéro 1 pour les macros (deuxième LED de la barre de LED).

Il en va de même pour les macros liées aux interrupteurs.

 

 

Commentaires :

 

Remarque : comme l'opérateur NOT est un opérateur binaire, le complément binaire de 1 n'est pas 0 mais 11111110 :

NOT 1 = NOT 00000001 = 11111110 (NOT a inversé chacun des 8 bits, et pas seulement le dernier)

La conséquence est que si on ne teste pas seulement le bit de poids faible du résultat, l'opérateur NOT donnera toujours une valeur non nulle, c'est à dire une valeur "VRAIE" pour le bloc décision.

Par exemple dans l'algorigramme suivant on veut que la LED A0 ait l'état inverse de l'interrupteur B0 : la LED doit être allumée si l'interrupteur est ouvert et elle doit être éteinte si l'interrupteur est fermé. Pour cela on teste simplement le complément de A grâce à l'opérateur NOT :

 


La LED est toujours allumée quelque soit A !

Comme l'opérateur NOT est un opérateur binaire inversant chacun des 8 bits de la variable A, il renverra soit 11111111 si A=0 soit 11111110 si A=1, mais il ne renverra jamais la valeur 0. La conséquence est que dans l'algorigramme ci-dessus la LED est toujours allumée quelque soit l'état de l'interrupteur !


A retenir et à noter dans votre fiche mémo Flowcode si ce n'est pas encore fait :

  • les opérateurs AND, OR, XOR et NOT dans Flowcode sont des opérateurs binaires (agissant sur les 8 bits d'un octet)
  • pour réaliser une équation logique il faut tester seulement l'état du bit de poids faible du résultat S grâce au masque S AND 1
  • les opérateurs logiques s'écrivent toujours en MAJUSCULE dans Flowcode
  • pour associer l'état d'un interrupteur à une variable d'entrée on utilise la macro Lire_Etat
  • pour allumer une LED en fonction de la variable de sortie on utilise la macro Allumer
  • pour éteindre une LED on utilise la macro Eteindre
  • pour les macros des LED et des interrupteurs le numéro zéro est attribué au 1er élément de la barre

 

 

Retour en haut de la page

www.gecif.net

© Octobre 2021