UKOnline

Expression

On vient de voir une série d'opérateurs permettant d'effectuer diverses opérations. On va maintenant s'intéresser à la construction d'expressions, c'est-à-dire des combinaisons d'opérateurs et d'opérandes. Une expression va pouvoir être évaluée, c'est-à-dire que sa valeur peut être calculée, celle-ci possédant toujours un type.

Expression simple

Les expressions simples n'impliquent aucun opérateur; il y en a trois : les littéraux, les variables et les constantes. La valeur d'un littéral, c'est le littéral, et la valeur d'une variable ou d'une constante, c'est la donnée qui y est stockée. Voici l'initialisation de trois variables avec une expression simple :

Expression complexe

On peut aussi construire des expressions complexes en combinant des opérandes avec des opérateurs. Pour rappel, les opérateurs peuvent prendre un, deux ou trois opérandes qui peuvent en fait être n'importe quelle expression. Prenons l'exemple suivant :

On commence par déclarer la variable x de type int. Ensuite, on lui affecte une valeur en utilisant l'opérateur =, c'est-à-dire qu'on met une valeur dans la variable. Ce qui se trouve à droite du = est une expression complexe composée à partir des deux littéraux entiers 2 et 3, ainsi que de l'opérateur arithmétique +.

Toute expression possède une valeur; donc, les deux expressions simples 2 et 3 possèdent chacune une valeur (2 et 3) et l'expression complexe 2 + 3 possède également une valeur (5) comme le montre la figure 9. On y voit trois expressions : deux simples combinées avec un opérateur pour former une complexe. Les trois expressions sont de type int.

Expression complexe
Expression complexe.

La valeur d'une expression n'est évidemment pas toujours un entier; en effet, une expression peut par exemple également prendre une valeur booléenne comme on l'a vu dans la section précédente. L'exemple suivant montre une expression dont la valeur est true puisque la valeur de l'opérande de gauche de l'opérateur || est true (et on ne doit donc même pas évaluer l'opérande de droite par propriété de court-circuit).

La définition des expressions est une définition récursive; c'est-à-dire que les expressions sont définies à partir d'elles-mêmes. La figure 10 illustre la définition d'une expression. Les flèches doivent être lues comme « peut prendre la forme de » et le symbole ¤ représente un opérateur.

Il y a donc deux types différents d'expression : simple et complexe. Il y a trois types d'expressions simples : littéral, variable et constante. Il n'y a pas d'aspect récursif pour cette branche. Les expressions complexes sont construites à partir d'expressions et d'opérateurs. Il y a quatre cas : opérateur unaire en préfixe ou suffixe, binaire et ternaire.

Définition d'une expression
Définition d'une expression.

Affectation multiple

Rappelez-vous que l'opérateur d'affectation a un effet de bord : il modifie la valeur d'une variable. Mais c'est avant tout un opérateur et on peut l'utiliser pour construire des expressions. De part la définition récursive des expressions, il est possible d'affecter une même valeur à plusieurs variables en une seule opération. L'exemple suivant affecte la valeur 0 aux trois variables x, y et z :

Comme le commentaire le dit, l'expression x = y = z = 0 est équivalente à l'expression x = (y = (z = 0)). La figure 11 montre les différentes expressions qui constituent l'expression x = y = z = 0. On reviendra là-dessus à la section 2.3 traitant de l'associativité des opérateurs.

Affectation multiple
Affectation multiple.

On peut bien entendu appliquer le même principe avec les opérateurs d'affectation composée. Il est par exemple possible d'écrire :

Expression, instruction et programme

On a maintenant vu tous les éléments qui permettent de construire des programmes, à savoir les expressions et les instructions. On va maintenant repasser sur ces différents concepts et voir comment les combiner pour former un programme.

Les instructions sont des commandes, des ordres qui vont pouvoir être exécutés. On a déjà notamment vu l'instruction qui permet d'afficher du texte à l'écran et celle qui permet de déclarer une variable.

Les expressions représentent une opération et vont pouvoir être évaluées. On vient de voir qu'il est possible de construire beaucoup d'expressions différentes pour faire différentes opérations. On a également pu voir que certaines expressions ont un effet de bord; celles-ci peuvent également être utilisées comme des instructions.

Voici quelques exemples d'expressions et d'instructions, ainsi que des expressions qui sont également des instructions :

Un programme est une suite d'instructions qui seront exécutées les unes à la suite des autres lors de son exécution. Un programme se déclare toujours par une classe et possède un nom. La séquence d'instructions qui composent le programme est placée dans la méthode public static void main (String[] args).

La figure 12 montre un exemple de programme. Celui-ci commence par déclarer deux variables de type double représentant les points d'un examen, respectivement sur 20 et sur 100. Les trois dernières instructions affichent la moyenne en pourcent.

Le programme Program.

Incrémenter une variable de un

On vient de voir que les opérateurs avec effet de bord peuvent être utilisés dans des expressions ou comme instruction. Il est conseillé de n'utiliser ces opérateurs que comme instruction afin de garder le code des programmes clair et facile à lire.

Lorsque vous devez incrémenter la valeur d'une variable de un, il y a trois possibilités qui sont équivalentes, la troisième étant la plus compacte et lisible :