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

CSI 3525, Expressions et assignations, page 1 Expressions et assignations Expressions arithmétiques Surcharge Expressions logiques Assignations.

Présentations similaires


Présentation au sujet: "CSI 3525, Expressions et assignations, page 1 Expressions et assignations Expressions arithmétiques Surcharge Expressions logiques Assignations."— Transcription de la présentation:

1 CSI 3525, Expressions et assignations, page 1 Expressions et assignations Expressions arithmétiques Surcharge Expressions logiques Assignations

2 CSI 3525, Expressions et assignations, page 2 Expressions arithmétiques Une expression arithmétique est une fonction qui associe un ou plusieurs nombres avec un autre nombre – le résultat. Les opérateurs sont généralement écrit en un format infixe (mais pas en Scheme). Précédence des opérateurs : lordre dévaluation des opérateurs dans une expression. (Les parenthèses peuvent être utilisés pour spécifier un ordre explicite.)

3 CSI 3525, Expressions et assignations, page 3 Expressions arithmétiques (2) Les opérateurs sont normalement regroupés ainsi: exposants: ** Opérateurs unaires: abs, préfixe + et -, etc. (aussi la négation ) produits: *, /, div, mod etc. (aussi le et logique ) sommes: + binaire, - binaire etc. (aussi le ou logique )

4 CSI 3525, Expressions et assignations, page 4 Précédence des opérateurs Pascal produits > sommes C unaires > produits > sommes Ada exposants > produits > + et – unaires > produits Fortran exposants > produits > sommes Les règles de précédence diffèrent dun langage à lautre.

5 CSI 3525, Expressions et assignations, page 5 Associativité (1) Soit un opérateur binaire quelconque. Associativité: De gauche à droite si x y z = (x y) z Pascal, Ada, C (tout les opérateurs normaux) De droite à gauche si x y z = x (y z) C++ ( ++ et -- ) Il y a aussi des opérateurs non-associatifs, comme lexposant en Ada: x ** y ** z est synthétiquement incorrect, quoi que (x ** y) ** z et x ** (y ** z) sont correct.

6 CSI 3525, Expressions et assignations, page 6 Associativité (2) Certains langages nont pas de règles de précédence et une seul règle dassociativité. En APL: cest toujours de droite à gauche. x + y * z veut dire x + (y * z) x * y + z veut dire x * (y + z) (!) En Smalltalk: toujours de gauche à droite. x * y + z veut dire (x * y) + z x + y * z veut dire (x + y) * z (!)

7 CSI 3525, Expressions et assignations, page 7 Expressions conditionnelles Introduite par Algol 60: if x > 0 then 1 else if x = 0 then 0 else -1 La même chose est disponible dans la famille de langages C: (x > 0 ? 1 : (x == 0 ? 0 : -1)) Les expressions conditionnelles sont essentielles en Schemece sont une des principales structures de contrôle!

8 CSI 3525, Expressions et assignations, page 8 Surcharge « overloading » La surcharge se produit lorsquun nom ou un symbole possède peut être utilise de plusieurs façons différentes. Voici quelques exemples en Pascal: +addition dentiers, addition de nombres à virgule flottante, concaténation de chaînes de caractères, union densembles. *Multiplication dentiers, multiplication de nombres à virgule flottante, intersection densembles absinteger integer, real real

9 CSI 3525, Expressions et assignations, page 9 Surcharge (2) La surcharge peut toujours être résolu selon le contexte si tout le type de tout les opérandes est connu. Pour cest ladition dentiers. Pour "a" + "cde" cest la concaténation. En Ada, la surcharge est un élément important du langage. Ada est extensible: un nouveau sens peut être donné à un opérateur, tout en maintenant lautre sens. Il est aussi possible de surcharger en C++.

10 CSI 3525, Expressions et assignations, page 10 La surcharge peut porter à confusion. En C: & et logique bit à bit et adresse, *multiplication et déréférence. En PL/I, = dénote légalité et lassignation. En Prolog, la virgule est grandement surchargée. 1.Et logique a :- b, c, d. 2.Séparateur de parametres a(b, c, d) 3.Séparateur dune liste [b, c, d] 4.un functor: (b, c, d) signifie,, b cd (3)

11 CSI 3525, Expressions et assignations, page 11 Coercition Si des objets de deux types numériques sont les opérandes, on « promeut » celui du type le plus bas. Hiérarchie des types numériques en Fortran: integer < real < double < complex En Java byte, short et char sont presque toujours promu comme un int avant lapplication dune opération arithmétiqueet reconvertie par la suite.

12 CSI 3525, Expressions et assignations, page 12 Expressions logiques Les opérateurs de comparaison: égal= ==.EQ. inégal<> !=.NE. plus petit >.GT. plus grand ou égal>= =>.GE. Fortran IV Pascal

13 CSI 3525, Expressions et assignations, page 13 Opérateurs logiques Pascal not, and, or Java !, &&, &, ||, | Ada not, and, and then, or, or else, xor En générale, les opérations utilisent une évaluation paresseuse: elles arrêtent après le premier true pour "or", ou après le premier false pour "and". Les opérateurs &&, and then, ||, or else fonctionnent ainsi.

14 CSI 3525, Expressions et assignations, page 14 Assignation Lassignation fonctionne de la même manière dans tout les langages impératifs et orienté-objet. Seul leur apparence est différente: target := expression Algol, Pascal, Ada target = expression Fortran, C, Java target expression Smalltalk Il ny a pas dassignations en Prolog, ni en Scheme pure.

15 CSI 3525, Expressions et assignations, page 15 Assignation multiple Les assignations multiples sont plus intéressantes: PL/I: A, B := EXPR; Calcule la valeur de EXPR et la met dans A et puis dans B. Algol 60: A := B := EXPR; (1)évalue EXPR. (2)Assigne la valeur à B, puis A. ou (2)Assigne la valeur à A, puis B.

16 CSI 3525, Expressions et assignations, page 16 Lordre peut être important. Considérez: I := 5; A[I] := I := 10; Lordre peut changer le résultat. Une méthode: (1)Trouver toute les adresses destination. (2)Trouver la valeur de EXPR. (3)Assigner cette valeur à A et B. Avec cette méthode, A[5] := 10 et I := 10. Multiple (2)

17 CSI 3525, Expressions et assignations, page 17 Une autre méthode: (1)Trouver la valeur de EXPR. (2)Trouver les adresses destinations et assigner la valeur aux adresses de gauche à droite. Selon cette méthode, encore A[5] := 10. Une autre méthode: (1)Trouver la valeur de EXPR. (2)Trouver les adresses destinations et assigner la valeur aux adresses de droite à gauche. maintenant, A[10] := 10. (3)

18 CSI 3525, Expressions et assignations, page 18 En C, cette expression nest pas une assignation multiple: A = B = EXPR; Ici, B = EXPR a une valeur (la même valeur que EXPR ). Cette valeur est ensuite assignée à A : lopérateur dassignation, en C, est associatif de droite à gauche. Encore les assignations

19 CSI 3525, Expressions et assignations, page 19 Une autre variation syntactique bien connue en C, C++, Java mélange les assignations aux opérateurs arithmétiques. A += B; veut dire A = A + B; A *= B; veut dire A = A * B; Et ainsi de suite. Finalement, en C++ on peut avoir des destinations conditionnelles, ce qui peut être difficile à suivre. (x != 0 ? y : z) = 17; ou (encore moins lisible) x ? y : z = 17; More on 2)


Télécharger ppt "CSI 3525, Expressions et assignations, page 1 Expressions et assignations Expressions arithmétiques Surcharge Expressions logiques Assignations."

Présentations similaires


Annonces Google