CSI3525: Concepts des Langages de Programmation Notes # 7: Noms, Liaisons, Verification de Type et Portee ( Lire Chapitre 4 )

Slides:



Advertisements
Présentations similaires
GEF 243B Programmation informatique appliquée
Advertisements

Premier programme en C :
Portée des variables VBA & Excel
SI3 MAM3 Hydro Nathan Cohen Igor Litovsky Christophe Papazian
Calculs de complexité d'algorithmes
GEF 243B Programmation informatique appliquée Expressions de type mixte et blocs §
GEF 243B Programmation informatique appliquée
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 &
C.
Introduction : Compilation et Traduction
ESIEE Paris © Denis BUREAU I N Initiation à la programmation avec le langage Java.
Les sous-programmes Chapitre n° 5: Objectifs : Activité:
CSI3525: Concepts des Langages de Programmation Notes # 5: Langages de Programmation Fonctionelle I: Introduction au Scheme.
Initiation à la programmation et algorithmique cours 3
CSI3525: Concepts des Langages de Programmation Notes # 11: Sous-Programmes ( Lire Chapitre 8 )
Sous-programmes Concepts généraux Passage de paramètres Fonctions
Récursivité.
Expressions et assignations
Analyse lexicale Généralités Expressions rationnelles Automates finis
CSI3525: Concepts des Langages de Programmation Notes # 12: Implementation des Sous-Programmes ( Lire Chapitre 9 )
LES SOUS-PROGRAMMES USTL Licence S.T.A. S3 A.P.I.2.
1 CSI3525: Concepts des Languages de Programmation Notes # 2: Criteres d Evaluation des Languages.
Algorithmique et Programmation
Introduction au paradigme objet Concepts importants surcharge (overload) redéfinition (override) Définition d’une classe Définition des attributs.
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.
Structures de données IFT-2000
Principes de programmation
Programmation concurrente
CSI3525: Concepts des Langages de Programmation
1 CSI3525: Concepts des Languages de Programmation Notes # 4: Description Semantique des Languages.
1 CSI3525: Concepts des Languages de Programmation Notes # 3: Description Syntaxique des Languages.
CSI3525: Concepts des Languages 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.
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é.
IFT 6800 Atelier en Technologies d’information
LIFI-Java 2004 Séance du Jeudi 9 sept. Cours 1. La notion de langage Décrire une tâche à effectuer –programme Écrire à un haut niveau –facile pour lutilisateur.
Chapitre 9 Les sous-programmes.
Chapitre 3 Syntaxe et sémantique.
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.
COURS DE PROGRAMMATION ORIENTEE OBJET :
CSI3525: Concepts des Langages de Programmation Notes # 6: Langages de Programmation Fonctionelle II: Introduction au ML.
Leçon 1 : notion dobjet IUP Génie Informatique Besançon Méthode et Outils pour la Programmation Françoise Greffier Université de Franche-Comté.
Christine Bonnet SOURCES : « Samples » dOracle, « Oracle 8 » R. Chapuis PRO*C – C ++
Types de données fondamentaux
Le langage C Rappel Pointeurs & Allocation de mémoire.
Paradigmes des Langages de Programmation
Gérer la sécurité des mots de passe et les ressources
Paradigmes des Langages de Programmation
Paradigmes des Langages de Programmation
La notion de type revisitée en POO
Créer des packages.
Un survol du language C.
CSI3525: Concepts des Langages de Programmation Notes # 13: Introduction au SmallTalk.
 Syntaxe du langage PHP
Tutorat en bio-informatique
CSI 3525, Implémentation des sous-programmes, page 1 Implémentation des sous-programmes L’environnement dans les langages structurés en bloc La structure.
1 École des Mines de Saint-Etienne. 158, cours Fauriel Saint-Etienne Cedex 2. Tél Fax Jean-Jacques Girardot
ISBN Chapitre 10 L'implémentation des sous- programmes.
Cours LCS N°4 Présenté par Mr: LALLALI
1 Programmation en C++ Marianne Morris. 2 Intro générale à la programmation On a déjà étudié le langage assembleur Langage de bas niveau Meilleur que.
Cours 4 (14 octobre) Héritage. Chapitre III Héritage.
Les bases de l’algorithmique
Scripts et fonctions Instructions de contrôle
Philippe Gandy - 8 septembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
Initiation aux bases de données et à la programmation événementielle
Philippe Gandy – 10 novembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
Introduction au langage C
L ES INSTRUCTIONS DE L ECTURE, E CRITURE ET A FFECTATION Réalisé par : OUZEGGANE Redouane Département de Technologie Faculté de Technologie – Université.
Transcription de la présentation:

CSI3525: Concepts des Langages de Programmation Notes # 7: Noms, Liaisons, Verification de Type et Portee ( Lire Chapitre 4 )

Qui a besoin dun nom? Les constantes et les variables, Les operateurs, Les labels, Les types, Les procedures et les fonctions Les modules et les programmes, Les fichiers et les disques, Les commandes et les items de menus, Les ordinateurs, les reseaux et les usagers Un nom est une voie dentrée sur lune des entitees. dun programme. On refere a quelque chose par un. nom si on veut creer cette chose, lutiliser, le. changer ou le detruire. Les entites qui ont besoin dun nom sont:

Identificateurs Un nom est designe par un identificateur sur lequel il peut exister des contraintes: Nombre maximum de lettres, Ensemble de caracteres permis, Sensibilite au majuscules, Presence de mots reserves. Example dun identificateur en Ada: ::= {[ ] ( | )} Un alias est un autre nom pour une meme entite (i.e., deux identificateurs designant la meme entite)

Mots Reserves Les mots reserves representent la colle syntaxique dun programme. Example 1: if C then S1 else S2 end if; Ceci est en fait un triplet: ( C, S1, S2 ). Example 2: while C loop S end loop; Ceci est en fait une paire: (C, S). Neanmoins, les mots reserves determinent le style du langage. Un mot cle est un mot special seulement dans certains contextes. Un mot pre-defini est entre les mots reserves et cles.

Variables Nom Addresse Valeur Type Duree de vie Portee Une variable de programme est une abstraction de. cellulle de memoire ou dune collection de cellules. Une variable peut etre caracterisee par un 6-tuplet:. Lusager decide du nom et du type de la variable.. Lemplacement de la declaration decide de sa portee. et de sa longevite. Son addresse est determinee. pendant lexecution et sa valeur depend des. instructions dans lesquelles elle apparait.

Duree de Vie et Portee Dans la plupart des langages de programmation, le meme nom peut etre re-utilise dans des contextes different et peut representer des entites differentes. Example: procedure a; var b: char; begin …. end; procedure b; var a: integer; begin … end; Des types, addresses et valeurs differentes peuvent etre associes a ces apparitions de nom. Chaque apparition a une duree de vie differente et une portee differente.

Addresse et Valeur La l-value (valeur de gauche) et la r-value (valeur de droite) sont la source et larrivee dune affectation. Par example, dans: x := y;. La l-value est laddresse de x et la r-value est la valeur de y. Cest un peu plus complique dans le cas des tableaux: T[I*2+1] := y; laddresse depend de la valeur actuelle de i.

Liaisons/Attachements Une liaison est lassociation dun attribut a un objet. Exemples: le nom, le type et la valeur sont tous des exemples dattributs de variables. Les liaisons peuvent etre etablies a different moments dans la vie dun programme: Au moment de la compilation (compile time) Au moment du chargement (load time) Au moment de lexecution (run time) Dautres distinctions plus precises incluent egalement dautres moments: celui de la creation dun langage (language design time), celui de son implementation (language implementation time), et celui de la liaison a dautre programme(link time)

Liaison dattributs aux variables On dit quune liaison est statique si elle prend place avant lexecution du programme et reste inchangee pendant cette execution. On dit quune liaison est dynamique si elle prend place pendant lexecution du programme ou si elle peut changer au cours de cette execution. Bien quen realite, la liaison physique dune variable a une cellule de memoire se defait et se refait a plusieures reprises, nous ne nous interessons pas a ces phenomenes de bas niveau.

Example des liaisons de variables I Variable nom Variable Addresse Variable Type Compile Time – Declarations Load time ou run time (e.g.,Pascal) – phenomene implicite compile time (e.g., Pascal); run time (e.g., Smalltalk) Declarations

Example des liaisons de variables II Variable valeur Variable longueur de vie Variable portee Run time ou load time (initialization) -- Instructions, surtout, affectation. Compile time – Declarations Compile time – Placement des declarations.

A propos de la Longueur de Vie Lallocation de memoire pour un objet se fait ou bien a la load time ou a la run time. Il existe, en fait, deux classes de variables: Les variables statiques: lallocation est faite une seule fois, avant que le programme commence son execution. Les variables dynamiques: lallocation est faite pendant lexecution du programme. Allocation et deallocation explicite Allocation et deallocation implicite

Portee Declarations et instructions sont groupees en blocs afin de: Grouper les etapes dune instruction non- elementaire ensemble. Interpreter les nom adequatement. La portee dun nom N represente tous les endroits dans le programme ou N referre au meme objet. Les blocs peuvent etre emboites. Les noms introduits dans un bloc sappellent les liaisons locales. Un nom mentionne mais pas defini dans un bloc doit avoir ete defini dans lun des blocs de lentourage.

14 Blocs Anonymes et Blocs Nommes Un programme, une procedure ou une fonction sont des examples de blocs nommes. Un bloc anonyme est comme une procedure sans nom et appelee immediatement et une seule fois. Les blocs anonymes sont utiles lorsquun calcul est necessaire une seule fois et ses variables ne sont necessaires que dans ce calcul: on ne veut pas les declarer a lexterieur de ce bloc.

15 Example dun emboitement et ses representations diverses Veuillez assumer que les declarations forward ont ete faites de maniere appropriee. Program P; var X: integer; procedure A; var Y: char; procedure B; var Z: boolean; begin S B end; begin S A end; procedure C; var Z: integer; begin SC end; begin SP end;

16 Cacher la Visibilite Si le meme nom X est defini dans dans un bloc environnant A et dans un bloc emboite, B (B A), alors la visibilite du X defini en A est perdue dans le bloc B qui ne voit que le X defini en B. Example: P: x, y, A B S P A: x, z S A B: y, z S B

17 La portee statique vs. la portee dynamique La portee statique (ou lexicale) permet de determiner lusage de toutes les variables dun programme de facon statique, sans executer le programme. La portee dynamique cherche un nom dans la chaine des procedures appelees. Cette chaine considere les regles de visibilite mais pas lemboitement. La portee dynamique na pas davantage a par le fait quelle soit plus simple a implementer.

18 Example de portee dynamique Program P; var X: integer; procedure A; begin X:= X+1; print(X); end; procedure B; var X:integer; begin X:= 17; A; end; begin X:=23; B; end; Quel resultat nous Donne: La portee statique La portee dynamique

19 Constantes et Initialization de Variables Lire les sections du livre

20 Verification de Type La verification de type sassure quun operateurlorsquil est appliquerecoit des arguments qui le satisfait. La verification de type peut etre faite au moment de la compilation ou a celui de lexecution. Il y a une erreur de type lorsquun argument dun type non attendu est donne a une operation. Une erreur de type peut elle aussi etre donnee au moment de la compilation ou au moment de lexecution.

21 Typage fort (Strong Typing) Un langage de programmation a un typage fort si toutes les erreurs de type peuvent etre decouvertes au moment de la compilation. Ceci nest pas facile a faire meme dans un langage tres strict tel que le Pascal. Une definition moins stricte dit quun langage a un typage fort si toutes ses erreurs peuvent etre decouverte, preferemment au moment de la compilation. Aucun langage populaire ninclut de typage fort parfait. Il y a toujours des infractions. ML a un typage parfaitement fort, mais il nest pas populaire!!

22 Conversion et Coercition Un typage trop stricte peut, en effet, ne pas etre tres pratique: Par example, Il devrait etre permis de multiplier un entier avec un reel. Certains langages permettent la conversion: e.g.: x:= float(n) * 3.14; Et dautres permettent les coercitions de types: la forme dun argument est changee automatiquement lorsque son type est legerement inappropriee. C utilise beaucoup la coercition.

23 Compatibilite de Types Deux objets de type primitif different peuvent etre compares seulement si lun des types peut etre converti dans lautre. Exemple: entier reel. Compatibilite par nom: deux variables ont des types compatibles seulement si elles sont dans la meme desclaration ou si elles sont dans des declarations qui utilisent le meme nom de type. Compatibilite par structure: deux variables ont des types compatibles si leur types ont des structures compatible. La compatibilite par nom est facile a implementer mais est tres restrictive. La compatibilite par structure est difficile a implementer mais tres flexible.