Analyse Statique de Programmes

Save this PDF as:
 WORD  PNG  TXT  JPG

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

Download "Analyse Statique de Programmes"

Transcription

1 Analyse statique et application. Typage. Analyse de flots de données. Exemples de transformations simples de programmes au niveau source. Prépa Agreg de Maths, option Info - ENS Cachan-Bretagne Thomas Gazagnaire 14 février 2006

2 Plan 1 Introduction Définition du problème de l analyse statique Génération des (in)équations Résolution des (in)équations Preuves de correction 2 Analyse Data-Flow Introduction Techniques mises en jeu Exemple détaillé : Liveness Analysis 3 Typage Introduction Techniques mises en jeu 4 Transformations Exemple de transformation de programme guidé par l analyse statique

3 Plan 1 Introduction Définition du problème de l analyse statique Génération des (in)équations Résolution des (in)équations Preuves de correction 2 Analyse Data-Flow Introduction Techniques mises en jeu Exemple détaillé : Liveness Analysis 3 Typage Introduction Techniques mises en jeu 4 Transformations Exemple de transformation de programme guidé par l analyse statique

4 Définition du problème de l analyse statique Analyse statique, kesako? L analyse statique d un programme consiste à analyser ce programme sans l exécuter (en opposition avec l analyse dynamique). Consiste à annoter le programme avec des informations supplémentaires Vérification : vérifie que les annotations sont cohérentes entre elles et les précisent pour qu elles soient plus pertinentes Optimisation : utilise les annotations pour améliorer le programme en le transformant

5 Définition du problème de l analyse statique Exemples d analyses statique Annotations Vérification Optimisation variable initialisée non-déterminisme accès à un tableau segfault tests de borne signe des variables code mort constante pré-calculs données typées sûreté

6 Définition du problème de l analyse statique Séparation en 2 phases Interprétation abstraite qui génére un système d équations ou de contraintes Définition d un domaine abstrait D pour les variables Génération d un système d (in)égalité C en parcourant une représentantation adaptée du programme Preuves de correction Trouver une solution (la seule, la meilleure, la plus petite,...) Décidabilité de l analyse statique Dans le cas général, le problème de l analyse statique est indécidable. On se restreint à des analyses spécifiques et décidables.

7 Génération des (in)équations Définition du domaine abstrait D Definition D est l ensemble des propriétés que certaines parties du programmes peuvent vérifier D est une abstraction du comportement normal qui se focalise sur certaines activités du programme. En général on se focalise sur des propriétés liées aux variables. Exemples : D = {< 0, > 0, = 0, } pour les signes des variables D = {, } pour la définition des variables D est souvent un treillis (pour les preuves) Utilisation du produit cartésien pour complexifier les domaines (ex : signes des variables définies)

8 Génération des (in)équations Principe général Definition A chaque (bloc d ) instruction(s) du programme on va associer une (in)équation de variables prenant valeur dans D Il existe deux grandes familles de méthodes : les équations flot de données les systèmes d inférence

9 Génération des (in)équations Equations Data-Flow On manipule des équations sur des ensembles En chaque point du programme, on va dire comment l ensemble que l on regarde évolue en fonction des exécutions dynamiques possibles du programme Exemple : analyse de la validité des définitions p : a b + c out(p) : définitions valides après le point p in(p) : définitions valides avant le point p out(p) = [in(p) \ {p i p i : a...}] {p} Plus de détails dans la 2 e partie

10 Génération des (in)équations Système de règles d inférence Approche symbolique qui s inspire des règles de sémantique opérationnelle En chaque point du programme, on ajoute des nouvelles règles de raisonnement qui ne dépendent que de la structure de l instruction courante Exemple : typage simple Γ a : int Γ b : int Γ plus : int int int Γ plus(a, b) : int Plus de détails dans la 3 e partie

11 Résolution des (in)équations Résolution des (in)équations Il existe deux familles de méthodes : Celles basées sur la résolution symbolique : possibles quand Cd n est pas trop complexe Celles basées sur des résolutions itératives : on part d un élément extrémal et on converge vers un point fixe

12 Preuves de correction Preuves Il faut montrer que l abstraction est correcte et complète. C est pour cela qu on utilise un treillis pour D car on sait dire des choses intelligentes grâce aux connections de Galois Il faut montrer que l algorithme itératif converge. Or on sait que si f, à valeur dans un treillis, est monotone alors f à un plus petit point fixe. Et si f est continue : lpf(f) = i=0 f n ( ). Si le treillis est fini, on sait que ça converge Structure de D Si D à une structure de treillis fini on est content : les preuves sont presque déjà toutes faites

13 Preuves de correction Conclusion Séparation en 2 phases : Génération d un système (in)équations C à valeur sur D Résolution de C Preuves de corrections en kit si D à une structure de treillis fini

14 Plan 1 Introduction Définition du problème de l analyse statique Génération des (in)équations Résolution des (in)équations Preuves de correction 2 Analyse Data-Flow Introduction Techniques mises en jeu Exemple détaillé : Liveness Analysis 3 Typage Introduction Techniques mises en jeu 4 Transformations Exemple de transformation de programme guidé par l analyse statique

15 Introduction Introduction On veut calculer en chaque point d exécution du programme un certain nombre de propriétés qui portent sur les variables On veut que ce soit efficace pour de très gros programmes : en général on code la propriété ensembliste à vérifier sous forme de champ de bits Exemple : On a n variables x 1... x n dans notre programme et on veut savoir à tout moment lesquelles sont utile pour la suite. On code cela dans {0, 1} n. On prend des plus gros grains d exécution (plusieurs instructions au lieu d une seule). L analyse est moins précise, mais on peut l approfondir pour certains blocs

16 Introduction Exemples classiques Une explication avec les mains des exemples classiques : Analyse de vivacité (liveness analysis) P(x) = {variables qui sont utilisées après le point x} Validité des définitions (Reaching Definitions) P(x) = {instructions qui ont définis des variables utilisables au point x} Disponibilité des expressions (Available Expressions) P(x) = {expressions utilisables au point x}

17 Techniques mises en jeu Définition des ensembles Le programme est sous forme de Graphe de Flot de Contrôle (CFG) On manipule 4 ensembles Gen est l ensemble des propriétés que le grain courant va rendre vrai Kill est l ensemble des propriétés que le grain courant va rendre faux In est l ensemble des propriétés qui sont vraies juste avant le grain courant Out est l ensemble des propriétés qui sont vraies juste après le grain courant

18 Techniques mises en jeu Génération des équations 1 opérateur de jonction qui indique comment fusionner les informations. On utilise en général des vecteurs de bits, avec un opérateur de jonction adapté. All Path : ou AND Any Path : ou OR 2 analyses possibles In(b) = Out(p) Forward : p:prédecesseurs dynamiques de b Out(b) = Gen(b) (In(b) \ Kill(b)) Out(b) = In(s) Backward : s:successeurs dynamiques de b In(b) = Gen(b) (Out(b) \ Kill(b))

19 Exemple détaillé : Liveness Analysis Présentation Vivacité v est une variable vivante si elle est définie et qu elle est potentiellement utilisée plus tard. ie, une variable v est vivante si elle est utilisée dans l instruction courante et si il existe un chemin dans le passé vers une instruction qui définit v Utilisé pour repartir les variables dans les registres réels. Graphe d Interférence : deux variables interfèrent si elles sont vivantes en même temps Utilisé pour éliminer le code mort : une variable définie et pas utilisée est inutile

20 Exemple détaillé : Liveness Analysis Formalisation du domaine Kill(s) = Def(s) = { variables affectées (définies) au noeud s} Gen(s) = Use(s) = { variables utilisées au noeud s} In(s) = { variables qui sont vivantes à l entrée du noeud s} Out(s) = { variables qui sont vivantes en sortie du noeud s} Domaine abstrait de l analyse de vivacité D = P(V) ordonné par inclusion

21 Exemple détaillé : Liveness Analysis Formalisation de la génération d équations On veut quantifier sur l existence ou non d un chemin vers une définition : on utilise l opérateur de jonction On veut quantifier dans le passé : on utilise les équations d analyse en-arrière Out(b) = In(s) s:succ(b) In(b) = Gen(b) (Out(b) \ Kill(b)) Génération d équations Pour chaque instruction du programme on génére 2 équations ensemblistes. Les constantes sont les ensembles Gen(s) et Kill(s) pour tout s, et les variables sont In(s) et Out(s). Correction et Complétude?

22 Exemple détaillé : Liveness Analysis Formalisation de la résolution du système d équations On résoud par itération successives en partant de l ensemble vide pour chaque In et Out L ordre de réduction ne change pas le résultat MAIS une stratégie partant des noeuds finaux pour remonter aux noeuds initiaux est beaucoup plus efficace en pratique Résolution du système d équations Résolution par itération jusqu à atteindre un plus petit point fixe. L algorithme converge car D est un treillis fini, f est monotone.

23 Exemple détaillé : Liveness Analysis Exemple On veut faire l analyse du code suivant : a = 0; L 1 b = a + 1 c = c + b a = b 2 if a < N goto L 1 return c

24 Exemple détaillé : Liveness Analysis Exemple : CFG On construit (au tableau) le CFG du programme B 1 : a = 0; B 2 : b = a + 1 c = c + b a = b 2 if a < N B 3 : return c B 1 B 2, B 2 B 3 et B 2 B 2

25 Exemple détaillé : Liveness Analysis Exemple : Résolution state use def 1 out 1 in 2 out 2 in 3 out 3 in 6 c c c c 5 a c ac ac ac ac ac 4 b a ac bc ac bc ac bc 3 bc c bc bc bc bc bc bc 2 a b bc ac bc ac bc ac 1 a ac c ac c ac c

26 Exemple détaillé : Liveness Analysis Conclusion D est une famille d ensembles var = {In(s), Out(s)} s et cst = {Gen(s), Kill(s)}. C = f(var, cst) Résolution : itération de F n (In(s), Out(s) ) Méthodes d accélération : opérations sur les codages plutôt que les ensembles

27 Plan 1 Introduction Définition du problème de l analyse statique Génération des (in)équations Résolution des (in)équations Preuves de correction 2 Analyse Data-Flow Introduction Techniques mises en jeu Exemple détaillé : Liveness Analysis 3 Typage Introduction Techniques mises en jeu 4 Transformations Exemple de transformation de programme guidé par l analyse statique

28 Introduction Les types, kesako? Renseignements sur les données du programme Abstraction (Curry) Spécification (Church) Associé à la valeur de la variable ou à son nom Reconnaissance des erreurs de typage Statiquement Lors de l exécution / Pas toujours Fortes garanties lors de l exécution

29 Introduction Exemples Nombreux systèmes de type type simple int, float,... types énumérés bool type somme en Caml types composés array, list pointeurs, fonctions, objets,...

30 Techniques mises en jeu Type-Checking D = {int, float, char, t t} Uniquement des contantes de type qui sont tous spécifiés par l utilisateur Vérification de l équivalence de type C = {t 1 = t 2 } Résolution simple car juste test d égalité de structures d autres techniques dures à faire entrer dans le cadre Conversions explicites (cast) Conversions implicites (coercion)

31 Techniques mises en jeu Type-Inference Constantes de type + Variables de type L utilisateur précise le moins de choses possibles, le compilateur doit deviner Le compilateur associe une variable de type T x à chaque variable x du programme Chaque constructeur génère de nouvelles contraintes sur les T x On veut savoir si le programme est typable, ie. trouver Φ : T x > c ste qui réalise C

32 Techniques mises en jeu Types monomorphes On associe à chaque variable x du programme une variable de type T x dans un environnement de typage Γ. On a un ensemble d équations C de type qu on génère en parcourant le terme à typer. Exemple : type de fun x -> x + 1 dans Γ = on type x + 1 dans Γ = {x : T x } et C = :? on type 1 dans Γ = {x : T x } et C = : int on type x dans Γ = {x : T x } et C = : T x on type x+1 dans Γ = {x : T x } et C = {T x = int} : int on type fun x -> x+1 dans Γ = et C = : int int Ici on a mélangé la génération et la résolution comme dans beaucoup d algo de résolution de système mais on peut faire plus propre

33 Techniques mises en jeu Unification La résolution des équations de type, c est le même algorithme que pour l unification en programmation logique! A 1 (int A 2 ) = (A 3 bool) A 1 se traduit en formule logique : fleche(a 1, fleche(int, A 2 ) = fleche(fleche(a 3, bool), A 1 ) Algo d unification une constante s unifie uniquement avec elle même 2 structures s unifient si elles ont le même nom, le même nombre d arguments et si les arguments s unifient entre eux une variable s unifie avec n importe quoi. Si l autre chose est une constante, la variable est instanciée. Si l autre chose est une variables, elles deviennent liées.

34 Techniques mises en jeu Type polymorphes on veut pouvoir typer : let f = fun x -> x in (f 5, f "toto") (qui est typable en caml) types polymorphes : on rajoute un niveau, les scémas de type t = cst var t t et s = var [t] vars Γ associe un schéma S x à chaque variable x algorithmes qui mélangent génération d équations et résolutions quand on rencontre un let (comme dans W,J,...) mais on peut aussi distinguer les 2 phases pour retomber sur le cadre général

35 Techniques mises en jeu Conclusion D = {t} C = { contraintes de type } Résolution : unification et itération avec différentes stratégies d évaluation

36 Plan 1 Introduction Définition du problème de l analyse statique Génération des (in)équations Résolution des (in)équations Preuves de correction 2 Analyse Data-Flow Introduction Techniques mises en jeu Exemple détaillé : Liveness Analysis 3 Typage Introduction Techniques mises en jeu 4 Transformations Exemple de transformation de programme guidé par l analyse statique

37 Exemple de transformation de programme guidé par l analyse statique On veut analyser et optimiser le bout de code suivant : int toto(int x, int y) { int u =1, v=1, z, w, k; while(v > 0) { z = 5; w = 10; x = y + w; k = 2*z; u = y; v = k + u; v = x - v; } printf("x=%s, k=%s",x,k); }

38 Exemple de transformation de programme guidé par l analyse statique On a un domaine (un peu résumé) : D = {v, c ste (int), c opy (v), e xpr (e)} Remarque : ce D est inventé pour l occasion, généralement on fait ça avec du data-flow mais c est pour l exemple v : variable dont on ne sait rien c ste (int) : constante, avec sa valeur c copy (v) : copie de la variable v (dont on ne sait rien) e xpr (e) : variable contenant une expression arithmétique, avec son expression symbolique (sous forme d arbre par exemple) Si on veut garder la consistance des types, il va falloir faire des calculs avant l exécution! x := y avec y : c ste (5) donnera x : c ste (5) et pas x : c opy (y) x := y + z avec y : c ste (5) et z : c ste (3) donnera x : c ste (8)

39 Exemple de transformation de programme guidé par l analyse statique void toto(int x, int y) { int u =1, v=1, z, w, k; while(v > 0) { z = 5; w = 10; x = y + \alert{10}; k = 2*z; u = y; v = k + u; v = w - v; } printf("x=%s k=%s",x,k); }

40 Exemple de transformation de programme guidé par l analyse statique void toto(int x, int y) { int u =1, v=1, z, w, k; while(v > 0) { z = 5; w = 10; x = y + 10; k = 2*\alert{5}; u = y; v = k + u; v = x - v; } printf("x=%s k=%s",x,k); }

41 Exemple de transformation de programme guidé par l analyse statique void toto(int x, int y) { int u =1, v=1, z, w, k; while(v > 0) { z = 5; w = 10; x = y + 10; k = \alert{10}; u = y; v = k + u; v = x - v; } printf("x=%s k=%s",x,k); }

42 Exemple de transformation de programme guidé par l analyse statique void toto(int x, int y) { int u =1, v=1, z, w, k; while(v > 0) { z = 5; w = 10; x = y + 10; k = 10; u = y; v = \alert{10 + y}; v = x - v; } printf("x=%s k=%s",x,k); }

43 Exemple de transformation de programme guidé par l analyse statique void toto(int x, int y) { int u =1, v=1, z, w, k; while(v > 0) { z = 5; w = 10; x = y + 10; k = 10; u = y; v = \alert{x}; v = x - v; } printf("x=%s k=%s",x,k); }

44 Exemple de transformation de programme guidé par l analyse statique void toto(int x, int y) { int u =1, v=1, z, w, k; while(v > 0) { z = 5; w = 10; x = y + 10; k = 10; u = y; v = x; v = \alert{0}; } printf("x=%s k=%s",x,k); }

45 Exemple de transformation de programme guidé par l analyse statique void toto(int x, int y) { int u =1, v=1, z, w, k; \alert{\* while(v > 0) { *\} z = 5; w = 10; x = y + 10; k = 10; u = y; v = x; v = 0; \alert{\* } \*} printf("x=%s k=%s",x,k); }

46 Exemple de transformation de programme guidé par l analyse statique void toto(int x, int y) { int u =1, v=1, z, w, k; z = 5; w = 10; x = y + 10; k = 10; u = y; v = x; v = 0; printf("x=%s k=%i",x,10); }

47 Exemple de transformation de programme guidé par l analyse statique Analyse de vie void toto(int x, int y) { x = y + 10; printf("x=%s k=%i",x,10); }

48 Exemple de transformation de programme guidé par l analyse statique Conclusion J ai juste marqué les transformations du programme, mais chaque transformation est dictée par une contrainte de type Les contraintes de type sont construites et immédiatement résolues On raisonne par itération, donc il se peut qu il faille entrelacer l analyse de type et l analyse de vivacité pour obtenir un point fixe (principe des compilateurs à plusieurs phases) On a du mal à reconnaître le programme initial : le compilateur prend beaucoup d initiatives (et encore on a pas tout vu)

49 Conclusion Belle théorie : un domaine abstrait D, des contraintes C générées dans une première phase, et résolution de C dans une seconde, avec des belles preuves Typage et Analyse Data-Flow : même principe venant de communautés différentes, qui permettent de faire plus ou moins la même chose (avec des preuves pour le typage, et des méthodes de résolution efficaces pour l analyse data-flow) En pratique, on mélange génération et résolution de C dans des algorithmes itératifs qui convergent plus ou moins rapidement vers un point fixe Ça ne sert à rien d optimiser à la main vos programmes, le compilateur va de toute façon complètement réécrire votre code à sa sauce : seul compte la complexité de l algorithme

50 Références HDR Analyse statique de programmes : fondements et applications de Thomas Jensen Cours de programmation Daniel Hirshckoff Cours de compilation de François Bodin Programming Language Pragmatics de Michael Scott Compilateurs de Grune, Bal et Jacobs

Master Informatique Fondamentale - M1 Compilation

Master Informatique Fondamentale - M1 Compilation Master Informatique Fondamentale - M1 Compilation Analyse Statique Paul Feautrier ENS de Lyon Paul.Feautrier@ens-lyon.fr perso.ens-lyon.fr/paul.feautrier 12 mai 2007 1 / 38 Indécidabilité de la Terminaison

Plus en détail

Master Informatique Fondamentale - M1 Compilation

Master Informatique Fondamentale - M1 Compilation Master Informatique Fondamentale - M1 Compilation Systèmes de types Paul Feautrier ENS de Lyon Paul.Feautrier@ens-lyon.fr perso.ens-lyon.fr/paul.feautrier 8 février 2007 1 / 20 Système de types Un type

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

Analyse de programme

Analyse de programme Analyse de programme À quoi ça sert? Comment ça marche? Bertrand Jeannet et Alain Girault INRIA Rhône-Alpes 25 janvier 2012 A. Girault et B. Jeannet (INRIA) Analyse de programme 25 janvier 2012 1 / 41

Plus en détail

Automatisation de la certification formelle de systèmes critiques par instrumentation d interpréteurs abstraits

Automatisation de la certification formelle de systèmes critiques par instrumentation d interpréteurs abstraits 1 d Automatisation de la certification formelle de systèmes critiques par instrumentation d sous la direction de Michaël Périn Soutenance de Thèse de Doctorat Université de Grenoble - Laboratoire Verimag

Plus en détail

nulles dans un langage à objets

nulles dans un langage à objets Prévention de déréférencement de références nulles dans un langage à objets Jean-Sébastien Gélinas, Étienne M. Gagnon, Jean Privat Université du Québec à Montréal Langages et Modèles à Objets Nancy 27

Plus en détail

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

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

Plus en détail

Résolution générique à la volée de systèmes d équations booléennes et applications

Résolution générique à la volée de systèmes d équations booléennes et applications Résolution générique à la volée de systèmes d équations booléennes et applications Radu Mateescu INRIA Rhône-Alpes / VASY Plan Introduction Systèmes d équations booléennes d alternance 1 Algorithmes de

Plus en détail

Analyse statique de programmes Typage et analyse statique au sein de Java

Analyse statique de programmes Typage et analyse statique au sein de Java Analyse statique de programmes Typage et analyse statique au sein de Java Master Professionnel Informatique spécialité FSIL/FSI Jean-Marc Talbot jean-marc.talbot@lif.univ-mrs.fr Aix-Marseille Université

Plus en détail

Une introduction au langage C++ Marc Jachym, Lurpa

Une introduction au langage C++ Marc Jachym, Lurpa Une introduction au langage C++ Marc Jachym, Lurpa Janvier 2008 À l origine, le langage C Langage procédural créé dans les années 1970 aux laboratoires Bell (ATT : télécoms américains) en vue d écrire

Plus en détail

Machine de Turing. Informatique II Algorithmique 1

Machine de Turing. Informatique II Algorithmique 1 Machine de Turing Nous avons vu qu un programme peut être considéré comme la décomposition de la tâche à réaliser en une séquence d instructions élémentaires (manipulant des données élémentaires) compréhensibles

Plus en détail

Claude Delannoy. Exercices C++ en langage. 3 e édition. Groupe Eyrolles, 1997, 1999, 2007, ISBN : 978-2-212-12201-5

Claude Delannoy. Exercices C++ en langage. 3 e édition. Groupe Eyrolles, 1997, 1999, 2007, ISBN : 978-2-212-12201-5 Claude Delannoy Exercices en langage C++ 3 e édition Groupe Eyrolles, 1997, 1999, 2007, ISBN : 978-2-212-12201-5 Chapitre 3 Les fonctions Rappels Généralités Une fonction est un bloc d instructions éventuellement

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

Objectifs du cours d aujourd hui. Informatique I : Cours d introduction à l informatique et à la programmation Structures de Données Abstraites & Tris

Objectifs du cours d aujourd hui. Informatique I : Cours d introduction à l informatique et à la programmation Structures de Données Abstraites & Tris Objectifs du cours d aujourd hui Informatique I : Cours d introduction à l informatique et à la programmation Structures de Données Abstraites & Tris Continuer l approfondissement de la programmation de

Plus en détail

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles) 1/4 Objectif de ce cours /4 Objectifs de ce cours Introduction au langage C - Cours Girardot/Roelens Septembre 013 Du problème au programme I passer d un problème exprimé en français à la réalisation d

Plus en détail

FSAB 1402 - Suggestions de lecture

FSAB 1402 - Suggestions de lecture FSAB 1402 - Suggestions de lecture 2006 Concepts, techniques and models of computer programming Cours 1 - Intro Chapitre 1 (sections 1.1, 1.2, 1.3, pages 1-3) Introduction aux concepts de base Chapitre

Plus en détail

Analyse de programmes par interprétation abstraite

Analyse de programmes par interprétation abstraite Analyse de programmes par interprétation abstraite Marc PEGON marc.pegon@ensimag.imag.fr Ensimag - Grenoble INP Encadrants David MONNIAUX Matthieu MOY 1 / 21 Analyse statique : obtenir automatiquement

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

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

Analyse de sécurité de logiciels système par typage statique Contexte Modélisation Expérimentation Conclusion Analyse de sécurité de logiciels système par typage statique Application au noyau Linux Étienne Millon UPMC/LIP6 Airbus Group Innovations Sous la direction

Plus en détail

Programmation objet en Java.

Programmation objet en Java. Programmation objet en Java. Didier Rémy 2001-2002 http://cristal.inria.fr/ remy/mot/7/ http://www.enseignement.polytechnique.fr/profs/informatique/didier.remy/mot/7/ Cours Exercices Slide 1 1. Classes,

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

Auto-évaluation Programmation en Java

Auto-évaluation Programmation en Java Auto-évaluation Programmation en Java Document: f0883test.fm 22/01/2013 ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium TRAINING & CONSULTING INTRODUCTION AUTO-ÉVALUATION PROGRAMMATION EN

Plus en détail

UE C avancé cours 1: introduction et révisions

UE C avancé cours 1: introduction et révisions Introduction Types Structures de contrôle Exemple UE C avancé cours 1: introduction et révisions Jean-Lou Desbarbieux et Stéphane Doncieux UMPC 2004/2005 Introduction Types Structures de contrôle Exemple

Plus en détail

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

Plus en détail

Algorithmique et Analyse d Algorithmes

Algorithmique et Analyse d Algorithmes Algorithmique et Analyse d Algorithmes L3 Info Cours 5 : Structures de données linéaires Benjamin Wack 2015-2016 1 / 37 La dernière fois Logique de Hoare Dichotomie Aujourd hui Type Abstrait de Données

Plus en détail

Programmation avancée

Programmation avancée Programmation avancée Chapitre 1 : Complexité et les ABR (arbres binaires de recherche) 1 1 IFSIC Université de Rennes-1 M2Crypto, octobre 2011 Plan du cours 1 2 3 4 5 6 7 8 9 10 Algorithmes Définition

Plus en détail

Machines composées de (depuis 1940 env.) : http://cui.unige.ch/isi/cours/std/

Machines composées de (depuis 1940 env.) : http://cui.unige.ch/isi/cours/std/ données pr ogramme 11111101 11001101 01000101 b us disque ma gnétique processeur écran Structures de données et algorithmes Ordinateurs Gilles Falquet, printemps-été 2002 Machines composées de (depuis

Plus en détail

Présentation du langage et premières fonctions

Présentation du langage et premières fonctions 1 Présentation de l interface logicielle Si les langages de haut niveau sont nombreux, nous allons travaillé cette année avec le langage Python, un langage de programmation très en vue sur internet en

Plus en détail

Analyse abstraite de missions sous PILOT

Analyse abstraite de missions sous PILOT Analyse abstraite de missions sous PILOT Damien Massé EA 3883, Université de Bretagne Occidentale, Brest damien.masse@univ-brest.fr Résumé Nous étudions la possibilité de réaliser un analyseur par interprétation

Plus en détail

Mieux programmer en Java

Mieux programmer en Java Mieux programmer en Java Peter Haggar Éditions Eyrolles ISBN : 2-212-09171-0 2000 PARTIE 1 l exécution de l instruction return, cependant, le contrôle est transféré au bloc finally en // 2. Cela provoque

Plus en détail

LIF1 : ALGORITHMIQUE ET PROGRAMMATION IMPÉRATIVE, INITIATION

LIF1 : ALGORITHMIQUE ET PROGRAMMATION IMPÉRATIVE, INITIATION Licence STS Université Claude Bernard Lyon I LIF1 : ALGORITHMIQUE ET PROGRAMMATION IMPÉRATIVE, INITIATION 1 COURS 7 : Structures et Fichiers OBJECTIFS DE LA SÉANCE Deux notions abordées dans ce cours Celle

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

CHAPITRE 3 : Types de base, Opérateurs et Expressions

CHAPITRE 3 : Types de base, Opérateurs et Expressions CHAPITRE 3 : Types de base, Opérateurs et Expressions 1. Types simples Un type définit l'ensemble des valeurs que peut prendre une variable, le nombre d'octets à réserver en mémoire et les opérateurs que

Plus en détail

Compilation séparée. Compilation séparée. ENSIIE: Programmation avancée, Compilation séparée, Modularité, Spécifications algébriques 1

Compilation séparée. Compilation séparée. ENSIIE: Programmation avancée, Compilation séparée, Modularité, Spécifications algébriques 1 Compilation séparée Compilation séparée ENSIIE: Programmation avancée, Compilation séparée, Modularité, Spécifications algébriques 1 Compilation séparée Modularité GCC : 4 millions de lignes de code Noyau

Plus en détail

} 7 Variables (composantes)

} 7 Variables (composantes) Chapitre 4 Tableaux Jusqu ici, nous avons employé les variables pour stocker les valeurs individuelles de types primitifs : une variable de type int pour stocker un entier, une variable de type boolean

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

Langage procédural C

Langage procédural C Langage procédural Le langage C Laboratoire ISIR (email: ouarti@isir.upmc.fr) 2012 Qu est ce qu un algorithme Ici nous n étudierons que les algorithmes séquentiels Chaque instruction se fait l une à la

Plus en détail

1. Les fondements de l informatique 13

1. Les fondements de l informatique 13 Introduction à l'algorithmique 1. Les fondements de l informatique 13 1.1 Architecture de Von Neumann 13 1.2 La machine de Turing 17 1.3 Représentation interne des instructions et des données 19 1.3.1

Plus en détail

UPMC Master informatique 2 STL NI503 Conception de langages Notes I

UPMC Master informatique 2 STL NI503 Conception de langages Notes I UPMC Master informatique 2 STL NI503 Conception de langages Notes I 2012 1 Évaluer Un langage Le langage Logo est composé commandes permettant de diriger le déplacement d un point sur un plan cartésien

Plus en détail

GL / C++ Chapitre 7. Lien Dynamique Méthodes Virtuelles

GL / C++ Chapitre 7. Lien Dynamique Méthodes Virtuelles GL / C++ Chapitre 7 Lien Dynamique Méthodes Virtuelles 1. Pointeur sur un objet d'une classe dérivée Considérons les classes écrites précédemment : Personne Etudiant // dérive de personne Salarie // dérive

Plus en détail

Typage et Analyse Statique

Typage et Analyse Statique Typage et Analyse Statique Cours 1 Emmanuel Chailloux Spécialité Science et Technologie du Logiciel Master mention Informatique Université Pierre et Marie Curie année 2015-2016 Cours 1 - Typage et Analyse

Plus en détail

3ETI, Examen [CSC2] Developpement Logiciel en C CPE Lyon

3ETI, Examen [CSC2] Developpement Logiciel en C CPE Lyon 3ETI, Examen [CSC2] Developpement Logiciel en C CPE Lyon 2013-2014 (1ere session) durée 3h Tous documents et calculatrices autorisés. Répondez aux questions sur une copie séparée Le sujet comporte 12 pages

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

Chapitre 1 Introduction

Chapitre 1 Introduction Chapitre 1 Introduction Jean Privat Université du Québec à Montréal INF7330 Construction de logiciels Diplôme d études supérieures spécialisées en systèmes embarqués Automne 2012 Jean Privat (UQAM) 01

Plus en détail

Heuristique et métaheuristique. 8. Optimisation combinatoire et métaheuristiques. Optimisation combinatoire. Problème du voyageur de commerce

Heuristique et métaheuristique. 8. Optimisation combinatoire et métaheuristiques. Optimisation combinatoire. Problème du voyageur de commerce Heuristique et métaheuristique IFT1575 Modèles de recherche opérationnelle (RO) 8. Optimisation combinatoire et métaheuristiques Un algorithme heuristique permet d identifier au moins une solution réalisable

Plus en détail

Cours de compilation

Cours de compilation Cours de compilation 1 Introduction Un compilateur est un logiciel de traduction d un langage source vers un langage cible. D ordinaire le langage source est un langage de programmation évolué, comme C++

Plus en détail

Algorithmique Partie 1

Algorithmique Partie 1 Algorithmique Partie 1 IUT Informatique de Lens, 1ère Année Université d Artois Frédéric Koriche koriche@cril.fr 2011 - Semestre 1 Modalités Sommaire 1 Modalités 2 Programmation 3 Données 4 Opérateurs

Plus en détail

Introduction au débogage avec Eclipse

Introduction au débogage avec Eclipse Introduction au débogage avec Eclipse C. Pain-Barre et H. Garreta IUT INFO Année 2006-2007 1 Notion de debogage Tout développeur est confronté un jour à un programme qui plante pour une raison apparemment

Plus en détail

LES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN

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

Plus en détail

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

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

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

Plus en détail

TD n 1 - Tests de couverture en langage C

TD n 1 - Tests de couverture en langage C ENSEIRB Année 201-2014 ème année IT06 TD n 1 - Tests de couverture en langage C Résumé : Cette feuille compare les différentes techniques de test structurel et fonctionnel, ainsi que les aspects du test

Plus en détail

Rapport de TER: Analyse de pointeur dans LLVM

Rapport de TER: Analyse de pointeur dans LLVM Rapport de TER: Analyse de pointeur dans LLVM Aurélien CHEMIER Janvier-Février 2014 Résumé Les optimisations réalisées à l intérieur d un compilateur, pour améliorer l efficacité du code généré, ont besoin

Plus en détail

Méthodes de test. Mihaela Sighireanu

Méthodes de test. Mihaela Sighireanu UFR d Informatique Paris 7, LIAFA, 175 rue Chevaleret, Bureau 6A7 http://www.liafa.jussieu.fr/ sighirea/cours/methtest/ Partie I 1 Propriétés 2 Un peu de génie logiciel de test 3 Eléments Problèmes Point

Plus en détail

Introduction Tableaux / Vecteurs Listes chaînées Un principe général Quelques algorithmes de tri À faire pour lundi prochain. Tableaux VS Listes

Introduction Tableaux / Vecteurs Listes chaînées Un principe général Quelques algorithmes de tri À faire pour lundi prochain. Tableaux VS Listes Tableaux VS Listes Tableaux VS Listes Petit chapitre. Plan Introduction Tableaux / Vecteurs Définition abstraite Qu a-t-on fait avec des vecteurs? Que peut-on faire avec des vecteurs? Listes chaînées Définition

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

Apprendre à programmer

Apprendre à programmer La résolution des problèmes est traitée suivant le cycle de développement analyse conception codage. L analyse du problème conduit à la conception d un algorithme répondant aux exigences exprimées. Chaque

Plus en détail

Notion d indirection (1) 1

Notion d indirection (1) 1 Notion d indirection (1) 1 Illustration 1: Pourquoi garder une copie des fichiers postscript du cours dans mon répertoire, si je sais où se trouve l original sur le web? pour accéder à l original au cas

Plus en détail

Le langage C. Séance n 4

Le langage C. Séance n 4 Université Paris-Sud 11 Institut de Formation des Ingénieurs Remise à niveau INFORMATIQUE Année 2007-2008 Travaux pratiques d informatique Le langage C Séance n 4 But : Vous devez maîtriser à la fin de

Plus en détail

Certifying an Automated Code Generator Using Formal Tools

Certifying an Automated Code Generator Using Formal Tools Certifying an Automated Code Generator Using Formal Tools Preliminary experiments in the GeneAuto Project N. Izerrouken, X. Thirioux, M. Pantel, M. Strecker IRIT-ACADIE Continental Automotive Toulouse,

Plus en détail

Conception et Développement Orientés Objets Cours 1 : Introduction. 2 Les paradigmes de programmation. 3 Les concepts de la programmation objet

Conception et Développement Orientés Objets Cours 1 : Introduction. 2 Les paradigmes de programmation. 3 Les concepts de la programmation objet CNAM UV 19357 Année 2003-2004 David Delahaye David.Delahaye@cnam.fr Conception et Développement Orientés Objets Cours 1 : Introduction 1 Présentation de la valeur Ce cours s adresse à toute personne ayant

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

Principes de la programmation impérative

Principes de la programmation impérative Séquence d instructions Variables et types Types élaborés Procédures, arguments Gestion de la mémoire Langage compilé, interprété Principes de la programmation impérative Séquence d instructions Variables

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

Projet de Programmation Fonctionnelle

Projet de Programmation Fonctionnelle 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

Plus en détail

Mini-Projet de Prolog : Solver de Sudoku

Mini-Projet de Prolog : Solver de Sudoku UNIVERSITE François Rabelais TOURS Polytech Tours-Département Informatique 64, Avenue Jean Portalis 37200 TOURS Mini-Projet de Prolog : Solver de Sudoku Encadré par : Présenté par : M. J-L Bouquard Florent

Plus en détail

2. Comprendre les définitions de classes

2. Comprendre les définitions de classes Conception objet en Java avec BlueJ une approche interactive 2. Comprendre les définitions de classes Analyser le contenu des classes David J. Barnes, Michael Kölling version française: Patrice Moreaux

Plus en détail

Représentation des nombres entiers et réels. en binaire en mémoire

Représentation des nombres entiers et réels. en binaire en mémoire L3 Mag1 Phys. fond., cours C 15-16 Rep. des nbs. en binaire 25-09-05 23 :06 :02 page 1 1 Nombres entiers 1.1 Représentation binaire Représentation des nombres entiers et réels Tout entier positif n peut

Plus en détail

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

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

Plus en détail

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if Pierre Boudes 28 septembre 2011 This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike

Plus en détail

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

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

Plus en détail

Système de Gestion de Fichiers

Système de Gestion de Fichiers Chapitre 2 Système de Gestion de Fichiers Le système de gestion de fichiers est un outil de manipulation des fichiers et de la structure d arborescence des fichiers sur disque et a aussi le rôle sous UNIX

Plus en détail

Introduction au langage C

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

Plus en détail

Exclusion Mutuelle. Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 9 février 2011

Exclusion Mutuelle. Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 9 février 2011 Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr Université de Provence 9 février 2011 Arnaud Labourel (Université de Provence) Exclusion Mutuelle 9 février 2011 1 / 53 Contexte Epistémologique

Plus en détail

Cours de Master Recherche

Cours de Master Recherche Cours de Master Recherche Spécialité CODE : Résolution de problèmes combinatoires Christine Solnon LIRIS, UMR 5205 CNRS / Université Lyon 1 2007 Rappel du plan du cours 16 heures de cours 1 - Introduction

Plus en détail

TD 5 LES POINTEURS. Définition: Pointeur

TD 5 LES POINTEURS. Définition: Pointeur TD 5 LES POINTEURS d'après le site de F. Faber http://www.ltam.lu/tutoriel_ansi_c Définition: Pointeur Un pointeur est une variable spéciale qui peut contenir l'adresse d'une autre variable. En C, chaque

Plus en détail

Le mot «algorithme» vient du nom de l auteur persan Al-Khuwarizmi (né vers 780 - mort vers 850) Une définition: «un algorithme est une suite finie de

Le mot «algorithme» vient du nom de l auteur persan Al-Khuwarizmi (né vers 780 - mort vers 850) Une définition: «un algorithme est une suite finie de Le mot «algorithme» vient du nom de l auteur persan Al-Khuwarizmi (né vers 780 - mort vers 850) Une définition: «un algorithme est une suite finie de règles à appliquer dans un ordre déterminé à un nombre

Plus en détail

Algorithmique et Programmation, IMA 3

Algorithmique et Programmation, IMA 3 Algorithmique et Programmation, IMA 3 Cours 4 : Vecteurs/Tableaux Université Lille 1 - Polytech Lille Vecteurs et Tableaux Algorithmes sur les tableaux d entiers Algorithmes de mots Tableaux2d - Matrices

Plus en détail

Avant-propos. 1. Introduction

Avant-propos. 1. Introduction Avant-propos Les sections ou sous-sections marquées d un astérisque (*) ne font pas partie de la matière du cours IFT1969. Elles sont destinées à définir complètement le langage C (ANSI-C99) et à en préciser

Plus en détail

renforcer le contrôle de type :

renforcer le contrôle de type : renforcer le contrôle de type : définitions, prototypes de fonctions surcharge références conversions de void * préférer le compilateur au préprocesseur considérer les entrées/sorties opérations abstraites

Plus en détail

Génie Logiciel I. Cours VII - La S.T.L. et les conteneurs. Nicolas Kielbasiewicz C.D.C.S.P./I.S.T.I.L./I.C.J. Filière M.A.M. 2ème année - 08/09

Génie Logiciel I. Cours VII - La S.T.L. et les conteneurs. Nicolas Kielbasiewicz C.D.C.S.P./I.S.T.I.L./I.C.J. Filière M.A.M. 2ème année - 08/09 Génie Logiciel I Cours VII - La S.T.L. et les conteneurs Nicolas Kielbasiewicz C.D.C.S.P./I.S.T.I.L./I.C.J. Filière M.A.M. 2ème année - 08/09 Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie

Plus en détail

Analyse statique de SCADE par interprétation abstraite

Analyse statique de SCADE par interprétation abstraite Analyse statique de SCADE par interprétation abstraite soutenance de stage Alex AUVOLAT ANSYS-Esterel Technologies sous l encadrement de Jean-Louis Colaço Juin-Juillet 2014 1/33 Introduction SCADE : programmation

Plus en détail

Java : Programmation Impérative

Java : Programmation Impérative 1 Java : Programmation Impérative Résumé du cours précédent (I11) Paradigme impératif Algorithmique simple Découpage fonctionnel Qu est-ce qu un programme informatique? / un langage de programmation? /

Plus en détail

Encryptions, compression et partitionnement des données

Encryptions, compression et partitionnement des données Encryptions, compression et partitionnement des données Version 1.0 Grégory CASANOVA 2 Compression, encryption et partitionnement des données Sommaire 1 Introduction... 3 2 Encryption transparente des

Plus en détail

P R O G R A M M E E T I N S T R U C T I O N S O F F I C I E L L E S

P R O G R A M M E E T I N S T R U C T I O N S O F F I C I E L L E S P R O G R A M M E E T I N S T R U C T I O N S O F F I C I E L L E S POUR L ENSEIGNEMENT DE L INFORMATIQUE MPSI première année I. Objectifs de la formation II-1 Développement de compétences et d aptitudes

Plus en détail

Organisation des données et structures de stockage

Organisation des données et structures de stockage ING2 - ING3 Nvx 2009-2010 Organisation des données et structures de stockage I. Stockage de l information en C Ce chapitre rappelle brièvement et complète certaines notions de base vues en première année

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

3ETI, Examen [CSC2] Developpement Logiciel en C CPE Lyon

3ETI, Examen [CSC2] Developpement Logiciel en C CPE Lyon 3ETI, Examen [CSC2] Developpement Logiciel en C CPE Lyon 2012-2013 (2eme session) durée 2h Tous documents et calculatrices autorisés. Le sujet comporte 6 pages Le temps approximatif ainsi que le barème

Plus en détail

PLAN DU COURS ENTRÉE SORTIE FONCTION PRINTF. Fonction de la bibliothèque stdio.h. Affichage d'un texte:

PLAN DU COURS ENTRÉE SORTIE FONCTION PRINTF. Fonction de la bibliothèque stdio.h. Affichage d'un texte: PLAN DU COURS Introduction au langage C Notions de compilation Variables, types, constantes, Tableaux, opérateurs Entrées sorties de base Structures de contrôle Algorithmes de recherche Algorithmes de

Plus en détail

Présentation du programme d informatique

Présentation du programme d informatique Présentation du programme d informatique UPS 31 mai 2015 Table des matières 1 Introduction 2 1.1 Présentation.................................. 2 1.2 Représentation des nombres.........................

Plus en détail

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

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application Université de Provence Licence Math-Info Première Année V. Phan Luong Algorithmique et Programmation en Python Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application 1 Ordinateur Un

Plus en détail

Projet Pratique de INF241 Parcours de Tableaux

Projet Pratique de INF241 Parcours de Tableaux Projet Pratique de INF241 Parcours de Tableaux L objectif de ce projet est de travailler sur les tableaux en langage d assemblage ARM. Vous devez réaliser votre projet en partie lors des séances encadrées

Plus en détail

Programmation récursive

Programmation récursive Année 2004-2005 F. Lévy IUT De Villetaneuse Dép t informatique Cours d'algorithmique 2 éme Année Cours 8 Programmation récursive 1. Qu'est-ce que la programmation récursive Définition : la programmation

Plus en détail

Apprentissage par exploration

Apprentissage par exploration Apprentissage par exploration 1/32 Introduction Méthode particulière d acquisition de connaissance : apprentissage artificiel, à partir d induction. obtention des connaissances à partir d exemples. On

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

Tri en Python. # on cherche k tel que a k = min(a j ) ji

Tri en Python. # on cherche k tel que a k = min(a j ) ji Tri en Python On considère ici des tableaux ou listes d entiers ou de ottants. En Python, on peut trier une liste à l aide de la méthode sort : si a est une liste d entiers ou de ottants, a.sort() modi

Plus en détail

ATELIER ALGORITHME PREMIERS PAS Journée d information sur les nouveaux programmes de Première S-ES 2010-2011

ATELIER ALGORITHME PREMIERS PAS Journée d information sur les nouveaux programmes de Première S-ES 2010-2011 Pour me contacter : irene.rougier@ac-clermont.fr 1. Introduction ATELIER ALGORITHME PREMIERS PAS Journée d information sur les nouveaux programmes de Première S-ES 2010-2011 De nombreux documents et informations

Plus en détail

Les ordinateurs dispositifs électroniques fonctionnant sur la principe de création, transmission et conversion d impulses électriques

Les ordinateurs dispositifs électroniques fonctionnant sur la principe de création, transmission et conversion d impulses électriques Les ordinateurs dispositifs électroniques fonctionnant sur la principe de création, transmission et conversion d impulses électriques Les informations traitées par l ordinateur (nombres, instructions,

Plus en détail

Chapitre 6. Modélisation en P.L.I. 6.1 Lien entre PL et PLI. 6.1.1 Approximation de la PLI

Chapitre 6. Modélisation en P.L.I. 6.1 Lien entre PL et PLI. 6.1.1 Approximation de la PLI Chapitre 6 Modélisation en P.L.I. 6.1 Lien entre PL et PLI (P) problème de PL. On restreint les variables à être entières : on a un problème de PLI (ILP en anglais). On restreint certaines variables à

Plus en détail

PRINCIPES et METHODES de SPECIFICATION et de CONCEPTION GLOBALE des SYSTEMES INFORMATISES 10/20/02 1

PRINCIPES et METHODES de SPECIFICATION et de CONCEPTION GLOBALE des SYSTEMES INFORMATISES 10/20/02 1 PRINCIPES et METHODES de SPECIFICATION et de CONCEPTION GLOBALE des SYSTEMES INFORMATISES 10/20/02 1 CYCLE de VIE des SYSTEMES INFORMATISES Expression du besoin Développement du «système» Exploitation

Plus en détail