2/11/2004 P. Van Roy, InfoT4, S7 1 Informatique T4 (FSAC1450) Sémantique Peter Van Roy Département dIngénierie Informatique, UCL

Slides:



Advertisements
Présentations similaires
Premier programme en C :
Advertisements

Chapitre annexe. Récursivité
Portée des variables VBA & Excel
Fonctions & procédures
Chapitre IV. Structures linéaires (piles, files, listes chaînées)
Principes de programmation (suite)
FSAB1402: Informatique 2 Techniques de Programmation Orientée Objet
Points importants de la semaine Les commentaires. Les variables. Les instructions conditionnelles. Les instructions itératives (les boucles).
18/10/2004 P. Van Roy, InfoT4, S5 1 Informatique T4 Solutions au Test du 18 octobre Peter Van Roy Département dIngénierie Informatique, UCL
Cours 7 - Les pointeurs, l'allocation dynamique, les listes chaînées
9/11/2004 P. Van Roy, InfoT4, S8 1 Informatique T4 (FSAC1450) LEtat et lAbstraction de Données Peter Van Roy Département dIngénierie Informatique, UCL.
Récursivité.
12/10/2004 P. Van Roy, InfoT4, S4 1 Informatique T4 (FSAC1450) Récursion sur les Entiers Peter Van Roy Département dIngénierie Informatique, UCL
Démarche de résolution de problèmes
Concepts de base : la Classe Pour faire une comparaison simple, une classe serait a priori, une structure C avec des variables et des fonctions.
© 2007 P. Van Roy. All rights reserved. 1 FSAB1402: Informatique 2 La Concurrence Déclarative Peter Van Roy Département dIngénierie Informatique, UCL
CSI3525: Concepts des Langages de Programmation Notes # 12: Implementation des Sous-Programmes ( Lire Chapitre 9 )
RESUMES Module II1 SOMMAIRE CYCLE 1 : Saisir – Afficher – Données
© 2007 P. Van Roy. All rights reserved. FSAB1402: Informatique 2 Le Langage Java et les Exceptions Peter Van Roy Département dIngénierie Informatique,
© 2007 P. Van Roy. All rights reserved. 1 FSAB1402: Informatique 2 Sémantique Formelle Peter Van Roy Département dIngénierie Informatique, UCL
Introduction à la programmation (Java)
© 2005 P. Van Roy. All rights reserved. 1 FSAB1402: Informatique 2 LEtat et lAbstraction de Données Peter Van Roy Département dIngénierie Informatique,
© 2005 P. Van Roy. All rights reserved. 1 FSAB 1402: Informatique 2 Concurrence et Systèmes Multi-Agents Peter Van Roy Département dIngénierie Informatique,
© 2005 P. Van Roy. All rights reserved. 1 FSAB1402: Informatique 2 Algorithmes sur les Listes Peter Van Roy Département dIngénierie Informatique, UCL
© 2007 P. Van Roy. All rights reserved. 1 FSAB 1402: Informatique 2 Récursion sur les Entiers Peter Van Roy Département dIngénierie Informatique, UCL
LINF1251: Concurrence et Systèmes Multi-Agents
Les Fonctions. Définir une fonction Sections de code indépendantes que lon peut appeler à nimporte quel moment et dans nimporte quel ordre. Bout de code.
Introduction à la programmation I Fonctions Structures de contrôle Structures de données (arrays simples et indexés) Variables locales et globales.
© 2007 P. Van Roy. All rights reserved. 1 FSAB1402: Informatique 2 Récursion sur les Listes Peter Van Roy Département dIngénierie Informatique, UCL
© 2007 P. Van Roy. All rights reserved. 1 FSAB1402: Informatique 2 Enregistrements et Arbres Peter Van Roy Département dIngénierie Informatique, UCL
© 2007 P. Van Roy. All rights reserved. FSAB1402: Informatique 2 Programmer avec des Types Abstraits Peter Van Roy Département dIngénierie Informatique,
FSAB1402: Informatique 2 L’État et l’Abstraction de Données
© 2005 P. Van Roy. All rights reserved. FSAB1402: Informatique 2 Programmer avec lEtat Peter Van Roy Département dIngénierie Informatique, UCL
P. Van Roy, LINF LINF1251: Algorithmes sur les Listes Peter Van Roy Département dIngénierie Informatique, UCL
© 2005 P. Van Roy. All rights reserved. 1 FSAB1402: Informatique 2 Enregistrements et Arbres Peter Van Roy Département dIngénierie Informatique, UCL
29/9/2005 © 2005 P. Van Roy. All rights reserved. 1 FSAB 1402: Informatique 2 Récursion sur les Entiers Peter Van Roy Département dIngénierie Informatique,
26/10/2004 P. Van Roy, InfoT4, S6 1 Informatique T4 (FSAC1450) Récursion sur les Listes Peter Van Roy Département dIngénierie Informatique, UCL
Peter Van Roy Département d’Ingénierie Informatique, UCL
P. Van Roy, LINF1251 LINF1251: Le Langage Java Peter Van Roy Département dIngénierie Informatique, UCL
1 CSI3525: Concepts des Languages de Programmation Notes # 4: Description Semantique des Languages.
CSI3525: Concepts des Languages de Programmation
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.
Partie II Sémantique.
Sémantique dénotationnelle
P. Van Roy, LINF LINF1251: Sémantique Formelle Peter Van Roy Département d’Ingénierie Informatique, UCL
P. Van Roy, LINF LINF1251: LEtat et lAbstraction de Données Peter Van Roy Département dIngénierie Informatique, UCL
Programmation procédurale Transformations
Paradigmes des Langages de Programmation
INTRODUCTION.
Un survol du language C.
© 2005 P. Van Roy. All rights reserved. FSAB1402: Informatique 2 Le Langage Java Peter Van Roy Département d’Ingénierie Informatique, UCL
Le langage Racket (Lisp)
Introduction au langage C Fonctions et Procédures
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.
LINF 1251: Introduction à l’Algorithmique et la Programmation II
Introduction au langage C : Structures de contrôle 1 ère année Génie Informatique Dr Daouda Traoré Université de Ségou
Hiver 2004SEG2501 Chapître 41 Chapître 4 SDL – structure d’un système et son comportement.
La récursivité Mireille Goud HEG Vd AlgSD - Résurisivité.
CPI/BTS 2 Algorithmique & Programmation La récursivité Algo – Prog CPI/BTS2 – M. Dravet – 14/09/2003 Dernière modification: 14/09/2003.
6/10/2005 © 2005 P. Van Roy. All rights reserved. 1 FSAB1402: Informatique 2 Récursion sur les Listes Peter Van Roy Département d’Ingénierie Informatique,
LINF 1251: Récursion sur les Listes
La pile de crêpes.
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
Algorithmique Boucles et Itérations
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.
Java Réalisé par: Mouna POKORA. PLAN: Définition : Historique: Caractéristiques: un langage orienté objet: un langage interprété : un langage portable:
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:

2/11/2004 P. Van Roy, InfoT4, S7 1 Informatique T4 (FSAC1450) Sémantique Peter Van Roy Département dIngénierie Informatique, UCL

2/11/2004P. Van Roy, InfoT4, S72 Annonces Les solutions du test sont disponibles sur le site Web du cours Un glossaire bilingue français/anglais des termes techniques utilisés dans ce cours est disponible sur le site Web du cours Le glossaire sera mis à jour au fur et à mesure que le cours progresse

2/11/2004P. Van Roy, InfoT4, S73 Ce quon va voir aujourdhui Résumé du dernier cours Qui introduira aussi le reste du cours La sémantique du modèle déclaratif

2/11/2004 P. Van Roy, InfoT4, S7 4 Résumé du dernier cours

2/11/2004P. Van Roy, InfoT4, S75 Récursion avec les listes (1) Regardons comment on peut écrire une fonction récursive qui fait la concaténation de deux listes Voici une définition simple: fun {Append Xs Ys} case Xs of nil then Ys [] X|Xr then X|{Append Xr Ys} end end Lappel récursif est-il le dernier? On dirait non, mais les apparences peuvent tromper Traduisons en langage noyau!

2/11/2004P. Van Roy, InfoT4, S76 Récursion avec les listes (2) Pour faire apparaître largument de sortie, on écrit la fonction en tant que procédure, comme par exemple: proc {Append Xs Ys Zs} case Xs of nil then Zs=Ys [] X|Xr then Zr in {Append Xr Ys Zr} Zs=X|Zr end end Ici lappel récursif nest pas le dernier appel Mais il y a une autre manière décrire la procédure!

2/11/2004P. Van Roy, InfoT4, S77 Récursion avec les listes (3) Le compilateur Oz écrit la procédure autrement: proc {Append Xs Ys Zs} case Xs of nil then Zs=Ys [] X|Xr then Zr in Zs=X|Zr {Append Xr Ys Zr} % Dernier appel! end end On créé dabord le résultat dans Zs et ensuite on passe Zr (une variable libre) à lappel récursif Cest parce quon peut construire X|Zr avec une variable libre dedans

2/11/2004P. Van Roy, InfoT4, S78 Les leçons de cet exemple Quest-ce que cet exemple nous montre? Deux choses: 1. Pour calculez avec les listes, la fonction naïve est souvent efficace 2. Pour vraiment comprendre ce que fait un programme, il faut le langage noyau

2/11/2004P. Van Roy, InfoT4, S79 Pour les listes, la fonction naïve est souvent efficace La fonction naïve est efficace On na pas besoin dutiliser un accumulateur Parce quon peut construire une liste (Zs=X|Xr) avec une variable libre dedans (Xr) De toute façon, lappel récursif doit être le dernier pour que la fonction soit une boucle Avec les listes, on a davantage de possibilités de faire cela quavec les entiers Avec les entiers, pour faire un calcul (A=B*C) il faut connaître les arguments, ce qui nest pas vrai pour les listes

2/11/2004P. Van Roy, InfoT4, S710 Exercice! Ecrivez une fonction Append qui fait la concaténation de deux listes, avec les deux propriétés suivantes: La fonction est aussi efficace quune boucle (tous les appels récursifs sont les derniers) La fonction nutilise pas de variables libres Cest plus compliqué quun Append naïve Ceci montre limportance des variables libres

2/11/2004P. Van Roy, InfoT4, S711 Il faut le langage noyau Pour vraiment comprendre ce que fait un programme, il faut le langage noyau La syntaxe dun langage pratique peut cacher des choses! Lintuition sur le sens de la syntaxe peut être trompeuse Plusieurs sens sont souvent possibles Au contraire, le langage noyau ne cache rien Pour comprendre une exécution, il y a donc deux étapes: 1. Dabord, traduire en langage noyau 2. Ensuite, faire lexécution avec la sémantique Le langage noyau fait apparaître tout Y compris les identificateurs invisibles comme largument Zs et le résultat intermédiaire Zr

2/11/2004 P. Van Roy, InfoT4, S7 12 La sémantique du modèle déclaratif

2/11/2004P. Van Roy, InfoT4, S713 Syntaxe du langage noyau Notation EBNF; désigne une instruction ::=skip | 1 = 2 | = |local in end |if then 1 else 2 end |{ 1 … n } |case of then 1 else 2 end ::=… ::=…

2/11/2004P. Van Roy, InfoT4, S714 Syntaxe des valeurs Notation EBNF; désigne une valeur, désigne une forme (pattern) ::= | |, ::= nil | 1 | 2 ::= | ::= proc {$ 1 … n } end Ceci est une partie de la syntaxe qui suffit pour ce cours; la syntaxe complète est donnée dans le livre

2/11/2004P. Van Roy, InfoT4, S715 Les bases de lexécution Pour exécuter une instruction, il faut: Un environnement E pour faire le lien avec la mémoire Une mémoire qui contient les variables et les valeurs Instruction sémantique (, E) Remarquez: chaque instruction a son environnement! Pourquoi? Etat dexécution (ST, ) Une pile ST dinstructions sémantiques avec une mémoire Remarquez: il y a la même mémoire qui est partagée par toutes les instructions! Pourquoi?

2/11/2004P. Van Roy, InfoT4, S716 Début de lexécution Etat initial ([(, )], ) Instruction avec environnement vide (pas didentificateurs libres) Mémoire vide (pas encore de variables) A chaque pas Enlevez linstruction au sommet de la pile Exécutez linstruction Quand la pile est vide, lexécution sarrête

2/11/2004P. Van Roy, InfoT4, S717 Exemple dune exécution local X in local B in B=true if B then X=1 else skip end end

2/11/2004P. Van Roy, InfoT4, S718 Exemple: létat initial ([(local X in local B in B=true if B then X=1 else skip end end end, )], ) Commençons avec une mémoire vide et un environnement vide

2/11/2004P. Van Roy, InfoT4, S719 Exemple: linstruction local ([(local B in B=true if B then X=1 else skip end end, { X x} )], {x} ) Crééz la nouvelle variable x dans la mémoire Continuez avec le nouvel environnement

2/11/2004P. Van Roy, InfoT4, S720 Exemple: encore un local ([( (B=true if B then X=1 else skip end), { B b, X x} )], {b,x} ) Crééz la nouvelle variable b dans la mémoire Continuez avec le nouvel environnement

2/11/2004P. Van Roy, InfoT4, S721 Exemple: composition séquentielle ([(B=true, { B b, X x} ), (if B then X=1 else skip end, { B b, X x} )], {b,x} ) Linstruction composée devient deux instructions La pile contient maintenant deux instructions sémantiques

2/11/2004P. Van Roy, InfoT4, S722 Exemple: affectation de B ([(if B then X=1 else skip end, { B b, X x} )], {b= true, x} ) Affectez b à true

2/11/2004P. Van Roy, InfoT4, S723 Exemple: instruction if ([(X=1, { B b, X x} )], {b= true, x} ) Testez la valeur de B Continuez avec linstruction après le then

2/11/2004P. Van Roy, InfoT4, S724 Exemple: affectation de X ([], {b= true, x= 1 } ) Affectez x à 1 Lexécution termine parce que la pile est vide

2/11/2004P. Van Roy, InfoT4, S725 Calculs avec lenvironnement Pendant lexécution, on fait deux sortes de calculs avec les environnements Adjonction: E 2 =E 1 +{ X y} Ajouter un lien dans un environnement Pour local in end Restriction: CE=E |{B} Enlever des liens dun environnement Pour le calcul dun environnement contextuel

2/11/2004P. Van Roy, InfoT4, S726 Ladjonction Pour une instruction local local X in (E 1 ) X=1 local X in (E 2 ) X=2 {Browse X} end end E 1 ={Browse b, X x} E 2 =E 1 +{ X y} E 2 ={ Browse b, X y}

2/11/2004P. Van Roy, InfoT4, S727 La restriction Pour une définition de procédure local A B C in A=1 B=2 C=3 (E) fun {AddB X} X+B end end E={A a, B b, C c} ={a=1,b=2,c=3} CE=E |{B} ={B b}

2/11/2004P. Van Roy, InfoT4, S728 Sémantique des instructions Pour chaque instruction du langage noyau, il faut préciser ce quelle fait avec létat dexécution Chaque instruction prend un état dexécution et donne un autre état dexécution Etat dexécution = pile sémantique + mémoire Nous allons regarder quelques instructions skip 1 2 (composition séquentielle) local in end Vous pouvez regarder les autres pendant les travaux pratiques

2/11/2004P. Van Roy, InfoT4, S729 Rappel: les instructions du langage noyau Les instructions du langage noyau sont: skip 1 2 (composition séquentielle) local in end = (affectation) if then 1 else 2 end (conditionnel) Définition de procédure Appel de procédure case of then 1 else 2 end (pattern matching)

2/11/2004P. Van Roy, InfoT4, S730 skip Linstruction la plus simple Elle ne fait rien! Etat de lentrée: ([(skip,E), S 2, …, S n ], ) Etat de la sortie: ([S 2, …, S n ], ) Cest tout! S 2 S n S 2 S n (skip,E)

2/11/2004P. Van Roy, InfoT4, S (composition séquentielle) S 2 S n S 2 S n S a S b Presque aussi simple Linstruction enlève le sommet de la pile et en ajoute deux nouveaux éléments S b S a

2/11/2004P. Van Roy, InfoT4, S732 local in end Crééz la nouvelle variable x Ajoutez la correspondance {X x} à lenvironnement E (ladjonction) S 2 S n S 2 S n (local X in S end, E) (S,E+{X x}) {x}

2/11/2004P. Van Roy, InfoT4, S733 Les autres instructions Elles ne sont pas vraiment compliquées A vous de regarder tranquillement chez vous = (laffectation) Attention: quand est une procédure, il faut créer lenvironnement contextuel! if then 1 else 2 end (le conditionnel) Attention: si na pas encore de valeur, Iinstruction attend (bloque) jusquà ce que est true ou false La condition dactivation: est lié à une valeur case of then 1 else 2 end Attention: les case plus compliqués sont construits à partir de ce case simple

2/11/2004P. Van Roy, InfoT4, S734 La sémantique des procédures Définition de procédure Il faut créer lenvironnement contextuel Appel de procédure Il faut faire le lien entre les arguments formels et les arguments actuels Il faut utiliser lenvironnement contextuel

2/11/2004P. Van Roy, InfoT4, S735 Lenvironnement contextuel local Z in Z=1 proc {P X Y} Y=X+Z end end Les identificateurs libres (ici, Z) prennent des valeurs externes à la procédure Ils sont dans lenvironnement contextuel, qui doit faire partie de la procédure!

2/11/2004P. Van Roy, InfoT4, S736 Définition dune procédure Linstruction sémantique de la définition est ( =proc {$ 1 … n } end, E) Arguments formels: 1, …, n Identificateurs libres dans : 1, …, k Environnement contextuel: CE=E | 1, …, k (restriction de E) Valeur en mémoire: x=(proc {$ 1 … n } end, CE)

2/11/2004P. Van Roy, InfoT4, S737 Exemple avec procédure local P in local Y in local Z in Z=1 proc {P X} Y=X end {P Z} end end end

2/11/2004P. Van Roy, InfoT4, S738 Exemple avec procédure local P Y Z in Z=1 proc {P X} Y=X end {P Z} end Nous allons tricher un peu: nous allons faire toutes les déclarations en même temps Ce genre de tricherie est très utile

2/11/2004P. Van Roy, InfoT4, S739 Petit exercice: un local plus pratique On peut définir une version de local qui sait faire plusieurs déclarations à la fois Il faut modifier la sémantique Attention aux détails: local X X in … end

2/11/2004P. Van Roy, InfoT4, S740 Exemple avec procédure ([(local P Y Z in Z=1 proc {P X} Y=X end {P Z} end, )], ) Etat dexécution initial Environnement vide et mémoire vide

2/11/2004P. Van Roy, InfoT4, S741 Exemple avec procédure ([(local P Y Z in Z=1 proc {P X} Y=X end {P Z} end, )], ) Première instruction

2/11/2004P. Van Roy, InfoT4, S742 Exemple avec procédure ([(local P Y Z in Z=1 proc {P X} Y=X end {P Z} end, )], ) Environnement initial (vide)

2/11/2004P. Van Roy, InfoT4, S743 Exemple avec procédure ([(local P Y Z in Z=1 proc {P X} Y=X end {P Z} end, )], ) Instruction sémantique

2/11/2004P. Van Roy, InfoT4, S744 Exemple avec procédure ([(local P Y Z in Z=1 proc {P X} Y=X end {P Z} end, )], ) Pile sémantique initiale (qui contient une instruction sémantique)

2/11/2004P. Van Roy, InfoT4, S745 Exemple avec procédure ([(local P Y Z in Z=1 proc {P X} Y=X end {P Z} end, )], ) Mémoire initiale (vide)

2/11/2004P. Van Roy, InfoT4, S746 Linstruction local ([(local P Y Z in Z=1 proc {P X} Y=X end {P Z} end, )], ) Crééz les nouvelles variables en mémoire Etendez lenvironnement

2/11/2004P. Van Roy, InfoT4, S747 Linstruction local ([(Z=1 proc {P X} Y=X end {P Z}, {P p, Y y, Z z} )], {p, y, z}) Crééz les nouvelles variables en mémoire Etendez lenvironnement

2/11/2004P. Van Roy, InfoT4, S748 Composition séquentielle ([(Z=1 proc {P X} Y=X end {P Z},{P p, Y y, Z z} )], {p, y, z}) Faire la première composition séquentielle

2/11/2004P. Van Roy, InfoT4, S749 Composition séquentielle ([(Z=1,{P p, Y y, Z z} ), (proc {P X} Y=X end {P Z},{P p, Y y, Z z} )], {p, y, z}) Faire la première composition séquentielle

2/11/2004P. Van Roy, InfoT4, S750 Affectation de Z ([(proc {P X} Y=X end {P Z},{P p, Y y, Z z} )], {p, y, z =1}) Liez la variable z en mémoire

2/11/2004P. Van Roy, InfoT4, S751 Deuxième composition séquentielle ([(proc {P X} Y=X end, {P p,Y y,Z z} ), ({P Z},{P p,Y y,Z z} )], {p, y, z =1}) Faire la deuxième composition séquentielle

2/11/2004P. Van Roy, InfoT4, S752 Définition de la procédure ([(proc {P X} Y=X end, {P p, Y y, Z z} ), ({P Z},{P p, Y y, Z z} )], {p, y, z =1}) Définition de la procédure Identificateur libreY Argument formelX Lenvironnement contextuel est {Y y} Restriction de {P p, Y y, Z z} Mettez ensuite la valeur procédurale dans la mémoire

2/11/2004P. Van Roy, InfoT4, S753 Appel de la procédure ([({P Z},{P p, Y y, Z z} )], { p = (proc {$ X} Y=X end, {Y y}), y, z =1}) Lappel {P Z} a largument actuel Z et largument formel X Calcul de lenvironnement qui sera utilisé pendant lexécution de la procédure: Commencez avec {Y y} Adjonction de {X z}

2/11/2004P. Van Roy, InfoT4, S754 Appel de la procédure ([(Y=X,{Y y, X z} )], { p = (proc {$ X} Y=X end, {Y y}), y, z =1})

2/11/2004P. Van Roy, InfoT4, S755 Laffectation ([(Y=X,{Y y, X z} )], { p = (proc {$ X} Y=X end, {Y y}), y, z =1}) Affectation de Y et X La variable qui correspond à Y:y La variable qui correspond à X:z

2/11/2004P. Van Roy, InfoT4, S756 Fin de lexemple ([], { p = (proc {$ X} Y=X end, {Y y}), y=1, z =1}) Voilà!

2/11/2004P. Van Roy, InfoT4, S757 Importance de la valeur procédurale Une valeur procédurale contient deux choses Le code de la procédure et lenvironnement contextuel Lappel de la procédure construit son environnement: on commence avec lenvironnement contextuel, en y ajoutant les arguments formels La valeur procédurale est un des concepts les plus puissants dans les langages de programmation Première utilisation en Algol 68 Existe dans quasi tous les langages, parfois accessible au programmer (notamment dans les langages fonctionnels) Plus difficile à utiliser en Java, C, C ++ ! Procédure/fonction/méthode: cest juste du code! Lenvironnement contextuel manque (sauf pour un inner class) En Java et C++ on peut le simuler avec un objet

2/11/2004P. Van Roy, InfoT4, S758 Appel de procédure (1) Linstruction sémantique est ( { x y 1 … y n }, E) Si la condition dactivation est fausse (E( x ) pas lié) Suspension (attente dexécution) Si E( x ) nest pas une procédure Erreur Si E( x ) est une procédure mais le nombre darguments nest pas bon ( n) Erreur

2/11/2004P. Van Roy, InfoT4, S759 Appel de procédure (2) Linstruction sémantique est ( { x y 1 … y n }, E) avec E( x ) = ( proc {$ z 1 … z n } s end, CE) Alors empilez ( s, CE + { z 1 E( y 1 ), …, z n E( y n )})

2/11/2004 P. Van Roy, InfoT4, S7 60 Résumé

2/11/2004P. Van Roy, InfoT4, S761 Résumé Récursion sur les listes Utilisation des variables libres pour simplifier les fonctions Importance du langage noyau La sémantique dun programme Traduction en langage noyau Exécution avec la machine abstraite Exemple dexécution Instruction sémantique, pile sémantique, mémoire Sémantique des instructions du langage noyau Calculs avec les environnements Adjonction, restriction Exemple dexécution avec une procédure Une valeur procédurale contient deux choses Définition et appel de procédure