BAZIN Danil et PRIEZ Jean-Baptiste. LEX & YACC : Calculatrice Évoluée
|
|
- Marc-Antoine Soucy
- il y a 8 ans
- Total affichages :
Transcription
1 BAZIN Danil et PRIEZ Jean-Baptiste LEX & YACC : Calculatrice Évoluée
2 Table des matières 1 Introduction 3 2 Description 4 3 La grammaire utilisée 6 4 Lexèmes et FLEX 8 5 Analyse syntaxique et YACC Approche vue TP et ses limites Arbres abstraits et fonctions récursives Arbres abstraits Évaluateur récursifs Améliorations envisagées 13 7 Conclusion 14 2
3 1 Introduction Ce rapport décrit notre projet de compilation d une calculatrice évoluée. Notre calculatrice effectue des tâches simples tel que les additions, soustractions, multiplications et divisions. exemple 1. Voici un exemple d entrée : * Et notre calculette interprète et effectue les opérations pour transmettre le résultat suivant : Resultat de l expression: Resultat de l expression: Resultat de l expression: Mais elle est aussi capable d utiliser des fonctions plus avancées, tel que l affectation de variables, les instructions conditionnelles si-alors-sinon ou encore faire des itérations tant-que-faire. exemple 2. Voici un exemple d entrée : x = si (x >= 0) alors { x = 3 * 5 } sinon { x = 4-2 } a = 0 tant que (x > 0) faire { x = x - 1 a = a + 1 } Et notre calculette interprète et effectue les opérations pour transmettre le résultat suivant : $RESULTATS : x = a =
4 Elle permet d effectuer d autres fonctionnalités que nous détaillerons au cours du rapport. Nous avons choisi de ne pas trop étoffer les fonctionnalités basiques tournant autour de l addition, soustraction... pour nous concentrer sur des fonctionnalités plus ardues telles que les instructions itératives nécessitant d effectuer la création d arbre abstrait lors de la traduction dirigée par la syntaxe pour exécuter les instructions après l analyse syntaxique. En effet, cet aspect sort du cadre du cours et nous a permis d approfondir nos connaissances en compilation. Nous aborderons donc tout d abord un rapide descriptif de notre application, puis le détail des lexèmes reconnu par flex, ainsi que deux différentes parties développant l analyse syntaxique effectuée par yacc : la première décrivant l utilisation classique que l on peut avoir lorsque les règles sémantiques sont celles d une définition S-attribuée ou L-attribuée, puis la seconde décrivant l utilisation d arbres abstraits et de fonctions récursives nécessaire pour l utilisation de règles ne pouvant s exécuter en parallèle de l analyse syntaxique. 2 Description La super-calcultrice est composée de deux modes : un premier classique qui affiche uniquement les résultats, exemple 3. RESULTATS : x = y = un second qui affiche le détail des résultats de chaque instruction(mode verbose). exemple 4. Resultat de l expression: Resultat de l expression: x = toto = x = RESULTATS : x = toto =
5 N importe quelle chaîne de caractère peut être le nom d une variable exceptée certains mots réservés comme les noms de fonctions (sqrt, log, exp) ou les mots définissant les structures autres (tant que,... ). Voici un exemple d exécution de l application en mode interprété comme on peut l avoir sur mathlab ou autre en mode verbose : exemple 5. >elix@kerios:~$./calculatrice -v x = 10 * x = toto = x toto = x = x / 2 x = RESULTATS : x = toto = >elix@kerios:~$ On peut aussi effectuer les opérations décrites dans un fichier : exemple 6. le fichier test.cal x = 10 * toto = x x = x / 2 al = log (exp (x)) bl = sqrt (4) i = 0 j = 10 TANT QUE ( i > 10 ) FAIRE { i = i + 1 j = j - 1 } et voici l exécution : 5
6 < test.cal RESULTATS : x = toto = al = bl = i = j = >elix@kerios:~$ Pour effectuer ces différents calculs nous avons utilisé la grammaire suivante décrite dans la prochaine section. 3 La grammaire utilisée Cette section décrit la grammaire utilisée pour les différents calculs : l addition la soustraction la multiplication la division la fonction exponentiel la fonction logarithme le fonction racine carré En plus de ces aspects de calculs simples, on a ajouté des structures d opérations conditionnelles et itératives. 6
7 La grammaire est la suivante : LIGNE LIGNE INST EOL LIGNE EOL ERROR EPSILON LDI = Liste d instructions INST EXPR INST = Instruction si ( COND ) alors { COND = condition LIGNE } si ( COND ) alors { LIGNE } sinon { LIGNE } tant que ( COND ) faire INST ITER =Instruction itérative { LIGNE } pour variable de EXPR a EXPR faire { LIGNE } EXPR EXPR + EXPR EXPR - EXPR EXPR * EXPR EXPR / EXPR - EXPR ( EXPR ) variable = EXPR variable fonc ( EXPR ) fonc = représente une fonction ( COND )? EXPR : EXPR nombre COND EXPR > EXPR EXPR >= EXPR EXPR == EXPR EXPR!= EXPR EXPR <= EXPR EXPR < EXPR COND = Expression booléenne La grammaire maintenant définit nous allons maintenant présenter les différents outils (expressions régulières) utilisés pour l analyse lexicale puis ensuite ceux 7
8 utilisés pour l analyse syntaxique. 4 Lexèmes et FLEX Dans cette section, nous présentons les expressions régulières utilisées par FLEX pour signifier les lexèmes reconnus à YACC. Lex et Flex sont des analyseurs lexicaux spécialement conçus pour être utilisés par Yacc. Nous avons donc utiliser Flex pour reconnaitre l ensemble des lexèmes transmis pour l analyse syntaxique à Yacc. Notre calculatrice reconnait les réelles pouvant prendre les formes suivantes : e3 1.2E-3... Pour reconnaître ces différentes formes, on a utilisé l expression régulière suivante : (({CHIFFRE}+(\.{CHIFFRE}+)?) (\.{CHIFFRE}+))(eSIGNE?{CHIFFRE}+)? Nous reconnaissons aussi les variables de la forme suivante : [a za Z]+ On note ici que l on reconnait les mots protégés : si, alors, sinon : pour les expressions conditionnelles tant que, faire : pour les expressions itératives sqrt, log, exp,... : pour les différentes fonctions reconnues Une fois les lexèmes reconnus lors de l analyse lexicale, nous passons à l analyse syntaxique effectué par Yacc. 5 Analyse syntaxique et YACC Dans cette section, nous décrivons comment nous utilisons le constructeur d analyseurs syntaxiques Yacc (normalement utilisé pour la production de la partie frontale d un compilateur) pour traiter et effectuer les calculs de notre calculette. Dans un premier temps, nous allons voir les limites de l approche abordée en TP et ensuite déduire du cours une nouvelle approche permettant l exécution d instruction complexe ne pouvant être effectuée en parallèle de l analyse syntaxique grâce à des arbres abstraits. 8
9 YACC permet la construction d analyseur LALR, c est-à-dire la construction d un analyseur LR tel que vu dans le cours permettant d établir certaines règles de priorité sur les opérateurs comme l associativité à droite ou à gauche. Commençons par établir l ordre de priorité des opérateurs : On va avoir dans l ordre du plus prioritaire au moins prioritaire > / > + > >? >=. Associé au priorité, on a aussi attribué à nos opérateurs une valeur d associativité gauche-droite comme suit : les opérateurs?, = sont associatifs à droites et les autres à gauche. Avec une petite exception dans le cas EXPR qui donnera à l opérateur une associativité droite. 5.1 Approche vue TP et ses limites Prenons une instruction simple(extraite de notre grammaire) tel que x = y+4 où y vaut 4, on va avoir l analyse ascendante suivante : PILE ENTRÉE SORTIE x = y +4$ x = y +4$ x = y +4$ x = y +4$ EXPR variable x = EXPR+ 4$ x = EXPR+4 $ EXP nombre x = EXPR+EXPR $ EXPR EXPR + EXPR x = EXPR $ EXPR EXPR EXPR $ INST EXPR INST $ LIGNE INST LIGN E $ Une manière simple d effectuer la traduction dirigée par la syntaxe de ces instructions serait de faire de la manière suivante : PRODUCTION RÈGLE SÉMANTIQUE EXPR EXPR 1 + EXPR 2 EXPR.val EXPR 1.val + EXPR 2.val EXP R variable = EXP R creerv ariable(variable, EXP R.val) En effet, si l on traite des instructions de ce type, il n y a pas de problème. Mais si l on souhaite traiter des instructions tel que celle représenté par l arbre suivant : 9
10 ... INST tant que COND faire { LIGNE } ( EXPR < EXPR ) INST a b EXPR a = EXPR EXPR a + EXPR b Les instructions sont effectuées au fur et à mesure de l analyse ascendante donc l instruction a = a+b n est effectuée qu une seule et unique fois. En effet, ce type d instruction sort du cadre des définitions S-attribuées et L-attribuées. Pour cela, nous avons recréé l arbre de l expression pour effectuer à postériori l exécution des instructions. En effet, on va avoir la table d analyse suivante : PILE ENTRÉE SORTIE tant que(a < b) faire a = a+b$ tant que(a < b) faire a = a+b$ tant que(cond) faire $ INST tant que(cond) {LIGN E} f aire{lign E}... $... On voit clairement que l instruction d affectation est effectué sans possibilité de retour en arrière pour exécuter d y retourner tant que la condition n est pas vérifié. 5.2 Arbres abstraits et fonctions récursives Pour résoudre ce problème inhérent aux analyses ascendantes nous avons choisi de créer l arbre abstrait de nos instructions à partir d une définition S- attribuée nous permettant à la suite de l analyse syntaxique d effectuer une 10
11 analyse descendante de l arbre (abstrait) pour effectuer nos calculs (ce qui va représenter un parcours en profondeur de notre arbre). Pour ce faire, on va transformer nos règles sémantiques comme cela : PRODUCTION RÈGLE SÉMANTIQUE EXPR EXPR 1 + EXPR 2 EXPR.nœud creernœud( +,EXPR 1.nœud,EXPR 2.nœud) EXPR variable = EXPR EXPR.nœud creernœud( AFF,variable.nœud,EXPR.nœud) De cette manière on passe d un calcul découlant immédiatement de la traduction dirigée par la syntaxe, à la construction de l arbre (avec une définition S-attribuée) de notre phrase qui est suivi par le calcul lors de l analyse descendante de notre arbre. En reprenant l exemple précédent, au cours de notre parcours de l arbre on va tomber sur l arbre abstrait suivant : tant-que-faire expression-booléenne file-instructions Ayant maintenant une analyse descendante, il devient aisé d exécuter les instructions LIGNE tant que COND est vrai. Ainsi contrairement à ce que l on a étudié en TP, l exécution d instructions va s effectuer en deux temps : le premier temps va permettre de créer des espaces mémoires pour stocker des valeurs (temporaires) et de définir l emplacement des variables de l application, tout en créant un arbre abstrait de chaque instruction qui est stockée dans un arbre. le second temps est l exécution de chaque instruction de l arbre. Définissons formellement les arbres abstraits : Arbres abstraits Définition 1. Un arbre abstrait est une forme condensée d arbre syntaxique, adaptée à la représentation des constructions d un langage. La production I si B alors I 1 sinon I 2 va alors apparaître dans un arbre abstrait sous la forme : 11
12 si-alors-sinon B I 1 I 2 Dans un arbre abstrait, les opérateurs et les mots clés n apparaissent pas comme des feuilles, mais sont plutôt associés au nœud intérieur qui serait le père de ces feuilles dans l arbre syntaxique. La construction d un arbre abstrait pour une expression est semblable à la traduction de l expression en forme postfixée. Chaque nœud d un arbre abstrait peut être implanté sous la forme d une structure à plusieurs champs. Dans le nœud correspondant à un opérateur, les nœuds correspondent aux opérandes. L opérateur est souvent dénommé l étiquette du nœud. On utilise les fonctions créernœud et créerfeuille pour des expressions avec des opérateurs binaires (chaque fonction retourne un pointeur vers le nouveau nœud créé) CréerNœud(op, gauche, droit) crée un nœud opérateur d étiquette op avec deux champs contenant des pointeurs vers gauche et droit. CréerFeuille(id, entrée) crée un nœud identificateur d étiquette id avec un champ contenant entrée, un pointeur vers l entrée de l identificateur dans la table des symboles. CréerFeuille(nb, val) crée un nœud nombre d étiquette nb avec un champ contenant val, la valeur du nombre. Pour construire les arbres abstraits, on a construit une définition S-attribuée dirigée par la syntaxe sur la grammaire définie précédemment tout comme présenté dans l exemple précédent. Unefoislesarbresabstraitscréésetmisdanslafiled exécution,ilfautpouvoir évaluer les expressions, pour cela on définit des fonctions récursives similaires aux évaluateurs récursifs utilisés dans les définitions S/L-attribuées lors de l analyse syntaxique Évaluateur récursifs Dans cette partie, on définit les fonctions récursives pour évaluer les arbres abstraits définis dans l arbre. 12
13 tant que estfilevide faire traite nœud(sommet()); dépiler(); fin Algorithme 1 : Algorithme d évaluation de la pile si est feuille(droit) alors tmp 1 traite feuille(droit) sinon tmp 1 traite nœud(droit) fin si est feuille(gauche) alors tmp 2 traite feuille(gauche) sinon tmp 2 traite nœud(gauche) fin retourner op(tmp 1,tmp 2 ) Algorithme 2 : Algorithme de traitement d un nœud si identif icateur alors retourner id.val sinon retourner nb.vallex fin Algorithme 3 : Algorithme de traitement d une feuille 6 Améliorations envisagées Notre projet nous a amené à stocker l intégralité de l arbre créé lors de l analyse syntaxique. Une des améliorations qui serait à envisager pour améliorer celui-ci serait d activer un drapeau lorsque l on voit des lexèmes tel que si, tant que,... pour ne stocker que les sous-arbres jusqu à réduction dans l analyse ce qui exécuterait alors les instructions. En effet, l exécution d un gros fichier risque de prendre beaucoup de place en mémoire. D autre part, notre gestion des accès en mémoires est très brutes sans optimisations de temps ni d espaces. Pour remédier à cela, une implantation d un automate-arbre(trie) permettrait un accès rapide aux variablex stocké en mémoire. (inspiré des structures de recherche d Aho-Corasick). 13
14 7 Conclusion Notre super-calculette, nous a permis de créer des structures permettant de stocker des arbres et surtout nous a appris à utiliser les analyseurs lexical et syntaxique que sont FLEX et YACC. 14
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étailLES 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étailTravaux 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étailLes 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étailArbres 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étailTP 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étailARBRES BINAIRES DE RECHERCHE
ARBRES BINAIRES DE RECHERCHE Table de symboles Recherche : opération fondamentale données : éléments avec clés Type abstrait d une table de symboles (symbol table) ou dictionnaire Objets : ensembles d
Plus en détailALGORITHMIQUE 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étailCH.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
Plus en détailInitiation à 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étailCours 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étailAlgorithme. Table des matières
1 Algorithme Table des matières 1 Codage 2 1.1 Système binaire.............................. 2 1.2 La numérotation de position en base décimale............ 2 1.3 La numérotation de position en base binaire..............
Plus en détailAlgorithmique 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étailArithmétique binaire. Chapitre. 5.1 Notions. 5.1.1 Bit. 5.1.2 Mot
Chapitre 5 Arithmétique binaire L es codes sont manipulés au quotidien sans qu on s en rende compte, et leur compréhension est quasi instinctive. Le seul fait de lire fait appel au codage alphabétique,
Plus en détailchapitre 4 Nombres de Catalan
chapitre 4 Nombres de Catalan I Dénitions Dénition 1 La suite de Catalan (C n ) n est la suite dénie par C 0 = 1 et, pour tout n N, C n+1 = C k C n k. Exemple 2 On trouve rapidement C 0 = 1, C 1 = 1, C
Plus en détailInformatique 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étailArchitecture 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étailMesurer les performances (CPU) sous Linux
Titre : Mesurer les performances (CPU) sous Linux Date : 22/07/2015 Page : 1/7 Mesurer les performances (CPU) sous Linux Résumé : Il existe des outils permettant de tracer les temps CPU utilisés (profiling).
Plus en détailTraduction 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étailCours 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étailGrandes 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étailMaple: premiers calculs et premières applications
TP Maple: premiers calculs et premières applications Maple: un logiciel de calcul formel Le logiciel Maple est un système de calcul formel. Alors que la plupart des logiciels de mathématiques utilisent
Plus en détailJade. Projet Intelligence Artificielle «Devine à quoi je pense»
Jade Projet Intelligence Artificielle «Devine à quoi je pense» Réalisé par Djénéba Djikiné, Alexandre Bernard et Julien Lafont EPSI CSII2-2011 TABLE DES MATIÈRES 1. Analyse du besoin a. Cahier des charges
Plus en détailLicence 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É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étailINITIATION 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étailCours 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étailAlgorithmique, Structures de données et langage C
UNIVERSITE PAUL SABATIER TOULOUSE III Algorithmique, Structures de données et langage C L3 IUP AISEM/ICM Janvier 2005 J.M. ENJALBERT Chapitre 1 Rappels et compléments de C 1.1 Structures Une structure
Plus en détailInitiation. àl algorithmique et à la programmation. en C
Initiation àl algorithmique et à la programmation en C Initiation àl algorithmique et à la programmation en C Cours avec 129 exercices corrigés Illustration de couverture : alwyncooper - istock.com Dunod,
Plus en détailL exclusion mutuelle distribuée
L exclusion mutuelle distribuée L algorithme de L Amport L algorithme est basé sur 2 concepts : L estampillage des messages La distribution d une file d attente sur l ensemble des sites du système distribué
Plus en détailCours 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étailLes arbres binaires de recherche
Institut Galilée Année 2010-2011 Algorithmique et arbres L2 TD 6 Les arbres binaires de recherche Type en C des arbres binaires (également utilisé pour les ABR) : typedef struct noeud_s { struct noeud_s
Plus en détailCours 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étailManuel 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étailExcel avancé. Frédéric Gava (MCF) gava@univ-paris12.fr
Excel avancé Frédéric Gava (MCF) gava@univ-paris12.fr LACL, bâtiment P2 du CMC, bureau 221 Université de Paris XII Val-de-Marne 61 avenue du Général de Gaulle 94010 Créteil cedex Rappels et compléments
Plus en détailThé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étailPremiers Pas avec OneNote 2013
Premiers Pas avec OneNote 2 Présentation de OneNote 3 Ouverture du logiciel OneNote 4 Sous Windows 8 4 Sous Windows 7 4 Création de l espace de travail OneNote 5 Introduction 5 Présentation des différentes
Plus en détailGestion 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,
Plus en détailFormula 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étailCours 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étailCours 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.............................
Plus en détailDU BINAIRE AU MICROPROCESSEUR - D ANGELIS CIRCUITS CONFIGURABLES NOTION DE PROGRAMMATION
145 NOTION DE PROGRAMMATION 1/ Complétons notre microprocesseur Nous avons, dans les leçons précédentes décrit un microprocesseur théorique, cependant il s inspire du 6800, premier microprocesseur conçu
Plus en détailProjet L1, S2, 2015: Simulation de fourmis, Soutenance la semaine du 4 mai.
Projet L1, S2, 2015: Simulation de fourmis, Soutenance la semaine du 4 mai. 1 Introduction On considère une grille de 20 lignes 20 colonnes. Une case de la grille peut être vide, ou contenir une et une
Plus en détailThé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étailINTRODUCTION AUX METHODES D INGENIERIE DES DONNEES DIRIGEE PAR LES MODELES
INTRODUCTION AUX METHODES D INGENIERIE DES DONNEES DIRIGEE PAR LES MODELES Les contenus de ce document sont la propriété exclusive de la société REVER. Ils ne sont transmis qu à titre d information et
Plus en détailV- 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étail1 de 46. Algorithmique. Trouver et Trier. Florent Hivert. Mél : Florent.Hivert@lri.fr Page personnelle : http://www.lri.fr/ hivert
1 de 46 Algorithmique Trouver et Trier Florent Hivert Mél : Florent.Hivert@lri.fr Page personnelle : http://www.lri.fr/ hivert 2 de 46 Algorithmes et structures de données La plupart des bons algorithmes
Plus en détailUEO11 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
Plus en détailProgrammation 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étailDé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étailPlan 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étailCompilation (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
Plus en détailConception de circuits numériques et architecture des ordinateurs
Conception de circuits numériques et architecture des ordinateurs Frédéric Pétrot Année universitaire 2014-2015 Structure du cours C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 Codage des nombres en base 2, logique
Plus en détailReprésentation des Nombres
Chapitre 5 Représentation des Nombres 5. Representation des entiers 5.. Principe des représentations en base b Base L entier écrit 344 correspond a 3 mille + 4 cent + dix + 4. Plus généralement a n a n...
Plus en détailCompilation. 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étailINSERER 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étailBases 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étailKWISATZ_TUTO_module_magento novembre 2012 KWISATZ MODULE MAGENTO
_TUTO_module_magento Table des matières -1) - :...2-1.1) Introduction :...2-1.2) Description :...3-1.2.1) Schéma :...3-1.3) Mise en place :...4-1.3.1) MAGENTO :...4-1.3.1.1) Les Web Services :...4-1.3.1.2)
Plus en détailMIS 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
Plus en détailIN 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étailINF601 : Algorithme et Structure de données
Cours 2 : TDA Arbre Binaire B. Jacob IC2/LIUM 27 février 2010 Plan 1 Introuction 2 Primitives u TDA Arbin 3 Réalisations u TDA Arbin par cellules chaînées par cellules contiguës par curseurs (faux pointeurs)
Plus en détailTP 2 Réseaux. Adresses IP, routage et sous-réseaux
TP 2 Réseaux Adresses IP, routage et sous-réseaux C. Pain-Barre INFO - IUT Aix-en-Provence version du 24/2/2 Adressage IP. Limites du nombre d adresses IP.. Adresses de réseaux valides Les adresses IP
Plus en détailPrénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004
Questionnaire d'examen final INF1101 Sigle du cours Nom : Signature : Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004 Professeur(s)
Plus en détailLES 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étailLes algorithmes de base du graphisme
Les algorithmes de base du graphisme Table des matières 1 Traçage 2 1.1 Segments de droites......................... 2 1.1.1 Algorithmes simples.................... 3 1.1.2 Algorithmes de Bresenham (1965).............
Plus en détailTP1 - Prise en main de l environnement Unix.
Mise à niveau UNIX Licence Bio-informatique TP1 - Prise en main de l environnement Unix. Les sujets de TP sont disponibles à l adresse http://www.pps.jussieu.fr/~tasson/enseignement/bioinfo/ Les documents
Plus en détailFormats d images. 1 Introduction
Formats d images 1 Introduction Lorsque nous utilisons un ordinateur ou un smartphone l écran constitue un élément principal de l interaction avec la machine. Les images sont donc au cœur de l utilisation
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 Pierre Boudes 28 septembre 2011 This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike
Plus en détailRappel. 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étailUE 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étailLa fonction exponentielle
DERNIÈRE IMPRESSION LE 2 novembre 204 à :07 La fonction exponentielle Table des matières La fonction exponentielle 2. Définition et théorèmes.......................... 2.2 Approche graphique de la fonction
Plus en détailCours de Master Recherche
Cours de Master Recherche Spécialité CODE : Résolution de problèmes combinatoires Christine Solnon LIRIS, UMR 5205 CNRS / Université Lyon 1 2007 Rappel du plan du cours 16 heures de cours 1 - Introduction
Plus en détailCours 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
Plus en détailMICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C
Haute Ecole d Ingénierie et de Gestion Du Canton du Vaud MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C Programmation en mode simulation 1. DOCUMENTS DE RÉFÉRENCE...
Plus en détailLa mémoire. Un ordinateur. L'octet. Le bit
Introduction à l informatique et à la programmation Un ordinateur Un ordinateur est une machine à calculer composée de : un processeur (ou unité centrale) qui effectue les calculs une mémoire qui conserve
Plus en détailDéfinitions. Numéro à préciser. (Durée : )
Numéro à préciser (Durée : ) On étudie dans ce problème l ordre lexicographique pour les mots sur un alphabet fini et plusieurs constructions des cycles de De Bruijn. Les trois parties sont largement indépendantes.
Plus en détailUtilisation des tableaux sémantiques dans les logiques de description
Utilisation des tableaux sémantiques dans les logiques de description IFT6281 Web Sémantique Jacques Bergeron Département d informatique et de recherche opérationnelle Université de Montréal bergerja@iro.umontreal.ca
Plus en détaillength : 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
Plus en détailPython - introduction à la programmation et calcul scientifique
Université de Strasbourg Environnements Informatique Python - introduction à la programmation et calcul scientifique Feuille de TP 1 Avant de commencer Le but de ce TP est de vous montrer les bases de
Plus en détailCours d Informatique
Cours d Informatique 1ère année SM/SMI 2007/2008, Info 2 Département de Mathématiques et d Informatique, Université Mohammed V elbenani@hotmail.com sayah@fsr.ac.ma 2007/2008 Info2, 1ère année SM/SMI 1
Plus en détailAlgorithmique et Programmation
École Supérieure d Ingénieurs de Poitiers Gea Algorithmique et Programmation Laurent Signac ii Algorithmique et programmation Gea Table des matières Avant Propos v Structures de données Notion de pointeur..............................................
Plus en détailCours Informatique 1. Monsieur SADOUNI Salheddine
Cours Informatique 1 Chapitre 2 les Systèmes Informatique Monsieur SADOUNI Salheddine Un Système Informatique lesystème Informatique est composé de deux parties : -le Matériel : constitué de l unité centrale
Plus en détailMathématiques financières
Mathématiques financières Table des matières 1 Intérêt simple 1 1.1 Exercices........................................ 1 2 Intérêt composé 2 2.1 Taux nominal, taux périodique, taux réel.......................
Plus en détailConception. Génie Logiciel. Renaud Marlet. LaBRI / INRIA http://www.labri.fr/~marlet. (d'après A.-M. Hugues) màj 17/04/2007
1 Génie Logiciel (d'après A.-M. Hugues) Conception Renaud Marlet LaBRI / INRIA http://www.labri.fr/~marlet màj 17/04/2007 2 Position dans le cycle de vie Contexte : étant donnée une spécification (ce que
Plus en détail1. 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étailChapitre 1 I:\ Soyez courageux!
Chapitre 1 I:\ Soyez courageux! Pour ne rien vous cacher, le langage d'assembleur (souvent désigné sous le terme "Assembleur", bien que ce soit un abus de langage, puisque "Assembleur" désigne le logiciel
Plus en détailEbauche Rapport finale
Ebauche Rapport finale Sommaire : 1 - Introduction au C.D.N. 2 - Définition de la problématique 3 - Etat de l'art : Présentatio de 3 Topologies streaming p2p 1) INTRODUCTION au C.D.N. La croissance rapide
Plus en détailKWISATZ MODULE PRESTASHOP
Table des matières -1) KWISATZ - :...2-1.1) Introduction :...2-1.2) Description :...3-1.2.1) Schéma :...3-1.3) Mise en place :...4-1.3.1) PRESTASHOP :...4-1.3.1.1) Les Web Services :...4-1.3.2) KWISATZ
Plus en détailSuivant 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étailModèle de changement d organisation. Leanpizza.net présente. Petit Guide Rapide du jeu de cartes Modèle de Changement d Organisation
Guide rapide Leanpizza.net présente Petit Guide Rapide du jeu de cartes Modèle de Changement d Organisation v1.0 Rédacteur : Olivier Lafontan Traduction : Yannick Quenec hdu Date : 29 juin 2010 - Guide
Plus en détailExcel 2007 Niveau 3 Page 1 www.admexcel.com
Excel 2007 Niveau 3 Page 1 TABLE DES MATIERES UTILISATION DE LISTES DE DONNEES... 4 REMARQUES PREALABLES SUR LES LISTES DE DONNEES... 4 METTRE EN FORME LE TABLEAU... 6 METTRE LA LISTE A JOUR... 7 a/ Directement
Plus en détail1/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étailGé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étailSTAGE 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étailMachines 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
Plus en détailEncryptions, compression et partitionnement des données
Encryptions, compression et partitionnement des données Version 1.0 Grégory CASANOVA 2 Compression, encryption et partitionnement des données Sommaire 1 Introduction... 3 2 Encryption transparente des
Plus en détailTP 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étailInfo0101 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étailTP 4 de familiarisation avec Unix
TP 4 de familiarisation avec Unix Réseau Filtres (suite) Variables Scripts Vincent Berry - vberry@lirmm.fr IMPORTANT : la prise de notes est une pratique très importante et pourtant négligée, elle est
Plus en détail