La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

B.Shishedjiev - Affectation1 Expressions et affectation Comment produire des nouvelles valeurs.

Présentations similaires


Présentation au sujet: "B.Shishedjiev - Affectation1 Expressions et affectation Comment produire des nouvelles valeurs."— Transcription de la présentation:

1 B.Shishedjiev - Affectation1 Expressions et affectation Comment produire des nouvelles valeurs

2 B.Shishedjiev - Affectation2 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

3 B.Shishedjiev - Affectation3 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

4 B.Shishedjiev - Affectation4 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.

5 B.Shishedjiev - Affectation5 Les opérateurs de C PrioOpérateursSens 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^ 6| 5&& gauche à droit 4|| gauche à droit 3?: droit à gauche 2= *=/=%= += -= &= ^=!= >= droit à gauche 1, gauche à droit

6 B.Shishedjiev - Affectation6 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é- randes intfloat int float

7 B.Shishedjiev - Affectation7 Expressions arithmétiques Fonctions standards ▪Mathématiques ▪Entiers abs(i), labs(l), div(i),ldiv(l), rand(), random(i), randomize() ▪Double fabs(x) = |x|, sqrt(x)=  x,pow(x,y)= x y, pow10(x)=10 x, log(x)=ln x, exp(x)= e x, log10(x)=log 10 x, sin(x), sinh(x), cos(x), cosh(x), tan(x), asin(x), acos(x), atan(x), ceil(x), floor(x),

8 B.Shishedjiev - Affectation8 Expressions arithmétiques… Exemples int a=2,b =5,c =4; double x=2.5,y=1.,z=3.1; char h = ‘A’; a+b-c 3*(a-b) b/2 b/2. b % a a + b + z a + -b b / -y *z h+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

9 B.Shishedjiev - Affectation9 Expressions arithmétiques… Exemples (a+b)/(c+d) (1+x)*sqrt((2*sin(2*x)+pow(cos(x),2)-3*tan(x*x))/(1-exp(2+x)))

10 B.Shishedjiev - Affectation10 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. =

11 B.Shishedjiev - Affectation11 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 5 a ? Declarer la variable avec initialisation Affectations simples Affectations multiples l’associativité est de droit à gauche 8 8 8 Instructions invalides

12 B.Shishedjiev - Affectation12 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

13 B.Shishedjiev - Affectation13 Expressions booléennes Opérateurs comparatifs ils rendent 1 si la comparaison est vraie et 0 si elle est fausse <<>=  >>=== <=  !=  a < 5 b>= 9.5 a+b != c/d Opérateurs logiques ab! ba && ba || b 00100 01001 10101 11011 x 2 y>= 9.5 || y <= 3.2 a && b || !a && !b

14 B.Shishedjiev - Affectation14 Expressions booléennes Exécution en raccourci 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

15 B.Shishedjiev - Affectation15 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

16 B.Shishedjiev - Affectation16 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; 1012 26 Nom Adresse Valeur 30 26

17 B.Shishedjiev - Affectation17 Affectation étendue Cette 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

18 B.Shishedjiev - Affectation18 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

19 B.Shishedjiev - Affectation19 Conversion des types Conversion implicite int a = 2,b =4,c = -3; short i = 4; long j=35897 float 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’

20 B.Shishedjiev - Affectation20 Conversion des types Conversion explicite – cast opérateur (type) int a = 2,b =4; unsigned c = -3; short i = 4; long j=35897 float 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


Télécharger ppt "B.Shishedjiev - Affectation1 Expressions et affectation Comment produire des nouvelles valeurs."

Présentations similaires


Annonces Google