Introduction à la compilation TD 1 : Analyse LL(1)
|
|
|
- Jean-Christophe Lecompte
- il y a 8 ans
- Total affichages :
Transcription
1 Introduction à la compilation TD 1 : Analyse LL(1) Université Paris Diderot Licence 3 ( ) Exercice 1 S E$ E OEE A O + A n (E) 1. Calculez la fonction FIRST pour tous les non termaux de cette grammaire. FIRST (S) = FIRST (E) = { +, *, (, n } FIRST (O) = { +, * } FIRST (A) = { n, ( } 2. La grammaire est-elle LL(1)? Si oui, quelle est la table d analyse correspondante? Si non, existe-t-il une grammaire équivalente LL(1)? Dans ce cas, donnez-en la table d analyse. Pour savoir si une grammaire est LL(1), il suffit d essayer de construire la table d analyse LL(1) de la grammaire. Asi, on obtient : + ( ) n $ S S E$ S E$ S E$ S E$ E E OEE E OEE E A E A O O O + A A (E) A n Il n y a qu une règle par case, cette grammaire est bien LL(1). 3. Écrivez un programme CAML qui terprète cette table pour détermer si un mot est dans le langage engendré par cette grammaire. type nontermal = S E O A type termal = LPAREN RPAREN EOF INT PLUS STAR type symbol = Termal of termal NonTermal of nontermal type rule = Rule1 (* S -> E $ *) Rule2 (* E -> O E E *) Rule3 (* E -> A *) Rule4 (* O -> + *) Rule5 (* O -> * *) Rule6 (* A -> n *) 1
2 Rule7 (* A -> ( E ) *) let expand = function Rule1 [NonTermal E ; Termal EOF ] Rule2 [NonTermal O ; NonTermal E ; NonTermal E] Rule3 [NonTermal A] Rule4 [Termal PLUS] Rule5 [Termal STAR] Rule6 [Termal INT] Rule7 [Termal LPAREN ; NonTermal E ; Termal RPAREN] exception Fail let table = function S (function STAR PLUS LPAREN INT Rule1 _ raise Fail) E (function STAR PLUS Rule2 LPAREN INT _ Rule3 _ raise Fail) O (function STAR Rule5 PLUS Rule4 _ raise Fail) A (function LPAREN Rule7 INT _ Rule6 _ raise Fail) type prediction = symbol list type put = termal list type configuration = put * prediction exception TokenError of termal * termal exception SyntaxError let rec parse = function (token : : put, Termal token : : prediction) if token = token then parse (put, prediction) else raise (TokenError (token, token )) (token : : put, NonTermal s : : prediction) let rule = table s token parse (token : : put, expand prediction) ([], []) () 2
3 _ raise SyntaxError let parse put = parse (put, [NonTermal S]) 4. Écrivez un programme CAML qui implémente cette table à l aide de quatre fonctions mutuellement récursives. let parse = let ( > ) p1 p2 = fun put p2 (p1 put) and (» ) put p = p put let current_token = function token : : _ token [] assert false let accept token put = if current_token put token then raise (TokenError (current_token put, token)) ; List.tl put let rec parse_s put = match current_token put with STAR PLUS LPAREN INT put» (parse_e > (accept EOF)) _ raise SyntaxError and parse_e put = match current_token put with STAR PLUS put» (parse_o > (parse_e > parse_e)) LPAREN INT put» parse_a _ raise SyntaxError and parse_o put = match current_token put with STAR put» (accept STAR) PLUS put» (accept PLUS) _ raise SyntaxError and parse_a put = match current_token put with LPAREN put» (accept LPAREN > (parse_e > (accept RPAREN))) INT put» (accept INT) _ raise SyntaxError parse_s 5. Explicitez les étapes de la reconnaissance de la chaîne +( 21)(+(+11)2)$. 3
4 +( II)(+(+II)I)$ II)(+(+II)I)$ +(+II)I)$ II)I)$ S EE)E$ E)$ AE)E)$ +( II)(+(+II)I)$ II)(+(+II)I)$ +(+II)I)$ II)I)$ E$ AE)E$ OEE)$ IE)E)$ +( II)(+(+II)I)$ II)(+(+II)I)$ +(+II)I)$ I)I)$ OEE$ IE)E$ +EE)$ E)E)$ +( II)(+(+II)I)$ I)(+(+II)I)$ (+II)I)$ I)I)$ +EE$ E)E$ EE)$ A)E)$ ( II)(+(+II)I)$ I)(+(+II)I)$ (+II)I)$ I)I)$ EE$ A)E$ AE)$ I)E)$ $ ( II)(+(+II)I)$ I)(+(+II)I)$ (+II)I)$ )I)$ $ AE$ I)E$ (E)E)$ )E)$ ( II)(+(+II)I)$ )(+(+II)I)$ +II)I)$ I)$ (E)E$ )E$ E)E)$ E)$ II)(+(+II)I)$ (+(+II)I)$ +II)I)$ I)$ E)E$ E$ OEE)E)$ A)$ II)(+(+II)I)$ (+(+II)I)$ +II)I)$ I)$ OEE)E$ A$ +EE)E)$ I)$ II)(+(+II)I)$ (+(+II)I)$ II)I)$ )$ EE)E$ (E)$ EE)E)$ )$ 6. Explicitez les étapes du rejet de la chaîne (+1( 2))$. (+I( I))$ +I( I))$ ( I))$ I))$ S OEE)$ E)$ EE))$ (+I( I))$ +I( I))$ ( I))$ I))$ E$ +EE)$ A)$ EE))$ (+I( I))$ I( I))$ ( I))$ I))$ A$ EE)$ (E))$ AE))$ (+I( I))$ I( I))$ I))$ I))$ (E)$ AE)$ E))$ IE))$ +I( I))$ I( I))$ I))$ ))$ E)$ IE)$ OEE))$ E))$ 7. ( ) Comment adapter votre analyseur syntaxique pour qu il produise un arbre de production si il existe? type action = Recognize of symbol 4
5 Produce of rule let recognize_usg r = List.map (fun x Recognize x) (expand [Produce r] type prediction = action list type put = termal list type ptree = Rule of rule * ptree list Leaf of termal exception TokenError of termal * termal exception SyntaxError let apply_rule = function Rule1 (function teof : : te : : ts Rule (Rule1, [te ; teof]) : : ts Rule2 (function te : : te : : to : : ts Rule (Rule2, [to ; te ; te]) : : ts Rule3 (function ta : : ts Rule (Rule3, [ta]) : : ts Rule4 (function tp : : ts Rule (Rule4, [tp]) : : ts Rule5 (function ts : : ts Rule (Rule5, [ts]) : : ts Rule6 (function ti : : ts Rule (Rule6, [ti]) : : ts Rule7 (function tr : : te : : tl : : ts Rule (Rule7, [tl ; te ; tr]) : : ts type configuration = ptree list * put * prediction let strg_of_action = function Recognize s strg_of_symbol s Produce r strg_of_rule r let rec parse (configuration : configuration) : ptree = prt_configuration configuration ; match configuration with (pts, tokens, Produce rule : : prediction) let pts = apply_rule rule pts parse (pts, tokens, prediction) (pts, token : : put, Recognize (Termal token ) : : prediction) (* Étape d acceptation d un caractère. *) 5
6 if token = token then parse (Leaf token : : pts, put, prediction) else raise (TokenError (token, token )) (pts, token : : put, Recognize (NonTermal s) : : prediction) (* Étape de prédiction. *) let rule = table s token parse (pts, token : : put, recognize_usg prediction) ([ptree], [], []) ptree _ raise SyntaxError let parse put = parse ([], put, [Recognize (NonTermal S)]) 8. ( ) Comment obtenir un arbre de syntaxe abstraite à partir de l arbre de production produit par votre analyseur syntaxique? type exp = Add of exp * exp Mul of exp * exp Int let exp_of_ptree = let rec aux = function Leaf INT (function [] Int _ assert false) Rule (Rule1, [t ; _]) aux t Rule (Rule2, [to ; te ; te ]) (function [] (aux to) [ get te ; get te ] _ assert false) Rule (Rule3, [ta]) aux ta Rule (Rule4, [tp]) (function [a ; b] Add (a, b) _ assert false) Rule (Rule5, [ts]) (function [a ; b] Mul (a, b) _ assert false) Rule (Rule6, [ti]) aux ti Rule (Rule7, [_ ; te ; _]) aux te _ assert false and get i : exp = aux i [] get Exercice 2 S E$ E T + E T! T F T F! F n (E) 1. Calculez la fonction FIRST pour tous les non termaux de cette grammaire. FIRST (S) = FIRST (E) = FIRST (T) = FIRST (F) = { n, ( } 6
7 2. La grammaire est-elle LL(1)? Si oui, quelle est la table d analyse correspondante? Si non, existe-t-il une grammaire équivalente LL(1)? Dans ce cas, donnez-en la table d analyse. Pour savoir si une grammaire est LL(1), il suffit d essayer de construire la table d analyse LL(1) de la grammaire. Asi, on obtient : + ( ) n! $ S S E$ S E E E T + E E T + E E T! E T! T T F E T F E T F! T F! F F (E) F n Cette grammaire n est pas LL(1) car il y a deux règles dans 4 cases. Pour la rendre LL(1), il faut factoriser à gauche ces règles en réécrivant la grammaire itiale de la façon suivante : S E$ E T E E +E! T F T T T! F n (E) Exercice 3 Considérez la grammaire suivante : S E$ T T F F E E + T E T T F id (E) (num) 1. Pourquoi cette grammaire n est pas LL(1)? Il y a au mos deux raisons à cela : F IRST (E + T ) = F IRST (E T ) ; aucune grammaire avec récursion gauche est LL(1). 2. Élimez les récursions gauches. On obtient : S E$ E T E E +T E T E ɛ T F T T F T ɛ F id (E) (num) 3. Est-ce que la grammaire obtenue asi est LL(1)? La grammaire obtenue après élimation n est pas LL(1) à cause de F (E) et F (num). Elle est LL(2). On peut la factoriser pour la rendre LL(1) en troduisant les règles : F (F et F E) num) Exercice 4 On considère la grammaire : S E$ E T E E +T E ɛ T F T T F T ɛ F (E) id 1. Calculez les symboles annulables (c est-à-dire les symboles qui ont. ɛ dans F IRST ) E et T sont annulables. 7
8 2. Calculez FIRST des symboles non termaux. FIRST(S) = FIRST(E) = FIRST(T ) = FIRST(F ) = {(, id}. FIRST(E ) = {+, ɛ}, FIRST(T ) = {, ɛ}. 3. Calculez FOLLOW des symboles non termaux. FOLLOW (S) = FOLLOW (E) = FOLLOW (E ) = {), $} FOLLOW (T ) = FOLLOW (T ) = {+, ), $} FOLLOW (F ) = {+,, ), $}. 4. Donnez une table d analyse descendante pour cette grammaire. La grammaire est-elle LL(1)? Expliquez. On vérifie que pour chaque couple (A, a) composée d un non-termal et d un termal il y au plus une règle qui s applique. Une règle A α, α ɛ s applique si a FIRST(α). Une règle A ɛ s applique si a FOLLOW (A). Exercice 5 On considère la grammaire : S A B A aab 0 B abbb 1 1. Quel est le langage généré par cette grammaire? C est le langage {a n 0b n n 0} {a n 1b 2n n 0}. On le prouve par double clusion. Première clusion : Montrons d abord que tout mot engendré par cette grammaire est dans ce langage, c est-à-dire que pour tout k tel que S k w, alors il existe un entier n tel que w = a n 0b n ou w = a n 1b 2n. On va montrer un résultat un peu plus fort : pour tout k tel que S k w, alors il existe un entier n tel que w = a n Ab n ou w = a n Bb 2n. Par duction sur k, si k = 0 alors il n y a pas de dérivation de taille 0 donc le résultat est vrai. Supposons matenant que le résultat est vrai pour k et montrons-le vrai pour k + 1. On se donne donc w tel que S k u w. Par duction, on sait qu il existe m tel que u = a m Ab m ou u = a m Bb 2m. Il suffit alors de procéder par cas sur la dernière règle utilisée : Si cette règle est S A ou S B alors il suffit de choisir n = 0. Si cette règle est A aab alors cela signifie que u contient un A donc que u est de la forme u = a m Ab m, ce qui, en appliquant la règle considérée, produit w = a m+1 Ab m+1. Si cette règle est B abbb alors cela signifie que u contient un B don que u est de la forme u = a m Bb 2m, ce qui, en appliquant la règle considérée, produit w = a m Bb 2(m+1). En utilisant ce résultat sur un mot w qui ne contient que des termaux, la dernière règle appliquée traduit nécessairement le non termal A en 0 si w est de la première forme et le non termal B en 1 si w est de la seconde forme. Seconde clusion : Par duction sur n, on montre facilement que tout mot w = a n 0b n peut être engendré par la grammaire : il suffit d avoir appliqué n fois la première de règle A puis de termer avec la seconde règle. Le même raisonnement s applique sur les mots de la forme w = a n 1b 2n. 2. Calculer les ensembles FIRST de S, A et B. F IRST (S) = F IRST (A) = F IRST (B) = {a}. 3. La grammaire est-elle LL(1)? Non, puisque l on ne sait pas choisir entre la reconnaissance d un A ou d un B à la vue d un seul a. Il faudrait attendre d avoir vu passé tous les a jusqu à arriver à un 1 ou un 0 pour prendre cette décision. 4. Pouvez-vous construire un automate à pile détermiste qui reconnaît le langage généré par la grammaire? 8
9 Oui, et pour faciliter la défition on donne un automate à pile avec acceptation à pile vide. Soit A = (Q = {q a, q 0, q 1, q 1, q f }, Σ = {a, b, 0, 1}, Γ = {a, Z 0 }, δ, q a, Z 0, q f ) où les transitions de l automate sont : δ(q a, aw, π) = (q a, aπ) δ(q a, 0w, π) = (q 0, π) δ(q 0, bw, aπ) = (q 0, π) δ(q a, 1w, π) = (q 1, π) δ(q 1, bw, aπ) = (q 1, π) δ(q 1, bw, aπ) = (q 1, π) 5. ( ) Pouvez-vous écrire un programme CAML qui reconnaît ce langage? type token = Ta Tb T1 T0 EOF exception Unexpected of token let parse tokens = let (accept, next, current) = let rec state = ref tokens let next () = match!state with [] state : = [EOF] _ : : toks state : = toks let current () = match!state with [] EOF tok : : _ tok let accept tok = if tok current () then raise (Unexpected (current ())) ; next () (accept, next, current) let rec parse_s () = parse_a_or_b (fun () ()) (fun () ()) ; accept EOF and parse_a_or_b parse_end_of_a parse_end_of_b = match current () with Ta next () ; parse_a_or_b (fun () accept Tb ; parse_end_of_a ()) (fun () accept Tb ; accept Tb ; parse_end_of_b ()) Tb raise (Unexpected Tb) T0 next () ; parse_end_of_a () T1 next () ; parse_end_of_b () parse_s () Une autre solution existe si on utilise un entier pour compter les symboles a lus. 9
10 Exercice 6 On considère la grammaire suivante : S ietss a S es ɛ E b Expliquez pourquoi cette grammaire n est pas LL(1). Elle n est pas LL(1) car e First(S ) Follow(S ). La grammaire est-elle ambiguë? Oui. Par exemple, le mot ibtibtaea peut être engendré par deux arbres de dérivation différents. Exercice 7 Considérez la grammaire suivante : S S $ S S AB S BC BB A aaa ɛ B bb ɛ C cc ɛ Calculez les symboles annulables et les ensembles FIRST et FOLLOW. Est-ce que la grammaire est LL(1)? A, B et C sont clairement annulable à cause des règles A ɛ. Alors S est annulable à cause de la règle S BB. Les équations pour le calcul de FIRST et FOLLOW sont : F IRST (A) = {a, ɛ} F OLLOW (A) F OLLOW (A) = {a} F IRST (B) F OLLOW (B) F IRST (B) = {b, ɛ} F OLLOW (B) F OLLOW (B) = F IRST (C) F IRST (B) F OLLOW (S ) F IRST (S ) = F IRST (S ) F IRST (B) F OLLOW (S ) = {$} F IRST (A) F IRST (B) F IRST (S) = F IRST (S ) F OLLOW (S ) En faisant une résolution itérative de ce système en partant de on obtient que les ensembles FIRST de A, B, C, S sont égaux à {a, b, c, $, ɛ} et FISRT(S) et tous les ensembles FOLLOW sont égaux à {a, b, c, $}. La grammaire n est pas LL(1) car elle est récursive ou, par exemple, F IRST (A) F OLLOW (A). 10
Machines virtuelles fonctionnelles (suite) Compilation ML Java
Machines virtuelles fonctionnelles (suite) Compilation ML Java Cours de Compilation Avancée (MI190) Benjamin Canou Université Pierre et Maire Curie Année 2011/2012 Semaine 3 Machines virtuelles fonctionnelles
Cours 1 : La compilation
/38 Interprétation des programmes Cours 1 : La compilation Yann Régis-Gianas [email protected] PPS - Université Denis Diderot Paris 7 2/38 Qu est-ce que la compilation? Vous avez tous déjà
Recherche dans un tableau
Chapitre 3 Recherche dans un tableau 3.1 Introduction 3.1.1 Tranche On appelle tranche de tableau, la donnée d'un tableau t et de deux indices a et b. On note cette tranche t.(a..b). Exemple 3.1 : 3 6
Théorie de la Programmation
Théorie de la Programmation http://perso.ens-lyon.fr/daniel.hirschkoff/thpr hop Programmation, Théorie de la programmation Langages de programmation I il existe de nombreux langages de programmation I
Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme
Rappel Ralf Treinen Université Paris Diderot UFR Informatique Laboratoire Preuves, Programmes et Systèmes [email protected] 6 mai 2015 Jusqu'à maintenant : un petit langage de programmation
Chap 4: Analyse syntaxique. Prof. M.D. RAHMANI Compilation SMI- S5 2013/14 1
Chap 4: Analyse syntaxique 1 III- L'analyse syntaxique: 1- Le rôle d'un analyseur syntaxique 2- Grammaires non contextuelles 3- Ecriture d'une grammaire 4- Les méthodes d'analyse 5- L'analyse LL(1) 6-
Cours de Programmation 2
Cours de Programmation 2 Programmation à moyenne et large échelle 1. Programmation modulaire 2. Programmation orientée objet 3. Programmation concurrente, distribuée 4. Programmation monadique 5. Les programmes
1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)
1/4 Objectif de ce cours /4 Objectifs de ce cours Introduction au langage C - Cours Girardot/Roelens Septembre 013 Du problème au programme I passer d un problème exprimé en français à la réalisation d
Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if
Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if Pierre Boudes 28 septembre 2011 This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike
Classes et Objets en Ocaml.
Classes et Objets en Ocaml. Didier Rémy 2001-2002 http://cristal.inria.fr/ remy/mot/2/ http://www.enseignement.polytechnique.fr/profs/informatique/didier.remy/mot/2/ Cours Exercices Slide 1 1. Objets 2.
Machines virtuelles Cours 1 : Introduction
Machines virtuelles Cours 1 : Introduction Pierre Letouzey 1 [email protected] PPS - Université Denis Diderot Paris 7 janvier 2012 1. Merci à Y. Régis-Gianas pour les transparents Qu est-ce qu une
Logiciel Libre Cours 2 Fondements: Programmation
Logiciel Libre Cours 2 Fondements: Programmation Stefano Zacchiroli [email protected] Laboratoire PPS, Université Paris Diderot 2013 2014 URL http://upsilon.cc/zack/teaching/1314/freesoftware/
Génie Logiciel avec Ada. 4 février 2013
Génie Logiciel 4 février 2013 Plan I. Généralités II. Structures linéaires III. Exceptions IV. Structures arborescentes V. Dictionnaires I. Principes II. Notions propres à la POO I. Principes Chapitre
Théorie des Langages
Théorie des Langages Analyse syntaxique descendante Claude Moulin Université de Technologie de Compiègne Printemps 2010 Sommaire 1 Principe 2 Premiers 3 Suivants 4 Analyse 5 Grammaire LL(1) Exemple : Grammaire
Exo7. Calculs de déterminants. Fiche corrigée par Arnaud Bodin. Exercice 1 Calculer les déterminants des matrices suivantes : Exercice 2.
Eo7 Calculs de déterminants Fiche corrigée par Arnaud Bodin Eercice Calculer les déterminants des matrices suivantes : Correction Vidéo ( ) 0 6 7 3 4 5 8 4 5 6 0 3 4 5 5 6 7 0 3 5 4 3 0 3 0 0 3 0 0 0 3
Gestion mémoire et Représentation intermédiaire
Gestion mémoire et Représentation intermédiaire Pablo de Oliveira March 23, 2015 I Gestion Memoire Variables locales Les variables locales sont stockées: Soit dans un registre,
length : A N add : Z Z Z (n 1, n 2 ) n 1 + n 2
1 Univ. Lille1 - Licence info 3ème année 2013-2014 Expression Logique et Fonctionnelle... Évidemment Cours n o 1 : Introduction à la programmation fonctionnelle 1 Introduction La programmation fonctionnelle
Correction Code nécessaire à la compilation : let bs ="\\" let nl = "\n" ;; let appliquer = List.map ;; (* affichage d'un noeud *)
Correction Code nécessaire à la compilation : let bs ="\\" let nl = "\n" let appliquer = List.map (* affichage d'un noeud *) let (noeud_vers_ch : int -> string) = function n -> "fib(" ^ (string_of_int
Java Licence Professionnelle CISII, 2009-10
Java Licence Professionnelle CISII, 2009-10 Cours 4 : Programmation structurée (c) http://www.loria.fr/~tabbone/cours.html 1 Principe - Les méthodes sont structurées en blocs par les structures de la programmation
LE PROCESSUS ( la machine) la fonction f. ( On lit : «fonction f qui à x associe f (x)» )
SYNTHESE ( THEME ) FONCTIONS () : NOTIONS de FONCTIONS FONCTION LINEAIRE () : REPRESENTATIONS GRAPHIQUES * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Vérification de programmes et de preuves Première partie. décrire des algorithmes
Vérification de programmes et de preuves Première partie. décrire des algorithmes Yves Bertot September 2012 1 Motivating introduction A partir des années 1940, il a été compris que l on pouvait utiliser
Programmation en Caml pour Débutants
Programmation en Caml pour Débutants Arthur Charguéraud 6 Ju 2005 Ceci est une version léaire imprimable du cours, mais il est fortement conseillé d utiliser la version teractive, sur laquelle la plupart
Problème : Calcul d'échéanciers de prêt bancaire (15 pt)
Problème : Calcul d'échéanciers de prêt bancaire (15 pt) 1 Principe d'un prêt bancaire et dénitions Lorsque vous empruntez de l'argent dans une banque, cet argent (appelé capital) vous est loué. Chaque
# let rec concat l1 l2 = match l1 with [] -> l2 x::l 1 -> x::(concat l 1 l2);; val concat : a list -> a list -> a list = <fun>
94 Programmation en OCaml 5.4.8. Concaténation de deux listes Définissons maintenant la fonction concat qui met bout à bout deux listes. Ainsi, si l1 et l2 sont deux listes quelconques, concat l1 l2 constitue
Analyse de sécurité de logiciels système par typage statique
Contexte Modélisation Expérimentation Conclusion Analyse de sécurité de logiciels système par typage statique Application au noyau Linux Étienne Millon UPMC/LIP6 Airbus Group Innovations Sous la direction
UE Programmation Impérative Licence 2ème Année 2014 2015
UE Programmation Impérative Licence 2 ème Année 2014 2015 Informations pratiques Équipe Pédagogique Florence Cloppet Neilze Dorta Nicolas Loménie [email protected] 2 Programmation Impérative
Algorithmique et Programmation, IMA
Algorithmique et Programmation, IMA Cours 2 : C Premier Niveau / Algorithmique Université Lille 1 - Polytech Lille Notations, identificateurs Variables et Types de base Expressions Constantes Instructions
Probabilités. Rappel : trois exemples. Exemple 2 : On dispose d un dé truqué. On sait que : p(1) = p(2) =1/6 ; p(3) = 1/3 p(4) = p(5) =1/12
Probabilités. I - Rappel : trois exemples. Exemple 1 : Dans une classe de 25 élèves, il y a 16 filles. Tous les élèves sont blonds ou bruns. Parmi les filles, 6 sont blondes. Parmi les garçons, 3 sont
Exo7. Matrice d une application linéaire. Corrections d Arnaud Bodin.
Exo7 Matrice d une application linéaire Corrections d Arnaud odin. Exercice Soit R muni de la base canonique = ( i, j). Soit f : R R la projection sur l axe des abscisses R i parallèlement à R( i + j).
Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test
Grandes lignes Analyseur Statique de logiciels Temps RÉel Embarqués École Polytechnique École Normale Supérieure Mercredi 18 juillet 2005 1 Présentation d 2 Cadre théorique de l interprétation abstraite
Compilation (INF 564)
Présentation du cours Le processeur MIPS Programmation du MIPS 1 Compilation (INF 564) Introduction & architecture MIPS François Pottier 10 décembre 2014 Présentation du cours Le processeur MIPS Programmation
TRIGONOMETRIE Algorithme : mesure principale
TRIGONOMETRIE Algorithme : mesure principale Déterminer la mesure principale d un angle orienté de mesure! 115" Problèmatique : Appelons θ la mesure principale, θ et! 115" sont deux mesures du même angle,
UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.
UEO11 COURS/TD 1 Contenu du semestre Cours et TDs sont intégrés L objectif de ce cours équivalent a 6h de cours, 10h de TD et 8h de TP est le suivant : - initiation à l algorithmique - notions de bases
Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions
Cours d introduction à l informatique Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions Qu est-ce qu un Une recette de cuisine algorithme? Protocole expérimental
TP1 : Initiation à Java et Eclipse
TP1 : Initiation à Java et Eclipse 1 TP1 : Initiation à Java et Eclipse Systèmes d Exploitation Avancés I. Objectifs du TP Ce TP est une introduction au langage Java. Il vous permettra de comprendre les
Cours d algorithmique pour la classe de 2nde
Cours d algorithmique pour la classe de 2nde F.Gaudon 10 août 2009 Table des matières 1 Avant la programmation 2 1.1 Qu est ce qu un algorithme?................................. 2 1.2 Qu est ce qu un langage
STAGE IREM 0- Premiers pas en Python
Université de Bordeaux 16-18 Février 2014/2015 STAGE IREM 0- Premiers pas en Python IREM de Bordeaux Affectation et expressions Le langage python permet tout d abord de faire des calculs. On peut évaluer
modules & compilation
Programmation fonctionnelle avec OCaml 3ème séance, 19 mars 2015 modules & compilation [email protected] http ://www.loria.fr/ shornus/ocaml/ Modules Un module regroupe un ensemble de définitions
Les deux points les plus proches
MPSI Option Informatique Année 2001, Deuxième TP Caml Vcent Simonet (http://cristal.ria.fr/~simonet/) Les eux pots les plus proches Lors e cette séance, nous allons nous téresser au problème suivant :
Projet de programmation (IK3) : TP n 1 Correction
Projet de programmation (IK3) : TP n 1 Correction Semaine du 20 septembre 2010 1 Entrées/sorties, types de bases et structures de contrôle Tests et types de bases Tests et types de bases (entiers) public
Traduction des Langages : Le Compilateur Micro Java
BARABZAN Jean-René OUAHAB Karim TUCITO David 2A IMA Traduction des Langages : Le Compilateur Micro Java µ Page 1 Introduction Le but de ce projet est d écrire en JAVA un compilateur Micro-Java générant
Cours 1 : Qu est-ce que la programmation?
1/65 Introduction à la programmation Cours 1 : Qu est-ce que la programmation? Yann Régis-Gianas [email protected] Université Paris Diderot Paris 7 2/65 1. Sortez un appareil qui peut se rendre
Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application
Université de Provence Licence Math-Info Première Année V. Phan Luong Algorithmique et Programmation en Python Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application 1 Ordinateur Un
Gestion de base de données
Université Libre de Bruxelles Faculté de Philosophie et Lettres Département des Sciences de l Information et de la Communication Gestion de base de données Projet : Take Off ASBL Cours de M. A. Clève STIC-B-505
Présentation du langage et premières fonctions
1 Présentation de l interface logicielle Si les langages de haut niveau sont nombreux, nous allons travaillé cette année avec le langage Python, un langage de programmation très en vue sur internet en
Corrigé des TD 1 à 5
Corrigé des TD 1 à 5 1 Premier Contact 1.1 Somme des n premiers entiers 1 (* Somme des n premiers entiers *) 2 program somme_entiers; n, i, somme: integer; 8 (* saisie du nombre n *) write( Saisissez un
Plan du cours : Zippers. Des fonctions sur les listes avec position. Des fonctions sur les listes avec position
Plan du cours : Le problème : naviguer efficacement une structure de données Ce qui ne marche pas Ce qui marche : les de Huet Exemples Comment dériver des pour tout type de données Pour en savoir plus
Problèmes liés à la concurrence
ENS Cachan Problématique Difficile de gérer la concurrence : Pas toujours facile d avoir des fonctions réentrantes. Risque de race condition : ex : x :=x+1 x :=x+1 On voudrait des blocs d instructions
OCL - Object Constraint Language
OCL - Object Constraint Language Laëtitia Matignon [email protected] Département Informatique - Polytech Lyon Université Claude Bernard Lyon 1 2012-2013 Laëtitia Matignon SIMA - OCL - Object
TP Contraintes - Triggers
TP Contraintes - Triggers 1. Préambule Oracle est accessible sur le serveur Venus et vous êtes autorisés à accéder à une instance licence. Vous utiliserez l interface d accés SQL*Plus qui permet l exécution
Déroulement. Evaluation. Préambule. Définition. Définition. Algorithmes et structures de données 28/09/2009
Déroulement Algorithmes et structures de données Cours 1 et 2 Patrick Reuter http://www.labri.fr/~preuter/asd2009 CM mercredi de 8h00 à 9h00 (Amphi Bât. E, 3 ème étage) ED - Groupe 3 : mercredi, 10h30
Le théorème de Thalès et sa réciproque
Le théorème de Thalès et sa réciproque I) Agrandissement et Réduction d une figure 1) Définition : Lorsque toutes les longueurs d une figure F sont multipliées par un même nombre k on obtient une autre
Initiation à l algorithmique
Informatique S1 Initiation à l algorithmique procédures et fonctions 2. Appel d une fonction Jacques TISSEAU Ecole Nationale d Ingénieurs de Brest Technopôle Brest-Iroise CS 73862-29238 Brest cedex 3 -
27/11/12 Nature. SDK Python et Java pour le développement de services ACCORD Module(s)
Propriétés du Document Source du Document SDK_accords.odt Titre du Document SDK Python et Java pour le développement de services ACCORD Module(s) PyaccordsSDK, JaccordsSDK Responsable Prologue Auteur(s)
Représentation d un entier en base b
Représentation d un entier en base b 13 octobre 2012 1 Prérequis Les bases de la programmation en langage sont supposées avoir été travaillées L écriture en base b d un entier est ainsi défini à partir
MIS 102 Initiation à l Informatique
MIS 102 Initiation à l Informatique Responsables et cours : Cyril Gavoille Catherine Pannier Matthias Robine Marc Zeitoun Planning : 6 séances de cours 5 séances de TD (2h40) 4 séances de TP (2h40) + environ
Cours d initiation à la programmation en C++ Johann Cuenin
Cours d initiation à la programmation en C++ Johann Cuenin 11 octobre 2014 2 Table des matières 1 Introduction 5 2 Bases de la programmation en C++ 7 3 Les types composés 9 3.1 Les tableaux.............................
INTRODUCTION A JAVA. Fichier en langage machine Exécutable
INTRODUCTION A JAVA JAVA est un langage orienté-objet pur. Il ressemble beaucoup à C++ au niveau de la syntaxe. En revanche, ces deux langages sont très différents dans leur structure (organisation du
Travaux pratiques. Compression en codage de Huffman. 1.3. Organisation d un projet de programmation
Université de Savoie Module ETRS711 Travaux pratiques Compression en codage de Huffman 1. Organisation du projet 1.1. Objectifs Le but de ce projet est d'écrire un programme permettant de compresser des
Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1
Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1 B. Baert & F. Ludewig [email protected] - [email protected] Qu est-ce que la programmation? Programmer Ecrire un
Exo7. Limites de fonctions. 1 Théorie. 2 Calculs
Eo7 Limites de fonctions Théorie Eercice Montrer que toute fonction périodique et non constante n admet pas de ite en + Montrer que toute fonction croissante et majorée admet une ite finie en + Indication
Limites finies en un point
8 Limites finies en un point Pour ce chapitre, sauf précision contraire, I désigne une partie non vide de R et f une fonction définie sur I et à valeurs réelles ou complees. Là encore, les fonctions usuelles,
ACTIVITÉ DE PROGRAMMATION
ACTIVITÉ DE PROGRAMMATION The purpose of the Implementation Process is to realize a specified system element. ISO/IEC 12207 Sébastien Adam Une introduction 2 Introduction Ø Contenu Utilité de l ordinateur,
Quelques éléments de compilation en C et makefiles
Quelques éléments de compilation en C et makefiles Guillaume Feuillade 1 Compiler un programme C Le principe de la compilation consiste à passer d un ensemble de fichiers de code à un programme exécutable
M2-Images. Rendu Temps Réel - OpenGL 4 et compute shaders. J.C. Iehl. December 18, 2013
Rendu Temps Réel - OpenGL 4 et compute shaders December 18, 2013 résumé des épisodes précédents... création des objets opengl, organisation des données, configuration du pipeline, draw,... opengl 4.3 :
Paris Airports - Web API Airports Path finding
Paris Airports - Web API Airports Path finding Hackathon A660 Version Version Date writer Comment 1.0 19/05/2015 Olivier MONGIN Document creation Rédacteur : [email protected] Date : 19/05/2015 Approbateur
Argument-fetching dataflow machine de G.R. Gao et J.B. Dennis (McGill, 1988) = machine dataflow sans flux de données
EARTH et Threaded-C: Éléments clés du manuel de références de Threaded-C Bref historique de EARTH et Threaded-C Ancêtres de l architecture EARTH: Slide 1 Machine à flux de données statique de J.B. Dennis
Les chaînes de caractères
Les chaînes de caractères Dans un programme informatique, les chaînes de caractères servent à stocker les informations non numériques comme par exemple une liste de nom de personne ou des adresses. Il
Licence Sciences et Technologies Examen janvier 2010
Université de Provence Introduction à l Informatique Licence Sciences et Technologies Examen janvier 2010 Année 2009-10 Aucun document n est autorisé Les exercices peuvent être traités dans le désordre.
Programmer en JAVA. par Tama ([email protected]( [email protected])
Programmer en JAVA par Tama ([email protected]( [email protected]) Plan 1. Présentation de Java 2. Les bases du langage 3. Concepts avancés 4. Documentation 5. Index des mots-clés 6. Les erreurs fréquentes
CH.6 Propriétés des langages non contextuels
CH.6 Propriétés des langages non contetuels 6.1 Le lemme de pompage 6.2 Les propriétés de fermeture 6.3 Les problèmes de décidabilité 6.4 Les langages non contetuels déterministes utomates ch6 1 6.1 Le
Architecture des ordinateurs TD1 - Portes logiques et premiers circuits
Architecture des ordinateurs TD1 - Portes logiques et premiers circuits 1 Rappel : un peu de logique Exercice 1.1 Remplir la table de vérité suivante : a b a + b ab a + b ab a b 0 0 0 1 1 0 1 1 Exercice
Atelier C TIA Portal CTIA04 : Programmation des automates S7-300 Opérations numériques
Atelier C TIA Portal CTIA04 : Programmation des automates S7-300 Opérations numériques CTIA04 Page 1 1. Les types de données sous S7 300 Il existe plusieurs types de données utilisées pour la programmation
Simulation de variables aléatoires
Chapter 1 Simulation de variables aléatoires Références: [F] Fishman, A first course in Monte Carlo, chap 3. [B] Bouleau, Probabilités de l ingénieur, chap 4. [R] Rubinstein, Simulation and Monte Carlo
Programme Compte bancaire (code)
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; Programme Compte bancaire (code) namespace compte_bancaire /// Classe Program public
Langage et Concepts de ProgrammationOrientée-Objet 1 / 40
Déroulement du cours Introduction Concepts Java Remarques Langage et Concepts de Programmation Orientée-Objet Gauthier Picard École Nationale Supérieure des Mines de Saint-Étienne [email protected]
LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. [email protected] www.cril.univ-artois.fr/~jabbour
LMI 2 Programmation Orientée Objet POO - Cours 9 Said Jabbour [email protected] www.cril.univ-artois.fr/~jabbour CRIL UMR CNRS 8188 Faculté des Sciences - Univ. Artois Février 2011 Les collections
Utilisation d objets : String et ArrayList
Chapitre 6 Utilisation d objets : String et ArrayList Dans ce chapitre, nous allons aborder l utilisation d objets de deux classes prédéfinies de Java d usage très courant. La première, nous l utilisons
Langage et Concepts de Programmation Objet. 1 Attributs et Méthodes d instance ou de classe. Travaux Dirigés no2
Langage et Concepts de Programmation Objet Travaux Dirigés no2 Pôle Informatique École Nationale Supérieure des Mines de St-Etienne Vous trouverez plus de détails sur les concepts abordés lors de ce TD
Cours d Analyse. Fonctions de plusieurs variables
Cours d Analyse Fonctions de plusieurs variables Licence 1ère année 2007/2008 Nicolas Prioux Université de Marne-la-Vallée Table des matières 1 Notions de géométrie dans l espace et fonctions à deux variables........
Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)
Modularité Extensions Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs) généricité modules de première classe : peuvent être
Continuité et dérivabilité d une fonction
DERNIÈRE IMPRESSIN LE 7 novembre 014 à 10:3 Continuité et dérivabilité d une fonction Table des matières 1 Continuité d une fonction 1.1 Limite finie en un point.......................... 1. Continuité
Rapport de Mini-Projet en ArcGIS Engine
Rapport de Mini-Projet en ArcGIS Engine Réalisée par : Asmae BENMESSAOUD 3ème Année Cycle d Ingénieur Géoinformation Année Universitaire 2010- Sommaire 1 Introduction L analyse géographique et la visualisation
Probabilités sur un univers fini
[http://mp.cpgedupuydelome.fr] édité le 7 août 204 Enoncés Probabilités sur un univers fini Evènements et langage ensembliste A quelle condition sur (a, b, c, d) ]0, [ 4 existe-t-il une probabilité P sur
Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;
CNAM NFP121 TP 10 19/11/2013 (Séance 5) Objectif Manipuler les exceptions ; 1 Entrées/sorties Exercice 1 : Lire un entier à partir du clavier Ajouter une méthode readint(string message) dans la classe
Corrigé des exercices sur les références
Corrigé des exercices sur les références Exercice 3.1.1 dessin Pour cet exercice, vous allez dessiner des structures de données au moyen de petits schémas analogues à ceux du cours, comportant la pile
SNT4U16 - Initiation à la programmation 2014-2015. TD - Dynamique de POP III - Fichiers sources
SNT4U16 - Initiation à la programmation Licence SVT 2 ème année 2014-2015 TD - Dynamique de POP III - Fichiers sources contacts : [email protected], [email protected], [email protected],
Programmation. fonctionnelle, impérative, logique et orientée objet
Programmation fonctionnelle, impérative, logique et orientée objet Introduction Les langages de programmation permettent de décrire des calculs de façon plus abstraite qu'un programme machine. Les programmes
Initiation à la programmation en Python
I-Conventions Initiation à la programmation en Python Nom : Prénom : Une commande Python sera écrite en caractère gras. Exemples : print 'Bonjour' max=input("nombre maximum autorisé :") Le résultat de
Licence de MIDO - 3ème année Spécialités Informatique et Mathématiques Appliquées
Licence de MIDO - 3ème année Spécialités Informatique et Mathématiques Appliquées ANNEE 2014 / 2015 Désignation de l enseignement : Bases de données Nom du document : TP SQL sous PostgreSQL Rédacteur :
Cours Informatique Master STEP
Cours Informatique Master STEP Bases de la programmation: Compilateurs/logiciels Algorithmique et structure d'un programme Programmation en langage structuré (Fortran 90) Variables, expressions, instructions
IN 102 - Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C
IN 102 - Cours 1 Qu on le veuille ou non, les systèmes informatisés sont désormais omniprésents. Même si ne vous destinez pas à l informatique, vous avez de très grandes chances d y être confrontés en
Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :
Développement d un client REST, l application Vélib 1. Présentation L application présentée permet de visualiser les disponibilités des vélos et des emplacements de parking à la disposition des parisiens
Exercices - Nombres complexes : corrigé. Formes algébriques et trigonométriques, module et argument
Formes algébriques et trigonométriques, module et argument Exercice - - L/Math Sup - On multiplie le dénominateur par sa quantité conjuguée, et on obtient : Z = 4 i 3 + i 3 i 3 = 4 i 3 + 3 = + i 3. Pour
Paginer les données côté serveur, mettre en cache côté client
Paginer les données côté serveur, mettre en cache côté client Vous voulez sélectionner des lignes dans une table, mais celle-ci comporte trop de lignes pour qu il soit réaliste de les ramener en une seule
Fonctions homographiques
Seconde-Fonctions homographiques-cours Mai 0 Fonctions homographiques Introduction Voir le TP Géogébra. La fonction inverse. Définition Considérons la fonction f définie par f() =. Alors :. f est définie
Cours de C++ François Laroussinie. 2 novembre 2005. Dept. d Informatique, ENS de Cachan
Cours de C++ François Laroussinie Dept. d Informatique, ENS de Cachan 2 novembre 2005 Première partie I Introduction Introduction Introduction Algorithme et programmation Algorithme: méthode pour résoudre
CHAPITRE V SYSTEMES DIFFERENTIELS LINEAIRES A COEFFICIENTS CONSTANTS DU PREMIER ORDRE. EQUATIONS DIFFERENTIELLES.
CHAPITRE V SYSTEMES DIFFERENTIELS LINEAIRES A COEFFICIENTS CONSTANTS DU PREMIER ORDRE EQUATIONS DIFFERENTIELLES Le but de ce chapitre est la résolution des deux types de systèmes différentiels linéaires
Exercices Corrigés Premières notions sur les espaces vectoriels
Exercices Corrigés Premières notions sur les espaces vectoriels Exercice 1 On considére le sous-espace vectoriel F de R formé des solutions du système suivant : x1 x 2 x 3 + 2x = 0 E 1 x 1 + 2x 2 + x 3
