Beruflich Dokumente
Kultur Dokumente
2 Concepts de base........................................................................................................................10
2.1 Instruction..........................................................................................................................12
2.1.1 Déclaration/initialisation............................................................................................13
2.1.2 Affectation.................................................................................................................13
2.2 Types de base.....................................................................................................................13
2.2.1 Type numérique .........................................................................................................13
2.2.2 Type Booléen.............................................................................................................14
2.3 Expressions ........................................................................................................................15
2.3.1 Expression Arithmétique ...........................................................................................15
2.3.2 Expression de comparaison .......................................................................................16
2.3.3 Expressio n booléenne ................................................................................................17
2.3.4 Expression d’affectation............................................................................................18
2.3.5 Evaluation des expressions ........................................................................................19
Nous allons maintenant présenter quelques définitions un peu indigestes. Elles seront
illustrées par des exemples et seront revues dans la suite du cours.
Variable : Les identificateurs peuvent être des variables, ils ont alors un type (voir la
définition plus bas dans le chapitre) et correspondent à un emplacement mémoire. Les
variables mémorisent des valeurs qui évoluent au cours du temps. Par exemple :
Constante : Certains identificateurs sont définis comme des variables qui ne peuvent
changer de valeur. On les appelle des constantes, et on utilise les mots réservés final static
pour le spécifier.
Math.PI;
Math.E;
Pour rendre les programmes plus lisibles, on utilise des conventions de nommage. Les plus
utilisées sont les suivantes :
Mot réservé : certains identificateurs sont réservés pour définir des éléments de syntaxe.
Ce sont les mots clefs comme class, public ; ils ne peuvent être utilisés comme variable ou
comme définition de concepts propres au programmeur. Voici la liste des mots réservés en
Java :
Certains de ces mots clefs (comme const, future) ne sont pas actuellement utilisés, ils sont
réservés à un usage futur.
Type : Un type est un ensemble de données ayant des propriétés communes. Entier (int en
Java) est un exemple de type. Java est fortement typé, cela veut dire que chaque expression
du langage possède un type et que toute incohérence est rejetée. Par exemple l’addition de
2 entiers est légale, alors que l’addition de 2 booléens est impitoyablement rejetée. De plus
cette vérification se faisant à la compilation, le typage est dit statique.
INFO02EXE01
Indiquez si ces identificateurs sont corrects :
package, CompteBancaire, Euro, throws, true, Cki, Bonjour, $$_$, 2PlusEnPlusFort,
Maintenant que nous avons défini nos briques de base, construisons des structures plus
complexes.
Une instruction est soit une instruction simple soit une instruction composée.
• Une instruction composée ou bloc est une suite d’instructions regroupées entre
accolades {}
Notez que les blocs d’instructions sont indentés (c'est-à-dire que des espaces ont été
ajoutés en début de ligne). Cela n’est pas obligatoire, mais rend le code plus lisible.
Chacun de ces types d'instruction simple est une expression et une expression est une
suite "correcte" d’opérateurs et d’opérandes.
Dans ce paragraphe nous allons expliquer les deux premiers types d'expression (nous
verrons les autres types plus loin).
Chaque variable définie par le programmeur doit être déclarée. Elle peut être déclarée
quand on en a besoin et elle peut être initialisée dans la même expression (cf. paragraphe
précédent sur les variables ).
a=aa+56;
int i; //Déclaration d'une variable i après une instruction
2.1.2 Affectation
Une affectation se compose d’une variable, d’un opérateur d’affectation, suivi d’une
expression.
En Java les types de base sont les entiers (byte, short, int, long), les nombres à virgule
flottante (float, double), les booléens (boolean), les caractères (char), les chaînes de
caractères (String).
En réalité les chaînes de caractères ne sont pas des types de base. Néanmoins nous les
avons placés dans ce paragraphe car en pratique elles sont utilisées comme un type de base
et elles en possèdent toutes les caractéristiques.
Détaillons maintenant chacun de ces types (dans ce segment et dans les suivants).
Les entiers sont signés (entiers relatifs) et peuvent être représentés sur 8 bits (type byte) ,
16 bits (short), 32 bits (int) et 64 bits (long). Contrairement à d’autres langages, cette
représentation est indépendante de la plate-forme sur laquelle s'exécute le programme.
Les constantes littérales (par exemple 367 est une constante littérale) peuvent être
représentées selon plusieurs systèmes de notation (octal et hexadécimal). Elles sont notées
0x (caractère zéro) en hexadécimal et commence par un 0 (caractère zéro) en octal.
System.out.print("a = ");
System.out.println(a);
System.out.print("b = ");
System.out.println(b);
System.out.print("c = ");
System.out.println(c);
Produit le résultat :
a = 16
b = 16
c = 16
Les nombres à virgule respectent la norme IEEE 754. Ils peuvent être définis
• en simple précision, ils sont représentés sur 32 bits : float
• ou en double précision, ils sont représentés sur 64 bits : double
Les constant es littérales peuvent s'écrire avec ou sans exposant.
Comme pour tous les langages modernes, les booléens ne peuvent prendre que 2 valeurs :
true ou false. Le type booléen est un type à part entière, à ne pas confondre avec le type
entier.
Par exemple :
boolean v = 1;
est interdit
Les expressions sont des suites d’opérandes (des variables ou des constantes) liées par des
symboles désignant des opérations (appelées opérateurs) à effectuer :
En java on distingue les expressions selon le type des opérandes. Nous verrons qu’en
certaines occasions et selon des règles précises, Java peut changer (on emploie le terme de
promotion) le type de certains opérandes. Mais n’anticipons pas.
Ces expressions ressemblent aux expressions du langage Pascal. Les seuls opérateurs
nouveaux sont les opérateurs ++ et -- . Ils permettent d’incrémenter ou de décrémenter les
variables de type numérique. Suivant qu’ils sont postfixés ou préfixés leur comportement
est différent :
• j= ++i; est équivalent à {i=i+1 ; j=i};
• j= i++; est équivalent à {j=i ; i=i+1};
int i =2;
int ii =2;
int j;
j = i++; //j est egal à 2 et i est égal à 3
j = ++ii; // j et ii sont egaux à 3
1
num x num : num signifie que l'opérateur prend 2 types numériques (entier et flottant) en paramètre et
retourne un type numérique en résultat.
INFO02EXE02
Construisez une expression qui transforme des degrés Fahrenheit en degrés Celsius.
Sachant que pour obtenir des Celsius, il faut enlever 32 au Fahrenheit puis multiplier par 5
et diviser par 9.
Comme leur nom l’indique, les opérateurs de comparaison, permettent de comparer deux
expressions de type quelconque.
2
Si on utilise x dans l’exemple on suppose que sa valeur est 6
3
type représente un type quelconque
if(a=1) …
if (a==1) …
Attention il ne faut pas confondre && (resp. || ) et & (resp. |). En effet && réalise une
évaluation "paresseuse". En effet dès que la valeur de l’expression est acquise l’évaluation
est interrompue. Considérons l’expression suivante :
c=a && b;
c= a & b;
int i= 3;
c = (1 > 2) & (i++ < 10);
i vaut 4.
Alors qu'après
int i= 3;
c = (1 > 2) && (i++ < 10);
i vaut 3.
Ces expressions permettent d’effectuer des affectations. Seul = est vraiment important. Les
autres permettent simplement de simplifier le code.
Exemple 4 Résultat
= x=8 met la valeur 8 dans x
+= x+=8 met la valeur 14 (6+8)
dans x
i++ += 2;//Expression 1
i++ = i++ + 2; //Expression 2
4
Si on utilise x dans l’exemple on suppose que sa valeur est 6
i += 3;
ou
i += 4;
Les expressions sont évaluées selon des règles très précises. Si une expression est
ambiguë, comme 2+3*4, l’évaluation de l’expression se fait en considérant la priorité des
opérateurs. L'expression 2+3*4 est évaluée comme suit :
• 3*4 à 12 car * est prioritaire sur + . Puis 2 + 12 à 14 par application de l'addition.
Le tableau suivant indique, en ordre décroissant, la priorité des principaux opérateurs en
Java :
1 ! ++ --
2 */%
3 +-
4 <<>>
5 == != <<=> >=
6 &
7 ^
8 |
9 &&
10 ||
11 = += -= *= /= %= <<=>>= &= ^= |=
Quand les opérateurs ont la même priorité, l’expression est évaluée de gauche à droite,
excepté pour les opérateurs de priorité 11, pour lesquels l’évaluation se fait de droite à
gauche.
INFO02EXE03
Qu'affiche le code suivant :
System.out.println(3+4 + " : nbre de jours dans la semaine");
Et celui ci
System.out.println (" Nbre de jours dans la semaine : "+ 3 + 4 );
Expliquez. Comment, sans faire directement le calcul, modifier la deuxième expression
pour imprimer le résultat correct ?.