Expressions et assignations

Slides:



Advertisements
Présentations similaires
Sintaks : Tentative de guide de mise en œuvre Michel Hassenforder.
Advertisements

GEF 243B Programmation informatique appliquée
GEF 243B Programmation informatique appliquée Expressions et opérateurs §
GEF 243B Programmation informatique appliquée Expressions et opérateurs.
GEF 243B Programmation informatique appliquée Expressions de type mixte et blocs §
Cours n°2M2. IST-IE (S. Sidhom) UE 303 Promo. M2 IST-IE 2005/06 Conception dun système d'information multimédia Architecture trois-tiers : PHP/MySQL &
Le jeu d ’instructions Introduction Un jeu d ’instruction classique
CSI3525: Concepts des Langages de Programmation Notes # 11: Sous-Programmes ( Lire Chapitre 8 )
Par Clément en vacances sur la Côte d’Azur Le 17 décembre 2011
Points importants de la semaine Les types arithmétiques. Les opérateurs.
Sous-programmes Concepts généraux Passage de paramètres Fonctions
OCaml - Les listes L3 MI.
Partie 1 Etude de l'existant
44 Contrôle du déroulement du programme. 4-2 Objectifs A la fin de ce cours, vous serez capables de : Utiliser les constructions de prise de décision.
Algèbre de Boole et les Boucles
Analyse lexicale Généralités Expressions rationnelles Automates finis
RESUMES Module II1 SOMMAIRE CYCLE 1 : Saisir – Afficher – Données
Sémantique axiomatique
Le codage des nombres en informatique
33 Types de données et opérateurs. 3-2 Objectifs A la fin de ce cours, vous serez capables de : Décrire les types de données primitives Déclarer et initialiser.
Question Comment le compilateur fait-il pour évaluer une expression telle que : A + B lorsque A et B sont des données de types arithmétiques différents.
Programmation multimédia 3
Complément Le diagramme des classes
Base de programmation Script unity en c#.
Un peu de revision. 2.1 Les Exposants et Leurs Racines Pages But: Utilisez les exposants pour représenter les multiplications répétées.
Les pointeurs Modes d’adressage de variables. Définition d’un pointeur. Opérateurs de base. Opérations élémentaires. Pointeurs et tableaux. Pointeurs et.
Principes de programmation
CSI3525: Concepts des Langages de Programmation
CSI 3525, Noms etc., page 1 Noms, attachement, porté, vérification de type Noms, variables Attachement Porté Constantes Initialisation des variables Vérification.
Chapitre 1 Le Sens des nombres
Contrôle de types Les types en programmation Expressions de types Un contrôleur de types Equivalence de types Conversions de types Généricité.
Cours N°2 Base de Données & Langage SQL
IFT 6800 Atelier en Technologies d’information
Chapitre 3 Syntaxe et sémantique.
Expressions et affectations
8PRO100 Éléments de programmation Les types composés.
1-1 Chapitre 5: Les variables Introduction Les noms Les variables Les attributions (bindings) Portée et durée de vie L'environnement de référence Les noms.
Partie II Sémantique.
Sémantique dénotationnelle
COURS DE PROGRAMMATION ORIENTEE OBJET :
CSI3525: Concepts des Langages de Programmation Notes # 6: Langages de Programmation Fonctionelle II: Introduction au ML.
Instructions de contrôle
Résoudre une équation du 1er degré à une inconnue
Programmation logique Le Langage PROLOG
Le calcul algébrique.
Les Opérateurs Ils régissent toutes les opérations ou transformations sur les valeurs des variables. Opérateur d'affectation Opérateurs arithmétiques Opérateurs.
L’essentiel du langage C
chapitre -1- OPERATIONS [B] REGLES DE PRIORITE (f n°103) lundi 15 septembre 2014  rappels de 6°  du nouveau en 5°  applications  exercices  Page.
Algorithmique Les structures Rappel L'enchaînement séquentiel
Ecrire des expressions arithmétiques et logiques
Chapitre 3 :Algèbre de Boole
Algorithmique et programmation en
L’écriture des grands nombres: les puissances de 10
Un survol du language C.
Les expressions algébriques
Arbres binaires et tables de hachage
REPRESENTATION DE L’INFORMATION
Le langage Racket (Lisp)
Objets Opérateurs Listes
B.Shishedjiev - Affectation1 Expressions et affectation Comment produire des nouvelles valeurs.
CSI 3525, Types, page 1 Types de donnés Types de donnés primitifs Types de donnés structurées Chaînes de caractères Types énumérés Tableaux Enregistrements.
Module 133 Développer des applications Web Introduction à PHP.
Les expressions. Une expression retourne une valeur lorsqu’elle est exécutée par le programme. a+2, x==0, i++, !isdigit(c) && b, sin(Pi),… On peut donc.
PRO-1027 Programmation Scientifique en C
Chapitre 4 La représentation des nombres.
Chapitre 4b La représentation des nombres.
Philippe Gandy - 8 septembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
Philippe Gandy - 22 septembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
Philippe Gandy - 15 septembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
C++ BY AURÉLIEN MODULO MARION. PLAN DES TROIS PRÉSENTATIONS C++ avancé C++ orienté objet Bases de C++
Transcription de la présentation:

Expressions et assignations Expressions arithmétiques Surcharge Expressions logiques Assignations

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.)

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)

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

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.

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 (!)

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!

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  integer, real  real

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++.

La surcharge peut porter à confusion. En C: (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. Et logique a :- b, c, d. Séparateur de parametres a(b, c, d) Séparateur d’une liste [b, c, d] un functor: (b, c, d) signifie , b c d

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.

Expressions logiques Les opérateurs de comparaison: égal = == .EQ. inégal <> != .NE. plus petit < < .LT. plus petit ou égal <= =< .LE. plus grand > > .GT. plus grand ou égal >= => .GE. Pascal   Fortran IV

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.

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.

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.

L’ordre peut être important. Considérez: I := 5; A[I] := I := 10; 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.

(1) Trouver la valeur de EXPR. (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. (2) Trouver les adresses destinations et assigner la valeur aux adresses de droite à gauche. maintenant, A[10] := 10.

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.

ou (encore moins lisible) x ? y : z = 17; 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 des destinations conditionnelles, ce qui peut être difficile à suivre. (x != 0 ? y : z) = 17; ou (encore moins lisible) x ? y : z = 17;