Banière du site

[koala01.free.fr]->Tutoriaux->Principes de Programmation ->Les opérateurs

Image d'imprimante   image d'enveloppe

6.1 Introduction

Le but principal d'une application est bien souvent de comparer une ou plusieurs valeurs entre elle et d'en tirer certaines conclusions.

Il est donc logique que le gros du travail consiste à utiliser certains opérateurs qui nous permettent d'effectuer ces comparaisons.

fleche haut

6.2 les opérateurs arithmétiques

Les quatres fonctions de bases (addition, soustraction, multiplication et division) sont utilisables en langages de troisième génération (en assembleur, la multiplication serait plutot une série d'addition et la division une série de soustractions)

Cependant, certaines opérations avancées sont aussi disponibles, et leur usage offre de grande potentialités.

Ainsi, nous disposons aussi du modulo, qui consiste à récupérer le reste entier de la division de deux entiers.

Si le résulat du modulo de nombre1 par nombre2 vaut 0, cela signifie, entre autre, que nombre1 est un multiple de nombre2.

Cette fonction est utilisée, entre autre, en Belgique et au Luxembourg, en tout cas, pour vérifier l'existance probable d'un numéro de compte bancaire, ainsi que pour de nombreuses autres vérifications basées sur des chiffres.

fleche haut

6.3 les opérateurs logiques

On dispose de deux opérateurs logiques de base pour évaluer les liens entre plusieurs expressions (chaque expression étant une (in)égalité ne pouvant renvoyer que "vrai" ou "'faux":

Le tableau suivant permettra de vous faire une idée plus complète:

Expression 1 Expression 2 ET OU
Faux Faux Faux Faux
Faux Vrai Faux Vrai
Vrai Faux Faux Vrai
Vrai Vrai Vrai Vrai

On dispose enfin d'un opérateur logique qui permet l'inversion du résultat: PAS (en C et en C++, il est représenté par un point d'exclamation "!")

On remarque que les opérateurs ET et OU disposent de ce qu'on appelle un «état unique»: un état qui n'apparait que dans une des conditions possibles.

Cet état logique peut très bien être utilisé dans la création de la formule de vérification.

Le test Si(pas(a=1 ou b=2)) aurait comme résultat de ne nous renvoyer une réponse vraie que si a vaut autre chose que 1 et b vaut autre chose que 2, par contre, qu'une des expresions renvoie une réponse vraie, et le résultat global renverra une valeur fausse.

Le test Si (a=1 ETPAS b=2), quant à lui ne renverra une réponse vraie que si a vaut un mais que b vaut autre chose que 2.

Sachez enfin qu'il existe un troisième opérateur qui n'est, en définitive qu'une imbrication des deux opérateurs: le OU EXclusif (XOR).

Ce OU Exclusif ne renverra une valeur vraie que si UNE SEULE des expressions concernées renvoie vrai. Voici la table de vérité que l'on peut s'attendre à obtenir avec un ou exclusif reliant trois expressions:

Expression 1 Expression 2 Expression 3 Ou Excl
Faux Faux Faux Faux
Faux Faux Vrai Vrai
Faux Vrai Faux Vrai
Faux Vrai Vrai Faux
Vrai Faux Faux Vrai
Vrai Faux Vrai Faux
Vrai Vrai Faux Faux
Vrai Vrai Vrai Faux

Là encore, on remarque l'apparition d'un état unique, même s'il s'agit en réalité d'un état qui est susceptible d'arriver un nombre de fois correspondant au nombre d'expressions testées (alors que le nombres de possiblités est du nombre d'expression élevé au carré).

Pour ce casser la tête

Enfin, l'informatique n'étant finalement qu'une utilisation de l'électronique rien n'empêche d'appliquer la loi de Morgan qui dit que si on inverse les entrées, qu'on inverse la sortie et qu'on inverse l'orpérateur logique, on garde le même résultat

Le test si(PAS (PAS a=1 ET PAS b=2)) le fournira donc le même résultat que si (a=1 OU b=2)

fleche haut

6.4 Les oprérateurs de comparaison

Enfin, il existe bien évidemment des opérateurs qui permettent la comparaison entre deux valeurs.  Il s'agit principalement de:

Il y a également moyen d'utiliser les signes < ou > avec le signe d'égalité.  Cela renverra vrai si la valeur est plus petite (ou plus grande selon le cas) ou égale.

Enfin, il y a moyen d'exprimer une inégalité.  Selon les langages utilisés, cela pourra se présenter sous la forme <> ou avec un signe de négation: le point d'exclamation " ! " en C et C++

Rassurez-vous, tous ces principes seront expliqués plus amplement dans les pages qui suivent.

fleche haut

6.5 Une autre approche

Il est également possible de trier tous ces opérateurs selon une autre apporche: celle du nombre d'arguments dont ils ont besoin pour travailler.

Cette approche nous fournis trois grosses catégories d'opérateurs, mais il n'est pas exclus que certains langages en utilisent d'avantage:

fleche haut

6.6 Les opérateurs unaires

Cette catégories regroupe tous les opérateurs qui sont susceptibles de se suffire à eux-même, tels que

Les opérateurs d'incrémentation (le fameux ++ en C ou en C++) ou de décrémentation (le fameux -- en C ou en C++) , mais aussi, car il s'agit d'opérateurs, le symbole qui indique que l'on veut "l'adresse à laquelle se trouve la variable" ou, au contraire, "l'élément visé par" quand on utilise les pointeurs ou les références.

L'opérateur logique PAS (ou NON), qui inverse la valeur d'une expression, est lui aussi un opérateur unaire dans le sens où il ne nécessite qu'une information supplémentaire, même si cette information peut être complexe: l'expression à inverser.

L'opérateur, car il s'agit de cela, qui permet d'arriver au Nième élément d'un tableau (les crochets, en C ou en C++) est également considéré comme un opérateur unaire.

fleche haut

6.7 Les opérateurs binaires

Les opérateurs binaires sont tous les opérateurs qui nécessitent deux arguments pour travailler.

Ce sera, finalement, la catégorie qui regroupe le plus de cas.

On y retrouve

fleche haut

6.8 Les opérateur ternaires

Enfin, il existe une catégorie d'opérateurs qui est prévue pour prendre trois arguments.

Le plus souvent, le premier argument sera une expression à tester, le deuxième sera une instruction à effectuer si l'expression renvoie une valeur vraie, et le troisième sera une instruction à effectuer si l'expression renvoie une valeur fausse.

En C ou en C++, il prendra la forme de

(expression)? action_si_vrai :action_si_faux; 

Même si un tel code est facile à écrire, et permet, quelque part, de limiter le nombre de lignes, j'ai personnellement tendance à déconseiller l'usage d'un tel opérateur car il a tendance à rendre le code beaucoup moins lisible sans forcément apporter un réel avantage en termes de temps d'exécution du programme

image d'imprimante   image de mail   fleche haut

Evaluation donnée par les visiteurs
Cette page a été évaluée 4 fois et a obtenu une moyenne de bien expliquée
Mon appréciation sur la compréhensibilitéde cette page est:
  • incompréhensible
  • mal expliquée
  • compréhensible, sans plus
  • bien expliquée
  • très bien expliquée

fleche haut

[koala01.free.fr]->Tutoriaux->Principes de Programmation ->Les opérateurs

Copyright (©) 2005 (Philippe Dunski)

Ce cours est libre, vous pouvez le redistribuer et/ou le modifier selon les termes de la Licence Publique Générale GNU publiée par la Free Software Foundation (version 2 ou bien toute autre version ultérieure choisie par vous).

Ce cours est distribué car potentiellement utile, mais SANS AUCUNE GARANTIE, ni explicite ni implicite, y compris les garanties de commercialisation ou d'adaptation dans un but spécifique. Reportez-vous à la Licence Publique Générale GNU pour plus de détails.

Cependant, l'auteur apprécierait grandement que vous lui fassiez part de toute modification apportée à son contnu

Vous pouvez le contacter par mail à l'adresse koala01@free.fr

Vous pouvez trouver une adaptation française de la licence GNU/GPL à l'URL http://www.linux-france.org/article/these/gpl.html