Expressions et opérateurs



--Téléchargez Expressions et opérateurs en PDF --


Si on fait le point, on saperçoit que dans une instruction daffectation, on trouve :

  • à gauche de la flèche, un nom de variable, et uniquement cela. En ce monde empli de doutes qu’est celui de l’algorithmique, c’est une des rares règles d’or qui marche à tous les coups : si on voit à gauche d’une flèche d’affectation autre chose qu’un nom de variable, on peut être certain à 100% quil s’agit d’une erreur.
  • à droite de la flèche, ce qu’on appelle une expression. Voilà encore un mot qui est trompeur ; en effet, ce mot existe dans le langage courant, où il revêt bien des significations. Mais en informatique, le terme d’expression ne désigne qu’une seule chose, et qui plus est une chose très précise:

Une expression est un ensemble de valeurs, reliées par des opérateurs, et équivalent à une seule valeur.

Cette définition vous paraît peut-être obscure. Mais réfléchissez-y quelques minutes, et vous verrez quelle recouvre quelque chose dassez simple sur le fond. Par exemple, voyons quelques expressions de type numérique. Ainsi :

7

5+4

123-45+844

toto-12+5-riri

sont toutes des expressions valides, pour peu que toto et riri soient bien des nombres. Car dans le cas contraire, la quatrième expression na pas de sens. En loccurrence, les opérateurs que jai employés sont laddition (+) et la soustraction (-).

Revenons pour le moment sur laffectation. Une condition supplémentaire (en plus des deux précédentes) de validité d’une instruction daffectation est que :

  • l’expression située à droite de la flèche soit du même type que la variable située à gauche. Cest très logique : on ne peut pas ranger convenablement des outils dans un sac à provision, ni des légumes dans une trousse à outilssauf à provoquer un résultat catastrophique.
  • Si l’un des trois points énumérés ci-dessus nest pas respecté, la machine sera incapable d’exécuter laffectation, et déclenchera une erreur (est-il besoin de dire que si aucun de ces points nest respecté, il y aura aussi erreur !)

On va maintenant détailler ce que lon entend par le terme dopérateur.

Un opérateur est un signe qui relie deux valeurs pour produire un résultat.

Les opérateurs possibles dépendent du type des valeurs qui sont en jeu. Allons-y, faisons le tour, cest un peu fastidieux, mais comme dit le sage au petit scarabée, quand cest fait, cest plus à faire.

Les opérateurs numériques

Ce sont bien sûr les 4 opérations de bases, auxquelles on ajoute deux petits nouveaux :

  • L’addition (+)
  • La soustraction ()
  • La multiplication (*)
  • La division (/)
  • Le modulo (%), reste de la division entière entre deux nombres
  • La puissance (^) (symbole qui n’est pas implémenté dans tous les langages)
  • Les parenthèses (()) qui permettent de changer les priorités.

Les priorités sont celles de votre cours de math de votre enfance.

Les opérateurs alphanumériques

Ce sont les opérateurs & et + (dans certains langages). Ces opérateurs ont pour but de concaténer deux chaines de caractères.

La valeur de c sera « GloubiBoulga »

Les opérateurs logiques

Il s’agit d’opérateurs spéciaux, travaillant sur du binaire et des booléens. Il s’agit des opérateurs NOT,  AND, OR, et XOR. Nous les verrons dans un chapitre consacré.

Exercices

solution
solution

Exercice 3

Calculer les expressions suivantes :

  1. 3*5*7
  2. (3*5)*7
  3. 3*(5*7)
  4. 3*(1+2+3)
  5. 3*1+2+3
  6. 6+20/2*5-3
  7. 6+20/2*(5-3)
  8. (4/2)/10*100
  9. (4/2)*(10*100)
  10. 7+7*3+7/4
  11. (7+7)*(3+2)/4
  12. (6+20)/2*5-3
  13. 8+2*4+2^3-1
  14. 8+2*4+2^(3-1)
solution

Exercice 3

Transcrire les expressions algébriques suivantes en notation informatique

  1. 5a+3b
  2. a^2+b^2
  3. (a+b).(x+y)
  4. 3x²+2bx-1
solution

Maintenant que nous sommes familiers des variables et que nous les manipulons les yeux fermés, j’attire votre attention sur la trompeuse similitude de vocabulaire entre les mathématiques et l’informatique. En mathématiques, une « variable » est généralement une inconnue, qui recouvre un nombre non précisé de valeurs. Lorsque j’écris :

y = 3 x + 2

les « variables » x et y satisfaisant à l’équation existent en nombre infini (graphiquement, l’ensemble des solutions à cette équation dessine une droite). Lorsque j’écris :

ax² + bx + c = 0

la « variable » x désigne les solutions à cette équation, c’est-à-dire zéro, une ou deux valeurs à la fois…

En informatique, une variable possède à un moment donné une et une seule valeur . À la rigueur, elle peut ne pas avoir de valeur du tout (une fois qu’elle a été déclarée, et tant qu’on ne l’a pas affectée). À signaler que dans certains langages, les variables non encore affectées sont considérées comme valant automatiquement zéro). Mais ce qui est important, c’est que cette valeur justement, ne « varie » pas à proprement parler. Du moins ne varie-t-elle que lorsqu’elle est l’objet d’une instruction d’affectation.

La deuxième remarque concerne le signe de l’affectation. En algorithmique, comme on l’a vu, c’est le signe . Mais en pratique, la quasi totalité des langages emploient le signe = (égal). Et là, pour les débutants, la confusion avec les maths est également facile. En maths, A = B et B = A sont deux propositions strictement équivalentes. En informatique, absolument pas, puisque cela revient à écrire A ← B et B ← A, deux choses bien différentes.

De même, A = A + 1, qui en mathématiques, constitue une équation sans solution, représente en programmation une action tout à fait licite (et de surcroît extrêmement courante). Donc, attention ! ! ! La meilleure des vaccinations contre cette confusion consiste à bien employer le signe en pseudo-code, signe qui a le mérite de ne pas laisser place à l’ambiguïté. Une fois acquis les bons réflexes avec ce signe, vous n’aurez plus aucune difficulté à passer au = des langages de programmation.