Exercice 1 : Typage et valeur d une expression (35 points = )
|
|
- Anne-Marie Edith Audy
- il y a 7 ans
- Total affichages :
Transcription
1 CORRIGÉ INF121 : CONTRÔLE FINAL (3h00) Mai 2012 DOCUMENTS AUTORISÉS : Uniquement une feuille A4 recto-verso de notes personnelles manuscrites. Notes : Vous répondrez aux exercices et au problème dans l ordre qui vous convient. Le total des points de chaque question correspond au nombres de minutes nécessaires pour résoudre la question.vous pouvez admettre le résultat d une question, et l utiliser dans la suite. Exercice 1 : Typage et valeur d une expression (35 points = ) Pour chaque programme OCaml, indiquez les types OCaml (polymorphe si possible) des fonctions et ce qu elles font ; pour vous aider vous donnerez aussi dans votre réponse des exemples d execution. Toutes les fonctions son bien typées. 1. let rec f1 b = match b with c::d -> 1 + (f1 d);; f1 calcule le nombre d élément de la liste b. val f1 : α list int = <fun> 2. let rec f2 a r = match a with [] -> r c::d -> f2 d (1 + r);; f1 calcule le nombre d élément de la liste b plus r. val f2 : α list int int = <fun> 3. let rec f3 a r = match a with c::d -> f3 d (1 + r);; f3 renvoie toujours la valeur 0. val f3 : α list int int = <fun> 4. let rec f4 p q = match (p, q) with Exercice 2 : Modélisation (15 points) ([],[]) -> true (x::y,[]) -> false ([],z::t) -> true (u::v,w::t)-> if u=w then f4 v t else f4 (u::v) t;; f4 détermine si la liste p est un sous sequence de la liste q. val f4: α list α list bool =<fun> 5. let rec f5 h i j = match i with [] -> j x::y -> h x (f5 h y j);; f5 est le code de la fonction fold_right, qui accumule les résultats de l application successive de la fonction h sur la liste i avec comme premier élément j. val f5 : (α β β) α list β β = <fun> Nous souhaitons modéliser un jeu pour enfant permettant d apprendre l addition et la multiplication des fractions. Ce jeu comporte des cartes représentant deux sortes de cartes : Les cartes représentant des chiffres de 0 à 9, Les cartes représentant des symboles +,,, = et / la barre des fractions. Chaque joueur commence le jeu avec un certain nombre de cartes. Chaque joueur placera des cartes sur le jeu et en obtiendra d autres au cours de la partie. 1. (5 points) Définir les types permettant de modéliser ce jeu. type carte = Chiffre of int Plus Moins Fois Divise Egal;; type main = carte list;; 2. (5 points) Donner un code OCaml d une fonction qui calcule le nombre de chiffres possédés par un joueur. let rec nbchiffre (l:carte list) : int = match l with x::r -> let nbc = nbchiffre r in ( match x with Chiffre(_) -> 1 + nbc _ -> nbc );; 3. (5 points) Donner un code OCaml d une fonction qui calcule le nombre de symboles possédés par un joueur. 1
2 let rec nbsymbole (l:carte list) : int = match l with x::r -> let nbs = nbsymbole r in ( match x with Chiffre(_) -> nbs _ -> 1 + nbs );; Exercice 3 : Deux occurrences exactement (70 points) Pour résoudre une question vous pouvez utiliser les fonctions demandées dans les questions précédentes, mais il est interdit d utiliser les fonctions de la bibliothèque List si cela n est pas explicitement demandé. 1. (10 points) Définir une fonction récursive polymorphe appart : α α list bool qui détermine si un élément appartient à une liste. Donner explicitement : Spécification : (a) Profil (b) Exemples Spécification : Réalisation : (a) Équations récursives (b) Terminaison (c) Code OCaml (a) Profil : val appartient : α α list bool = <fun> (b) Exemples : appartient 1 [2;1;3] = true appartient 1 [] = false Réalisation : (a) Équations récursives appartient x [] = false appartient x n : :r = (n=x) (appartient x r) (b) Terminaison : l appel récursif se fait sur une liste de taille plus petite donc la fonction de mesure longueur d une liste décroit donc la fonction termine. (c) Code OCaml let rec appartient (elt : e) (seq: e list) : bool = match seq with [] -> false h::t when h=elt -> true h::t -> appartient elt t;; ALTERNATIVE let rec member (l: a list) (e: a):bool = match l with [] -> false; x::r -> (x = e) (member r e);; 2. (6 points) Donner des exemples et un code OCaml d une fonction récursive polymorphe supprime : α α list α list qui supprime la première occurrence d un élément dans une liste. let rec supprimefirst (l: a list) (e: a): a list = match l with [] -> []; x::r -> if (x = e) then r else x::(supprimefirst r e);; let l1=[1;2;3;4;5;6;2;3;2;3;4];; supprimefirst l1 4;; (* [1;2;3;4;5;6;2;3;2;3] *) supprimefirst l1 6;; (* [1;2;3;4;5;2;3;2;3;4] *) 2
3 3. (6 points) Donner des exemples et un code OCaml d une fonction récursive polymorphe supprimetous : α α list α list qui supprime toutes les occurrences d un élément dans une liste. let rec supprimeall (l: a list) (e: a): a list = match l with [] -> []; x::r -> if (x = e) then supprimeall r e else x::(supprimeall r e);; let l2=[1;2;3;4;5;6;2;3;2;3];; supprimeall l1 4;; (* [1;2;3;4;5;6;2;3;2;3] *) supprimeall l2 2;; (* [1;3;4;5;6;3;3] *) 4. (12 points) Donner des exemples et un code OCaml d une fonction polymorphe récursive ou non deuxocc : α list bool qui détermine si une liste d éléments contient exactement deux occurrences d un élément. let rec deuxocc (l: a list):bool = match l with [] -> false [x] -> false x::r -> ((member r x)&& (not (member (supprimefirst r x) x ))) deuxocc (supprimeall r x);; deuxocc l1 ;; (* true *) deuxocc l2 ;; (* false *) let deuxocc (elt: e) (seq: e list) : bool = let moins1 = otepremiereocc elt seq in let moins2 = otepremiereocc elt moins1 in let moins3 = otepremiereocc elt moins2 in (seq <> moins1) && (moins1 <> moins2) && (moins2 == moins3) (* ou (not (appartient elt moins2)*) ;; 5. (12 points) Donner des exemples et un code OCaml d une fonction récursive polymorphe liste2occurrences : α list α list qui calcule la liste des éléments contenus chacun exactement 2 fois dans une liste. let rec ldeuxocc (l: a list): a list = match l with [] -> [] [x] -> [] x::r -> if (member r x)&& (not (member (supprimefirst r x) x )) then x::(ldeuxocc (supprimeall r x)) else ldeuxocc (supprimeall r x) ;; ldeuxocc l2;; (* [] *) ldeuxocc l1;; (* [4] *) Pour les deux questions suivantes, on utilisera les fonctions : map : (α β) α list β list List.map f [a1;...; an] applique la fonction f à a1,..., an, et construit la liste [f a1;...; f an]. fold_left : (α β α) α β list α List.fold_left f a [b1;...; bn] est f (... (f (f a b1) b2)...) bn. List.filter : (α bool) α list α list List.filter p l retourne tous les éléments de la liste l qui satisfont le predicat p. 6. (12 points) Donner un code OCaml d une fonction polymorphe appartbis : α list bool qui détermine si un élément appartient à une liste (question 1) en utilisant les fonctions d ordre supérieur proposées. let appartient elt seq = fold_left (or) (map (fun x -> x=elt) seq);; let appartient let seq = (filter (fun x -> x=elt) seq)!= [];; 3
4 7. (12 points) Donner un code OCaml d une fonction polymorphe supprimetousbis : α list α list qui supprime toutes les occurrences d un élément dans une liste (question 3) en utilisant les fonctions d ordre supérieur proposées. let oteoccurences elt seq = filter (fun x -> x!= elt) seq;; Exercise 4 : Arbres et multi-ensembles (60 points) Lors du projet vous deviez implementer le type abstrait de données multi-ensemble. Pour ce faire nous avons introduit le type e multielt pour représenter plusieurs exemplaires d une même valeur d élément : type e multielt = e int. Ainsi un multi-ensemble est une collection d éléments non ordonnés avec répétitions. Nous l avions représenté par une liste de multi-éléments, où tous les exemplaires d une valeur d élément sont regroupés dans un seul multi-élément pour chaque élèment. Afin de rendre plus efficace cette structure de données nous allons représenter un multi-ensemble par un arbre binaire de recherche de multi-éléments. type e multiens = Vide Multiset of e multiens e multielt e multiens Donner des exemples et un code OCaml des fonctions suivantes : 1. (5 points) estvidemultiens: e multiens bool est vrai si le multi-ensemble est vide. let estvidemultiens (ms: e multiens): bool = (ms =Vide);; estvidemultiens Vide;; (* true *) estvidemultiens Multiset(Vide,(1,2),Vide);; (* false *) 2. (5 points) cardinalmultiens: e multiens int retourne le nombre total des occurrences des e éléments présents dans le multi-sensemble. Donner les équations récursives et une preuve de terminaison de cette fonction. Equations récursives : cardinalmultiens Vide = 0 cardinalmultiens Multiset(g,(e,card),d) = cardinalmultiens g + cardinalmultiens d + card ou Terminaison : Les appels récursifs portent sur des arbres de tailles plus petits (g et d), la fonction décroit donc. Ainsi cardinalmultiens termine. Exemples : cardinalmultiens Vide;; (*(0,0)*) cardinalmultiens (Vide,(1,2), cardinalmultiens (Vide,(2,2),Vide));; (*(3,4)*) Code : let rec cardinalmultiens (ms: e multiens) : int*int = match ms with Vide -> (0,0) Multiset(g,(e,card),d) -> let (nbeltg,nbtotg) = cardinalmultiens g in let (nbeltd,nbtotd) = cardinalmultiens d in (nbeltg+nbeltd+1,nbtotg+nbtotd+card);; Dans un arbre binaire de recherche nous imposons que pour tout noeud s d un multi-ensemble, les contenus des noeuds du sous-arbre gauche de s sont strictement inférieurs au contenu de s, et que les contenus des noeuds du sous-arbre droit de s sont supérieurs au contenu de s. Pour cela, nous définissons un ordre sur les éléments du type e multielt : si (e 1, n 1 ) et (e 2, n 2 ) sont de type e multielt, (e 1, n 1 ) (e 2, n 2 ) si et seulement si e 1 e 2. Donner un code OCaml des fonctions suivantes en tenant compte de la propriété arbre binaire de recherche de l arbre représentant un multi-ensemble. 3. (5 points) Donner une représentation des multi-ensembles suivants : {1, 2, 1}, {1, 1, 2, 3, 3, 4}. Multiset(Vide,(1,2),Multiset(Vide,(2,1),Vide));; Multiset(Vide,(1,2),Multiset(Multiset(Vide,(2,1),Vide)),(3,2), Multiset(Vide,(4,1),Vide)));; 4. (5 points) appartientmultiens: e e multiens bool teste l appartenance d un élément à un multi-ensemble. 4
5 let rec appartientmultiens (ms: e multiens) (elt: e): bool = match ms with Vide -> false Multiset(g,(e,card),d) -> let appg = appartientmultiens g e in let appd = appartientmultiens d e in if (elt=e) then true else appd appg;; 5. (5 points) occurrencesmultiens: e e multiens int calcule le nombre d occurrences d un élément dans un multi-ensemble. let rec occurencesmultiens2 (ms: e multiens) (elt: e): int = match ms with Vide -> 0 Multiset(g,(e,card),d) -> if (elt=e) then card else if elt<e then occurencesmultiens g e else occurencesmultiens d e ;; 6. (10 points) ajoutemultiens: e mutielt e multiens e multiens ajoute une ou plusieurs occurrences d élément à un multi-ensemble. let rec ajoutmultiens (elt: e) (ms: e multiens): e multiens = match ms with Vide -> Multiset(Vide,(elt,1),Vide) Multiset(g,(e,card),d) -> if (elt=e) then Multiset(g,(e,card+1),d) else if (elt>e) then Multiset(g,(e,card), ajoutmultiens e d) else Multiset(ajoutmultiens e g,(e,card), d);; 7. (15 points) construitmultiens: e list e multiens prend une liste d éléments et construit le multi-ensemble associé (7 points) Écrire une version sans utiliser List.fold_right ou List.fold_left. let rec construitmultiens (l: a list) : e multiens = match l with [] -> Vide x::r -> ajoutmultiens x (construitmultiens r);; (8 points) Écrire une version en utilisant List.fold_right ou List.fold_left. let construitmultiens2 (l: a list) : e multiens = List.fold_right ajoutmultiens l Vide;; 8. (10 points) On se pose le problème de trouver la liste des éléments qui apparaissent exactement deux fois dans une liste donnée (problème dont on a donné une solution dans l exercice 3). On vous demande ici de proposer une autre solution en utilisant des fonctions définies précédemment dans cet exercice. let deuxocc3 (l: a list): a list = let rec auxdeuxocc3 (ab : e multiens ): a list= let ab = construitmultiens l in match ab with Vide -> [] Multiset(g,(e,card),d) -> let listeoccur2 = (auxdeuxocc3 (auxdeuxocc3 d) in if card = 2 then e::listeoccur2 else listeoccur2 in auxdeuxocc3 (construitmultiens l);; BONUS (20 points) : supprimemultiens: e multielt e multiens e multiens supprime n occurrences d élément (n étant défini par le multielt) d un multi-ensemble. 5
Correction Code nécessaire à la compilation : let bs ="\\" let nl = "\n" ;; let appliquer = List.map ;; (* affichage d'un noeud *)
Correction Code nécessaire à la compilation : let bs ="\\" let nl = "\n" let appliquer = List.map (* affichage d'un noeud *) let (noeud_vers_ch : int -> string) = function n -> "fib(" ^ (string_of_int
Plus en détail# let rec concat l1 l2 = match l1 with [] -> l2 x::l 1 -> x::(concat l 1 l2);; val concat : a list -> a list -> a list = <fun>
94 Programmation en OCaml 5.4.8. Concaténation de deux listes Définissons maintenant la fonction concat qui met bout à bout deux listes. Ainsi, si l1 et l2 sont deux listes quelconques, concat l1 l2 constitue
Plus en détailClasses et Objets en Ocaml.
Classes et Objets en Ocaml. Didier Rémy 2001-2002 http://cristal.inria.fr/ remy/mot/2/ http://www.enseignement.polytechnique.fr/profs/informatique/didier.remy/mot/2/ Cours Exercices Slide 1 1. Objets 2.
Plus en détailCours de Programmation 2
Cours de Programmation 2 Programmation à moyenne et large échelle 1. Programmation modulaire 2. Programmation orientée objet 3. Programmation concurrente, distribuée 4. Programmation monadique 5. Les programmes
Plus en détailRecherche 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étailmodules & compilation
Programmation fonctionnelle avec OCaml 3ème séance, 19 mars 2015 modules & compilation samuel.hornus@inria.fr http ://www.loria.fr/ shornus/ocaml/ Modules Un module regroupe un ensemble de définitions
Plus en détailExpression des contraintes. OCL : Object C o n t r a i n t L a n g u a g e
P r o b l é m a t i q u e OCL : O b j e c t C o n s t r a i n t L a n g u a g e Le langage de contraintes d UML Les différents diagrammes d UML permettent d exprimer certaines contraintes graphiquement
Plus en dé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é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étailOCL - Object Constraint Language
OCL - Object Constraint Language Laëtitia Matignon laetitia.matignon@univ-lyon1.fr Département Informatique - Polytech Lyon Université Claude Bernard Lyon 1 2012-2013 Laëtitia Matignon SIMA - OCL - Object
Plus en dé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étailTP3 : 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é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é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étailUne dérivation du paradigme de réécriture de multiensembles pour l'architecture de processeur graphique GPU
Une dérivation du paradigme de réécriture de multiensembles pour l'architecture de processeur graphique GPU Gabriel Antoine Louis Paillard Ce travail a eu le soutien de la CAPES, agence brésilienne pour
Plus en détailVérification de programmes et de preuves Première partie. décrire des algorithmes
Vérification de programmes et de preuves Première partie. décrire des algorithmes Yves Bertot September 2012 1 Motivating introduction A partir des années 1940, il a été compris que l on pouvait utiliser
Plus en détailJava 1.5 : principales nouveautés
Cours 6 - TEP - UPMC - 2008/2009 p. 1/34 Java 1.5 : principales nouveautés classes paramétrées : generics encapsulation des valeurs de types primitifs : auto[un]boxing itération sur les boucles types énumérés
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é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étailPrésentation du langage et premières fonctions
1 Présentation de l interface logicielle Si les langages de haut niveau sont nombreux, nous allons travaillé cette année avec le langage Python, un langage de programmation très en vue sur internet en
Plus en détailLMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr www.cril.univ-artois.fr/~jabbour
LMI 2 Programmation Orientée Objet POO - Cours 9 Said Jabbour jabbour@cril.univ-artois.fr www.cril.univ-artois.fr/~jabbour CRIL UMR CNRS 8188 Faculté des Sciences - Univ. Artois Février 2011 Les collections
Plus en dé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étailProgramme Compte bancaire (code)
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; Programme Compte bancaire (code) namespace compte_bancaire /// Classe Program public
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é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é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étailProjet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte
Projet d informatique M1BI : Compression et décompression de texte Le but de ce projet est de coder un programme réalisant de la compression et décompression de texte. On se proposera de coder deux algorithmes
Plus en détailQuatrième partie IV. Test. Test 15 février 2008 1 / 71
Quatrième partie IV Test Test 15 février 2008 1 / 71 Outline Introduction 1 Introduction 2 Analyse statique 3 Test dynamique Test fonctionnel et structurel Test structurel Test fonctionnel 4 Conclusion
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é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étailReconstruction de bâtiments en 3D à partir de nuages de points LIDAR
Reconstruction de bâtiments en 3D à partir de nuages de points LIDAR Mickaël Bergem 25 juin 2014 Maillages et applications 1 Table des matières Introduction 3 1 La modélisation numérique de milieux urbains
Plus en détailReprésentation d un entier en base b
Représentation d un entier en base b 13 octobre 2012 1 Prérequis Les bases de la programmation en langage sont supposées avoir été travaillées L écriture en base b d un entier est ainsi défini à partir
Plus en dé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étailExamen Médian - 1 heure 30
NF01 - Automne 2014 Examen Médian - 1 heure 30 Polycopié papier autorisé, autres documents interdits Calculatrices, téléphones, traducteurs et ordinateurs interdits! Utilisez trois copies séparées, une
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étailChapitre VI- La validation de la composition.
Chapitre VI- La validation de la composition. Objectifs du chapitre : Expliquer les conséquences de l utilisation de règles de typage souples dans SEP. Présenter le mécanisme de validation des connexions
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étailAnalyse de sécurité de logiciels système par typage statique
Contexte Modélisation Expérimentation Conclusion Analyse de sécurité de logiciels système par typage statique Application au noyau Linux Étienne Millon UPMC/LIP6 Airbus Group Innovations Sous la direction
Plus en dé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étailObjets Combinatoires élementaires
Objets Combinatoires élementaires 0-0 Permutations Arrangements Permutations pour un multi-ensemble mots sous-ensemble à k éléments (Problème du choix) Compositions LE2I 04 1 Permutations Supposons que
Plus en détailFonctions homographiques
Seconde-Fonctions homographiques-cours Mai 0 Fonctions homographiques Introduction Voir le TP Géogébra. La fonction inverse. Définition Considérons la fonction f définie par f() =. Alors :. f est définie
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étailLicence Sciences et Technologies Examen janvier 2010
Université de Provence Introduction à l Informatique Licence Sciences et Technologies Examen janvier 2010 Année 2009-10 Aucun document n est autorisé Les exercices peuvent être traités dans le désordre.
Plus en détailintroduction Chapitre 5 Récursivité Exemples mathématiques Fonction factorielle ø est un arbre (vide) Images récursives
introduction Chapitre 5 Images récursives http ://univ-tln.fr/~papini/sources/flocon.htm Récursivité http://www.poulain.org/fractales/index.html Image qui se contient elle-même 1 Exemples mathématiques
Plus en détailPlan. Exemple: Application bancaire. Introduction. OCL Object Constraint Language Le langage de contraintes d'uml
OCL Object Constraint Language Le langage de contraintes d'uml Plan 1. Introduction 2. Les principaux concepts d'ocl Object Constraint Language 1 Object Constraint Language 2 Exemple: une application bancaire
Plus en dé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étailPrincipes des langages de programmation INF 321. Eric Goubault
Principes des langages de programmation INF 321 Eric Goubault 24 mars 2014 2 Table des matières 1 Introduction 7 2 Programmation impérative 11 2.1 Variables et types........................... 11 2.2 Codage
Plus en détailLes Triggers SQL. Didier DONSEZ. Université de Valenciennes Institut des Sciences et Techniques de Valenciennes donsez@univ-valenciennes.
Les Triggers SQL Didier DONSEZ Université de Valenciennes Institut des Sciences et Techniques de Valenciennes donsez@univ-valenciennes.fr 1 Sommaire Motivations Trigger Ordre Trigger Ligne Condition Trigger
Plus en détailInitiation à la programmation en Python
I-Conventions Initiation à la programmation en Python Nom : Prénom : Une commande Python sera écrite en caractère gras. Exemples : print 'Bonjour' max=input("nombre maximum autorisé :") Le résultat de
Plus en détailINTRODUCTION AUX SYSTEMES D EXPLOITATION. TD2 Exclusion mutuelle / Sémaphores
INTRODUCTION AUX SYSTEMES D EXPLOITATION TD2 Exclusion mutuelle / Sémaphores Exclusion mutuelle / Sémaphores - 0.1 - S O M M A I R E 1. GENERALITES SUR LES SEMAPHORES... 1 1.1. PRESENTATION... 1 1.2. UN
Plus en détailINF 232: Langages et Automates. Travaux Dirigés. Université Joseph Fourier, Université Grenoble 1 Licence Sciences et Technologies
INF 232: Langages et Automates Travaux Dirigés Université Joseph Fourier, Université Grenoble 1 Licence Sciences et Technologies Année Académique 2013-2014 Année Académique 2013-2014 UNIVERSITÉ JOSEPH
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étailInitiation à la Programmation en Logique avec SISCtus Prolog
Initiation à la Programmation en Logique avec SISCtus Prolog Identificateurs Ils sont représentés par une suite de caractères alphanumériques commençant par une lettre minuscule (les lettres accentuées
Plus en détailProgrammation. fonctionnelle, impérative, logique et orientée objet
Programmation fonctionnelle, impérative, logique et orientée objet Introduction Les langages de programmation permettent de décrire des calculs de façon plus abstraite qu'un programme machine. Les programmes
Plus en détailLes chaînes de caractères
Les chaînes de caractères Dans un programme informatique, les chaînes de caractères servent à stocker les informations non numériques comme par exemple une liste de nom de personne ou des adresses. Il
Plus en détailChapitre 7. Récurrences
Chapitre 7 Récurrences 333 Plan 1. Introduction 2. Applications 3. Classification des récurrences 4. Résolution de récurrences 5. Résumé et comparaisons Lectures conseillées : I MCS, chapitre 20. I Rosen,
Plus en détailAlgorithmique et Programmation Fonctionnelle
Algorithmique et Programmation Fonctionnelle RICM3 Cours 9 : Lambda-calcul Benjamin Wack Polytech 2014-2015 1 / 35 La dernière fois Typage Polymorphisme Inférence de type 2 / 35 Plan Contexte λ-termes
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é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étailApache Camel. Entreprise Integration Patterns. Raphaël Delaporte BreizhJUG 07.11.2011
Apache Camel & Entreprise Integration Patterns Raphaël Delaporte BreizhJUG 07.11.2011 1 Speaker CTO Zenika Ouest Consultant et formateur Responsable comité technique Architecture d'entreprise Domaine ESB
Plus en détailTP1 : Initiation à Java et Eclipse
TP1 : Initiation à Java et Eclipse 1 TP1 : Initiation à Java et Eclipse Systèmes d Exploitation Avancés I. Objectifs du TP Ce TP est une introduction au langage Java. Il vous permettra de comprendre les
Plus en détailCours d algorithmique pour la classe de 2nde
Cours d algorithmique pour la classe de 2nde F.Gaudon 10 août 2009 Table des matières 1 Avant la programmation 2 1.1 Qu est ce qu un algorithme?................................. 2 1.2 Qu est ce qu un langage
Plus en détailConventions d écriture et outils de mise au point
Logiciel de base Première année par alternance Responsable : Christophe Rippert Christophe.Rippert@Grenoble-INP.fr Introduction Conventions d écriture et outils de mise au point On va utiliser dans cette
Plus en détailProblème : Calcul d'échéanciers de prêt bancaire (15 pt)
Problème : Calcul d'échéanciers de prêt bancaire (15 pt) 1 Principe d'un prêt bancaire et dénitions Lorsque vous empruntez de l'argent dans une banque, cet argent (appelé capital) vous est loué. Chaque
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étailIntroduction à Java. Matthieu Herrb CNRS-LAAS. Mars 2014. http://homepages.laas.fr/matthieu/cours/java/java.pdf
Introduction à Java Matthieu Herrb CNRS-LAAS http://homepages.laas.fr/matthieu/cours/java/java.pdf Mars 2014 Plan 1 Concepts 2 Éléments du langage 3 Classes et objets 4 Packages 2/28 Histoire et motivations
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étailStructure d un programme et Compilation Notions de classe et d objet Syntaxe
Cours1 Structure d un programme et Compilation Notions de classe et d objet Syntaxe POO 1 Programmation Orientée Objet Un ensemble d objet qui communiquent Pourquoi POO Conception abstraction sur les types
Plus en détailQualité du logiciel: Méthodes de test
Qualité du logiciel: Méthodes de test Matthieu Amiguet 2004 2005 Analyse statique de code Analyse statique de code Étudier le programme source sans exécution Généralement réalisée avant les tests d exécution
Plus en détailCours Informatique Master STEP
Cours Informatique Master STEP Bases de la programmation: Compilateurs/logiciels Algorithmique et structure d'un programme Programmation en langage structuré (Fortran 90) Variables, expressions, instructions
Plus en détailPlan Pédagogique du cours
Plan Pédagogique du cours Module: Programmation Orientée Objet Section : informatique Niveau : 3 ème niveau (gestion, industriel, réseau) Volume Horaire : 22,5 heures Cours Intégrés + 45 Travaux Pratiques
Plus en détail1 Recherche en table par balayage
1 Recherche en table par balayage 1.1 Problème de la recherche en table Une table désigne une liste ou un tableau d éléments. Le problème de la recherche en table est celui de la recherche d un élément
Plus en détailRAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION)
CLASSE RACINE Object ancêtre de toutes les classes RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION) définit donc des méthodes héritées par toutes
Plus en détailObjets et Programmation. origine des langages orientés-objet
Objets et Programmation origine des langages orientés-objet modularité, encapsulation objets, classes, messages exemples en Java héritage, liaison dynamique G. Falquet, Th. Estier CUI Université de Genève
Plus en détailDG-ADAJ: Une plateforme Desktop Grid
DG-ADAJ: Une plateforme pour Desktop Grid Olejnik Richard, Bernard Toursel Université des Sciences et Technologies de Lille Laboratoire d Informatique Fondamentale de Lille (LIFL UMR CNRS 8022) Bât M3
Plus en détailCette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :
Développement d un client REST, l application Vélib 1. Présentation L application présentée permet de visualiser les disponibilités des vélos et des emplacements de parking à la disposition des parisiens
Plus en détailEvaluation des performances de programmes parallèles haut niveau à base de squelettes algorithmiques
Evaluation des performances de programmes parallèles haut niveau à base de squelettes algorithmiques (bourse EPSRC numéro GR/S21717/01) Enhancing the Perf. Predictability of Grid Appli. with Patterns and
Plus en détailLes processus 2/54. Qu est-ce qu un processus? 3(6)/54. Se souvenir 1(1)/54. Le système de fichiers (exemple du disque dur)
Se souvenir 1(1)/54 Le système de fichiers (exemple du disque dur) Qu est-ce qu un processus? 3(3)/54 Les caches (inodes et blocks) Accès à un fichier : double indirection Compteurs de références : Les
Plus en détailUML. Diagrammes de classes (suite) Delphine Longuet. delphine.longuet@lri.fr
Polytech Paris-Sud Formation initiale 3 e année Spécialité Informatique Année 2014-2015 UML Diagrammes de classes (suite) Delphine Longuet delphine.longuet@lri.fr Opérations Opérations Service qui peut
Plus en détailKL5121. Pour activer des sorties en fonction de la position d'un codeur
KL5121 Pour activer des sorties en fonction de la position d'un codeur VERSION : 1.0 / PH DATE : 07 Février 2006 Sommaire Ce manuel explique de manière pratique les étapes successives pour mettre en œuvre
Plus en détailLogique binaire. Aujourd'hui, l'algèbre de Boole trouve de nombreuses applications en informatique et dans la conception des circuits électroniques.
Logique binaire I. L'algèbre de Boole L'algèbre de Boole est la partie des mathématiques, de la logique et de l'électronique qui s'intéresse aux opérations et aux fonctions sur les variables logiques.
Plus en détailINF2015 Développement de logiciels dans un environnement Agile. Examen intra 20 février 2014 17:30 à 20:30
Examen intra 20 février 2014 17:30 à 20:30 Nom, prénom : Code permanent : Répondez directement sur le questionnaire. Question #1 5% Quelle influence peut avoir le typage dynamique sur la maintenabilité
Plus en détailStructurer ses données : les tableaux. Introduction à la programmation
Structurer ses données : les tableaux Introduction à la programmation Plan du document Introduction Introduire la notion de type Types primitifs Types composés Tableaux de type primitif Page 2 Notion de
Plus en détailIntroduction à MATLAB R
Introduction à MATLAB R Romain Tavenard 10 septembre 2009 MATLAB R est un environnement de calcul numérique propriétaire orienté vers le calcul matriciel. Il se compose d un langage de programmation, d
Plus en dé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é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étail«Dire et écrire» pour réaliser une composition en travail collaboratif en géographie. Agnès Dullin, lycée J. Racine 20 rue du Rocher, 75008 Paris
«Dire et écrire» pour réaliser une composition en travail collaboratif en géographie Agnès Dullin, lycée J. Racine 20 rue du Rocher, 75008 Paris OBJECTIFS 1- Niveau et insertion dans la programmation 2-
Plus en détailLambda! Rémi Forax Univ Paris-Est Marne-la-Vallée
Lambda! Rémi Forax Univ Paris-Est Marne-la-Vallée forax at univ-mlv dot fr - ParisJUG Java.next() - Mars 2012 What Else? Lambda == Inner class? Java a des lambdas depuis la version 1.1 Exemple utilisant
Plus en détailLogiciel Libre Cours 3 Fondements: Génie Logiciel
Logiciel Libre Cours 3 Fondements: Génie Logiciel Stefano Zacchiroli zack@pps.univ-paris-diderot.fr Laboratoire PPS, Université Paris Diderot 2013 2014 URL http://upsilon.cc/zack/teaching/1314/freesoftware/
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é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étailPaginer les données côté serveur, mettre en cache côté client
Paginer les données côté serveur, mettre en cache côté client Vous voulez sélectionner des lignes dans une table, mais celle-ci comporte trop de lignes pour qu il soit réaliste de les ramener en une seule
Plus en détailAlgorithmique et programmation : les bases (VBA) Corrigé
PAD INPT ALGORITHMIQUE ET PROGRAMMATION 1 Cours VBA, Semaine 1 mai juin 2006 Corrigé Résumé Ce document décrit l écriture dans le langage VBA des éléments vus en algorithmique. Table des matières 1 Pourquoi
Plus en détailACTIVITÉ DE PROGRAMMATION
ACTIVITÉ DE PROGRAMMATION The purpose of the Implementation Process is to realize a specified system element. ISO/IEC 12207 Sébastien Adam Une introduction 2 Introduction Ø Contenu Utilité de l ordinateur,
Plus en détailLogiciel Libre Cours 2 Fondements: Programmation
Logiciel Libre Cours 2 Fondements: Programmation Stefano Zacchiroli zack@pps.univ-paris-diderot.fr Laboratoire PPS, Université Paris Diderot 2013 2014 URL http://upsilon.cc/zack/teaching/1314/freesoftware/
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étailPour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère
L'héritage et le polymorphisme en Java Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère En java, toutes les classes sont dérivée de la
Plus en détailProgrammation C++ (débutant)/instructions for, while et do...while
Programmation C++ (débutant)/instructions for, while et do...while 1 Programmation C++ (débutant)/instructions for, while et do...while Le cours du chapitre 4 : le for, while et do...while La notion de
Plus en détailBases Java - Eclipse / Netbeans
Institut Galilée PDJ Année 2014-2015 Master 1 Environnements Java T.P. 1 Bases Java - Eclipse / Netbeans Il existe plusieurs environnements Java. Il est ESSENTIEL d utiliser la bonne version, et un environnement
Plus en détail