Section courante

A propos

Section administrative du site

Les opérateurs

Les opérateurs relationnels

Un opérateur relationnel détermine si une relation spécifique entre deux expressions est vraie. Il renvoie une valeur de -1 si la relation est vraie et une valeur de 0 si la relation est fausse. Vous ne percevez pas directement le résultat de la comparaison; vous utilisez plutôt le résultat pour contrôler l'exécution de votre programme.

Vous utilisez couramment des opérateurs relationnels avec une commande IF...THEN. La commande IF...THEN utilise le -1 ou 0 (appelé un drapeau ou indicateur) pour déterminer l'action à entreprendre. Les opérateurs relationnels peuvent également être autonomes sans la commande IF...THEN ; cependant, vous n'utiliserez pas souvent cette forme.

Un opérateur relationnel peut tester la relation entre des expressions numériques ou de chaîne de caractères, mais vous ne pouvez pas mélanger les deux types. Si vous essayez de comparer une expression numérique avec une expression de chaîne de caractères, une erreur se produit.

Les opérateurs relationnels comparent les expressions numériques en fonction de leurs valeurs. Dans le cas des expressions de chaîne de caractères, en revanche, elles comparent les valeurs ASCII caractère par caractère, de gauche à droite de chaque chaîne de caractères. Un caractère est considéré comme inférieur à un autre si son code ASCII est inférieur. (Si vous ne traitez que des lettres, les chaînes de caractères sont comparées par ordre alphabétique : A est inférieur à C ; J est supérieur à H,...) Si deux chaînes de caractères sont égales à l'exception de la longueur, la chaîne de caractères la plus courte est considérée comme inférieure à la plus longue chaîne de caractères. Les blancs sont traités comme des caractères dans une chaîne de caractères.

Les opérateurs arithmétiques priment sur les opérateurs relationnels, qui à leur tour priment sur les opérateurs logiques (voir ci-dessous). L'ABasiC traite les opérateurs relationnels comme égaux en termes d'ordre de priorité.

Vous trouverez ci-dessous des descriptions des opérateurs relationnels que vous pouvez utiliser pour comparer des expressions. La forme générale est :

expression operator expression

Symbole Description
= Renvoie un -1 (vrai) si les deux expressions sont égales, et un 0 (faux) si elles ne sont pas égales.
< Renvoie un -1 (vrai) si l'expression de gauche est inférieure à l'expression de droite, et un 0 (faux) sinon.
> Renvoie un -1 (vrai) si l'expression de gauche est supérieure à l'expression de droite, et un 0 (faux) sinon.
<= Renvoie un -1 (vrai) si l'expression de gauche est inférieure ou égale à l'expression de droite, et un 0 (faux) sinon.
>= Renvoie un -1 (vrai) si l'expression de gauche est supérieure ou égale à l'expression de droite, et un 0 (faux) sinon.
<> Renvoie un -1 (vrai) si les deux expressions ne sont pas égales, et un 0 (faux) si elles sont égales.

  1. 10 INPUT "VOTRE AGE", N
  2. 20 IF N<0 THEN PRINT "De qui vous moquez-vous ?"
  3. 30 IF N =0 THEN PRINT "Bienvenue sur Terre !"
  4. 40 IF N >= 5 THEN PRINT "En quelle classe es-tu ?"
  5. 50 IF N <= 69 THEN PRINT "La vie continue !"
  6. 60 IF N > 100 THEN PRINT "Toutes nos felicitations!"

Lorsque vous exécutez le programme, la sortie varie en fonction des valeurs saisies. Voici quelques exemples :

VOTRE AGE ? -248 (saisi par l'utilisateur)
De qui vous moquez-vous ?
La vie continue !
VOTRE AGE ? 113
En quelle classe es-tu ?
Toutes nos felicitations!

Opérateurs logiques

Vous utilisez généralement des opérateurs logiques dans une commande IF...THEN pour combiner les résultats d'opérateurs relationnels. (Voir la seciton "Opérateurs relationnels" pour plus de détails.) Les comparaisons utilisant des opérateurs relationnels renvoient des valeurs qui peuvent, à leur tour, être combinées pour produire une valeur de vérité unique à l'aide d'opérateurs logiques. Le résultat de cette combinaison est soit un vrai drapeau (-1) soit un faux drapeau (0). Le ABasiC utilise -1 pour indiquer la vérité car c'est le complément logique de 0 (c'est-à-dire, NOT (0) = -1 et NOT (-1) = 0.)

(Remarque : Vous pouvez également utiliser des opérateurs logiques pour combiner des nombres binaires à l'aide de la logique booléenne ; des exemples sont donnés à la fin de cette section.)

AND

relationship AND relationship

AND combine les résultats de deux relations (ou nombres) et déclare la vérité (-1) uniquement si les deux relations sont vraies. Si une relation est vraie et l'autre est fausse, ou si les deux relations sont fausses, AND renvoie un drapeau faux (0).

  1. 10 INPUT NAME$
  2. 20 INPUT AMOUNT
  3. 30 IF NAME$ = "JEAN" AND AMOUNT > 10000 THEN PRINT "JEAN EST RICHE !"

Lorsque vous exécutez le programme, le résultat est :

?JEAN (saisi par l'utilisateur)
?15678 (saisi par l'utilisateur)
JEAN EST RICHE !

EQV

relationship EQV relationship

EQV (EQuiValence) combine les résultats de deux relations et déclare la vérité uniquement si les deux relations sont vraies ou si les deux sont fausses. Vous obtenez le même résultat en combinant XOR et NOT. Si une relation est fausse et l'autre vraie, EQV renvoie un drapeau faux.

  1. 10 A= -45
  2. 20 B= -26
  3. 30 IF A>=0 EQV B>=0 THEN PRINT "A ET B SONT DANS LA MEME GAMME"

Lorsque vous exécutez le programme, le résultat est :

A ET B SONT DANS LA MEME GAMME

IMP

relationship IMP relationship

IMP (IMPlication) est une version logique booléenne de la commande IF...THEN du ABasiC. Si la première relation est fausse, IMP renvoie un drapeau vrai quelle que soit la vérité de la deuxième relation. Si la première relation est vraie, la valeur dépend de la deuxième relation : IMP renvoie un drapeau vrai si la deuxième relation est vraie et un drapeau faux si la deuxième relation est fausse. Les drapeaux de vérité fonctionnent comme suit :

Opération Résultat
Vrai IMP Vrai Retourne Vrai
Vrai IMP Faux Retourne Faux
Faux IMP Vrai Retourne Vrai
Faux IMP Faux Retourne Vrai

Vous n'utiliserez pas souvent IMP avec une commande IF...THEN. Elle apparaît le plus souvent comme une technique de programmation avancée pour combiner logiquement le contenu de deux emplacements mémoire.

NOT

NOT relationship

L'opérateur logique NOT inverse la vérité d'une seule relation ou expression. Si la relation est vraie, NOT la change en fausse, et vice versa. Puisqu'il ne compare pas deux relations, vous pourriez en fait considérer NOT plus comme une fonction qu'un opérateur logique. Comme le montre l'exemple suivant, votre code est plus clair si vous placez l'expression inversée entre parenthèses.

  1. 10 A = 5*6
  2. 20 IF NOT (A <= 25) THEN PRINT "PLUS DE 25"

Lorsque vous exécutez le programme, le résultat est :

PLUS DE 25

OR

relationship OR relationship

OR combine les résultats de deux relations et déclare la vérité si l'une ou les deux relations sont vraies. Si les deux relations sont fausses, OR renvoie un drapeau faux.

  1. 10 NAME$ = "SYLVAIN"
  2. 20 IF NAME$ = "SYLVAIN" OR NAME$ = "S." OR NAME$ = "SYL" THEN PRINT "BONJOUR, M. MALTAIS."

Lorsque vous exécutez le programme, le résultat est :

BONJOUR, M. MALTAIS.

XOR

relationship XOR relationship

XOR (OU exclusif) combine les résultats de deux relations et déclare la vérité uniquement si une relation est vraie et l'autre est fausse. Si les deux relations sont vraies, ou si les deux sont fausses, alors XOR renvoie un drapeau faux.

  1. 10 A= 37
  2. 20 B= 80
  3. 30 IF A=0 XOR B=80 THEN PRINT "UNE SEUL INSTRUCTION EST VRAI"

Lorsque vous exécutez le programme, le résultat est :

UNE SEUL INSTRUCTION EST VRAI

Pour les programmeurs avancés

Vous pouvez utiliser des expressions numériques à la place des relations avec les opérateurs booléens. Ces expressions sont combinées à l'aide de la logique booléenne. Les expressions numériques doivent être des entiers dans la plage d'entiers acceptée. Les nombres fractionnaires sont convertis en nombres entiers.

L'ABasiC combine deux entiers en utilisant la logique booléenne en les traitant comme des nombres binaires. Il les combine petit à petit, en opérant sur les bits correspondants. Vous trouverez ci-dessous les tables de vérité pour chaque opérateur booléen en ABasiC.

AND OR XOR EQV NOT IMP
1 AND 1 = 1
1 AND 0 = 0
0 AND 1 = 0
0 AND 0 = 0
1 OR 1 = 1
1 OR 0 = 1
0 OR 1 = 1
0 OR 0 = 0
1 XOR 1 = 0
1 XOR 0 = 1
0 XOR 1 = 1
0 XOR 0 = 0
1 EQV 1 = 1
1 EQV 0 = 0
0 EQV 1 = 0
0 EQV 0 = 1
NOT 1 = 0
NOT 0 = 1
1 IMP 1 = 1
1 IMP 0 = 0
0 IMP 1 = 1
0 IMP 0 = 1

L'exemple suivant montre l'opérateur booléen AND utilisé avec deux entiers :

  1. PRINT 7959 AND 264

résulte en :

256

Voici comment ABasiC a combiné les deux entiers :

0001111100010111 (Binaire pour 7959)
             AND
0000000100001000 (Binaire pour 264)
0000000100000000 (Binaire pour 256)


Dernière mise à jour : Mercredi, le 3 mai 2023