Expressions et affectation

20
B.Shishedjiev - Affectati on 1 Expressions et affectation Comment produire des nouvelles valeurs

description

Expressions et affectation. Comment produire des nouvelles valeurs. Expressions. L’expression est un élément du langage qui produit une règle comment calculer une nouvelle valeur à l’aide des opérandes et opérateurs Les opérateurs donnent les instructions comment obtenir la valeur; - PowerPoint PPT Presentation

Transcript of Expressions et affectation

Page 1: Expressions et affectation

B.Shishedjiev - Affectation 1

Expressions et affectation

Comment produire des nouvelles valeurs

Page 2: Expressions et affectation

B.Shishedjiev - Affectation 2

Expressions• L’expression est un élément du langage qui produit

une règle comment calculer une nouvelle valeur à l’aide des opérandes et opérateurs▪ Les opérateurs donnent les instructions comment obtenir

la valeur;▪ Les opérandes sont les données sur lesquelles les

opérateurs agissent.

• Exécuter une expression – c’est de:▪ Produire une valeur

▪ Calculer la valeur depuis les opérandes▪ Eventuellement changer la valeur d’un ou plusieurs

opérandes▪ Déterminer le type de la valeur produite

Page 3: Expressions et affectation

B.Shishedjiev - Affectation 3

Types d’opérateurs• Opérateurs unaires ( ++ -- sizeof - (type) ! )

Ils peuvent être préfixe ( !x ) ou postfixe ( x++ )• Opérateurs binaires ( + - * / && || )

Ils ont deux opérandes ( x + y )• Opérateurs ternaires( ?: )

z ? x : y

Page 4: Expressions et affectation

B.Shishedjiev - Affectation 4

Priorité et associativité• Ils gèrent l’ordre dans lequel sont evalués les

opérateurs individuels quand l’expression comporte plusieurs opérateurs.

• Les opérateurs avec priorité supérieure sont évalués avant ceux avec une priorité inférieure.

• Quand ils sont de même priorité ils sont évalués selon le sens de l’associativité.

• On peut changer l’ordre à l’aide de parenthèses.

Page 5: Expressions et affectation

B.Shishedjiev - Affectation 5

Les opérateurs de CPrio Opérateurs Sens de l'associativité

15 () [] -> . gauche à droit

14 ! ~ +(un)-(un)++ -- &(un) *( un) (type) sizeof droit à gauche

13 *(bin) / % gauche à droit

12 +(bin) -(bin) gauche à droit

11 << >> gauche à droit

10 < <= > >= gauche à droit

9 == != gauche à droit

8 &(bin) gauche à droit

7 ^ gauche à droit

6 | gauche à droit

5 && gauche à droit

4 || gauche à droit

3 ?: droit à gauche

2 = *= /= %= += -= &= ^= != <<= >>= droit à gauche

1 , gauche à droit

Page 6: Expressions et affectation

B.Shishedjiev - Affectation 6

Expressions arithmétiques• Opérateurs d’addition

▪ addition + ▪ soustraction -

• Opérateurs de multiplication▪ multiplication * ▪ division / ▪ modulo (le reste de division entière) %

• Opérateurs unaires ▪ moins unaire -

• Type de résultat Opé-

randesint float

int int float

float float float

Page 7: Expressions et affectation

B.Shishedjiev - Affectation 7

Expressions arithmétiques• Fonctions standards

▪ Mathématiques▪ Entiers

abs(i), labs(l), div(i),ldiv(l), rand(), random(i), randomize()

▪ Doublefabs(x) = |x|, sqrt(x)=x,pow(x,y)= xy, pow10(x)=10x, log(x)=ln x, exp(x)= ex, log10(x)=log10x, sin(x), sinh(x), cos(x), cosh(x), tan(x), asin(x), acos(x), atan(x), ceil(x), floor(x),

Page 8: Expressions et affectation

B.Shishedjiev - Affectation 8

Expressions arithmétiques…• Exemplesint a=2,b =5,c =4;double x=2.5,y=1.,z=3.1;char h = ‘A’;

a+b-c3*(a-b)b/2b/2.b % aa + b + za + -bb / -y *zh+2

Résultat 3

Résultat -9

Résultat 2

Résultat 2.5

Résultat 1

Résultat 10.1

Résultat -3

Résultat -15.5

Résultat ‘C’ ou 67

Page 9: Expressions et affectation

B.Shishedjiev - Affectation 9

Expressions arithmétiques…• Exemples

a b

c d

(a+b)/(c+d)

12 2 3

1

2 2

2

xx x tgx

e x

sin cos

(1+x)*sqrt((2*sin(2*x)+pow(cos(x),2)-3*tan(x*x))/(1-exp(2+x)))

Page 10: Expressions et affectation

B.Shishedjiev - Affectation 10

Affectation simple• Syntaxe

Lvalue est un objet qui peut contenir une valeur (une variable ou une expression qui vaut une adresse de la mémoire)

RValue vaut une valeur (la valeur d’une variable ou une expression qui produit une valeur)

• Exécution de l’opérateur d’affectation▪ Calcule l’expression de Rvalue et obtient sa valeur▪ Enregistre la valeur dans Lvalue▪ Le résultat est la valeur enregistrée.

<Lvalue> = <Rvalue>

Page 11: Expressions et affectation

B.Shishedjiev - Affectation 11

Affectation simple• Exemples

int a,b,c;

int d = 3;

a = 5;

b = 3+a;

c = a = b;

4=a;a+b=c;

Declarer les variables sans spécifier leur valeur Mémoire

b ?

c ?

d 3

5a ?Declarer la variable avec initialisation

Affectations simples

Affectations multiples l’associativité est de droit à gauche

8

8

8

Instructions invalides

Page 12: Expressions et affectation

B.Shishedjiev - Affectation 12

Opérateurs incrémentaux • Opérateurs de

préincrément et de prédécrement

L'opérande doit être une Lvalue

• Opérateurs de postincrément et de postdécrement

int a =5,b=3,c=1;a = 5 + ++c;c = 2 * -- b;

Mémoire

b 3

c 1

a 57

2

24

int a =5,b=3,c=1;a = 5 + c++;c = 2 * b--;a++;--c;

b 3

c 1

a 57

2

2

6

65

Page 13: Expressions et affectation

B.Shishedjiev - Affectation 13

Expressions booléennes• Opérateurs comparatifs

ils rendent 1 si la comparaison est vraie et 0 si elle est fausse

< < >=

> > == =

<= !=

a < 5b>= 9.5a+b != c/d

• Opérateurs logiques

a b ! b a && b a || b

0 0 1 0 0

0 1 0 0 1

1 0 1 0 1

1 1 0 1 1

x < 5 && x > 2y>= 9.5 || y <= 3.2a && b || !a && !b

Page 14: Expressions et affectation

B.Shishedjiev - Affectation 14

Expressions booléennes• Exécution en raccourci

x < 5 && x++ > 2

x > 5 || x++ < 2

Avant: x =3 Après: Resultat vrai x = 4

Avant: x =6 Après: Resultat faux x = 6

Avant: x =3 Après: Resultat faux x = 4

Avant: x =6 Après: Resultat vrai x = 6

Page 15: Expressions et affectation

B.Shishedjiev - Affectation 15

Expression conditionnelle• Syntaxe

condition ? expression-1 : expression-2

• Exemple int a = 2,b =4,c = -3;int d;

d = a>b ? a : b;

d = c>=0 ? c : -c;

d = (a != b ? 5 : 1) * 2;

d = 4

d = 3

d = 10

Page 16: Expressions et affectation

B.Shishedjiev - Affectation 16

Opérateurs sur les pointeurs • Indirection

(déréférence) * - délivre la valeur pointée.

• Adresse &délivre l’adresse d’une variable

Mémoire

pi ?

j ?

int j, *pi; j = 10; pi = &j; *pi = 12;

101226

Nom Adresse Valeur

30 26

Page 17: Expressions et affectation

B.Shishedjiev - Affectation 17

Affectation étendueCette affectation est appelée encore élargie ou complexe• Syntaxe

exp1 = exp2

où est + - * / etc.

exp1 = exp1 exp2

• Exemples

int a = 2,b =4,c = -3;

a += 5

b *= a-2

c += a>b ? a-b : b-a

a = 7

b=20

c=10

Page 18: Expressions et affectation

B.Shishedjiev - Affectation 18

L’opérateur sizeof• Sizeof rend la taille de son opérande en octets• Exemples

int a = 2,b =4,c = -3;short i;long j;float x;double z;a = sizeof i;b = sizeof z/ sizeof x;c = sizeof(int);

a = 2

b=2

c=2

Page 19: Expressions et affectation

B.Shishedjiev - Affectation 19

Conversion des types• Conversion impliciteint a = 2,b =4,c = -3;short i = 4; long j=35897float x =3.2; double z = -4.5;char d = ‘A’;a = j;b = x;c = z;x = 5;c = d;d = 66;

a = -29912

b=3

c=-4

x = 5.0

c=65

d=‘B’

Page 20: Expressions et affectation

B.Shishedjiev - Affectation 20

Conversion des types• Conversion explicite – cast opérateur (type)

int a = 2,b =4;unsigned c = -3;short i = 4; long j=35897float x =3.2; double z = -4.5;char d = ‘A’;x = (float)c/2;b = (int)x;c = (unsigned int) j;a = (int)x/2;

x = -1.5

b=3

c=35897

a = 1