1 CSI3525: Concepts des Languages de Programmation Notes # 4: Description Semantique des Languages.

Slides:



Advertisements
Présentations similaires
Algorithmes et structures de données avancés
Advertisements

Spécification et qualité du logiciel
Calculs de complexité d'algorithmes
Algorithmique Résume.
GEF 243B Programmation informatique appliquée Boucles §
GEF 243B Programmation informatique appliquée
GEF 243B Programmation informatique appliquée
Cours d'algorithmique 10 / Intranet 1 19 décembre 2006 Cours dAlgorithmique Logique de Hoare (fin) : Les boucles et les invariants.
Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.
Le jeu d ’instructions Introduction Un jeu d ’instruction classique
Les méthodes formelles en ingénierie des connaissances Damien Lhomme-Desages Jérémie Barlet.
Logique et Raisonnement Scientifique
Logique et Raisonnement Scientifique A. Lecomte Gödel et lincomplétude.
INTRODUCTION.
ESIEE Paris © Denis BUREAU I N Initiation à la programmation avec le langage Java.
5. Les structures répétitives
Les sous-programmes Chapitre n° 5: Objectifs : Activité:
CSI3525: Concepts des Langages de Programmation Notes # 5: Langages de Programmation Fonctionelle I: Introduction au Scheme.
CSI3525: Concepts des Langages de Programmation Notes # 11: Sous-Programmes ( Lire Chapitre 8 )
Qu’est-ce qu’un ordinateur ?
Les bases de l’Algorithmique
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.
Démarche de résolution de problèmes
Algorithmique et Programmation
Programmation logique Logique des prédicats du premier ordre
Sémantique axiomatique
1 CSI3525: Concepts des Languages de Programmation Notes # 2: Criteres d Evaluation des Languages.
Calcul Relationnel Chapitre 4, Section 4.3.
Algorithmique et Programmation
Complément Le diagramme des classes
Introduction à l’algorithmique
Courbes de Bézier.
Algèbre Relationnelle
CSI3525: Concepts des Langages de Programmation
CSI3525: Concepts des Langages de Programmation Notes # 7: Noms, Liaisons, Verification de Type et Portee ( Lire Chapitre 4 )
1 CSI3525: Concepts des Languages de Programmation Notes # 3: Description Syntaxique des Languages.
CSI3525: Concepts des Languages de Programmation
Chapitre 9 Les sous-programmes.
Chapitre 3 Syntaxe et sémantique.
Partie II Sémantique.
Sémantique dénotationnelle
Méthodes formelles pour la conception de systèmes répartis par Luigi Logrippo et tous ses collaborateurs et étudiants École d`ingénierie et technologie.
Le diagramme de séquences
Programmation non procédurale Le projet ECOLE 2000
Modélisation des opérations Spécifier les transformations détat que lon attend des services de la machine Létat dune machine entièrement déterminée par.
Les assertions en Java.
1 Notations Asymptotiques Et Complexité Notations asymptotiques : 0 et  Complexité des algorithmes Exemples de calcul de complexité.
ANALYSE METHODE & OUTILS
Paradigmes des Langages de Programmation
Paradigmes des Langages de Programmation
Spécification de programmes et de systèmes
Paradigmes des Langages de Programmation
O-notation 1. Introduction 2. O-notation 3. Opérations 3.1 Somme 3.2 Produit 4. Règles générales 5. Exemple 6.Analyse des algorithmes récursifs 6.1 Dilatation.
INTRODUCTION.
Les principes de la modélisation de systèmes
Algorithmique et programmation (1)‏
Un survol du language C.
CSI3525: Concepts des Langages de Programmation Notes # 13: Introduction au SmallTalk.
D.E ZEGOUR Ecole Supérieure d’Informatique. Problèmes de décision Concepts de base Expressions régulières Notation particulière pour exprimer certaines.
Le langage Racket (Lisp)
Introduction au langage C Fonctions et Procédures
Cours d'algorithmique 10 / Intranet 1 19 décembre 2006 Cours d’Algorithmique Logique de Hoare (fin) : Les boucles et les invariants.
Systèmes formels 1. Définition d'un SF Morphologie Théorie propre
Objets et Actions Élémentaires.
Initiation aux bases de données et à la programmation événementielle
1 Spécifications de Problèmes. 2 Plan Définition Motivation Qualités attendues Types de formalismes Rappels du cours de programmation Spécifications structurées.
L E C ORPS D ’ UN A LGORITHME / P ROGRAMME – L A PARTIE I NSTRUCTION Réalisé par : OUZEGGANE Redouane Département de Technologie Faculté de Technologie.
Chap. 3 Récursion et induction. Les définitions par récurrence consistent à construire des objets finis, à partir d'autres, selon certaines règles. Les.
Retour sur les interfaces Les méthodes définies dans une interface sont des méthodes qui doivent absolument être implémentées par une ou des sous-classes.
Java Réalisé par: Mouna POKORA. PLAN: Définition : Historique: Caractéristiques: un langage orienté objet: un langage interprété : un langage portable:
Transcription de la présentation:

1 CSI3525: Concepts des Languages de Programmation Notes # 4: Description Semantique des Languages

2 Rappel: Semantique Statique vs Semantique Dynamique n La semantique statique represente les formes legales des programmes qui ne peuvent pas etre facilemet decritesen grammaire BNF. On appelle cette semantique, statique, car elle est verifiee pendant la compilation. n La semantique dynamique decrit la signification des programmes ou les effets encourus par lexecution dun programme.

3 Pourquoi Decrire la Semantique Dynamique? n Les programmeurs doivent savoir exactement ce que fait chaque portion de leur programme n Les personnes qui ecrivent les compilateurs doivent aussi savoir ce que doivent faire chaque instruction. n Bien quelles soient imprecises, les programmeurs et ecrivains de compilateurs doivent se servir de descriptions en Anglais car les descriptions de semantique formelle sont tres complexes. n Neanmoins, la definition dune notation formelle et adequate serait importante car elle pourrait aider les ecrivains de compilateurs avec des descriptions plus precises, et peut-etre, meme permettre la generation de compilateur automatique.

4 Specification de la Semantique Dynamique (ou, simplement, Semantique) Il y a trois methodes de specification semantique: Description Operationnelle: la signification dun programme est determinee par lexecution de ses enonces sur une machine virtuelle. Description Denotationelle: la signification dun programme est decrite a laide de fonctions montrant leffet de lapplication dun enonce sur letat de la machine. Description Axiomatique: la signification dun programme est decrite a laide dassertions specifiant les contraintes et relations quimposent un enonce.

5 Semantique Operationnelle n Lidee de la semantique operationnelle est de decrire la signification dun programme en executant ses instructions sur une machine reelle ou simulee. Les changements qui prennent place dans le statut de la machine lorsquelle execute ces instructions represente la signification de cette instruction. n Pour construire une machine simulee idealisee, il faut deux composantes: un traducteur qui traduit le language L en language de bas-niveau et une machine virtuelle dont le statut change lorsque le code de bas- niveau est execute. n La semantique operationelle est effective. Neanmoins, elle nest pas formelle et peut creer des circularites.

6 Semantique Denotationnelle n La semantique denotationnelle est la methode la plus rigoureuse de description semantique des programmes. n Lidee consiste a definir, pour chaque entite du language, un objet mathematique et une fonction qui attache les instances de cette entite aux instances de lobjet mathematique corrspondant. n Comme pour la semantique operationelle, le statut dune machine idealisee (en fait la valeur des variables) represente la signification dune instruction n La difficulte de cette methode est dans la creation dobjets et de fonctions pour ces objets. La notation est aussi difficile a lire quoi que tres concise.

7 Semantique Axiomatique I n La semantique axiomatique est definie en conjonction avec une methode de preuve de validite de programmes. n Lorsque le programme est correct, il existe une preuve de validite et dans cette preuve, chaque proposition est precedee et suivie dune expression logique (pre-condition et post-condition) qui specifie des contraintes sur les variables du programme. Ce sont ces contraintes qui definissent la signification du programme.

8 Semantique Axiomatique II n La pre-condition la plus faible represente la pre- condition la moins restrictive qui garantie la validite de la post-condition associee a linstruction du programme. n Si la pre-condition la plus faible peut etre calculee a partir de la post-condition definie pour chaque instruction du language, preuves de validite peuvent etre construites pour les programmes de ce language. n Les preuves sont construites en partant de la fin dun programme et en remontant vers son debut. n La semantique axiomatique nest pas tres utile pour decrire la signification des languages de programmation a cause de sa comlexite. Neanmoins, elle est utile pour la recherche et pour le raisonnement sur les programmes.

9 Semantique Axiomatique III n Plus precisement, la verification de programmes se fait en deux etapes: – lassociation dune formule avec chaque etape du calcul significatif. – La demonstration que la formule finale sensuit logiquement de la formule initiale grace aux etapes et formules intermediaires. n Les formules pour laffectement et les conditions sont les formules de base. Leffet de toutes les autres instructions en decoulent logiquement.

10 Semantique Axiomatique IV: lAffectement n Supposons que x = E soit une instruction daffectement et que Q soit sa postcondition. Alors, sa precondition est definie par laxiome P = Q x --> E qui signifie que P est calcule comme Q avec toutes les instances de x remplacees par E. n Comment peut-on prouver lexactitude de programmes (et en particulier dune instruction daffectement) avec de tels outils? n

11 Semantique Axiomatique V: Justification de la procedure n Une instruction daffectement avec sa precondition et sa postcondition peuvent etre consideres comme des theoremes. n Si laxiome daffectement, lorsquapplique a la postcondition et a linstruction daffectement, produit la precondition donnee, alors on peut dire que le theoreme est prouve, et donc, le programme est exact ou correcte.

12 Semantique Axiomatique VI: la Regle de Consequence (retrecissement ou elargissement) n Parfois, la pre-condition obtenue par la procedure ne correspond pas a la pre- condition attendue. n Dans ce cas, on peut se servir de la regle de consequence qui est la regle dinference suivante: {P} S {Q}, P => P, Q => Q {P} S {Q}

13 Semantique Axiomatique VII: Sequences dinstructions Etant donne deux instructions adjacentes avec les pre- et post- conditions suivantes: {P1} S1 {P2} {P2} S2 {P3} La regle dinference pour une telle sequence est: {P1} S1 {P2}, {P2} S2 {P3} {P1} S1 ; S2 {P3}

14 Semantique Axiomatique VIII: les Instructions de Selection n If-then-else: {B and P} S1 {Q}, {(not B) and P} S2 {Q} {P} if B then S1 else S2 {Q} n If-then: {B and P} S1 {Q}, {(not B) and P} => Q {P} if B then S1 {Q}

15 Semantique Axiomatique IX: Les Boucles a Test Initial n Dans une boucle a test initial (ou une boucle while), on a une repetition dinstruction. Le probleme avec ces boucles, cependant, est quon ne sait pas combien de repetitions il y a => il est assez difficile de determiner lexactitude de ces boucles. n La methode utilisee est similaire a la methode mathematique dinduction. n Lhypothese inductive sappelle linvariant de la boucle (loop invariant)

16 Semantique Axiomatique X: Les Boucles a Test Initial n La regle dinference qui permet de trouver la pre- condition dune boucle while est la suivante: {I and B} S {I} {I} while B do S end {I and (not B)} I represente linvariant de la boucle mais il nest. pas fourni. Cest a nous de le trouver! n Comment? En calculant la pre-condition pour un certain nombre de repetitions et en essayant de deviner un motif.

17 Semantique Axiomatique XI: Les Boucles a Test Initial n Mais trouver linvariant de boucle nest pas tout!!! n Etant donne linstruction {P} while B do S end {Q}, et linvariant de boucle, I, voici un resume de toutes les choses qui doivent etre demontrees afin de prouver lexactitude dune boucle while: P => I {I} B {I} {I and B} S {I} (I and (not B)) => Q La boucle se termine.