Projet de Programmation Fonctionnelle

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

Download "Projet de Programmation Fonctionnelle"

Transcription

1 Projet de Programmation Fonctionnelle L objectif de ce projet est de concevoir, en Objective Caml, un évaluateur pour le langage mini-ml (un sous ensemble du langage Objective Caml). Votre programme devra prendre en paramètre un fichier source contenant des définitions, évaluer ces définitions et afficher le résultat de ces évaluations lorsque cela est possible. Les définitions n étant pas nécessairement bien typées, l évaluation peut échouer et votre programme devra, le cas échéant, produire un message d erreur adapté. Le code réalisant la lecture des définitions depuis le fichier source et leur conversion en expressions Objective Caml sur lesquelles réalisera l évaluation est donné. 1 Le langage mini-ml Le langage mini-ml est un sous ensemble du langage Objective Caml. En particulier, un programme mini-ml étant également un programme Objective Caml, il est possible de tester votre évaluateur en comparant ses résultats à ceux de l évaluateur de ce dernier. Un programme mini-ml est une suite de définitions non récursives et récursives terminant par le symbole ;; (voir exemple ci-dessous). let x = 3;; let rec fact = fun n -> begin match n with 0 -> 1 _ -> n * fact (n-1) end;; let resultat = fact x;; N.B : Comme en Objective Caml, les variables en min-iml sont des chaînes de caractères composées de symboles alphanumériques commençant par une minuscule ou le symbole. Programmes : Plus formellement, les structures des définitions (notées def inition) et des programmes (notés program) sont données par : definition ::= let x = e; ; let rec f = e; ; program ::= def inition def inition program (1) où x et f sont des variables et e est une expression. 1

2 Expressions : La structure des expressions du langage mini-ml (notées e) est données dans la figure 1. Contrairement au langage Objective Caml, le langage mini-ml ne permet pas la définition de nouveaux types. Les types de mini-ml sont : les entiers les booléens les listes les tuples les types fonctionnels int bool τ list où τ est un type τ 1... τ n où τ 1,...,τ n sont des types τ 1 τ 2 où τ 1 et τ 2 sont des types Le langage mini-ml permet : les définitions de fonctions et les liaisons locales (récursives ou non) l application d opérateurs unaires et binaires le filtrage de motifs et le test sur les booléens La définition des expressions s appuie sur les définitions auxiliaires suivantes les constantes (notées c) qui sont les entiers, les booléens et la liste vide les motifs (notés p) les opérateurs unaires et binaires (notés unop et binop) les listes de choix (notées with list) qui permettent de construire les expressions de filtrage. 2 Représentation des programmes en Objective Caml La définition des programmes ((1) et figure 1) de la section précédente concerne les programmes mini-ml tels qu ils apparaissent dans un fichier source. La figure 3 (en annexe) présente la représentation en Objective Caml de ces définitions. Les fonctions C var, C cst, C pat et C exp associent respectivement à une variable, une constante, un motif ou une expression de mini-ml sa représentation en Objective Caml. Le type variable définit les variables comme étant des chaînes de caractères. Une variable x du langage source est représentée par la chaîne de caractères "x" (autrement dit, C var (x) = x ). le type somme constant regroupe les constantes de mini-ml (notées c), chaque type de constante ayant son propre constructeur. Un entier n, un booléen b et la liste vide du langage mini-ml sont respectivement représentés de la manière suivante : C cst (n)=cint n C cst (b)=cbool b C cst ([])=CEmptyList où n (respectivement b) est l entier n (respectivement le booléen b) du langage Objective Caml. Le type pattern représente les motifs de mini-ml dont la traduction est données ci 2

3 c ::= n où n est un entier b où b est un booléen [] liste vide p ::= motif anonyme x où x est une variable c où c est une constante (p,..., p) tuples p :: p listes non vide unop {, not} binop {+,,, /, mod, &&,, <=, >=, <, >, =, <>} e ::= x où x est une variable c où c est une constante (e,..., e) tuples e :: e listes non vide unop e application d un opérateur unaire e binop e application d un opérateur binaire fun x e où x est une variable e e application let x = e in e liaison let rec x = e in e liaison récursive begin match e with with list end filtrage if e then e else e conditionnelle (e) expression parenthésée with list ::= p e (p e with list) Figure 1 Définition du langage mini-ml 3

4 -dessous : C pat ( ) = PWildcard C pat (x) = PVariable C var (x) C pat (c) = PConstant C cst (c) C pat ((p 1,..., p n )) = PTuple [C pat (p 1 );... ; C pat (p n )] C pat (p 1 :: p 2 ) = PConsList (C pat (p 1 ), C pat (p 2 )) A noter ici que les éléments d un tuple sont représentés par une liste ce qui permet de n avoir qu un constructeur pour les paires, les triplets, etc,... A titre d exemple, la traduction du motif mini-ml (1, true, ) est donnée par : C pat ((1, true, )) = PTuple [PConstant(CInt 1); PConstant(CBool true); PWildcard] Les types unop et binop représentent les opérateurs unaires et binaires de mini-ml. La correspondance entre un opérateur et le constructeur utilisé pour le représenter est donnée par les tableaux suivants : opérateurs unaire : Minus not : Not opérateurs binaire + : Add : Sub : Mult / : Div mod : Mod && : And : Or <= : Le >= : Ge < : Lt > : Gt = : Eq <> : NEq Le type expression représente les expressions (notées e) du langage mini-ml. La traduction des expressions de mini-ml en Objective Caml est données ci-dessous, où C unop et C binop sont les constructeurs respectivement associés aux opérateurs unop et binop. A titre d exemple, vous trouverez en Annexe trois représentations d une même expression (mini-ml, Objective Caml et arbre de syntaxe) montrant la relation entre les constructeurs et les noeuds des arbres de syntaxe. De même les parenthéses des expressions parenthésées ont été supprimées. N.B : La gestion de la priorité des opérateurs est effectuée au cours de la génération de la représentation du programme source en Objective Caml. Il n y a donc pas à s en occuper ici (la représentation des expressions correspond aux arbres de syntaxes vus en cours). 4

5 C exp (x) = Variable C var (x) C cst (c) = Constant C cst (c) C exp ((e 1,..., e n )) = Tuple[C exp (e 1 );... ; C exp (e n )] C exp (e 1 :: e 2 ) = ConsList(C exp (e 1 ), C exp (e 2 )) C exp (unop e) = Unop(C unop, C exp (e)) C exp (e 1 binop e 2 ) = Binop(C binop, C exp (e 1 ), C exp (e 2 )) C exp (fun x e) = Fun(C var (x), C exp (e)) C exp (e 1 e 2 ) = Apply(C exp (e 1 ), C exp (e 2 )) C exp (let x = e 0 in e) = LetIn(C var (x), C exp (e 0 ), C exp (e)) C exp (let rec x = e 0 in e) = LetRecIn(C var (x), C exp (e 0 ), C exp (e)) C exp (if e 0 then e 1 else e 2 ) = IfThenElse(C exp (e 0 ), C exp (e 1 ), C exp (e 2 )) C exp (begin match e with p 1 e 1... p n e n end) = Match(C exp (e), [(C pat (p 1 ), C exp (e 1 ));... ; (C pat (p n ), C exp (e n ))]) Finalement, les fonctions C definition et C program qui transforment respectivement une définition et un programme sont respectivement données par C definition (let x = e) = Simple(C var (x), C exp (e 0 )) C definition (let rec f = e 0 e) = Recursive(C var (f), C exp (e 0 )) C program (definition 1... definition n ) = [C definition (definition 1 );... ; C definition (definition n )] 3 Sémantique des programmes mini-ml La sémantique de mini-ml décrit l évaluation des définitions d un programme. Cette description est décomposée en deux étapes l évaluation d une expression en une valeur. l évaluation des définitions successives avec modification de l environnement global. La définition de la sémantique (section 3.2) repose sur les définitions des valeurs et des environnements (section 3.1.1) et sur l opération d unification entre filtres et valeurs (section 3.1.2). 3.1 Valeurs et environnements Valeurs Les valeurs du langage mini-ml (notées v) sont les constantes, les tuples de valeurs, les listes de valeurs et les clôtures (récursives ou non). On distingue deux types de clôtures, récursives et non récursives : [fun x e, E] est la clôture contenant la fonction fun x e et l environnement E 5

6 [fun x e, E] f R est la clôture récursive contenant la fonction fun x e et l environnement E et f est la variable associée à cette fonction dans la liaison récursive ayant généré cette clôture. Un environnement (noté E) est une suite, éventuellement vide, de paires (x, v) où x est une variable et v la valeur associées à x dans cet environnement. On note également (x 1, v 1 ),..., (x n, v n ) l environnement (x 1, v 1 ) ::... :: (x n, v n ) ::. Si E 1 et E 2 sont des environnements, on note E 1 E 2 la concaténation de ces deux environnment. v ::= c (v,..., v) v :: v [fun x e, E] [fun x e, E] f R E ::= environnement vide (x, v) :: E environnement augmenté où x et f sont des variables Unification Le filtrage suppose de déterminer si un motif p et une valeur v correspondent et, le cas échéant, de calculer un nouvel environnement correspondant à l unification de p et v. Considérons l exemple suivant match (1, 2) with (x, y) x + y + z, (z, 3) Pour évaluer la sous-expression x + y + z, il est nécéssaire de générer un nouvel environnement associant x à la valeur 1 et y à la valeur 2, dans lequel cette sous expression peut être évaluée : x + y + z, (x, 1), (y, 2), (z, 3) Le calcul des liaisons à ajouter à l environnement courant est effectué par la fonction filter donnée ci-dessous. filter(, v) = filter(x, v) = (x, v) filter(c 1, c 2 ) = si c 1 = c 2 filter(p 1 :: p 2, v 1 :: v 2 ) = filter(p 1, v 1 ) filter(p 2, v 2 ) filter((p 1,..., p n ), (v 1,..., v n )) = filter(p 1, v 1 )... filter(p n, v n ) La fonction filter ainsi définie est une fonction partielle, i.e. elle n est pas définie pour tous les cas. Cela correspond au fait qu un filtrage peut échouer comme dans l expression match 1 with (x, y) x + y qui correspond à filter((x, y), 1) qui n est pas défini. De plus, cette fonction n a de sens que dans le cas de motifs linéaires (chaque variable apparaît au plus une fois). 6

7 3.2 Relation d évaluation Evaluation des expressions L évaluation des expressions repose sur une relation entre une expression e, un environnement E et une valeur v. Cette relation est notée e, E v et se lit : Dans l environnement E, l expression e s évalue en la valeur v. Elle est définie dans la figure 2 à partir de règles de la forme Conditions e, E v où les prémisses (Conditions) sont les conditions nécessaires pour que la conclusion (e, E v) soit valide. Une description intuitive de ces règles est données ci-dessous : L évaluation d une constante est immédiate puisque c est une valeur (règle (constant)) L évaluation d une variable donne la valeur associée à cette variable (si elle existe) dans l environnement. Les règles (variable hd) et (variable cons) parcourent l environnement à la recherche de la variable. L évaluation d un tuple consiste à évaluer toutes les composantes de ce tuple (règle (tuple)) L évaluation de l application d un opérateur unaire unop e consiste à évaluer e puis à appliquer l opérateur à la valeur obtenue. La sémantique d un opérateur unaire, notée [ ] unop correspond à la sémantique de l opérateur en Objective Caml. Par exemple, [ true ] not = false. L évaluation de l application d un opérateur binaire e 1 binop e 2 consiste à évaluer e 1 et e 2 puis à appliquer l opérateur aux valeurs obtenues. La sémantique d un opérateur binaire, notée [ ] binop correspond à la sémantique de l opérateur en Objective Caml. Par exemple [ (3, 2) ] + = 5. L évaluation d une fonction donne une clotûre contenant cette fonction et une copie de l environnement courant (règle (fun)) L évaluation d une application e 1 e 2 dans un environnement E donne lieu à deux cas 1. si e 1 s évalue en une clotûre simple [fun x e, E ], on évalue le corps de la fonction e dans l environnement E augmenté de la liaison (x, v 2 ) où v 2 est le résultat de l évaluation de e 2 dans E (règle (app)) 2. si e 1 s évalue en une clotûre récursive [fun x e, E ] f R, on évalue le corps de la fonction e dans l environnement E augmenté des liaisons (x, v 2 ) où v 2 est le résultat de l évaluation de e 2 dans E et (f, [fun x e, E ] f R ), (règle (app rec)) L évaluation d une liaison locale let x = e 0 in e dans un environnement E correspond à l évaluation de e dans l environnement E augmentée de la liaison (x, v 0 ) où v 0 est le résultat de l évaluation de e 0 dans l environnment E (règle (let in)). L évaluation d une liaison locale let rec f = e 0 in e dans un environnement E correspond à l évaluation de e dans l environnement E augmentée de la liaison (f, [fun x e, E ] f R ) si [fun x e, E ] est le résultat de l évaluation de e 0 dans E (règle (let rec in)). 7

8 c, E c (constant) x, (x, v) :: E v x y x, E v x, (y, v) :: E v (variable hd), (variable co e i, E v i, i = 1,..., n (e 1,..., e n ), E (v 1,..., v n ) (tuple) e 1, E v 1 e 2, E v 2 e 1 :: e 2, E v 1 :: v 2 e, E v [ v ] unop = v unop e, E v e 1, E v 1 e 2, E v 2 [ (v 1, v 2 ) ] binop = v e 1 binop e 2, E v (cons) (unop) (binop) fun x e, E [fun x e, E] e 2, E v 2 e 1, E [fun x e, E ] e, (x, v 2 ) :: E v e 1 e 2, E v (fun) (app) e 2, E v 2 e 1, E [fun x e, E ] f R e, (x, v 2 ) :: (f, [fun x e, E ] f R ) :: E v e 1 e 2, E v (app rec) e 0, E v 0 e, (x, v 0 ) :: E v let x = e 0 in e, E v e 0, E [fun x e, E ] e, (f, [fun x e, E ] f R ) :: E v let rec f = e 0 in e, E v e 0, E v 0 filter(p, v 0 ) = E e, E E v begin match e 0 with p e with list end, E v e 0, E v 0 filter(p, v 0 ) non défini begin match e with with list end, E v begin match e 0 with p e with list end, E v (let in) (let rec in) (match success) (match fail) e 0, E true e 1, E v if e 0 then e 1 else e 2, E v e 0, E false e 2, E v if e 0 then e 1 else e 2, E v (if success) (if fail) Figure 2 Evaluation des expressions 8

9 L évaluation d un filtrage match e 0 with p e withlist dans un environnement E donne lieu à deux cas, où v 0 est le résultat de l évaluation de e 0 dans l environnement E 1. si filter(p, v 0 ) donne l environnement E, on évalue e dans l environnement E E (règle (match success)) 2. sinon, on passe au cas suivant (règle (match fail)) L évaluation d une expression if e 0 then e 1 else e v correspond à l évaluation de e 1 où e 2 selon le résultat de l évaluation de e 0 (règles (if success) et (if fail)) Evaluation d un programme L évaluation d un programme consiste en l évaluation de toutes les définitions de ce programme. Après évaluation d une définition, la liaison associée doit être mise dans l environnement global afin de pouvoir être utilisée par les définitions suivantes. L évaluation d une définition def inition dans un environnment E donne donc un nouvel environnement E (E augmenté de la nouvelle définition), par opposition à l évaluation d une expression qui donne une valeur. La sémantique de l évaluation des programmes est donnée par des règles de la forme Conditions program, E E données ci-dessous. Les deux premières règles concernent l évaluation d une définition (non récursives et récursives) d une définition seule. Les deux règles suivantes sont similaires mais pour une définition suivie d autres définitions. e, E v let x = e; ;, E (x, v) :: E e, E [fun x e, E ] let rec f = e; ;, E (f, [fun x e, E ] f R ) :: E e, E v program, (x, v) :: E E let x = e; ; program, E E (eval stop) (eval stop rec) (eval continue) e, E [fun x e, E ] program, (f, [fun x e, E ] f R ) :: E E let rec x = e; ; program, E E (eval rec continue) 4 Programmation de l évaluateur 1. Définir le type value des valeurs de mini-ml en se basant sur la définition de la section

10 2. Définir le type environment des environnements d évaluation 3. Ecrire la fonction filter de type pattern value environment en se basant sur la définition de la section Ecrire la fonction eval unop de type unop value value telle que eval unop(unop, v) = [ v ] unop quelque soit unop. 5. Ecrire la fonction eval binop de type binop value value value telle que eval unop(unop, v 1, v 2 ) = [ (v 1, v 2 ) ] unop quelque soit unop. 6. Ecrire la fonction eval expression de type expression environment value en se basant sur les règles de la section Ecrire la fonction eval program de type program environment en se basant sur les règles de la section Après chaque évaluation d une définition, le résultat de cette définition devra être affiché (sans attendre l évaluation de tout le programme). Remarques importantes L évaluation des expressions et des programmes peut parfois échouer, ce qui correspond aux cas ou aucune des règles ne s applique. Dans ce cas, votre programme devra s interrompre en affichant un message d erreur expliquant précisément la raison de l échec. La fonction f ilter devra vérifier que le motif donné est linéaire et, dans le cas contraire, générer une erreur. La définition des fonctions ci dessus peut nécessiter l introduction de fonctions auxiliaires, de types de données et d exceptions que vous devez ajouter. 5 Support et remise du projet Vous recevrez une archive projet pf.tar.gz contenant un fichier README contenant un certain nombre d informations. un fichier Makefile permettant de compiler le projet. un fichier syntax.ml contenant la définition de la représentation d un programme en Objective Caml. un répertoire parser contenant différents fichiers permettant de lire un fichier source et de construire sa représentation en Objective Caml. un fichier eval.ml qui est le fichier dans lequel votre programme doit être écrit. Le projet est à réaliser par équipes de deux ou trois étudiants. Vous devrez rendre une archive au format tar.gz contenant uniquement (en particulier, l archive ne devra pas contenir les programmes générés) : Les fichiers qui vous ont été donnés (Readme, Makefile, syntax.ml, eval.ml et le répertoire parser) Un fichier test.ml contenant une suite de définitions permettant de tester votre programme (vous pourrez vous inspirer des feuilles de TD et TP pour construire cette liste) 10

11 Un fichier explication contenant 1. Les noms et prénoms des étudiants ayant participé à ce projet 2. Une description des choix que vous avez réalisé pour développer votre projet (modélisation, calcul,...) 3. Pour chaque cas ou le comportement de l évaluation n est pas défini, une explication de la raison pour laquelle l évaluation pose problème et du choix du message d erreur affiché par votre programme. 4. Une justification de la pertinance des tests contenus dans le fichier test.ml Le nom de l archive générée sera de la forme nom 1 nom 2 nom 3.tar.gz où nom 1, nom 2, nom 3 sont les trois premières lettres des noms de chaque étudiant ayant participé au projet. Le fichier rendu devra se conformer très précisément à la spécification donnée cidessus faute de quoi il pourra être refusé. 11

12 A Représentation des programmes mini-ml type variable = string type constant = CInt of int CBool of bool CEmptyList type pattern = PWildcard PVariable of variable PConstant of constant PTuple of pattern list PConsList of pattern * pattern type unop = Minus Not type binop = Add Sub Mult Div Mod And Or Lt Gt Le Ge Eq NEq type expression = Variable of variable Constant of constant Tuple of expression list ConsList of expression * expression Unop of unop * expression Binop of binop * expression * expression Function of variable * expression Apply of expression * expression LetIn of variable * expression * expression LetRecIn of variable * expression * expression Match of expression * with_list IfThenElse of expression * expression * expression and with_list = (pattern * expression) list type definition = Simple of string * expression Recursive of string * expression type program = definition list Figure 3 Représentation des programmes mini-ml en Objective Caml 12

13 B Exemple d arbres de syntaxe let rec fact = fun n -> begin match n with 0 -> 1 _ -> n * fact (n-1) end;; LetRecIn( fact, Function( n, Match(Variable n, [ (PConstant (CInt n), Constant(CInt 1)); (PWildcard, Binop(Mult, Variable n, Apply(Variable fact, Binop(Sub, Variable n, Constant(CInt1))))) ]))) [1] let. =. [2] fact [4] fun. ->. [3] n [5] begin match. with. end [6] n [20]. ->. [16]. ->. [17] 0 [18] 1 [7] _ [8] * [9] n [14] [10] fact [11] - [12] n [13] 1 13

Arbres binaires et codage de Huffman

Arbres binaires et codage de Huffman MP Option Informatique Premier TP Caml Jeudi 8 octobre 2009 Arbres baires et codage de Huffman 1 Arbres baires Soit E un ensemble non vide. On défit la notion d arbre baire étiqueté (aux feuilles) par

Plus en détail

L2 - Algorithmique et structures de données (Année 2010/2011) Examen (2 heures)

L2 - Algorithmique et structures de données (Année 2010/2011) Examen (2 heures) L2 - lgorithmique et structures de données (nnée 2010/2011) Delacourt, Phan Luong, Poupet xamen (2 heures) Les documents (cours, TD, TP) sont autorisés. Les quatre exercices sont indépendants. À la fin

Plus en détail

Algorithmique - Programmation 1. Cours 1

Algorithmique - Programmation 1. Cours 1 Algorithmique - Programmation 1 Cours 1 Université Henri Poincaré CESS Epinal Automne 2008 1/ 24 Plan Introduction Introduction A propos d AP1 Quelques concepts de base Premiers pas avec Caml Le branchement

Plus en détail

Héritage en java : Calculatrice SDC

Héritage en java : Calculatrice SDC Programmation orientée objet L3 MIAGE Héritage en java : Calculatrice SDC Travail à rendre : le code complet du projet SDC sous forme d une archive tar.gz. L archive comportera trois répertoires : un répertoire

Plus en détail

Programmation fonctionnelle avec OCaml

Programmation fonctionnelle avec OCaml Programmation fonctionnelle avec OCaml 1ère séance, 19 février 2015 6 séances de 1h30 de cours et 3h de TP 3 projets avec soutenance D autres transparents sont disponibles avec vidéo (intranet) Samuel

Plus en détail

Université Laval Faculté des sciences et de génie Département d'informatique et de génie logiciel IFT-3101. Travail pratique #2

Université Laval Faculté des sciences et de génie Département d'informatique et de génie logiciel IFT-3101. Travail pratique #2 Université Laval Faculté des sciences et de génie Département d'informatique et de génie logiciel IFT-3101 Danny Dubé Hiver 2014 Version : 11 avril Questions Travail pratique #2 Traduction orientée-syntaxe

Plus en détail

λ-calcul et typage Qu est-ce qu une fonction?

λ-calcul et typage Qu est-ce qu une fonction? λ-calcul et typage Nicolas Barnier, Pascal Brisset ENAC Avril 2009 Nicolas Barnier, Pascal Brisset (ENAC) λ-calcul et typage Avril 2009 1 / 1 Qu est-ce qu une fonction? Classiquement Pas de notation uniforme/standard

Plus en détail

Langage C/C++ TD 3-4 : Création dynamique d objets. Hubert Godfroy. 27 novembre 2014

Langage C/C++ TD 3-4 : Création dynamique d objets. Hubert Godfroy. 27 novembre 2014 Langage C/C++ TD 3-4 : Création dynamique d objets Hubert Godfroy 7 novembre 014 1 Tableaux Question 1 : Écrire une fonction prenant un paramètre n et créant un tableau de taille n (contenant des entiers).

Plus en détail

x n = x x n 1 Exercice 3 Le but de cet exercice est de modéliser les suites définies par récurrence de la façon suivante :

x n = x x n 1 Exercice 3 Le but de cet exercice est de modéliser les suites définies par récurrence de la façon suivante : Ocaml - Exercices Exercice Définir en Ocaml les fonctions suivantes:. f : x sin x + cos x. g : x x 3x+ x x 5 3. Fonction h calculant la moyenne géométrique de deux float positifs ( xy) Exercice Ecrire

Plus en détail

Algorithmique - Programmation 1. Cours 4

Algorithmique - Programmation 1. Cours 4 Algorithmique - Programmation 1 Cours 4 Université Henri Poincaré CESS Epinal Automne 2008 1/ 23 Plan Rappels : Types en Caml Rappels: Types en Caml Polymorphisme Le filtrage Le type produit cartésien

Plus en détail

Polytechnique. Épreuve d Informatique 1998

Polytechnique. Épreuve d Informatique 1998 Polytechnique Épreuve d Informatique 1998 Corrigé rédigé par Martine Lannaud, Lycée Chaptal, Paris Pour toute remarque ou correction martine.lannaud@prepas.org Motifs et automates Question 1. Quelques

Plus en détail

Concours 2015 Épreuve d Informatique Filière : MP Durée de l épreuve : 3 heures. L utilisation d une calculatrice est autorisée.

Concours 2015 Épreuve d Informatique Filière : MP Durée de l épreuve : 3 heures. L utilisation d une calculatrice est autorisée. A 2015 INFO. MP École des Ponts ParisTech, SUPAERO (ISAE), ENSTA ParisTech, Télécom ParisTech, Mines ParisTech, Mines de Saint-étienne, Mines Nancy, Télécom Bretagne, ENSAE ParisTech (filière MP), École

Plus en détail

Induction sur les arbres

Induction sur les arbres Induction sur les arbres Planning Motivations Comment définir les arbres? Équations récursives sur les arbres Complexité de fonctions sur les arbres Recherche dans un arbre binaire de recherche Recherche

Plus en détail

Partie I : Automates et langages

Partie I : Automates et langages 2 Les calculatrices sont interdites. N.B. : Le candidat attachera la plus grande importance à la clarté, à la précision et à la concision de la rédaction. Si un candidat est amené à repérer ce qui peut

Plus en détail

B) Outils d'analyse et composants du langage. deux points de vues complémentaires : outils d'analyse ; composants du langage

B) Outils d'analyse et composants du langage. deux points de vues complémentaires : outils d'analyse ; composants du langage 1 deux points de vues complémentaires : outils d'analyse ; composants du langage B.I) Briques de base ; les expressions bien typées B.II) Simplification de l'analyse ; nommer une expression B.III) Analyse

Plus en détail

Programmation en VBA

Programmation en VBA Programmation en VBA Présentation de Visual Basic Visual Basic : Basic : dérivé du langage Basic (Biginner s All purpose Symbolic Instruction Code) des années 60 Visual : dessin et aperçu de l interface

Plus en détail

Langages de programmation et compilation

Langages de programmation et compilation École Normale Supérieure Langages de programmation et compilation Jean-Christophe Filliâtre Cours 6 / 9 novembre 2015 Jean-Christophe Filliâtre Langages de programmation et compilation 2015 2016 / cours

Plus en détail

TP3 : Manipulation et implantation de systèmes de fichiers 1

TP3 : Manipulation et implantation de systèmes de fichiers 1 École Normale Supérieure Systèmes et réseaux Année 2012-2013 TP3 : Manipulation et implantation de systèmes de fichiers 1 1 Répertoire de travail courant Le but de l exercice est d écrire une commande

Plus en détail

INF121: Algorithmique et Programmation Fonctionnelle

INF121: Algorithmique et Programmation Fonctionnelle INF121: Algorithmique et Programmation Fonctionnelle Cours 1: Identificateurs, types de base et fonctions Année 2013-2014 Identificateurs La notion d identificateur Un concept fondamental dans les langages

Plus en détail

BAZIN Danil et PRIEZ Jean-Baptiste. LEX & YACC : Calculatrice Évoluée

BAZIN Danil et PRIEZ Jean-Baptiste. LEX & YACC : Calculatrice Évoluée BAZIN Danil et PRIEZ Jean-Baptiste LEX & YACC : Calculatrice Évoluée 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 8 5.1

Plus en détail

Python et la Programmation fonctionnelle. Programmation fonctionnelle 3. Programmation fonctionnelle pure 4. Matthieu Amiguet

Python et la Programmation fonctionnelle. Programmation fonctionnelle 3. Programmation fonctionnelle pure 4. Matthieu Amiguet Python et la Programmation fonctionnelle Matthieu Amiguet 2009 2010 1 Programmation fonctionnelle? 2 3 Lambda expressions 4 5 Programmation fonctionnelle? Programmation fonctionnelle 3 L expression programmation

Plus en détail

Introduction à OCAML

Introduction à OCAML Introduction à OCAML Plan L interpréteur intéractif Ocaml Les types de base, et leurs opérations : int, float, char, string, bool Les n-uplets Conditionnelles : if... then... else et match... with... Déclarations

Plus en détail

Introduction à l algorithmique et à la programmation 2013-2014. Cyril Nicaud Cyril.Nicaud@univ-mlv.fr. Cours 1 / 5

Introduction à l algorithmique et à la programmation 2013-2014. Cyril Nicaud Cyril.Nicaud@univ-mlv.fr. Cours 1 / 5 Introduction à l algorithmique et à la programmation IUT 1ère année 2013-2014 Cyril Nicaud Cyril.Nicaud@univ-mlv.fr Cours 1 / 5 Déroulement du cours Organisation : 5 séances de 2h de cours 10 séances de

Plus en détail

Travaux dirigés n o 6

Travaux dirigés n o 6 Travaux dirigés n o 6 Lycée Kléber MPSI, Option Info 2014/2015 Exercice 1 (Indexation d un arbre binaire) Ecrire une fonction Caml indexation : ( f, n) arbre_binaire -> (string,string) arbre_binaire qui

Plus en détail

Base de données. Ensuite, on peut utiliser les fonctions length et setlength pour respectivement lire et changer la taille du tableau.

Base de données. Ensuite, on peut utiliser les fonctions length et setlength pour respectivement lire et changer la taille du tableau. Base de données Nouvelles notions Voici quelques nouvelles fonctionnalités du langage dont vous aurez à vous servir. Prenez le temps de bien comprendre et tester les exemples. Tableaux à taille dynamique

Plus en détail

TP n 5. XML et expressions symboliques. 1 Dénition de XML. L2 Math-Info/L3 Informatique/M1 Linguistique Année 2011-2012

TP n 5. XML et expressions symboliques. 1 Dénition de XML. L2 Math-Info/L3 Informatique/M1 Linguistique Année 2011-2012 Université Paris Diderot Programmation Fonctionnelle L2 Math-Info/L3 Informatique/M1 Linguistique Année 2011-2012 TP n 5 XML et expressions symboliques L'objectif de ce TP est double. En première partie

Plus en détail

Option Informatique Arbres binaires équilibrés

Option Informatique Arbres binaires équilibrés Option Informatique Arbres binaires équilibrés Sujet novembre 2 Partie II : Algorithmique et programmation en CaML Cette partie doit être traitée par les étudiants qui ont utilisé le langage CaML dans

Plus en détail

Cours numéro 9 : arbres binaires et de recherche

Cours numéro 9 : arbres binaires et de recherche Cours numéro 9 : arbres binaires et de recherche LI213 Types et Structures de données Licence d Informatique Université Paris 6 Arbre Arbre Un arbre est un ensemble fini A d éléments, liés entre eux par

Plus en détail

Correction de programmes : Logique de Hoare

Correction de programmes : Logique de Hoare 16 juillet 2009 Logique et informatique Vis-à-vis de l informatique la logique a au moins 2 rôles : 1 Externe et théorique (fondements de l informatique - Électif en S4) : Logique comme méta-informatique

Plus en détail

Programmation en Python - Cours 2 : Premiers programmes

Programmation en Python - Cours 2 : Premiers programmes Programmation en Python - Cours 2 : Premiers programmes 2013/2014 Diverses utilisations de python Utilisation en mode interactif Ecriture d un programme python Saisie de données par l utilisateur : input(),

Plus en détail

Programmation en Python - Cours 2 : Premiers programmes. MPSI - Lycée Thiers

Programmation en Python - Cours 2 : Premiers programmes. MPSI - Lycée Thiers Programmation en Python - Cours 2 : Premiers programmes Diverses utilisations de python Utilisation en mode interactif Ecriture d un programme python Utilisation en mode interactif Ecriture d un programme

Plus en détail

Norme de programmation pour le cours et les travaux pratiques

Norme de programmation pour le cours et les travaux pratiques Université du Québec École de technologie supérieure Service des enseignements généraux www.seg.etsmtl.ca INF130 Ordinateurs et programmation Norme de programmation pour le cours et les travaux pratiques

Plus en détail

DEUG MIAS2 - MODULE INFORMATIQUE (MIA10B) EXAMEN (SEPTEMBRE 1999)

DEUG MIAS2 - MODULE INFORMATIQUE (MIA10B) EXAMEN (SEPTEMBRE 1999) coller l étiquette ici DEUG MIAS2 - MODULE INFORMATIQUE (MIA10B) EXAMEN (SEPTEMBRE 1999) Durée : 2 heures Aucun document autorisé - Calculatrices interdites Les réponses doivent être brèves et justifiées

Plus en détail

Informatique. Programmation en Python.

Informatique. Programmation en Python. BCPST 1 B 13 septembre 2015 Informatique. Programmation en Python. Ce document est un support de cours, il vous permet d avoir sa structure et ses éléments les plus importants. Au cours des séances en

Plus en détail

MANUEL DE RÉFÉRENCE DU LANGAGE CAML

MANUEL DE RÉFÉRENCE DU LANGAGE CAML Xavier Leroy Pierre Weis MANUEL DE RÉFÉRENCE DU LANGAGE CAML Copyright 1992, 1993, 2009 Pierre Weis et Xavier Leroy. Ce texte est distribué sous les termes de la licence Creative Commons BY-NC-SA. Le texte

Plus en détail

Plan du cours. Syntaxe abstraite. Actions sémantiques Exemple : Analyseur d expressions arithmétiques Arbres de syntaxe.

Plan du cours. Syntaxe abstraite. Actions sémantiques Exemple : Analyseur d expressions arithmétiques Arbres de syntaxe. Plan du cours Syntaxe abstraite Martin Odersky 21 et 22 novembre 2005 version 1.0 1 2 3 Syntaxe abstraite Martin Odersky 1 de 31 Syntaxe abstraite Martin Odersky 2 de 31 Un analyseur syntaxique fait généralement

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

Interrogationécrite d 'InformatiqueUV2

Interrogationécrite d 'InformatiqueUV2 1ères années INSA 2005/06 Durée : 1H15 Interrogationécrite d 'InformatiqueUV2 Les documents sont autorisés, aucune feuille adjointe ne sera prise en compte. Toutes vos réponses doivent figurer dans ce

Plus en détail

Programmation avancée en C

Programmation avancée en C Département Informatique Nom : Prénom : Année scolaire : 2007 2008 Date : 23 juin 2008 Module INF446 Session de juin Programmation avancée en C Contrôle de connaissance 1 de 45 minutes ÅERCI de répondre

Plus en détail

TP Compilation Analyse lexicale

TP Compilation Analyse lexicale TP Compilation Analyse lexicale Eric Ramat ramat@lisic.univ-littoral.fr 9 mai 2014 Durée : 6 heures 1 Introduction Le but de cet TP est de vous donner les bases nécessaires afin de pouvoir écrire votre

Plus en détail

DS Java 1. 19 novembre 2005

DS Java 1. 19 novembre 2005 DS Java 1 19 novembre 2005 Durée : 2 heures. Documents (notes et polycopiés) autorisés. La rigueur et la propreté seront prises en compte dans l évaluation. Le barème est indicatif. Vous rédigerez vos

Plus en détail

Introduction à la Programmation 1

Introduction à la Programmation 1 Introduction à la Programmation 1 Séance de cours/td Université Paris-Diderot Objectifs: Découverte du type String. Comprendre qu il y a des types différents. Maîtriser les expressions booléennes dans

Plus en détail

Expressions rationnelles, automates, analyse lexicale

Expressions rationnelles, automates, analyse lexicale Chapitre 2 Expressions rationnelles, automates, analyse lexicale L analyse lexicale est la première phase d un compilateur ou d un interprète : elle consiste à identifier et à catégoriser les différents

Plus en détail

Langages de programmation et compilation

Langages de programmation et compilation École Normale Supérieure Langages de programmation et compilation Jean-Christophe Filliâtre Cours 1 / 25 septembre 2008 Jean-Christophe Filliâtre Langages de programmation et compilation 2008 2009 / cours

Plus en détail

Notes de cours. Introduction

Notes de cours. Introduction Notes de cours GEI 44 : STRUCTURES DE DONNÉES ET ALGORITHMES Chapitre 5 Application des piles Introduction Piles très utilisées dans les compilateurs Voici deux exemples de composants d un compilateur

Plus en détail

Quelques notions d'algorithmique

Quelques notions d'algorithmique Quelques notions d'algorithmique I- Généralités Un algorithme est une suite finie d'instructions permettant la résolution systématique d'un problème donné. Un algorithme peut-être décrit en langage «naturel»,

Plus en détail

Tableaux (introduction) et types de base

Tableaux (introduction) et types de base Tableaux (introduction) et types de base A. Motivation..................................................... 4 B. Les tableaux.................................................... 5 C. Construction des tableaux.......................................

Plus en détail

petite référence de Caml

petite référence de Caml petite référence de Caml version du document : 2 (rentrée 1996) Alain Bèges & Laurent Chéno lycées Champollion (Grenoble) & Louis-le-Grand (Paris) Table des matières 1 Types de base 2 1.1 Unit... 2 1.2

Plus en détail

XQuery Dan VODISLAV Université de Cergy-Pontoise Licence Informatique L3 Plan

XQuery Dan VODISLAV Université de Cergy-Pontoise Licence Informatique L3 Plan XQuery Dan VODISLAV Université de Cergy-Pontoise Licence Informatique L3 Plan Principes, historique Modèle de données Expressions XQuery Expressions simples Expressions complexes Expressions FLOWR Fonctions

Plus en détail

Introduction aux listes. Cours numéro 5 : Les listes LI213 Types et Structures de données. Les listes simplement chaînées

Introduction aux listes. Cours numéro 5 : Les listes LI213 Types et Structures de données. Les listes simplement chaînées Introduction aux s LI Types et Structures de données Liste : définition Collection ordonnée d éléments [x ;...; x n ] (au moins) accessibles l un après l autre de x jusqu à x n. Exemple : dans la [ ; ;5

Plus en détail

Introduction à l informatique, à Python, et représentation des nombres en machine

Introduction à l informatique, à Python, et représentation des nombres en machine Introduction à l informatique, à Python, et représentation des nombres en machine Table des matières Qu est-ce-que l informatique? Qu est-ce-qu un ordinateur? 2 Principaux composants...............................................

Plus en détail

Projet 1 ENS Lyon L3IF

Projet 1 ENS Lyon L3IF Projet 1 ENS Lyon L3IF Génération de code Sébastien Briais 8 janvier 2008 Dans cette partie, vous allez devoir implémenter le générateur de code pour l émulateur DLX risc-emu. À rendre pour le 18 janvier

Plus en détail

Programmation avancée Examen final

Programmation avancée Examen final Programmation avancée Examen final jeudi 17 décembre 2009 Nom : Prénom : Vos points sont précieux, ne les gaspillez pas! Votre nom Le travail qui ne peut pas vous être attribué est perdu: écrivez votre

Plus en détail

VIII. Interrogation de documents avec XQuery

VIII. Interrogation de documents avec XQuery VIII. Interrogation de documents avec XQuery 350 XQUERY? Est un langage d interrogation de données XML N est pas un dialecte XML Est un sur-ensemble de XPath 2.0 Utilise le même modèle de données (XDM)

Plus en détail

Expressions, types et variables en Python

Expressions, types et variables en Python Expressions, types et variables en Python 2015-08-26 1 Expressions Les valeurs désignent les données manipulées par un algorithme ou une fonction. Une valeur peut ainsi être : un nombre, un caractère,

Plus en détail

Programmation fonctionnelle

Programmation fonctionnelle 1/30 Programmation fonctionnelle Notes de cours Cours 9 23 novembre 2011 Sylvain Conchon sylvain.conchon@lri.fr 2/30 Les notions abordées cette semaine Les foncteurs Set.Make et Map.Make d Ocaml Arbres

Plus en détail

Traduction des arbres programmatiques en C

Traduction des arbres programmatiques en C Traduction des arbres programmatiques en C Table des matières 1 Premier exemple : helloworld.c 1 2 Méthode de programmation 2 3 Déclaration de variables 2 4 Structures de contrôle 3 5 Opérateurs C 5 6

Plus en détail

Contrôler les programmes VBA

Contrôler les programmes VBA 7 Contrôler les programmes VBA Au sommaire de ce chapitre Utiliser les opérateurs logiques Trier des données Répéter une série d instructions : les boucles Utiliser des instructions conditionnelles Définir

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

10' - LES ARBRES BINAIRES

10' - LES ARBRES BINAIRES Ch 10' - LES ARBRES BINAIRES On va restreindre les capacités des arbres en obligeant les nœuds à posséder au maximum deux sous-arbres. Ces nouveaux arbres seront plus faciles à maîtriser que les arbres

Plus en détail

Cours 01 - Les structures de données

Cours 01 - Les structures de données Cours 01 - Les structures de données MPSI - Prytanée National Militaire Pascal Delahaye 1 er mars 2015 Les programmes informatiques, traitent des données, créent des données et renvoient des données. Pour

Plus en détail

Codage de l'information. 01000011 01101111 01100100 01100001 01100111 01100101, ce qui donne un découpage de 8 sextets

Codage de l'information. 01000011 01101111 01100100 01100001 01100111 01100101, ce qui donne un découpage de 8 sextets Univ. Lille 1 - Licence Informatique 2ème année 2013-2014 Objectifs du TP Codage de l'information TP : Le codage Base 64 Ce TP a pour but 1. de convertir des chiers quelconques en un chier texte codé en

Plus en détail

Recherche dans un tableau

Recherche dans un tableau Chapitre 3 Recherche dans un tableau 3.1 Introduction 3.1.1 Tranche On appelle tranche de tableau, la donnée d'un tableau t et de deux indices a et b. On note cette tranche t.(a..b). Exemple 3.1 : 3 6

Plus en détail

Sémantique des Langages de Programmation

Sémantique des Langages de Programmation Sémantique des Langages de Programmation Introduction Stefano Guerrini stefano.guerrini@univ-paris13.fr LIPN - Institut Galilée, Université Paris Nord 13 Sup Galillée Informatique, 1ère année 2009 2010

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

Fichiers. Introduction Fichier texte. Fichier structuré. Présentation Le type TEXT Primitives de gestion Exemple

Fichiers. Introduction Fichier texte. Fichier structuré. Présentation Le type TEXT Primitives de gestion Exemple Fichiers Introduction Fichier texte Présentation Le type TEXT Primitives de gestion Exemple Fichier structuré Présentation Le type FILE OF Primitives de gestion Exemple Compléments d algorithmique 1 Introduction

Plus en détail

S. Laporte C# mode console DAIGL TS1

S. Laporte C# mode console DAIGL TS1 Bases du langage C# I. C# en mode console (mode texte) Avantages par rapport au mode graphique (Application Windows): - C'est un mode plus proche de l'approche algorithmique (pas de notions de composants,

Plus en détail

Eléments de syntaxe du langage Java

Eléments de syntaxe du langage Java c jan. 2014, v3.0 Java Eléments de syntaxe du langage Java Sébastien Jean Le but de ce document est de présenter es éléments de syntaxe du langage Java : les types primitifs, les opérateurs arithmétiques

Plus en détail

Série d exercices. o Cas 2 : gcc o nomexecutable c nomsource.c. o Cas 3 : gcc o nomexecutable W -Wall nomsource.c

Série d exercices. o Cas 2 : gcc o nomexecutable c nomsource.c. o Cas 3 : gcc o nomexecutable W -Wall nomsource.c Langage Impératif 1 TP 1 du 11 octobre 2010 Série d exercices Rappels rapides : - Un programme C s écrit toujours dans un fichier d extension.c (en minuscule!! sinon ce serait compilé comme du C++). Ce

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

L outil Cup. Licence info et GMI documentation COMPIL 2007-2008. Pour toutes remarques, questions, suggestions : mirabelle.nebut@lifl.

L outil Cup. Licence info et GMI documentation COMPIL 2007-2008. Pour toutes remarques, questions, suggestions : mirabelle.nebut@lifl. UFR IEEA Licence info et GMI documentation COMPIL 2007-2008 FIL Pour toutes remarques, questions, suggestions : mirabelle.nebut@lifl.fr 1 raccourci pour Java-Based Constructor of Useful Parsers est un

Plus en détail

Langage Élémentaire Algorithmique Spécifications du langage

Langage Élémentaire Algorithmique Spécifications du langage Langage Élémentaire Algorithmique Spécifications du langage Lionel Clément Version provisoire Novembre 2012 Le but de ce projet est de livrer un compilateur pour un langage élémentaire algorithmique (Léa).

Plus en détail

Ch. 1 : Bases de programmation en Visual Basic

Ch. 1 : Bases de programmation en Visual Basic Ch. 1 : Bases de programmation en Visual Basic 1 1 Variables 1.1 Définition Les variables permettent de stocker en mémoire des données. Elles sont représentées par des lettres ou des groupements de lettres

Plus en détail

Programmation en VBA

Programmation en VBA Programmation en VBA Présentation de Visual Basic Visual Basic : Basic : dérivé du langage Basic (Biginner s All purpose Symbolic Instruction Code) des années 60 Visual : dessin et aperçu de l interface

Plus en détail

Résolution d exercices avec Visual Studio

Résolution d exercices avec Visual Studio Résolution d exercices avec Visual Studio Document rédigé par David Taralla 3 e Bachelier en Sciences Informatiques david.taralla@student.ulg.ac.be Dernière version : 7 novembre 2011 Préambule Ce petit

Plus en détail

TP : commande awk. D'après le cours en ligne de Isabelle Vollant http://www.shellunix.com/awk.html

TP : commande awk. D'après le cours en ligne de Isabelle Vollant http://www.shellunix.com/awk.html TP : commande awk D'après le cours en ligne de Isabelle Vollant http://www.shellunix.com/awk.html Nous reprenons dans ce TP une grande partie du cours de Isabelle Vollant en simplifiant quelques informations.

Plus en détail

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions 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étail

L2 Informatique - gr A HLIN406-25 mars 2015. Contrôle continu 1

L2 Informatique - gr A HLIN406-25 mars 2015. Contrôle continu 1 L2 Informatique - gr A HLIN406-25 mars 2015 Nom : Prénom : Numéro d étudiant : Contrôle continu 1 Tous documents sur support papier autorisés. Durée : 1h00. L ensemble des réponses sera à donner sur les

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

Algorithmique avancée en Python

Algorithmique avancée en Python Algorithmique avancée en Python... et non pas Python avancé Denis Robilliard sept. 2014 1 Introduction Objectifs du cours connaître un panel d algorithmes standards : énumération, tris, backtracking, listes,

Plus en détail

1 Valeur d une expression

1 Valeur d une expression PCSI Informatique: Cours2 1 VALEUR D UNE EXPRESSION Expressions et variables en informatique 1 Valeur d une expression Expression : suite de caractères qui a un sens pour la machine Valeur d une expression

Plus en détail

Les tableaux (ou vecteurs) (1/3) Cours numéro 3: Programmation impérative LI213 Types et Structures de données. Les tableaux (3/3) Les tableaux (2/3)

Les tableaux (ou vecteurs) (1/3) Cours numéro 3: Programmation impérative LI213 Types et Structures de données. Les tableaux (3/3) Les tableaux (2/3) Les tableaux (ou vecteurs) (1/3) Le type tableau est une des réponses à la question : LI213 Types et Structures de données Licence d Informatique Université Paris 6 comment agréger un très grand nombre

Plus en détail

Fonction Personnalisée sous EXCEL

Fonction Personnalisée sous EXCEL Fonction Personnalisée sous EXCEL Les fonctions sont des unités de programme qui retournent un résultat. Function Nom-de-la-fonction ( [liste des paramètres] ) Type du résultat Sortie immédiate, éventuellement,

Plus en détail

Programmation sous Python

Programmation sous Python Erwan Biland Lycée Chateaubriand - BCPST 1C Année scolaire 2014-2015 Objects du Utilisation de la console (shell ) Python calculatrice Fichier machin.py Manipulation des variables Création/affectation,

Plus en détail

TD : Petits exercices pour la reprise

TD : Petits exercices pour la reprise TD : Petits exercices pour la reprise 1) Environnement de travail a) Qu est-ce qu un IDE? Lorsqu on fait de la programmation, il est agréable d avoir à sa disposition différents outils qui permettent de

Plus en détail

Formation Unix/Linux (6) Le Shell: programmation et écriture de scripts

Formation Unix/Linux (6) Le Shell: programmation et écriture de scripts Formation Unix/Linux (6) Le Shell: programmation et écriture de scripts Olivier BOEBION Mars 2004 1 Les expressions conditionnelles et les structures de contrôle 1.1 La commande test La commande interne

Plus en détail

Javascript : les bases du langage

Javascript : les bases du langage Javascript : les bases du langage Technologies du Web 1 Jean-Christophe Routier Licence 1 SESI Université Lille 1 Université Lille 1 - Licence 1 SESI Technologies du Web 1 1 Javascript présentation partielle,

Plus en détail

Mode d emploi pour la P-machine utilisée lors des TPs et des projets du cours INFO010 Théorie des langages et de la compilation.

Mode d emploi pour la P-machine utilisée lors des TPs et des projets du cours INFO010 Théorie des langages et de la compilation. Mode d emploi pour la P-machine utilisée lors des TPs et des projets du cours INFO010 Théorie des langages et de la compilation. Sébastien COLLETTE et Gilles GEERAERTS 1 Introduction Ce document décrit

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

Avertissement au lecteur :

Avertissement au lecteur : L1, informatique 2 nd semestre L1, Informatique, semestre 2 année 2006-2007 Gilles Bernot Notes de cours Université d Évry Avertissement au lecteur : Ce polycopié n est pas un document scolaire de référence

Plus en détail

Listes de personnes et calculatrice polonaise inverse en Java

Listes de personnes et calculatrice polonaise inverse en Java Listes de personnes et calculatrice polonaise inverse en Java Université Paris Sud Motivation Le but de cet exercice est de manipuler les listes chaînées et les piles et de voir leur application en analyse

Plus en détail

Algorithmique et programmation : les bases (C) Corrigé

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

Plus en détail

Les expressions. Daniel Tschirhart : Programmation Java V1.34

Les expressions. Daniel Tschirhart : Programmation Java V1.34 Les expressions régulières Daniel Tschirhart : Programmation Java V1.34 Les expressions régulir gulières Le langage des expressions régulières est spécialement conçu et optimisé pour la manipulation de

Plus en détail

Licence Bio Informatique Année 2004-2005. Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

Licence Bio Informatique Année 2004-2005. Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose... Université Paris 7 Programmation Objet Licence Bio Informatique Année 2004-2005 TD n 1 - Correction Premiers pas Exercice 1 Hello World parce qu il faut bien commencer par quelque chose... 1. Enregistrez

Plus en détail

I Arbres binaires. Lycée Faidherbe 2014-2015. 1 Rappels 2 1.1 Définition... 2 1.2 Dénombrements... 2 1.3 Parcours... 3

I Arbres binaires. Lycée Faidherbe 2014-2015. 1 Rappels 2 1.1 Définition... 2 1.2 Dénombrements... 2 1.3 Parcours... 3 I Arbres binaires 2014-2015 Table des matières 1 Rappels 2 1.1 Définition................................................ 2 1.2 Dénombrements............................................ 2 1.3 Parcours.................................................

Plus en détail

Les Fichiers en Pascal

Les Fichiers en Pascal Les Fichiers en Pascal Université de Toulouse II DEUG MASS Année 2004-2005 Patricia PASCAL < ppascal@laas.fr > - Page 1 / 31 - Plan du cours sur les fichiers les fichiers, pourquoi, comment? (p3) les différents

Plus en détail

C.P.G.E - Meknès Langage Python 3 Haouati Abdelali

C.P.G.E - Meknès Langage Python 3 Haouati Abdelali 3. Langage Python 3 2 a. Introduction Présentation du langage Python : Python est un langage portable, dynamique, extensible, gratuit, qui permet (sans l imposer) une approche modulaire et orientée objet

Plus en détail

RÈGLES POUR L'ÉCRITURE DES PSEUDO-CODES (Programmation par objets)

RÈGLES POUR L'ÉCRITURE DES PSEUDO-CODES (Programmation par objets) RÈGLES POUR L'ÉCRITURE DES PSEUDO-CODES (Programmation par objets) Consignes générales : 1) Chaque algorithme est bien identifié. 2) Les mots clés doivent être utilisés selon la même syntaxe que ci-dessous.

Plus en détail

Traduction de programmes Lustre V6 en Scade

Traduction de programmes Lustre V6 en Scade Université Joseph Fourier Département Licence Sciences & Technologie RAPPORT DE STAGE Traduction de programmes Lustre V6 en Scade Mamadou NDIAYE Juillet 2015 Laboratoire d accueil : Verimag Directeur du

Plus en détail

Téléchargé gratuitement sur www.doc-solus.fr.

Téléchargé gratuitement sur www.doc-solus.fr. Mines Informatique PC 2015 Énoncé 1/10 ÉCOLE DES PONTS PARISTECH. SUPAERO (ISAE), ENSTA PARISTECH, TELECOM PARISTECH, MINES PARISTECH MINES DE SAINT-ÉTIENNE, MINES NANCY, TÉLÉCOM BRETAGNE, ENSAE PARISTECH

Plus en détail