Les expressions

Vous connaissez déjà tous les expressions mathématiques dans lesquels on retrouve des nombres, des opérateurs de calculs (+,-,..) et des variables. Par exemple:

(a+b) × (a-17)

Dans les langages de programmation, on retrouve également cette notion d'expression sous une forme un peu différente et plus générale.

Une expression est une écriture possédant une valeur et un type. La valeur d'une expression est le résultat du calcul de cette expression. Son type est le type du résultat.

Pour le moment, nous ne considérerons que deux types d'expressions:

Nous allons également nous restreindre à des expressions qui ne contiennent que des littéraux, des opérateurs et éventuellement des parenthèses.

Mais que sont les littéraux et les opérateurs ?

Les littéraux

Un littéral est l'écriture d'une valeur d'un certain type. La manière d'écrire cette valeur dépend du type considéré et détermine le type du littéral.

En ce qui nous concerne, il y aura donc pour l'instant des littéraux de type chaines de caractères et des littéraux de types numériques.

L'écriture des littéraux obéit à un certain nombre de conventions qui dépendent du type et du langage de programmation. Nous présentons ici celles du langage Python.

Les littéraux numériques

Un littéral numérique représente la valeur d'un nombre.

Pour l'interpréteur Python, une suite de chiffres éventuellement précédée d'un signe - ou +, est considérée comme un littéral de type numérique. Exemple: 2015, -1961, + 1935.

Pour écrire des nombres non entiers on utilise le point (et non pas la virgule !). La partie entière du nombre est suivi d'un point, puis d'une autre suite de chiffres. Exemples: 213.141559, -5.33333.

Pour pouvoir écrire des nombres très grands ou très petit, Python autorise également la notation scientifique avec la lettre e ou E pour désigner l'exposant. Par exemple 1.7 10308, s'écrit 1.7E+308 ou 1.7e+308.

Les littéraux de type chaine de caractères

En Python, un littéral de type chaine de caractères s'écrit entre guillemets ou entre quotes. Dans ce cours, nous utiliserons uniquement la notation utilisant des guillemets.

Par exemple "Il fait beau", "4012", "(3 x + 1)", "VisualC++", "@%^¨¤" sont des littéraux de type chaine de caractères.

On remarquera que tous les caractères sont autorisés entre les guillemets sauf les guillemets eux mêmes !. Pour mettre un guillemet dans une chaine de caractères, il faut le faire précéder par un anti-slash (le caractère \).

Parmis les chaines de caractères, il y en a une qui joue un rôle particulier : la chaine vide.

La chaine vide est une chaine qui ne contient aucun caractères. On l'écrit "" (deux guillemets).

Les operateurs

En informatique, un opérateur est généralement représenté par un ou deux caractères représentant une certaine opération.

Voici par exemple, quelques opérateurs fréquement rencontrés dans les langages de programmation: +   -  /  *  ^  =  ++  !   %

Dans ce cours, nous nous concentrerons pour l'instant sur les opérateurs suivants:

Vous connaissez déjà les quatre premiers opérateurs puisqu'il s'agit des opérateurs mathématiques classiques. Mais si vous n'avez jamais fait de programmation, vous ignorez probalement le sens de l'opérateur de concaténation. Nous en reparlerons plus loin.

Les opérateurs précédents sont tous des opérateurs binaires, c'est à dire qu'ils nécessitent deux données pour effectuer l'opération correspondante. Ces deux données s'appellent les opérandes.

En Python, une des deux opérandes figure avant l'opérateur et l'autre après. Comme par exemple 2 + 7, 3 * 9, etc .. Lorsqu'on a un opérateur binaire, on a donc forcément une opérande gauche et une opérande droite. Cela vous paraitra certainement naturel, mais sachez que d'autres langages (comme Lisp par exemple) utilisent une notation préfixée. C'est à dire que l'on écrira l'opérateur avant les deux opérandes ( par exemple + 2 7 à la place de 2 + 7).

Nous verrons ultérieurement qu'il existe également des opérateur unaires, c'est à dire des opérateurs qui ne nécessitent qu'une seule opérande.

La concaténation
Concaténer deux chaines de caractères signifie les mettre bout à bout.

Par exemple, si je concatène la chaine "para" avec la chaine "pluie", j'obtient la chaine "parapluie".

La manière de noter l'opérateur de concaténation dépend des langages.

En Python, il se note comme l'opérateur d'addition, c'est à dire avec un signe +.

L'opérateur de concaténation permet de construire des expressions de type chaine de caractères.

Par exemple, "Je suis " + "eric" + "Thirion" est une expression de type chaine de caractères dont la valeur est "Je suis eric Thirion".

Validité d'une expression

L'écriture d'une expression dans un certain langage de programmation doit nécessairement obéir aux règles propres à ce langage.

Une expression de type T est valide si elle peut être "comprise" par l'interpréteur (ou le compilateur) comme un calcul d'une valeur de type T ou plus généralement comme la construction d'un objet de type T.

Nous donnons ici, un certain nombre de règles non exhaustives permettant d'écrire des expressions valides en Python. Ces règles seront complètées ultérieurement

Expressions valides de type chaine de caractères

Les règles suivantes permettent de construire des expressions de type chaine de caractères valides:


Règle1:un littéral est une expression valide de type chaine de caractères si et seulement si il est du type chaine de caractères.

Règle2: A+B est une expression valide de type chaine de caractères si et seulement si A et B sont deux expressions valides de type chaine de caractères.

Exemples d'application de ces règles :

Expression Validité
"Thirion" Oui
1961 Non
"Eric "+ " Thirion " Oui
"Eric "+ " Thirion est né en " + " 1961" Oui
"Eric "+ " Thirion est né en " + 1961 Non
Expressions valides de type numérique

Les règles suivantes (non exhaustives) permettent de construire des expressions numériques valides:


Règle1:un littéral est une expression numérique valide si et seulement si il est de type numérique.

Règle2: les écritures A+B, A-B, A*B, A/B sont des expressions numériques valides, si et seulement si A et B sont des expressions numériques valides.

Règle3: (A) est une expression numérique valide si et seulement si A est une expression numérique valide.

Règle4: chaque parenthèse ouvrante correspond à une et une seule parenthèse fermante.

Exemples d'application de ces règles :

Expression Validité
1961 Oui
1.72 Oui
"1961" Non
1961 * 1.72 Oui
"1961" + 1.72 Non
1961/(1.72*1961) Oui
1961/((1.72 + 1 ) Non