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 :
|