Ecrire des expressions arithmétiques et logiques 10/04/2017 2 Calculer Ecrire des expressions arithmétiques et logiques Cours 2 Cours 2
Plan du cours 2 Définition d’une expression Les types primitifs 10/04/2017 Plan du cours 2 Définition d’une expression Les types primitifs Constantes Variables Type d’une expression Variables d’instance, variables locales Evaluation d’expressions arithmétiques Priorité des opérateurs Opérateurs particuliers Affectations multiples Faire un cast Evaluation d’expressions à valeurs booléennes Évaluation abrégée des expressions logiques Cas d’espèce dans les expressions arithmétiques Cours 2 Cours 2
10/04/2017 Définition Une expression est un mélange judicieux de variables, de constantes et d’opérateurs. Une expression a un type qui se déduit de ceux de ses composants. Cours 2 Cours 2
10/04/2017 Les types primitifs Type primitif = ensemble fini et ordonné de valeurs Entiers signés byte 8 bits -128..+127 short 16 -215 .. 215-1 int 32 -231 .. 231-1 long 64 -263 .. 263 - 1 Réels float 1038 (6 ou 7 dec) +0.0f double 10308 (15 ch) +0.0d char numérique non signé ‘\u0000’ boolean n'est pas numérique false true false Cours 2 Cours 2
Constantes 123, -35, 0 par défaut codées int 10/04/2017 Constantes 123, -35, 0 par défaut codées int 123.45, 1e4, 1.3e-2, 0.0 par défaut codées double boolean false, true De type char, 1 seul char : ‘a’, ‘A’, ‘1’, ‘0’ Unicode 16 bits. Un char peut intervenir dans une expr artih : son code est converti préalablement en entier non signé. De type String : "voici un texte" A RETENIR Cours 2 Cours 2
Déclarer, c’est préciser son type. 10/04/2017 Variables Déclarer, c’est préciser son type. Doit être déclarée AVANT d’être utilisée Doit être initialisée int a, b ; double r ; boolean b ; Cours 2 Cours 2
Type d’une expression Une expression peut être de type : 10/04/2017 Type d’une expression Une expression peut être de type : Numérique Entier Réel Booléen ex 3 > 4 false Chaîne de car: un opérateur : la concaténation + Type primitif = ensemble fini et ordonné de valeurs Indépendants de la machine Portabilité Petite explication sur le codage en binaire Dans une expression numérique un char est converti en entier non négatif. Cours 2 Cours 2
Variables d’instance, var locales 10/04/2017 Variables d’instance, var locales On distingue les variables d’instance (appelées aussi champs ou membres) et les variables locales selon le lieu de leur déclaration. Une variable locale est déclarée à l’intérieur d’une méthode. Une variable locale doit être initialisée avant d’être utilisée. Une variable d’instance est déclarée en dehors d’une méthode. Elle a une valeur initiale par défaut. Cours 2 Cours 2
Evaluation d’expressions arithmétiques 10/04/2017 Evaluation d’expressions arithmétiques En l’absence de ( ) : Sens d’évaluation GD sauf pour opérateurs unaires et affectations A rappeler Affectation Opérateur unaire Cours 2 Cours 2
Priorité des opérateurs 10/04/2017 Priorité des opérateurs Priorité décroissante de haut en bas Opérateurs multiplicatifs * / % Opérateurs additifs + et – (binaires) Affectations = += *= /= %= -= Attention 3 / 4 division entière donne zéro int x = 4 + 3 * 7/2 - 5; //(4 + ((3 * 7) / 2)) - 5 9 int x = 4 + 3.0 * 7/2 - 5; // Erreur compil, perte possible de précision double x = 4 + 3.0 * 7/2 - 5; 9.5 Cours 2 Cours 2
Opérateurs particuliers 10/04/2017 Opérateurs particuliers Opérateurs unaires + - ++ -- Evaluation de droite à gauche ++ -- pré ou post incrémentation y = x++ équivaut à {y = x ; x = x + 1 ;} y = ++x équivaut à {x = x + 1 ; y = x ;} + - unaires Ex –3, le – est un opérateur unaire. Cours 2 Cours 2
Affectations multiples 10/04/2017 Affectations multiples y = a = b = c = d ; y = (a = (b = (c = d))) ; Cours 2 Cours 2
Faire un cast Faire un cast = contraindre Java à changer de type : 10/04/2017 Faire un cast Faire un cast = contraindre Java à changer de type : float e = (float)25.5 ; Cours 2 Cours 2
Evaluation d’expressions à valeurs booléennes 10/04/2017 Evaluation d’expressions à valeurs booléennes Opérateurs de relations Expressions de relations, résultat booléen < <= >= > Opérateurs logiques (conditions) Expressions booléennes ! NON logique && ET logique || OU logique > L’expression a < b est de nature booléenne, 2 > 3 vaut false = = != Exemple, évaluation de : System.out.println(1>2) ; Rappel des tables de vérité. Cours 2 Cours 2
Évaluation abrégée des expressions logiques 10/04/2017 Évaluation abrégée des expressions logiques Dans une expression booléenne, Java n’évalue que ce qui est nécessaire : boolA || boolB Si l’expression boolA est true, inutile d’évaluer boolB boolA && boolB Si l’expression boolB est false, inutile d’évaluer boolB Exemple : int u = 7, v = 12, w = 3; boolean bool = u > 3 || v <= 5 && w != u % 2; && est plus prioritaire donc l’expression se parenthèse comme ceci : (u > 3) || ((v <= 5) && (w != u % 2)). Or u > 3 est vrai, donc inutile d’évaluer la suite. Cours 2 Cours 2
Cas d’espèce dans les expressions arithmétiques 10/04/2017 Cas d’espèce dans les expressions arithmétiques Division par zéro Arithmétique entière : génère une ArithmeticException Arithmétique flottante : Ne génère pas d'exception pour division par zéro mais Float.NaN ou Double.NaN. NaN = Not a Number Que se passe-t’il si dans l’exemple on remplace c par +3 ? On obtient delta < 0 et il s’affiche r1 = NaN, r2 = NaN Cours 2 Cours 2