Théorie des langages. compilation. Elise Bonzon bonzon/ 1 / 59

Dimension: px
Commencer à balayer dès la page:

Download "Théorie des langages. compilation. Elise Bonzon http://web.mi.parisdescartes.fr/ bonzon/ elise.bonzon@parisdescartes.fr 1 / 59"

Transcription

1 et compilation Elise Bonzon bonzon/ 1 / 59

2 et compilation et compilation Structure d un compilateur Analyse lexicale Analyse syntaxique Analyse sémantique Conclusion 2 / 59

3 et compilation et compilation Structure d un compilateur Analyse lexicale Analyse syntaxique Analyse sémantique Conclusion 3 / 59

4 et compilation Un compilateur, c est quoi? Un compilateur est un programme qui prend en entrée une donnée textuelle source (programme, donnée xml, fichier de configuration, etc) la reconnaît (l analyse) pour vérifier sa correction émet éventuellement un message d erreur le traduit dans un langage cible programme source Compilateur programme cible messages d erreur 4 / 59

5 et compilation Les différentes étapes de la compilation Programme source Analyseur lexical Analyseur syntaxique Table des symboles Analyseur sémantique Générateur de code intermédiaire Erreurs Optimisateur de code Générateur de code Programme cible 5 / 59

6 et compilation Les différentes étapes de la compilation Partie analyse: sépare les constituants Programme source du prog. source et produit une représentation intermédiaire Analyseur lexical Analyseur syntaxique Table des symboles Analyseur sémantique Générateur de code intermédiaire Erreurs Optimisateur de code Générateur de code Programme cible 5 / 59

7 et compilation Les différentes étapes de la compilation Partie analyse: sépare les constituants Programme source du prog. source et produit une représentation intermédiaire Analyseur lexical Analyseur syntaxique Table des symboles Analyseur sémantique Générateur de code intermédiaire Erreurs Optimisateur de code Générateur de code Programme cible Partie synthèse: génère le prog. cible à partir de la représentation intermédiaire 5 / 59

8 et compilation Analyse lexicale Programme source Analyseur lexical Analyseur syntaxique Table des symboles Analyseur sémantique Générateur de code intermédiaire Erreurs Optimisateur de code Générateur de code Programme cible 6 / 59

9 et compilation Analyse lexicale Seul module au contact avec le texte source Son but est de reconnaître les unités lexicales ou lexèmes les identificateurs et les mots clefs du langage l affectation et les opérateurs Utilise des expressions régulières : automates finis identificateur ab := y * x + 20 affectation operateur nombre 7 / 59

10 et compilation Analyse syntaxique Programme source Analyseur lexical Analyseur syntaxique Table des symboles Analyseur sémantique Générateur de code intermédiaire Erreurs Optimisateur de code Générateur de code Programme cible 8 / 59

11 et compilation Analyse syntaxique Regroupe les unités lexicales en structures grammaticales en suivant les règles figurant dans une grammaire Résultat représenté par un arbre syntaxique La structure hiérarchique d un programme est exprimée à l aide de règles Tout identificateur est une expression Tout nombre est une expression Si expr1 et expr2 sont des expressions alors expr1 expr2 est une expression Grammaires hors contexte : automates à pile := ab + * 20 y x 9 / 59

12 et compilation Analyse sémantique Programme source Analyseur lexical Analyseur syntaxique Table des symboles Analyseur sémantique Générateur de code intermédiaire Erreurs Optimisateur de code Générateur de code Programme cible 10 / 59

13 et compilation Analyse sémantique Vérifie la présence d erreurs d ordre sémantique Vérification de typage Vérification des déclarations Par exemple, si x et y sont des réels : := ab + * conversion entier -> réel y x / 59

14 et compilation Partie synthèse Programme source Analyseur lexical Analyseur syntaxique Table des symboles Analyseur sémantique Générateur de code intermédiaire Erreurs Optimisateur de code Générateur de code Programme cible 12 / 59

15 et compilation Partie synthèse Génération du code intermédiaire Utilisation de variables temporaires Choix de l ordre pour faire un calcul Optimisation du code Amélioration du code intermédiaire Réduction du nombre de variables et d instructions Génération du code Choix des emplacements mémoire pour les variables Assignation de variables aux registres 13 / 59

16 et compilation Table des symboles Programme source Analyseur lexical Analyseur syntaxique Table des symboles Analyseur sémantique Générateur de code intermédiaire Erreurs Optimisateur de code Générateur de code Programme cible 14 / 59

17 et compilation Table des symboles Enregistre les identifiants et les attributs (emplacement mémoire, type, portée) Chaque identifiant (variable) a une entrée dans la table des symboles L analyseur lexical crée une entrée dans la table des symboles à chaque fois qu il rencontre un nouvel identificateur Par contre, les attributs seront calculés plus tard L analyseur sémantique se sert de la table des symboles pour vérifier la concordance des types 15 / 59

18 et compilation Détection des erreurs Programme source Analyseur lexical Analyseur syntaxique Table des symboles Analyseur sémantique Générateur de code intermédiaire Erreurs Optimisateur de code Générateur de code Programme cible 16 / 59

19 et compilation Détection des erreurs Erreur lexicale : le flot de caractères n est pas reconnu Erreur syntaxique : construction non reconnue par le langage Erreur sémantique : problème de typage, / 59

20 et compilation et compilation Structure d un compilateur Analyse lexicale Analyse syntaxique Analyse sémantique Conclusion 18 / 59

21 et compilation Analyseur lexical et analyseur syntaxique L analyse lexicale produit des lexèmes En général à la volée à la demande de l analyseur syntaxique L analyseur syntaxique demande le prochain lexème à l analyseur lexical, qui le reconnaît et retourne un code identifiant ce lexème On pourrait imaginer que l analyse lexicale travaille indépendamment et fournisse une suite de lexèmes mais on n a pas besoin, en général, d avoir reconnu tous les lexèmes pour faire l analyse syntaxique : la connaissance du lexème courant suffit pour la plupart des méthodes utilisées et malheureusement, pour certains langages (C notamment), la reconnaissance d un lexème dépend du contexte grammatical dans lequel il se trouve 19 / 59

22 et compilation Analyse lexicale Chaque lexème est un mot d un langage Dans la plupart des cas, langage qui peut être représenté par une expression régulière, par exemple ((A Z) + (a z))((a Z) + (a z) + (0 9)) pour reconnaître des identificateurs du genre X, Compteur, i3, R2D2,... Langage fini pour de nombreux lexèmes : +, ==, for,... L analyseur lexical est donc un (gros) automate fini déterministe qui reconnaît l union des langages des lexèmes un état terminal correspond à la reconnaissance d un mot d un des langages des lexèmes 20 / 59

23 et compilation Fragment d automate lexical q 2 f a-z q 1 a-z sauf f q 3 a-z i a-z sauf i 0-9 q q. 4 q q 6 = 0-9 q = 7 q 8 21 / 59

24 et compilation Analyse lexicale Analyseur lexical : En général pas tout à fait un automate déterministe Certains lexèmes sont préfixes d un autre +, +=, ++ ; = et == mots-clés et identificateurs (for et forme) entiers et réels (3 et 3.14) Le principe est de reconnaître le mot le plus long Un état terminal n implique donc pas toujours l arrêt de l automate : il peut continuer, et éventuellement revenir en arrière au dernier état final rencontré 22 / 59

25 et compilation Reconnaissance contextuelle Il existe des langages où une forme lexicale peut correspondre à différents lexèmes selon le contexte selon le contexte gauche : par exemple, if reconnu comme mot-clé uniquement s il est au début d une instruction selon le contexte droit : par exemple if reconnu comme mot-clé uniquement s il est suivi d une parenthèse Combinaison des deux 23 / 59

26 et compilation Problèmes de la reconnaissance contextuelle Dans des langages mal définis Pour les langages de programmation, dans des langages anciens (Fortran, partiellement C,...) Ils ne peuvent en général pas être résolus par le seul analyseur lexical : les contextes sont le plus souvent des langages non-contextuels reconnus par l analyseur syntaxique Donc forte interaction entre les deux analyseurs Entraine des problèmes de lisibilité, de fiabilité et des difficultés à la maintenance et aux extensions C est pourquoi les langages modernes de programmation évitent ces questions de reconnaissance contextuelle Mais pas les langages de script, de description,... conçus la plupart du temps par des non spécialistes des langages 24 / 59

27 et compilation Exemple de problème de la reconnaissance contextuelle en Fortran, les espaces sont non significatifs DO12I = 1.25 : identificateur DO12I, opérateur d affectation =, réel 1.25 DO12I = 1,25 : mot-clé DO, etiquette 12, variable I : boucle qui se termine à l énoncé étiqueté 12 pour i allant de 1 à 25 d après la légende, on aurait perdu une fusée du projet Mercury à cause d un. à la place d une, (à moins que ce ne soit l inverse...) Dans la plupart des langages de programmation actuels, les espaces sont significatifs, et les mots-clés sont réservés 25 / 59

28 et compilation Générateurs d analyseurs lexicaux Langage C : lex ou flex Langage Ada : Alex Langage Java : Jflex Langage OCaml : OCamllex 26 / 59

29 et compilation Construire un analyseur lexical avec lex programme source (f)lex nom.l compilateur (f)lex lex nom.l flex nom.l nom.yy.c nom.yy.c compilateur C gcc nom.yy.c -ll gcc nom.yy.c -lfl a.out 27 / 59

30 et compilation Spécifications en lex déclarations %% règles de traduction %% procédures auxiliaires 28 / 59

31 et compilation Déclarations La section des déclarations comprend des déclarations de variables, constantes littérales définitions régulières Une constante littérale est un identificateur qui est déclaré pour représenter une constante Une définition régulière permet d associer un nom à une expression régulière 29 / 59

32 et compilation Règles de traduction Les règles de traduction sont des instructions de la forme : exp 1 action 1 exp 2 action 2... exp n action n chaque exp i est une expression régulière chaque action i est une suite d instruction en C qui décrit quelle action l analyseur lexical devrait réaliser quand un lexème concorde avec le modèle exp i Les procédures auxilliaires sont les fonctions facultatives qui pourraient être utiles dans les actions. 30 / 59

33 et compilation Analyseur lexical Analyseur lexical activé par l analyseur syntaxique : Lit le texte d entrée, caractère par caractère Cherche le plus long préfixe du texte d entrée qui corresponde à l une des expressions régulières exp i Exécute alors l action action i Action : rend le contrôle à l analyseur syntaxique Sinon, l analyseur lexical continue à chercher d autres lexèmes jusqu à ce qu une action rende le contrôle à l analyseur syntaxique La recherche répétée de lexèmes jusqu à un retour explicite permet à l analyseur lexical de traiter les espaces et les commentaires de manière simple Seule information retournée à l analyseur syntaxique : l unité lexicale Pour passer une valeur d attribut donnant des informations sur le lexème, on peut l affecter à une variable globale appelée yylval. 31 / 59

34 et compilation Tableau des expressions régulières (1/2) expression reconnaît exemple c tout caractère c qui n est pas un opérateur a \c caractère littéral c \+ s la chaîne de caractère s abc* r 1 r 2 r 1 suivie de r 2 ab. tout caractère sauf fin de ligne a.b ˆ début de ligne ^abc $ fin de ligne abc$ [s] tout caractère appartenant à s [s] [^s] tout caractère n appartenant pas à s [^abc] r 0 ou plusieurs occurences de r a r + 1 ou plusieurs occurences de r a + r? 0 ou 1 occurence de r a? 32 / 59

35 et compilation Tableau des expressions régulières (2/2) expression reconnaît exemple r{m} m occurences de r a{3} r{m,n} entre m et n occurences de r a{3,8} r 1 r 2 r 1 ou r 2 a b r 1 /r 2 r 1 si elle est suivie de r 2 abc/123 (r) r (a b) \n retour à la ligne \t tabulation 33 / 59

36 et compilation Exemple déclarations %{ %} /* définitions des constantes littérales */ PPQ, PPE, EGA, DIF, PGQ, PGE, SI, ALORS, SINON, ID, NB, OPREL /* définitions régulières */ delim [ \n\t] bl {delim} + lettre [A-Za-z] chiffre [0-9] id {lettre} + ({lettre} {chiffre}) nombre {chiffre} + (\.{chiffre} + )? (E[+\-]? {chiffre} + )? %% 34 / 59

37 et compilation Exemple règles de traduction {bl} {/* pas d action et pas de retour */} si {return(si);} alors {return(alors);} sinon {return(sinon);} {id} {yylval = RangerId(); return(id);} {nombre} {yylval = RangerNb(); return(nb);} < {yylval = PPQ; return(oprel);} <= {yylval = PPE; return(oprel);} = {yylval = EGA; return(oprel);} <> {yylval = DIF; return(oprel);} > {yylval = PGQ; return(oprel);} >= {yylval = PGE; return(oprel);} %% 35 / 59

38 et compilation Exemple procédures auxiliaires RangerId() { /* Procédure pour ranger dans la table des symboles le lexème dont le premier caractère est pointé par yytext et dont la longueur est yyleng et retourner un pointeur sur son entrée */ } RangerNb() { \begin{block} /* procédure similaire pour ranger un lexème qui est un nombre */ } 36 / 59

39 et compilation et compilation Structure d un compilateur Analyse lexicale Analyse syntaxique Analyse sémantique Conclusion 37 / 59

40 et compilation Qu est ce que l analyse syntaxique? L analyse syntaxique a pour but : de vérifier que le texte d entrée est conforme à la grammaire d indiquer les erreurs de syntaxe de construire une représentation intermédiaire pour les autres modules du compilateur arbre de syntaxe abstraite, utilisé par la suite de la compilation Ne s occupe pas des aspects contextuels de la syntaxe par exemple détecter l erreur dans int i;...; i = abcd ; c est le rôle de l analyse sémantique, qui travaille sur la représentation intermédiaire Représentation unique du texte source l analyse doit être déterministe, si possible linéaire (éviter notamment les retours en arrière) 38 / 59

41 et compilation Types d analyseurs syntaxiques Analyseur syntaxique descendant, ou analyseur prédictif Construit l arbre de dérivation à partir de sa racine et en effectuant des dérivations en considérant la tête des règles de production et en faisant des dérivations les plus à gauche Famille des analyseurs LL (left scanning, leftmost derivation) JavaCC, ANTLR, LLGen,... Analyseur syntaxique ascendant ou par décalage-réduction Construit l arbre de dérivation à partir de ses feuilles et en effectuant des dérivations en considérant la partie droite des règles de production et en faisant des dérivations les plus à gauche Famille des analyseurs LR (left scanning, rightmost derivation) YACC/Bison 39 / 59

42 et compilation Exemple Soit G = V, Σ, P, S avec Σ = {a, b, c, d} V \ Σ = {S, T } 6 règles de production : S asbt ct d T at bs c 40 / 59

43 et compilation Exemple Soit G = V, Σ, P, S avec Σ = {a, b, c, d} V \ Σ = {S, T } 6 règles de production : S asbt ct d T at bs c Soit w = accbbadbc 40 / 59

44 et compilation Exemple Soit G = V, Σ, P, S avec Σ = {a, b, c, d} V \ Σ = {S, T } 6 règles de production : S asbt ct d T at bs c Soit w = accbbadbc Analyse LL : S 40 / 59

45 et compilation Exemple Soit G = V, Σ, P, S avec Σ = {a, b, c, d} V \ Σ = {S, T } 6 règles de production : S asbt ct d T at bs c Soit w = accbbadbc Analyse LL : S asbt 40 / 59

46 et compilation Exemple Soit G = V, Σ, P, S avec Σ = {a, b, c, d} V \ Σ = {S, T } 6 règles de production : S asbt ct d T at bs c Soit w = accbbadbc Analyse LL : S asbt act bt 40 / 59

47 et compilation Exemple Soit G = V, Σ, P, S avec Σ = {a, b, c, d} V \ Σ = {S, T } 6 règles de production : S asbt ct d T at bs c Soit w = accbbadbc Analyse LL : S asbt actbt accbt 40 / 59

48 et compilation Exemple Soit G = V, Σ, P, S avec Σ = {a, b, c, d} V \ Σ = {S, T } 6 règles de production : S asbt ct d T at bs c Soit w = accbbadbc Analyse LL : S asbt actbt accbt accbbs 40 / 59

49 et compilation Exemple Soit G = V, Σ, P, S avec Σ = {a, b, c, d} V \ Σ = {S, T } 6 règles de production : S asbt ct d T at bs c Soit w = accbbadbc Analyse LL : S asbt actbt accbt accbbs accbbasbt 40 / 59

50 et compilation Exemple Soit G = V, Σ, P, S avec Σ = {a, b, c, d} V \ Σ = {S, T } 6 règles de production : S asbt ct d T at bs c Soit w = accbbadbc Analyse LL : S asbt actbt accbt accbbs accbbasbt accbbadbt 40 / 59

51 et compilation Exemple Soit G = V, Σ, P, S avec Σ = {a, b, c, d} V \ Σ = {S, T } 6 règles de production : S asbt ct d T at bs c Soit w = accbbadbc Analyse LL : S asbt actbt accbt accbbs accbbasbt accbbadbt accbbadbc 40 / 59

52 et compilation Exemple Soit G = V, Σ, P, S avec Σ = {a, b, c, d} V \ Σ = {S, T } 6 règles de production : S asbt ct d T at bs c Soit w = accbbadbc Analyse LL : S asbt actbt accbt accbbs accbbasbt accbbadbt accbbadbc Analyse LR : accbbadbc 40 / 59

53 et compilation Exemple Soit G = V, Σ, P, S avec Σ = {a, b, c, d} V \ Σ = {S, T } 6 règles de production : S asbt ct d T at bs c Soit w = accbbadbc Analyse LL : S asbt actbt accbt accbbs accbbasbt accbbadbt accbbadbc Analyse LR : accbbadbc 40 / 59

54 et compilation Exemple Soit G = V, Σ, P, S avec Σ = {a, b, c, d} V \ Σ = {S, T } 6 règles de production : S asbt ct d T at bs c Soit w = accbbadbc Analyse LL : S asbt actbt accbt accbbs accbbasbt accbbadbt accbbadbc Analyse LR : accbbadbc act bbadbc 40 / 59

55 et compilation Exemple Soit G = V, Σ, P, S avec Σ = {a, b, c, d} V \ Σ = {S, T } 6 règles de production : S asbt ct d T at bs c Soit w = accbbadbc Analyse LL : S asbt actbt accbt accbbs accbbasbt accbbadbt accbbadbc Analyse LR : accbbadbc actbbadbc asbbadbc 40 / 59

56 et compilation Exemple Soit G = V, Σ, P, S avec Σ = {a, b, c, d} V \ Σ = {S, T } 6 règles de production : S asbt ct d T at bs c Soit w = accbbadbc Analyse LL : S asbt actbt accbt accbbs accbbasbt accbbadbt accbbadbc Analyse LR : accbbadbc actbbadbc asbbadbc asbbasbc 40 / 59

57 et compilation Exemple Soit G = V, Σ, P, S avec Σ = {a, b, c, d} V \ Σ = {S, T } 6 règles de production : S asbt ct d T at bs c Soit w = accbbadbc Analyse LL : S asbt actbt accbt accbbs accbbasbt accbbadbt accbbadbc Analyse LR : accbbadbc actbbadbc asbbadbc asbbasbc asbbasbt 40 / 59

58 et compilation Exemple Soit G = V, Σ, P, S avec Σ = {a, b, c, d} V \ Σ = {S, T } 6 règles de production : S asbt ct d T at bs c Soit w = accbbadbc Analyse LL : S asbt actbt accbt accbbs accbbasbt accbbadbt accbbadbc Analyse LR : accbbadbc actbbadbc asbbadbc asbbasbc asbbasbt asbbs 40 / 59

59 et compilation Exemple Soit G = V, Σ, P, S avec Σ = {a, b, c, d} V \ Σ = {S, T } 6 règles de production : S asbt ct d T at bs c Soit w = accbbadbc Analyse LL : S asbt actbt accbt accbbs accbbasbt accbbadbt accbbadbc Analyse LR : accbbadbc actbbadbc asbbadbc asbbasbc asbbasbt asbbs asbt 40 / 59

60 et compilation Exemple Soit G = V, Σ, P, S avec Σ = {a, b, c, d} V \ Σ = {S, T } 6 règles de production : S asbt ct d T at bs c Soit w = accbbadbc Analyse LL : S asbt actbt accbt accbbs accbbasbt accbbadbt accbbadbc Analyse LR : accbbadbc actbbadbc asbbadbc asbbasbc asbbasbt asbbs asbt S 40 / 59

61 et compilation Constructeur d analyseur LR yacc/bison yacc : Yet Another Compiler Compiler (Unix) bison en version libre (Linux) 1ère version dans les années 70 par Stephen Curtis Johnson Prend une grammaire hors contexte en entrée, produit l analyseur correspondant Le programme produit est en langage C 41 / 59

62 et compilation Construire un analyseur syntaxique avec yacc spécification yacc/bison nom.y compilateur yacc/bison yacc nom.y bison nom.y nom.tab.c nom.tab.c compilateur C gcc nom.tab.c -ly a.out 42 / 59

63 et compilation Spécifications en yacc déclarations %% règles de production et routines sémantiques %% routines C et bloc principal 43 / 59

64 et compilation Déclarations La section des déclarations contient 2 parties optionnelles 1ère partie : déclarations en C délimitées par %{ et %} déclarations des variables temporaires utilisées par les règles de traduction procédures de la deuxième et troisième section 2nde partie : déclarations d unités lexicales de la grammaire Symboles terminaux : unités lexicales, déclarées par %token %token NOMBRE caractères, entre quotes : a, + Symboles non terminaux : chaînes de caractères non déclarées comme unités lexicales 44 / 59

65 et compilation Règles de production Une règle de production de la grammaire du type : non-terminal alt 1 alt 2... alt n s écrirait en yacc : non-terminal : alt 1 {action sémantique 1} alt 2 {action sémantique 2}... alt n {action sémantique n} ; La partie gauche de la première règle de production est l axiome de la grammaire 45 / 59

66 et compilation Actions sémantiques Une action sémantique est une suite d instructions en C Elles sont exécutées à chaque fois qu il y a réduction par la production associée Syntaxe d une action sémantique : Symbole $$ référence la valeur de l attribut associé au non terminal de la partie gauche de la règle Symbole $i représente la valeur associée au ième symbole (terminal ou non) en partie droite de la règle. Exemple : expr : expr + term {$$ = $1 + $3} ; 46 / 59

67 et compilation Routines annexes En langage C Un analyseur lexical nommé yylex() doit être fourni D autres procédures comme les routines de récupération d erreur peuvent être ajoutées si nécessaire L analyseur lexical yylex() produit des couples formés d une unité lexicale et de la valeur de l attribut associé Si une unité lexicale est retournée, elle doit être déclarée dans la première section de la spécification yacc La valeur de l attribut associée à une unité lexicale est communiquée à l analyseur syntaxique par l intermédiaire de la variable yylval prédéfinie dans yacc 47 / 59

68 et compilation Exemple Grammaire des expressions arithmétiques : E E + T T T T F F F (E) chiffre L unité lexicale chiffre désigne un chiffre unique compris entre 0 et 9 48 / 59

69 et compilation Exemple déclarations et règles de production %{ #include <ctype.h> %} %token CHIFFRES %% ligne : expr \n {printf(%d\n, $1);} ; expr : expr + term {$$ = $1 + $3;} term ; term : term * facteur {$$ = $1 * $3;} facteur ; facteur : ( expr ) {$$ = $2;} CHIFFRE ; %% 49 / 59

70 et compilation Exemple Routines annexes yylex() { int c; c = getchar(); if (isdigit(c)) { yyval = c - 0 ; return CHIFFRE; } return c } 50 / 59

71 et compilation Utilisation conjointe de lex et yacc lex a été conçu pour produire des analyseurs lexicaux qui peuvent être utilisés avec des analyseurs syntaxiques faits avec yacc Pour utiliser lex, il faut remplacer la routine yylex() par la clause : #include "lex.yy.c" Spécifier chaque action lex de façon à ce qu elle retourne un terminal connu de yacc 51 / 59

72 et compilation Utilisation conjointe de lex et yacc Spécification lex : fichier nom.l Spécification yacc : fichier synt.y Compilation : lex nom.l yacc synt.y gcc -ly -ll y.tab.c On obtient un exécutable a.out qui permet de traduire le langage désiré 52 / 59

73 et compilation et compilation Structure d un compilateur Analyse lexicale Analyse syntaxique Analyse sémantique Conclusion 53 / 59

74 et compilation Analyse sémantique - pourquoi? Correction syntaxique insuffisante Exemple : 3 + true > 2 syntaxiquement correct Nécessité d une analyse sémantique 54 / 59

75 et compilation Analyse sémantique - c est quoi? Dans le compilateur d un langage de programmation : Calcul d un arbre abstrait Décoré par des informations qui préparent la génération de code (ex : adresses mémoire) Vérifications sémantiques : de type, des déclarations, etc. Applications de traitement de données textuelles : calculs divers. 55 / 59

76 et compilation Analyse sémantique - comment? L analyse sémantique calcule des données (ex : types, arbres) Comment exprimer ces calculs? Le plus naturel est de le faire en fonction de sa grammaire : on parle de traduction dirigée par la syntaxe On enrichit les grammaires algébriques par 2 concepts : données calculs et on obtient une grammaire attribuée 56 / 59

77 et compilation Grammaire attribuée, informellement C est une grammaire algébrique, plus : des attributs (les données) associés aux terminaux et non-terminaux des règles (ou actions sémantiques) associées aux productions (les calculs des données) Exemple : E E + T {E 0.val = E 1.val + T.val} 57 / 59

78 et compilation et compilation Structure d un compilateur Analyse lexicale Analyse syntaxique Analyse sémantique Conclusion 58 / 59

79 et compilation Conclusion Partie analyse: sépare les constituants Programme source du prog. source et produit une représentation intermédiaire Analyseur lexical Analyseur syntaxique Table des symboles Analyseur sémantique Générateur de code intermédiaire Erreurs Optimisateur de code Générateur de code Partie synthèse: génère le prog. cible à Programme cible partir de la représentation intermédiaire 59 / 59

Chap 4: Analyse syntaxique. Prof. M.D. RAHMANI Compilation SMI- S5 2013/14 1

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-

Plus en détail

Algorithmique et Programmation, IMA

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

Plus en détail

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP COURS PROGRAMMATION INITIATION AU LANGAGE C SUR MICROCONTROLEUR PIC page 1 / 7 INITIATION AU LANGAGE C SUR PIC DE MICROSHIP I. Historique du langage C 1972 : naissance du C dans les laboratoires BELL par

Plus en détail

Évaluation et implémentation des langages

Évaluation et implémentation des langages Évaluation et implémentation des langages Les langages de programmation et le processus de programmation Critères de conception et d évaluation des langages de programmation Les fondations de l implémentation

Plus en détail

Traduction des Langages : Le Compilateur Micro Java

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

Plus en détail

Licence ST Université Claude Bernard Lyon I LIF1 : Algorithmique et Programmation C Bases du langage C 1 Conclusion de la dernière fois Introduction de l algorithmique générale pour permettre de traiter

Plus en détail

É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 É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

Plus en détail

Cours 1 : La compilation

Cours 1 : La compilation /38 Interprétation des programmes Cours 1 : La compilation Yann Régis-Gianas yrg@pps.univ-paris-diderot.fr PPS - Université Denis Diderot Paris 7 2/38 Qu est-ce que la compilation? Vous avez tous déjà

Plus en détail

STAGE IREM 0- Premiers pas en Python

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

Plus en détail

Interpréteur d algèbre relationnelle

Interpréteur d algèbre relationnelle Universite de Mons-Hainaut Faculté des Sciences Interpréteur d algèbre relationnelle Olivier Christiaen UMH-LIG1 Directeur du projet : M. Jef Wijsen Année académique 2003-2004 Première licence en informatique

Plus en détail

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation impérative et structures de données simples Introduction au langage C Sandrine Blazy - 1ère année 24 octobre 2007 Cours d Algorithmique-Programmation

Plus en détail

Compilation. Algorithmes d'analyse syntaxique

Compilation. Algorithmes d'analyse syntaxique Compilation Algorithmes d'analyse syntaxique Préliminaires Si A est un non-terminal et γ une suite de terminaux et de non-terminaux, on note : A γ si en partant de A on peut arriver à γ par dérivations

Plus en détail

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3. 1. Structure d un programme C Un programme est un ensemble de fonctions. La fonction "main" constitue le point d entrée pour l exécution. Un exemple simple : #include int main() { printf ( this

Plus en détail

Programmer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr)

Programmer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr) Programmer en JAVA par Tama (tama@via.ecp.fr( tama@via.ecp.fr) 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

Plus en détail

Travaux pratiques. Compression en codage de Huffman. 1.3. Organisation d un projet de programmation

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

Plus en détail

Cours de Programmation 2

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

Plus en détail

Initiation à l algorithmique

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 -

Plus en détail

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/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

Plus en détail

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java Info0101 Intro. à l'algorithmique et à la programmation Cours 3 Le langage Java Pierre Delisle, Cyril Rabat et Christophe Jaillet Université de Reims Champagne-Ardenne Département de Mathématiques et Informatique

Plus en détail

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

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

Plus en détail

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

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 treinen@pps.univ-paris-diderot.fr 6 mai 2015 Jusqu'à maintenant : un petit langage de programmation

Plus en détail

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

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

Plus en détail

Représentation d un entier en base b

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

Plus en détail

Théorie de la Programmation

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

Plus en détail

IN 102 - Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

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

Plus en détail

TP 1. Prise en main du langage Python

TP 1. Prise en main du langage Python TP. Prise en main du langage Python Cette année nous travaillerons avec le langage Python version 3. ; nous utiliserons l environnement de développement IDLE. Étape 0. Dans votre espace personnel, créer

Plus en détail

Les structures de données. Rajae El Ouazzani

Les structures de données. Rajae El Ouazzani Les structures de données Rajae El Ouazzani Les arbres 2 1- Définition de l arborescence Une arborescence est une collection de nœuds reliés entre eux par des arcs. La collection peut être vide, cad l

Plus en détail

Plan. Exemple: Application bancaire. Introduction. OCL Object Constraint Language Le langage de contraintes d'uml

Plan. Exemple: Application bancaire. Introduction. OCL Object Constraint Language Le langage de contraintes d'uml OCL Object Constraint Language Le langage de contraintes d'uml Plan 1. Introduction 2. Les principaux concepts d'ocl Object Constraint Language 1 Object Constraint Language 2 Exemple: une application bancaire

Plus en détail

L informatique en BCPST

L informatique en BCPST L informatique en BCPST Présentation générale Sylvain Pelletier Septembre 2014 Sylvain Pelletier L informatique en BCPST Septembre 2014 1 / 20 Informatique, algorithmique, programmation Utiliser la rapidité

Plus en détail

OCL - Object Constraint Language

OCL - Object Constraint Language OCL - Object Constraint Language Laëtitia Matignon laetitia.matignon@univ-lyon1.fr Département Informatique - Polytech Lyon Université Claude Bernard Lyon 1 2012-2013 Laëtitia Matignon SIMA - OCL - Object

Plus en détail

Cours d Algorithmique et de Langage C 2005 - v 3.0

Cours d Algorithmique et de Langage C 2005 - v 3.0 Cours d Algorithmique et de Langage C 2005 - v 3.0 Bob CORDEAU cordeau@onera.fr Mesures Physiques IUT d Orsay 15 mai 2006 Avant-propos Avant-propos Ce cours en libre accès repose sur trois partis pris

Plus en détail

Note de cours. Introduction à Excel 2007

Note de cours. Introduction à Excel 2007 Note de cours Introduction à Excel 2007 par Armande Pinette Cégep du Vieux Montréal Excel 2007 Page: 2 de 47 Table des matières Comment aller chercher un document sur CVMVirtuel?... 8 Souris... 8 Clavier

Plus en détail

Théorie des Langages

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

Plus en détail

Cours 1 : Qu est-ce que la programmation?

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 yrg@pps.univ-paris-diderot.fr Université Paris Diderot Paris 7 2/65 1. Sortez un appareil qui peut se rendre

Plus en détail

Chapitre I Notions de base et outils de travail

Chapitre I Notions de base et outils de travail Chapitre I Notions de base et outils de travail Objectifs Connaître les principes fondateurs et l historique du langage Java S informer des principales caractéristiques du langage Java Connaître l environnement

Plus en détail

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre 2009. Enrica.Duchi@liafa.jussieu.fr

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre 2009. Enrica.Duchi@liafa.jussieu.fr . Cours intensif Java 1er cours: de C à Java Septembre 2009 Enrica DUCHI LIAFA, Paris 7 Enrica.Duchi@liafa.jussieu.fr LANGAGES DE PROGRAMMATION Pour exécuter un algorithme sur un ordinateur il faut le

Plus en détail

3. SPÉCIFICATIONS DU LOGICIEL. de l'expression des besoins à la conception. Spécifications fonctionnelles Analyse fonctionnelle et méthodes

3. SPÉCIFICATIONS DU LOGICIEL. de l'expression des besoins à la conception. Spécifications fonctionnelles Analyse fonctionnelle et méthodes PLAN CYCLE DE VIE D'UN LOGICIEL EXPRESSION DES BESOINS SPÉCIFICATIONS DU LOGICIEL CONCEPTION DU LOGICIEL LA PROGRAMMATION TESTS ET MISE AU POINT DOCUMENTATION CONCLUSION C.Crochepeyre Génie Logiciel Diapason

Plus en détail

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile Dans ce TP, vous apprendrez à définir le type abstrait Pile, à le programmer en Java à l aide d une interface

Plus en détail

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

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

Plus en détail

Claude Delannoy. 3 e édition C++

Claude Delannoy. 3 e édition C++ Claude Delannoy 3 e édition Exercices Exercices C++ en en langage langage delc++ titre 4/07/07 15:19 Page 2 Exercices en langage C++ AUX EDITIONS EYROLLES Du même auteur C. Delannoy. Apprendre le C++.

Plus en détail

Introduction à MATLAB R

Introduction à MATLAB R Introduction à MATLAB R Romain Tavenard 10 septembre 2009 MATLAB R est un environnement de calcul numérique propriétaire orienté vers le calcul matriciel. Il se compose d un langage de programmation, d

Plus en détail

LES TYPES DE DONNÉES DU LANGAGE PASCAL

LES TYPES DE DONNÉES DU LANGAGE PASCAL LES TYPES DE DONNÉES DU LANGAGE PASCAL 75 LES TYPES DE DONNÉES DU LANGAGE PASCAL CHAPITRE 4 OBJECTIFS PRÉSENTER LES NOTIONS D ÉTIQUETTE, DE CONS- TANTE ET DE IABLE DANS LE CONTEXTE DU LAN- GAGE PASCAL.

Plus en détail

LES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN

LES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN LES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN Les contenues de ce document sont la propriété exclusive de la société REVER. Ils ne sont transmis qu à titre d information et ne peuvent en aucun cas

Plus en détail

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte Projet d informatique M1BI : Compression et décompression de texte Le but de ce projet est de coder un programme réalisant de la compression et décompression de texte. On se proposera de coder deux algorithmes

Plus en détail

Java Licence Professionnelle CISII, 2009-10

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

Plus en détail

Quelques éléments de compilation en C et makefiles

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

Plus en détail

Génie Logiciel avec Ada. 4 février 2013

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

Plus en détail

Le langage SQL Rappels

Le langage SQL Rappels Le langage SQL Rappels Description du thème : Présentation des principales notions nécessaires pour réaliser des requêtes SQL Mots-clés : Niveau : Bases de données relationnelles, Open Office, champs,

Plus en détail

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski cegielski@u-pec.fr

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski cegielski@u-pec.fr Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski cegielski@u-pec.fr Mars 2002 Pour Irène et Marie Legal Notice Copyright c 2002 Patrick Cégielski Université

Plus en détail

Algorithmique et programmation : les bases (VBA) Corrigé

Algorithmique et programmation : les bases (VBA) Corrigé PAD INPT ALGORITHMIQUE ET PROGRAMMATION 1 Cours VBA, Semaine 1 mai juin 2006 Corrigé Résumé Ce document décrit l écriture dans le langage VBA des éléments vus en algorithmique. Table des matières 1 Pourquoi

Plus en détail

Introduction au langage C

Introduction au langage C Introduction au langage C Cours 1: Opérations de base et premier programme Alexis Lechervy Alexis Lechervy (UNICAEN) Introduction au langage C 1 / 23 Les premiers pas Sommaire 1 Les premiers pas 2 Les

Plus en détail

Déroulement. Evaluation. Préambule. Définition. Définition. Algorithmes et structures de données 28/09/2009

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

Plus en détail

Ingénierie Dirigée par les Modèles. Editeurs de modèles. (Eclipse Modeling Tools) Jean-Philippe Babau

Ingénierie Dirigée par les Modèles. Editeurs de modèles. (Eclipse Modeling Tools) Jean-Philippe Babau labsticc.univ-brest.fr/pages_perso/babau/ Ingénierie Dirigée par les Modèles Editeurs de modèles (Eclipse Modeling Tools) Jean-Philippe Babau Département Informatique, UFR Sciences, Laboratoire Lab-STICC

Plus en détail

Optimisation de logiciels de modélisation sur centre de calcul

Optimisation de logiciels de modélisation sur centre de calcul Optimisation de logiciels de modélisation sur centre de calcul Gérald Monard Pôle de Chimie Théorique http://www.monard.info/ Introduction Les ordinateurs sont des appareils électroniques permettant d

Plus en détail

Aide : publication de décisions VS

Aide : publication de décisions VS Aide : publication de décisions VS Table des Matières Introduction... 2 Recherche (Recherche dans le texte intégral)... 2 Filtres... 3 Collection d arrêts... 4 Date de la décision et date de publication...

Plus en détail

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

Plus en détail

Programmation C. Apprendre à développer des programmes simples dans le langage C

Programmation C. Apprendre à développer des programmes simples dans le langage C Programmation C Apprendre à développer des programmes simples dans le langage C Notes de cours sont disponibles sur http://astro.u-strasbg.fr/scyon/stusm (attention les majuscules sont importantes) Modalités

Plus en détail

Java Licence Professionnelle CISII, 2009-2010. Cours 2 : Classes et Objets

Java Licence Professionnelle CISII, 2009-2010. Cours 2 : Classes et Objets Licence Professionnelle CISII, 2009-2010 Cours 2 : Classes et Objets 1 Classes et Objets Objectifs des LOO : - Manipuler des objets - Découper les programmes suivant les types des objets manipulés - Regrouper

Plus en détail

Présentation du langage et premières fonctions

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

Plus en détail

Expression des contraintes. OCL : Object C o n t r a i n t L a n g u a g e

Expression des contraintes. OCL : Object C o n t r a i n t L a n g u a g e P r o b l é m a t i q u e OCL : O b j e c t C o n s t r a i n t L a n g u a g e Le langage de contraintes d UML Les différents diagrammes d UML permettent d exprimer certaines contraintes graphiquement

Plus en détail

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère L'héritage et le polymorphisme en Java Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère En java, toutes les classes sont dérivée de la

Plus en détail

Créer le schéma relationnel d une base de données ACCESS

Créer le schéma relationnel d une base de données ACCESS Utilisation du SGBD ACCESS Polycopié réalisé par Chihab Hanachi et Jean-Marc Thévenin Créer le schéma relationnel d une base de données ACCESS GENERALITES SUR ACCESS... 1 A PROPOS DE L UTILISATION D ACCESS...

Plus en détail

Cours No 3 : Identificateurs, Fonctions, Premières Structures de contrôle.

Cours No 3 : Identificateurs, Fonctions, Premières Structures de contrôle. Université Montpellier-II UFR des Sciences - Département Informatique - Licence Informatique UE GLIN302 - Programmation Applicative et Récursive Cours No 3 : Identificateurs, Fonctions, Premières Structures

Plus en détail

INSERER DES OBJETS - LE RUBAN INSERTION... 3 TABLEAUX

INSERER DES OBJETS - LE RUBAN INSERTION... 3 TABLEAUX TABLE DES MATIERES Livret Utilisateur Excel 2007 Niveau 2 INSERER DES OBJETS - LE RUBAN INSERTION... 3 TABLEAUX... 4 Les tableaux croisés dynamiques... 4 Création d un tableau croisé... 5 Comparer des

Plus en détail

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, 2000-2015, ISBN : 978-2-212-14154-2

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, 2000-2015, ISBN : 978-2-212-14154-2 Anne Tasso Java Le livre de premier langage 10 e édition Avec 109 exercices corrigés Groupe Eyrolles, 2000-2015, ISBN : 978-2-212-14154-2 Table des matières Avant-propos Organisation de l ouvrage..............................

Plus en détail

Bases de programmation. Cours 5. Structurer les données

Bases de programmation. Cours 5. Structurer les données Bases de programmation. Cours 5. Structurer les données Pierre Boudes 1 er décembre 2014 This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License. Types char et

Plus en détail

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

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

Plus en détail

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

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

Plus en détail

Manuel d utilisation 26 juin 2011. 1 Tâche à effectuer : écrire un algorithme 2

Manuel d utilisation 26 juin 2011. 1 Tâche à effectuer : écrire un algorithme 2 éducalgo Manuel d utilisation 26 juin 2011 Table des matières 1 Tâche à effectuer : écrire un algorithme 2 2 Comment écrire un algorithme? 3 2.1 Avec quoi écrit-on? Avec les boutons d écriture........

Plus en détail

Rappels d architecture

Rappels d architecture Assembleur Rappels d architecture Un ordinateur se compose principalement d un processeur, de mémoire. On y attache ensuite des périphériques, mais ils sont optionnels. données : disque dur, etc entrée

Plus en détail

Cours de C++ François Laroussinie. 2 novembre 2005. Dept. d Informatique, ENS de Cachan

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

Plus en détail

Ecole Technique «Transformation de données documentaires» Poitiers, 14-16 mars 2011. Atelier 1: Sphinx. import, conversion, export de données

Ecole Technique «Transformation de données documentaires» Poitiers, 14-16 mars 2011. Atelier 1: Sphinx. import, conversion, export de données Ecole Technique «Transformation de données documentaires» Poitiers, 14-16 mars 2011 Atelier 1: Sphinx import, conversion, export de données Introduction à la Recherche d'ist via le Web INRA Grignon, 03/2011

Plus en détail

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique Institut Supérieure Aux Etudes Technologiques De Nabeul Département Informatique Support de Programmation Java Préparé par Mlle Imene Sghaier 2006-2007 Chapitre 1 Introduction au langage de programmation

Plus en détail

C++ Programmer. en langage. 8 e édition. Avec une intro aux design patterns et une annexe sur la norme C++11. Claude Delannoy

C++ Programmer. en langage. 8 e édition. Avec une intro aux design patterns et une annexe sur la norme C++11. Claude Delannoy Claude Delannoy Programmer en langage C++ 8 e édition Avec une intro aux design patterns et une annexe sur la norme C++11 Groupe Eyrolles, 1993-2011. Groupe Eyrolles, 2014, pour la nouvelle présentation,

Plus en détail

Informatique Théorique : Théorie des Langages, Analyse Lexicale, Analyse Syntaxique Jean-Pierre Jouannaud Professeur

Informatique Théorique : Théorie des Langages, Analyse Lexicale, Analyse Syntaxique Jean-Pierre Jouannaud Professeur Université Paris-Sud Licence d Informatique Informatique Théorique : Théorie des Langages, Analyse Lexicale, Analyse Syntaxique Jean-Pierre Jouannaud Professeur Adresse de l auteur : LIX École Polytechnique

Plus en détail

Formula Negator, Outil de négation de formule.

Formula Negator, Outil de négation de formule. Formula Negator, Outil de négation de formule. Aymerick Savary 1,2, Mathieu Lassale 1,2, Jean-Louis Lanet 1 et Marc Frappier 2 1 Université de Limoges 2 Université de Sherbrooke Résumé. Cet article présente

Plus en détail

TP : Gestion d une image au format PGM

TP : Gestion d une image au format PGM TP : Gestion d une image au format PGM Objectif : L objectif du sujet est de créer une classe de manipulation d images au format PGM (Portable GreyMap), et de programmer des opérations relativement simples

Plus en détail

Langage SQL (1) 4 septembre 2007. IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

Langage SQL (1) 4 septembre 2007. IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes Langage SQL (1) Sébastien Limet Denys Duchier IUT Orléans 4 septembre 2007 Notions de base qu est-ce qu une base de données? SGBD différents type de bases de données quelques systèmes existants Définition

Plus en détail

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java Langages objets Introduction M2 Pro CCI, Informatique Emmanuel Waller, LRI, Orsay présentation du module logistique 12 blocs de 4h + 1 bloc 2h = 50h 1h15 cours, 45mn exercices table, 2h TD machine page

Plus en détail

Plan du cours 2014-2015. Cours théoriques. 29 septembre 2014

Plan du cours 2014-2015. Cours théoriques. 29 septembre 2014 numériques et Institut d Astrophysique et de Géophysique (Bât. B5c) Bureau 0/13 email:.@ulg.ac.be Tél.: 04-3669771 29 septembre 2014 Plan du cours 2014-2015 Cours théoriques 16-09-2014 numériques pour

Plus en détail

Introduction à l algorithmique et à la programmation M1102 CM n 3

Introduction à l algorithmique et à la programmation M1102 CM n 3 Introduction à l algorithmique et à la programmation M1102 CM n 3 DUT Informatique 1 re année Eric REMY eric.remy@univ-amu.fr IUT d Aix-Marseille, site d Arles Version du 2 octobre 2013 E. Remy (IUT d

Plus en détail

Plan du cours : Zippers. Des fonctions sur les listes avec position. Des fonctions sur les listes avec position

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

Plus en détail

Générer un analyseur avec Flex&Bison

Générer un analyseur avec Flex&Bison Techniques de compilation Générer un analyseur avec Flex&Bison Généralités Analyse lexicale avec Flex Analyse syntaxique avec Bison Association de Flex et Bison Fabrice Harrouet École Nationale d Ingénieurs

Plus en détail

UE Programmation Impérative Licence 2ème Année 2014 2015

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 prenom.nom@mi.parisdescartes.fr 2 Programmation Impérative

Plus en détail

Arbres binaires de recherche

Arbres binaires de recherche 1 arbre des comparaisons 2 recherche dichotomique l'arbre est recalculé à chaque recherche 2 5 3 4 7 9 1 6 1 2 3 4 5 6 7 9 10 conserver la structure d'arbre au lieu de la reconstruire arbre binaire de

Plus en détail

Initiation à la Programmation en Logique avec SISCtus Prolog

Initiation à la Programmation en Logique avec SISCtus Prolog Initiation à la Programmation en Logique avec SISCtus Prolog Identificateurs Ils sont représentés par une suite de caractères alphanumériques commençant par une lettre minuscule (les lettres accentuées

Plus en détail

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

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 gauthier.picard@emse.fr

Plus en détail

LE PROCESSUS ( la machine) la fonction f. ( On lit : «fonction f qui à x associe f (x)» )

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 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

Plus en détail

V- Manipulations de nombres en binaire

V- Manipulations de nombres en binaire 1 V- Manipulations de nombres en binaire L ordinateur est constitué de milliards de transistors qui travaillent comme des interrupteurs électriques, soit ouverts soit fermés. Soit la ligne est activée,

Plus en détail

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51 DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51 PLAN DU COURS Introduction au langage C Notions de compilation Variables, types, constantes, tableaux, opérateurs Entrées sorties de base Structures de

Plus en détail

ALGORITHMIQUE ET PROGRAMMATION En C

ALGORITHMIQUE ET PROGRAMMATION En C Objectifs ALGORITHMIQUE ET PROGRAMMATION Une façon de raisonner Automatiser la résolution de problèmes Maîtriser les concepts de l algorithmique Pas faire des spécialistes d un langage Pierre TELLIER 2

Plus en détail

Rappels sur les suites - Algorithme

Rappels sur les suites - Algorithme DERNIÈRE IMPRESSION LE 14 septembre 2015 à 12:36 Rappels sur les suites - Algorithme Table des matières 1 Suite : généralités 2 1.1 Déition................................. 2 1.2 Exemples de suites............................

Plus en détail

Programmation en langage C

Programmation en langage C Programmation en langage C Anne CANTEAUT INRIA - projet CODES B.P. 105 78153 Le Chesnay Cedex Anne.Canteaut@inria.fr http://www-rocq.inria.fr/codes/anne.canteaut/cours C 2 Table des matières 3 Table des

Plus en détail

Générer du code à partir d une description de haut niveau

Générer du code à partir d une description de haut niveau Cedric Dumoulin Générer du code à partir d une description de haut niveau Ce projet vise à fournir un environnement de développement permettant de modéliser des UI Android à un haut niveau d abstraction,

Plus en détail

Sage 100 CRM - Guide de la Fusion Avancée Version 8. Mise à jour : 2015 version 8

Sage 100 CRM - Guide de la Fusion Avancée Version 8. Mise à jour : 2015 version 8 Sage 100 CRM - Guide de la Fusion Avancée Version 8 Mise à jour : 2015 version 8 Composition du progiciel Votre progiciel est composé d un boîtier de rangement comprenant : le cédérom sur lequel est enregistré

Plus en détail

1 Recherche en table par balayage

1 Recherche en table par balayage 1 Recherche en table par balayage 1.1 Problème de la recherche en table Une table désigne une liste ou un tableau d éléments. Le problème de la recherche en table est celui de la recherche d un élément

Plus en détail

Analyse de sécurité de logiciels système par typage statique

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

Plus en détail

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr www.cril.univ-artois.fr/~jabbour

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr www.cril.univ-artois.fr/~jabbour LMI 2 Programmation Orientée Objet POO - Cours 9 Said Jabbour jabbour@cril.univ-artois.fr www.cril.univ-artois.fr/~jabbour CRIL UMR CNRS 8188 Faculté des Sciences - Univ. Artois Février 2011 Les collections

Plus en détail

Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie

Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie Chapitre I : Les bases du C++ Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie du logiciel, et ce depuis

Plus en détail