Expressions et assignations Expressions arithmtiques Surcharge Expressions logiques
- Slides: 19
Expressions et assignations • Expressions arithmétiques • Surcharge • Expressions logiques • Assignations 1
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 : l’ordre d’évaluation des opérateurs dans une expression. (Les parenthèses peuvent être utilisés pour spécifier un ordre explicite. ) 2
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) 3
Précédence des opérateurs Les règles de précédence diffèrent d’un langage à l’autre. Pascal produits > sommes C unaires > produits > sommes Ada exposants > produits > + et – unaires > produits Fortran exposants > produits > sommes 4
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 l’exposant en Ada: x ** y ** z est synthétiquement incorrect, quoi que(x ** y) ** z et x ** (y ** z) sont correct. 5
Associativité (2) Certains langages n’ont pas de règles de précédence et une seul règle d’associativité. En APL: c’est 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 (!) 6
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 Scheme—ce sont une des principales structures de contrôle! 7
Surcharge « overloading » La surcharge se produit lorsqu’un nom ou un symbole possède peut être utilise de plusieurs façons différentes. Voici quelques exemples en Pascal: + addition d’entiers, addition de nombres à virgule flottante, concaténation de chaînes de caractères, union d’ensembles. * Multiplication d’entiers, multiplication de nombres à virgule flottante, intersection d’ensembles abs integer, real 8
Surcharge (2) La surcharge peut toujours être résolu selon le contexte si tout le type de tout les opérandes est connu. Pour 2 + 3 c’est l’adition d’entiers. Pour "a" + "cde" c’est 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 l’autre sens. Il est aussi possible de surcharger en C++. 9
(3) 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 l’assignation. En Prolog, la virgule est grandement surchargée. 1. Et logique a : - b, c, d. 2. Séparateur de parametres 3. Séparateur d’une liste 4. un functor: (b, c, d) signifie a(b, c, d) [b, c, d] , , b c d 10
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 l’application d’une opération arithmétique—et reconvertie par la suite. 11
Expressions logiques Les opérateurs de comparaison: égal = == inégal <> plus petit < plus petit ou égal plus grand > plus grand ou égal . EQ. != < <= > . NE. . LT. =<. LE. . GT. >= =>. GE. Pascal Fortran IV 12
Opérateurs logiques Pascal not, and, or Java !, &&, &, ||, | Ada not, and then, 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. 13
Assignation L’assignation 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 n’y a pas d’assignations en Prolog, ni en Scheme pure. 14
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. 15
Multiple (2) L’ordre peut être important. Considérez: I : = 5; A[I] : = I : = 10; L’ordre 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. 16
(3) 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. 17
Encore les assignations En C, cette expression n’est 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: l’opérateur d’assignation, en C, est associatif de droite à gauche. 18
More on 2) 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 destinations conditionnelles, ce qui peut être difficile à suivre. (x != 0 ? y : z) = 17; ou (encore moins lisible) x ? y : z = 17; 19
- Fonction logique automatisme
- Réseaux logiques programmables
- Default surcharge
- Trs surcharge
- Tnt fuel surcharge internazionale
- Nj surcharge amnesty program
- Ferromex fuel surcharge
- Surcharge progressive
- Pebb premium surcharge attestation help sheet
- Surcharge load on retaining wall
- Preposition with pictures
- Translating english into logical expressions
- Constant in expression
- Learning objectives of algebraic expressions class 7
- Formal language
- Regular expressions wikipedia
- Carroll izard 10 basic emotions
- Present simple meaning
- Simplifying expressions problems
- Arithmetic expressions containing a null value evaluate to