Les listes. Chapitre Les listes en Caml Propriétés de base des listes de Caml

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

Download "Les listes. Chapitre Les listes en Caml Propriétés de base des listes de Caml"

Transcription

1 Chapitre 6 Les listes La structure de liste est l'une des plus fondamentale en programmation. 6.1 Les listes en Caml La structure de liste est dénie dans le langage Caml de base 1. Une première façon de construire une liste est d'en écrire explicitement l'énumération de ses éléments. Exemple 1 : En voici quelques exemples : # [3 ; 2 ; 1 ; 3] ;; - : int list = [3; 2; 1; 3] # [true ; false ; false ] ;; - : bool list = [true; false; false] # [ a ; b ] ;; - : char list = [ a ; b ] # [( a, 1) ; ( b, 2)] ;; - : (char * int) list = [( a, 1); ( b, 2)] # [[2.5 ; -1.3] ; [0.] ; [sqrt(2.) ; sin(1.)]] ;; - : float list list = [[2.5; -1.3]; [0.]; [ ; ]] Tirons quelques enseignements de ces exemples Propriétés de base des listes de Caml Les listes peuvent être de longueur quelconque Tout d'abord les listes peuvent contenir n'importe quel nombre d'éléments. Les exemples qui précèdent montrent dans l'ordre une liste de quatre éléments, une liste de trois éléments, une liste de deux éléments, encore une liste de deux éléments, et enn une liste de trois éléments. Une liste peut aussi être vide. 1. c'estàdire dans le module Pervasives 1

2 2 CHAPITRE 6. LES LISTES # [] ;; - : a list = [] Le nombre d'éléments que contient une liste est appelé longueur de la liste. Le module List de la bibliothèque standard d'objective Caml déclare une fonction length qui renvoie la longueur de la liste passée en paramètre. Les listes sont typées Comme dans d'autres langages de programmation, mais aussi contrairement à d'autres langages (comme Lisp par exemple), les éléments d'une liste en Caml se doivent d'être tous du même type. Les listes de l'exemple 1 sont dans l'ordre 1. une liste d'entiers : int list ; 2. une liste de booléens : bool list ; 3. une liste de caractères : char list ; 4. une liste de couples : (char int) list ; 5. et une liste de listes d'entiers : int list list. Le type générique d'une liste est a list, où a désigne le type des éléments de la liste. Si la liste est vide, ce type a n'est pas instancié. La liste vide est polymorphe. Il n'est pas possible de construire une liste contenant des éléments de types diérents. # [1 ; true] ;; Error: This expression has type bool but an expression was expected of type int Les listes ressemblent aux tableaux mais... En Caml, il existe peu de diérences syntaxiques entre la déclaration explicite d'une liste et celle d'un tableau. Exemple 2 : # let l = [1; 4; 1; 5] and t = [ 1; 4; 1; 5 ];; val l : int list = [1; 4; 1; 5] val t : int array = [ 1; 4; 1; 5 ] # List.length l;; - : int = 4 # Array.length t ;; - : int = 4 Dans cet exemple, l est une liste de 4 entiers (int list) dénie par énumération de ses éléments entre de simples crochets [... ], tandis que t est un tableau de 4 entiers (int list) lui aussi déni par énumération de ses éléments mais entre [... ].

3 6.1. LES LISTES EN CAML 3... elles ne sont pas des tableaux Les listes se distinguent des tableaux essentiellement sur trois points 1. Il n'y a pas d'accès direct aux éléments d'une liste avec une notation indicielle comme pour les tableaux. 2. Il n'est pas possible de modier la valeur d'un élément d'une liste sans reconstruire tout ou partie de la liste. En Caml, les listes ne sont pas des structures de données mutables contrairement aux tableaux et aux chaînes de caractères. 3. Comme on le verra par la suite, il est peu coûteux de construire une liste en ajoutant un élément à une liste existante, tandis que la même opération avec les tableaux nécessite une recopie du tableau existant. Listes Tableaux Type a list a array Construction par [x 1 ; x 2 ;... ; x n ] [ x 1 ; x 2 ;... ; x n ] énumération Structure vide [] [ ] Accès direct aux éléments Non Oui Structure dynamique Oui Non Structure mutable Non Oui Table 6.1 Comparaison listes / tableaux Le constructeur :: Si le seul moyen de construire une liste était l'énumération explicite de tous ses éléments, il serait fastidieux de construire de grandes listes, mais il serait aussi et surtout impossible de les obtenir par programme. Le constructeur permettant de construire des listes par programme est noté :: (double deux points). x :: l Syntaxe : Constructeur de listes avec x de type a et l de type a list. On l'utilise comme un opérateur dont l'opérande droit (l) est une liste, et l'opérande gauche (x) est une expression du même type que les éléments de la liste. Cette construction construit une nouvelle liste dont le premier élément, ou élément de tête, est x, et dont les autres éléments, le reste, sont ceux de la liste l. Exemple 3 : 3. Voici comment construire une liste l2 obtenue en ajoutant 3 en tête de la liste l de l'exemple # let l2 = 3 :: l ;; val l2 : int list = [3; 1; 4; 1; 5] À titre de comparaison, voici comment faire l'opération analogue avec des tableaux.

4 4 CHAPITRE 6. LES LISTES # let t2 = let n = Array.length t in let t = Array.make (n + 1) 3 in for i = 1 to n do t.(i) <- t.(i - 1) done ; t ;; val t2 : int array = [ 3; 1; 4; 1; 5 ] Ce constructeur, accompagné de la constante liste vide, permet de construire n'importe quelle liste. Exemple 4 : La liste [3; 2; 1; 3] peut être obtenue en ajoutant 3 en tête de la liste [2; 1; 3]. # 3 :: [2; 1; 3] ;; - : int list = [3; 2; 1; 3] Mais la liste [2; 1; 3] peut elle aussi être obtenue par le même procédé. # 3 :: (2 :: [1; 3]) ;; - : int list = [3; 2; 1; 3] Notons qu'on peut se dispenser des parenthèses. # 3 :: 2 :: [1; 3] ;; - : int list = [3; 2; 1; 3] Évidemment on peut poursuivre avec la liste [1; 3], # 3 :: 2 :: 1 :: [3] ;; - : int list = [3; 2; 1; 3] et la liste [3]. # 3 :: 2 :: 1 :: 3 :: [] ;; - : int list = [3; 2; 1; 3] La liste vide ne peut pas être obtenue à l'aide du constructeur ::. Le procédé s'arrête là. Toute liste non vide [x 1 ; x 2 ;... ; x n ] peut être construite à partir de la liste vide et du constructeur ::. [x 1 ; x 2 ;... ; x n ] = x 1 :: x 2 ::... :: x n :: []. Il est parfois nécessaire de parenthéser les expressions intervenant dans la construction d'une liste. Dans les bons cas, l'oubli du parenthésage peut provoquer des erreurs. # 1 :: [] :: [] ;; Error: This expression has type a list but an expression was expected of type int # (1 :: []) :: [] ;; - : int list list = [[1]] Pire, l'oubli peut donner des résultats complètement diérents.

5 6.1. LES LISTES EN CAML 5 # a, 1 :: [] ;; - : char * int list = ( a,[1]) # ( a, 1) :: [] ;; - : (char * int) list = [( a, 1)] Filtrage de motifs de listes Le principal, si ce n'est le seul, moyen d'accéder aux éléments d'une liste est le ltrage de motifs. Le constructeur :: est autorisé dans les motifs utilisés pour ltrer une expression. Exemple 5 : Voici comment obtenir l'élément en tête d'une liste non vide. # match [3; 1; 4] with x :: _ -> x ;; Warning P: this pattern-matching is not exhaustive. Here is an example of a value that is not matched: [] - : int = 3 Le motif est x :: _ qui ltre toutes les listes ayant au moins un élément (les listes non vides). Le motif x ltre l'élément de tête, élément qui est celui souhaité et renvoyé (-> x). Le motif universel _ est utilisé pour ltrer le reste de la liste qui ne nous intéresse pas. L'avertissement ( Warning) donné par l'interpréteur signale la non exhaustivité du ltrage, puisque seules les listes non vides sont ltrées. Pour éviter cet avertissement, il est nécessaire de rendre complet le ltrage en introduisant une clause concernant la liste vide pour laquelle notre expression déclenche une exception. # match [3; 1; 4] with x :: _ -> x _ -> failwith "liste vide!" ;; - : int = 3 # match [3; 1; 4] with x :: _ -> x _ -> failwith "liste vide!" ;; Exception: Failure "liste vide!". De la même façon on peut obtenir le reste d'une liste. # match [3; 1; 4] with _ :: l -> l ;; _ -> failwith "liste vide!" ;; - : int list = [1; 4] On peut à partir de cette exemple, dénir deux fonctions l'une qui donne la tête d'une liste et l'autre le reste. Dans le cas où la liste est vide, ces fonctions ne sont pas dénies et déclenchent une exception. let tete l = match l with x :: _ -> x

6 6 CHAPITRE 6. LES LISTES _ -> failwith "tete : liste vide" let reste l = match l with _ :: l -> l _ -> failwith "reste : liste vide" Deux fonctions du module List donnent aussi la tête et le reste d'une liste. Ce sont respectivement les fonctions hd (pour head) et tl (pour tail). Si maintenant on souhaite le second élément d'une liste qui en contient au moins deux, nous avons deux possibilités : 1. soit par ltrage de motifs, # match [3; 1; 4] with _ :: x :: _ -> x _ -> failwith "liste vide!" ;; - : int = 1 2. soit en utilisant les deux fonctions tete et reste. # tete (reste [3; 1; 4]) ;; - : int = Le module List Le module List de la bibliothèque standard d'objective Caml dénit un certain nombre de fonctions sur les listes. Le tableau 6.2 en cite quelques unes. Fonction CU Rôle hd : a list -> a liste non vide renvoie la tête (head) de la liste. tl : a list -> a list liste non vide renvoie le reste (tail) de la liste. length : a list -> int aucune renvoie la longueur de la liste. map : ( a -> b) -> a list -> b list aucune renvoie une liste contenant les images des éléments. Table 6.2 Quelques fonctions du module List 6.2 La structure de données liste Dénition récursive de la structure de liste Dénition 1 Une liste est une suite nie éventuellement vide d'éléments. Dénition 2 Une liste est soit la liste vide () ; soit un couple (x, l) où

7 6.2. LA STRUCTURE DE DONNÉES LISTE 7 x est le premier élément de la liste qu'on appelle la tête, et l est une liste contenant les éléments qui suivent x, liste qu'on appelle reste. Cette dénition est récursive, puisque les listes non vides sont dénies par construction d'un couple dont la deuxième composante est elle-même une liste. En notant Liste(E) l'ensemble de toutes les listes dont les éléments appartiennent à un ensemble E xé, Liste(E) est le plus petit ensemble contenant la liste vide () et stable par la création de couples (x, l), avec x E et l Liste(E). Autrement dit, Liste(E) est le plus petit ensemble X, au sens de l'inclusion, vériant l'équation X = {()} (E X) Les opérations primitives Les deux constructeurs Toute liste peut être construite à partir de deux constructeurs seulement : la liste vide qui est une constante, et une opération d'ajout d'un élément en tête d'une liste, opération que nous nommerons ajoute_en_tete et dénirons comme étant la fonction ajoute_en_tete : E Liste(E) Liste(E) x, l (x, l). Les deux sélecteurs L'accès à n'importe quel élément d'une liste peut être obtenu avec deux sélecteurs seulement : une opération donnant la tête d'une liste non vide, que nous nommerons tete et dénirons comme la fonction tete : Liste(E) E (x, l)) x. CU : liste non vide et une opération donnant le reste d'une liste non vide, que nous nommerons reste et dénirons comme la fonction reste : Liste(E) E (x, l)) l CU : liste non vide. Lien entre les opérations primitives Pour tout élément x E et toute liste l Liste(E), on a tete(ajoute_en_tete(x, l)) = x reste(ajoute_en_tete(x, l)) = l, et pour toute liste non vide l Liste(E) on a ajoute_en_tete(tete(l), reste(l)) = l.

8 8 CHAPITRE 6. LES LISTES Interface d'un module Liste Bien qu'il soit inutile de le faire puisque les listes sont prédénies en Caml, nous allons construire un module Liste pour dénir un type a liste avec les opérations primitives qui l'accompagnent. En voici la partie interface (chier liste.mli). type a liste exception Liste_vide val liste_vide : a liste val ajoute_en_tete : a -> a liste -> a liste val tete : a liste -> a val reste : a liste -> a liste val est_vide : a liste -> bool Une implémentation triviale de ce module consiste à poser type a liste = a list les constructeurs et sélecteurs s'en déduisant immédiatement. La section qui suit montre une autre implémentation possible. 6.3 Une implémentation Il serait probablement possible de donner une réalisation du type liste à l'aide d'un tableau comme nous l'avons fait pour les piles et les les. Mais ce n'est pas de cette façon qu'en général les liste sont implémentées. Comme on l'a vu dans la section précédente, la structure de données abstraite liste a une dénition récursive. Idéalement, toute réalisation concrète du type liste doit donc reéter ce caractère récursif. Le langage Caml permet de le faire aisément Réalisation du type Une liste étant soit la liste vide, soit un couple (a, l) où a est l'élément de tête de la liste, et l le reste, il est naturel de réaliser le type liste par un type somme à deux constructeurs : 1. Vide pour la liste vide, ce constructeur étant constant, 2. et Cons 2 pour les listes non vides, ce constructeur s'appliquant à un couple. Ainsi on peut déclarer le type type a liste = Vide Cons of a * a liste 2. Le choix de ce nom vient de son usage courant pour les listes. C'est en particulier ce nom qui est choisi dans des langages comme Lisp ou Scheme.

9 6.4. ALGORITHMES SUR LES LISTES 9 Cette déclaration de type est récursive puisque le type a liste se dénit à l'aide de luimême. C'est une possibilité oerte par le langage que nous retrouverons pour dénir les arbres binaires (cf chapitre??) Réalisation des opérations primitives La liste vide est tout simplement la valeur Vide. let liste_vide = Vide L'ajout en tête d'un élément à une liste, s'obtient avec le constructeur Cons. let ajoute_en_tete a l = Cons (a,l) On obtient la tête d'une liste par simple ltrage de motif, ainsi que le reste. let tete l = match l with Vide -> raise Liste_vide Cons (a,_) -> a let reste l = match l with Vide -> raise Liste_vide Cons (_,l) -> l Enn, le prédicat pour tester la vacuité d'une liste est réalisé par comparaison de la liste à la liste vide. let est_vide l = l = Vide 6.4 Algorithmes sur les listes La structure récursive des listes amène très souvent une formulation récursive des algorithmes de traitement des listes Algorithmes de parcours de listes Longueur d'une liste let rec longueur l = match l with _::l -> 1 + longueur l _ -> 0 Cette fonction n'est pas récursive terminale. On peut assez facilement en donner une version récursive terminale (cf exercices).

10 10 CHAPITRE 6. LES LISTES Accès à un élément d'une liste let n_ieme l n = match l with x::l -> if n = O then x else n_ieme l (n - 1) _ -> raise Liste_vide Algorithmes de constructions de listes Construction de listes d'entiers consécutifs let rec genere_liste_decroissante n = if n = 0 then [] else n :: (genere_liste_decroissante (n - 1)) let genere_liste_croissante n = let rec aux k acc = if k = 0 then acc else aux (k - 1) (k :: acc) in aux n [] 6.5 Trier une liste Comme pour les tableaux, trier une liste c'est construire une liste contenant les mêmes éléments que la liste à trier, mais rangés dans un ordre voulu. Par exemple, trier la liste d'entiers [3; 1; 4; 1; 5] dans l'ordre croissant, c'est construire la liste [1; 1; 3; 4; 5]. Comme pour les tableaux, le module List ore une fonction de tri des listes. C'est la fonction sort (comme pour les tableaux). Cependant il existe une diérence entre la fonction de tri d'un tableau et celle pour une liste. Diérence que déjà mentionne le type de chacune de ces deux fonctions. Voici ce que donne la documentation du module Array pour la fonction sort de tri d'un tableau : val sort : ( a -> a -> int) -> a array -> unit et celle du module List pour la fonction de même nom pour trier une liste : val sort : ( a -> a -> int) -> a list -> a list Les deux fonctions prennent toutes deux deux arguments : la fonction de comparaison en premier ;

11 6.5. TRIER UNE LISTE 11 la structure de donnée à trier en second. Mais la fonction de tri d'un tableau renvoie la seule valeur de type unit, tandis que celle d'une liste renvoie une liste. Cette distinction provient des caractères mutable d'un tableau et non mutable d'une liste. Quand on trie un tableau, on peut déplacer les éléments du tableau pour les ranger ailleurs dans le même tableau par des instructions du type t.(i) <- t.(j). La fonction Array.sort opère de cette façon ce qui fait que le tableau après le tri n'est plus le même que le tableau avant le tri. # let t = [ 3; 1; 4; 1; 5 ] ;; val t : int array = [ 3; 1; 4; 1; 5 ] # Array.sort compare t ;; - : unit = () # t ;; - : int array = [ 1; 1; 3; 4; 5 ] Le tri d'un tableau se fait à l'intérieur du tableau, et modie le tableau passé en paramètre. Tandis que le tri d'une liste construit une nouvelle liste sans modier la liste passée en paramètre. # let l = [3; 1; 4; 1; 5] ;; val l : int list = [3; 1; 4; 1; 5] # List.sort compare l ;; - : int list = [1; 1; 3; 4; 5] # l ;; - : int list = [3; 1; 4; 1; 5] Tri par insertion Algorithme 6.1 Tri par insertion d'une liste Entrée : l une liste à trier Sortie : l une liste triée contenant les mêmes éléments que l. 1: si l est vide alors 2: renvoyer la liste vide 3: sinon 4: trier (par insertion) le reste de l pour obtenir une liste triée l 5: renvoyer la liste obtenue en insérant l'élément de tête de l dans l 6: n si Tri par fusion

12 12 CHAPITRE 6. LES LISTES Algorithme 6.2 Insertion d'un élément dans une liste triée Entrée : l une liste triée, et x un élément à insérer Sortie : l une liste triée contenant x et tous les éléments de l si l est vide alors renvoyer la liste (x) sinon soit y = tete(l) et l = reste(l) si x y alors renvoyer ajoute_en_tete(x, l) sinon soit l 1 la liste obtenue en insérant x dans l renvoyer ajoute_en_tete(y, l 1 ) n si n si Algorithme 6.3 Tri par fusion d'une liste Entrée : l une liste à trier Sortie : l une liste triée contenant les mêmes éléments que l. 1: si l est vide ou n'a qu'un seul élément alors 2: renvoyer l 3: sinon 4: séparer l en deux listes l 1 et l 2 de même longueur à un élément près 5: trier (par fusion) chacune des des deux listes l 1 et l 2 pour obtenir deux listes l 1 et l 2 6: fusionner les deux listes l 1 et l 2 en une liste l 7: renvoyer l 8: n si Algorithme 6.4 Séparation d'une liste en deux listes de même longueur Entrée : l une liste Sortie : (l 1, l 2 ) un couple de listes de même longueur à 1 élément près, dont les éléments sont ceux de l 1: si l est vide alors 2: renvoyer ((), ()) 3: sinon si l n'a qu'un seul élément x alors 4: renvoyer ((x), ()) 5: sinon 6: soit x et y les deux éléments en tête de l et l la liste des éléments qui suivent 7: soit (l 1, l 2 ) le couple de listes obtenu en séparant l 8: renvoyer (ajoute_en_tete(x, l 1 ), ajoute_en_tete(y, l 2 )) 9: n si

13 6.5. TRIER UNE LISTE 13 Algorithme 6.5 Fusion de deux listes triées Entrée : l 1 et l 2 deux listes triées Sortie : l une liste triée contenant tous les éléments de l 1 et l 2 1: si l 1 est vide alors 2: renvoyer l 2 3: sinon si l 2 est vide alors 4: renvoyer l 1 5: sinon 6: soit x 1 = tete(l 1 ) et l 1 = reste(l 1 ) 7: soit x 2 = tete(l 2 ) et l 2 = reste(l 2 ) 8: si x 1 x 2 alors 9: soit l la liste obtenue en fusionnant l 1 et l 2 10: renvoyer ajoute_en_tete(x 1, l ) 11: sinon 12: soit l la liste obtenue en fusionnant l 1 et l 2 13: renvoyer ajoute_en_tete(x 2, l ) 14: n si 15: n si

Recherche dans un tableau

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

Plus en détail

length : A N add : Z Z Z (n 1, n 2 ) n 1 + n 2

length : 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étail

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

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme Rappel Ralf Treinen Université Paris Diderot UFR Informatique Laboratoire Preuves, Programmes et Systèmes treinen@pps.univ-paris-diderot.fr 6 mai 2015 Jusqu'à maintenant : un petit langage de programmation

Plus en détail

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

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

Plus en détail

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

# 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étail

UEO11 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. 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étail

Classes et Objets en Ocaml.

Classes 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étail

I. Introduction aux fonctions : les fonctions standards

I. Introduction aux fonctions : les fonctions standards Chapitre 3 : Les fonctions en C++ I. Introduction aux fonctions : les fonctions standards A. Notion de Fonction Imaginons que dans un programme, vous ayez besoin de calculer une racine carrée. Rappelons

Plus en détail

modules & compilation

modules & 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étail

Chapitre 10. Les interfaces Comparable et Comparator 1

Chapitre 10. Les interfaces Comparable et Comparator 1 Chapitre 10: Les interfaces Comparable et Comparator 1/5 Chapitre 10 Les interfaces Comparable et Comparator 1 1 Ce chapitre a été extrait du document "Objets, Algorithmes, Patterns" de [René Lalement],

Plus en détail

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

IN 102 - Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C IN 102 - Cours 1 Qu on le veuille ou non, les systèmes informatisés sont désormais omniprésents. Même si ne vous destinez pas à l informatique, vous avez de très grandes chances d y être confrontés en

Plus en détail

Cours de Programmation 2

Cours de Programmation 2 Cours de Programmation 2 Programmation à moyenne et large échelle 1. Programmation modulaire 2. Programmation orientée objet 3. Programmation concurrente, distribuée 4. Programmation monadique 5. Les programmes

Plus en détail

Algorithmique et Programmation, IMA

Algorithmique et Programmation, IMA Algorithmique et Programmation, IMA Cours 2 : C Premier Niveau / Algorithmique Université Lille 1 - Polytech Lille Notations, identificateurs Variables et Types de base Expressions Constantes Instructions

Plus en détail

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

Problème : Calcul d'échéanciers de prêt bancaire (15 pt)

Problè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é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

Programmation C++ (débutant)/instructions for, while et do...while

Programmation 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étail

chapitre 4 Nombres de Catalan

chapitre 4 Nombres de Catalan chapitre 4 Nombres de Catalan I Dénitions Dénition 1 La suite de Catalan (C n ) n est la suite dénie par C 0 = 1 et, pour tout n N, C n+1 = C k C n k. Exemple 2 On trouve rapidement C 0 = 1, C 1 = 1, C

Plus en détail

Machines virtuelles fonctionnelles (suite) Compilation ML Java

Machines 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étail

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

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

Plus en détail

Vé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 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étail

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

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

Plus en détail

Peut-on tout programmer?

Peut-on tout programmer? Chapitre 8 Peut-on tout programmer? 8.1 Que peut-on programmer? Vous voici au terme de votre initiation à la programmation. Vous avez vu comment représenter des données de plus en plus structurées à partir

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

1. Qu'est-ce que SQL?... 2. 2. La maintenance des bases de données... 2. 3. Les manipulations des bases de données... 5

1. Qu'est-ce que SQL?... 2. 2. La maintenance des bases de données... 2. 3. Les manipulations des bases de données... 5 1. Qu'est-ce que SQL?... 2 2. La maintenance des bases de données... 2 2.1 La commande CREATE TABLE... 3 2.2 La commande ALTER TABLE... 4 2.3 La commande CREATE INDEX... 4 3. Les manipulations des bases

Plus en détail

Initiation à la programmation en Python

Initiation à 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étail

TP3 : Creation de tables 1 seance

TP3 : Creation de tables 1 seance Universite de Versailles IUT de Velizy - Algorithmique 2005/2006 TP3 : Creation de tables 1 seance Objectif : Creation et modication de tables dans une base de donnees. Avant de commencer ce TP, terminer

Plus en détail

1.6- Génération de nombres aléatoires

1.6- Génération de nombres aléatoires 1.6- Génération de nombres aléatoires 1- Le générateur aléatoire disponible en C++ 2 Création d'un générateur aléatoire uniforme sur un intervalle 3- Génération de valeurs aléatoires selon une loi normale

Plus en détail

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

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs) Modularité Extensions Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs) généricité modules de première classe : peuvent être

Plus en détail

L'instruction if permet d'exécuter des instructions différentes selon qu'une condition est vraie ou fausse. Sa forme de base est la suivante:

L'instruction if permet d'exécuter des instructions différentes selon qu'une condition est vraie ou fausse. Sa forme de base est la suivante: 420-183 Programmation 1 8. Les structures conditionnelles Dans l'écriture de tout programme informatique, une des premières nécessités que nous rencontrons est de pouvoir faire des choix. Dans une application

Plus en détail

Introduction. I Étude rapide du réseau - Apprentissage. II Application à la reconnaissance des notes.

Introduction. I Étude rapide du réseau - Apprentissage. II Application à la reconnaissance des notes. Introduction L'objectif de mon TIPE est la reconnaissance de sons ou de notes de musique à l'aide d'un réseau de neurones. Ce réseau doit être capable d'apprendre à distinguer les exemples présentés puis

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

Utilisation d objets : String et ArrayList

Utilisation d objets : String et ArrayList Chapitre 6 Utilisation d objets : String et ArrayList Dans ce chapitre, nous allons aborder l utilisation d objets de deux classes prédéfinies de Java d usage très courant. La première, nous l utilisons

Plus en détail

SHERLOCK 7. Version 1.2.0 du 01/09/09 JAVASCRIPT 1.5

SHERLOCK 7. Version 1.2.0 du 01/09/09 JAVASCRIPT 1.5 SHERLOCK 7 Version 1.2.0 du 01/09/09 JAVASCRIPT 1.5 Cette note montre comment intégrer un script Java dans une investigation Sherlock et les différents aspects de Java script. S T E M M E R I M A G I N

Plus en détail

Cours Informatique Master STEP

Cours 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étail

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

INTRODUCTION A JAVA. Fichier en langage machine Exécutable INTRODUCTION A JAVA JAVA est un langage orienté-objet pur. Il ressemble beaucoup à C++ au niveau de la syntaxe. En revanche, ces deux langages sont très différents dans leur structure (organisation du

Plus en détail

Compte-rendu de projet de Système de gestion de base de données

Compte-rendu de projet de Système de gestion de base de données Compte-rendu de projet de Système de gestion de base de données Création et utilisation d'un index de jointure LAMBERT VELLER Sylvain M1 STIC Université de Bourgogne 2010-2011 Reponsable : Mr Thierry Grison

Plus en détail

Examen Médian - 1 heure 30

Examen 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étail

Cours Langage C/C++ Programmation modulaire

Cours Langage C/C++ Programmation modulaire Cours Langage C/C++ Programmation modulaire Thierry Vaira BTS IRIS Avignon tvaira@free.fr «v0.1 Rappel Programmation modulaire (1/2) Le découpage d'un programme en sous-programmes est appelée programmation

Plus en détail

Arbres binaires de recherche

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

Plus en détail

Table des matières. 10 Gimp et le Web. Option de traitement d'images Mémento pour la séance N o 8. 10.1 Création d'animation

Table des matières. 10 Gimp et le Web. Option de traitement d'images Mémento pour la séance N o 8. 10.1 Création d'animation Université de NiceSophia Antipolis Semaine du 26 novembre 2007 Licence de Sciences de la vie, semestre 1 Option de traitement d'images Mémento pour la séance N o 8 Table des matières 10 Gimp et le Web

Plus en détail

1. Structure d'un programme FORTRAN 95

1. Structure d'un programme FORTRAN 95 FORTRAN se caractérise par la nécessité de compiler les scripts, c'est à dire transformer du texte en binaire.(transforme un fichier de texte en.f95 en un executable (non lisible par un éditeur) en.exe.)

Plus en détail

Table des matières. Introduction

Table des matières. Introduction Table des matières 1 Formalisation des virus informatiques 2 1.1 Les machines de Turing........................ 2 1.2 Formalisation de Fred Cohen..................... 2 1.2.1 Définition d un virus informatique..............

Plus en détail

Java Licence Professionnelle CISII, 2009-10

Java Licence Professionnelle CISII, 2009-10 Java Licence Professionnelle CISII, 2009-10 Cours 4 : Programmation structurée (c) http://www.loria.fr/~tabbone/cours.html 1 Principe - Les méthodes sont structurées en blocs par les structures de la programmation

Plus en détail

Mysql. Les requêtes préparées Prepared statements

Mysql. Les requêtes préparées Prepared statements Mysql Les requêtes préparées Prepared statements Introduction Les prepared statements côté serveur sont une des nouvelles fonctionnalités les plus intéressantes de MySQL 4.1 (récemment sorti en production

Plus en détail

RapidMiner. Data Mining. 1 Introduction. 2 Prise en main. Master Maths Finances 2010/2011. 1.1 Présentation. 1.2 Ressources

RapidMiner. Data Mining. 1 Introduction. 2 Prise en main. Master Maths Finances 2010/2011. 1.1 Présentation. 1.2 Ressources Master Maths Finances 2010/2011 Data Mining janvier 2011 RapidMiner 1 Introduction 1.1 Présentation RapidMiner est un logiciel open source et gratuit dédié au data mining. Il contient de nombreux outils

Plus en détail

PROBLEMES D'ORDONNANCEMENT AVEC RESSOURCES

PROBLEMES D'ORDONNANCEMENT AVEC RESSOURCES Leçon 11 PROBLEMES D'ORDONNANCEMENT AVEC RESSOURCES Dans cette leçon, nous retrouvons le problème d ordonnancement déjà vu mais en ajoutant la prise en compte de contraintes portant sur les ressources.

Plus en détail

Généralités sur le Langage Java et éléments syntaxiques.

Généralités sur le Langage Java et éléments syntaxiques. Généralités sur le Langage Java et éléments syntaxiques. Généralités sur le Langage Java et éléments syntaxiques....1 Introduction...1 Genéralité sur le langage Java....1 Syntaxe de base du Langage...

Plus en détail

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

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

Plus en détail

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

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

Plus en détail

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

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

Plus en détail

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

Plan du cours : Zippers. Des fonctions sur les listes avec position. Des fonctions sur les listes avec position Plan du cours : Le problème : naviguer efficacement une structure de données Ce qui ne marche pas Ce qui marche : les de Huet Exemples Comment dériver des pour tout type de données Pour en savoir plus

Plus en détail

Langage Java. Classe de première SI

Langage Java. Classe de première SI Langage Java Table des matières 1. Premiers pas...2 1.1. Introduction...2 1.2. Mon premier programme...2 1.3. Les commentaires...2 2. Les variables et les opérateurs...2 3. La classe Scanner...3 4. Les

Plus en détail

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation : Algorithmique et programmation : STRUCTURES DE DONNÉES A. Structure et enregistrement 1) Définition et rôle des structures de données en programmation 1.1) Définition : En informatique, une structure de

Plus en détail

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

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

Plus en détail

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

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

Plus en détail

Seance 2: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu.

Seance 2: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu. Seance 2: Complétion du code de jeu. (durée max: 2h) Mot clé const et pointeurs: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu. Implémentez jeu_recupere_piece

Plus en détail

Découverte de Python

Découverte de Python Découverte de Python Python est un des langages informatiques au programme des concours à partir de la session 2015. Ce tutoriel vous permettra de vous mettre à peu près à niveau de ce qui a été fait en

Plus en détail

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

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

Plus en détail

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

UE Programmation Impérative Licence 2ème Année 2014 2015 UE Programmation Impérative Licence 2 ème Année 2014 2015 Informations pratiques Équipe Pédagogique Florence Cloppet Neilze Dorta Nicolas Loménie prenom.nom@mi.parisdescartes.fr 2 Programmation Impérative

Plus en détail

TP : Shell Scripts. 1 Remarque générale. 2 Mise en jambe. 3 Avec des si. Systèmes et scripts

TP : Shell Scripts. 1 Remarque générale. 2 Mise en jambe. 3 Avec des si. Systèmes et scripts E3FI ESIEE Paris Systèmes et scripts B. Perret TP : Shell Scripts 1 Remarque générale Lorsque vous cherchez des informations sur Internet, n'oubliez pas que langage de shell script que nous avons vu correspond

Plus en détail

Programmation. fonctionnelle, impérative, logique et orientée objet

Programmation. 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étail

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

Travaux pratiques. Compression en codage de Huffman. 1.3. Organisation d un projet de programmation Université de Savoie Module ETRS711 Travaux pratiques Compression en codage de Huffman 1. Organisation du projet 1.1. Objectifs Le but de ce projet est d'écrire un programme permettant de compresser des

Plus en détail

MODE D'EMPLOI DE LA CALCULATRICE POUR LES COURTS SÉJOURS DANS L'ESPACE SCHENGEN

MODE D'EMPLOI DE LA CALCULATRICE POUR LES COURTS SÉJOURS DANS L'ESPACE SCHENGEN MODE D'EMPLOI DE LA CALCULATRICE POUR LES COURTS SÉJOURS DANS L'ESPACE SCHENGEN 1. Introduction Le règlement (UE) n 610/2013 du 26 juin 2013 a modifié la convention d'application de l'accord de Schengen,

Plus en détail

Logiciel Libre Cours 3 Fondements: Génie Logiciel

Logiciel 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étail

Conventions d écriture et outils de mise au point

Conventions 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étail

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

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40 Déroulement du cours Introduction Concepts Java Remarques Langage et Concepts de Programmation Orientée-Objet Gauthier Picard École Nationale Supérieure des Mines de Saint-Étienne gauthier.picard@emse.fr

Plus en détail

Les arbres binaires de recherche

Les 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étail

Initiation à la Programmation en Logique avec SISCtus Prolog

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

Plus en détail

STAGE IREM 0- Premiers pas en Python

STAGE IREM 0- Premiers pas en Python Université de Bordeaux 16-18 Février 2014/2015 STAGE IREM 0- Premiers pas en Python IREM de Bordeaux Affectation et expressions Le langage python permet tout d abord de faire des calculs. On peut évaluer

Plus en détail

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

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

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions Cours d introduction à l informatique Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions Qu est-ce qu un Une recette de cuisine algorithme? Protocole expérimental

Plus en détail

Cours d Algorithmique et de Langage C 2005 - v 3.0

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

Plus en détail

LibreOffice Calc : introduction aux tableaux croisés dynamiques

LibreOffice Calc : introduction aux tableaux croisés dynamiques Fiche logiciel LibreOffice Calc 3.x Tableur Niveau LibreOffice Calc : introduction aux tableaux croisés dynamiques Un tableau croisé dynamique (appelé Pilote de données dans LibreOffice) est un tableau

Plus en détail

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

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

Plus en détail

Cours 14 Les fichiers

Cours 14 Les fichiers Cours 14 Les fichiers F. Gayral 1 Fichier : définition /media/travaux/documents/fgenseignement/java1/courstpsfgfc/14-fichiers/voirtypefichiers Fichier = ensemble d informations codées et stockées sur une

Plus en détail

Paginer 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 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étail

TP 1. Prise en main du langage Python

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

Plus en détail

Télécom Nancy Année 2013-2014

Télécom Nancy Année 2013-2014 Télécom Nancy Année 2013-2014 Rapport 1A Ajout du langage C dans la Programmer's Learning Machine GIANNINI Valentin Loria 615, rue du Jardin Botanique 54600, Villers-Lès-Nancy Maître de stage : QUINSON

Plus en détail

Stockage du fichier dans une table mysql:

Stockage du fichier dans une table mysql: Stockage de fichiers dans des tables MYSQL avec PHP Rédacteur: Alain Messin CNRS UMS 2202 Admin06 30/06/2006 Le but de ce document est de donner les principes de manipulation de fichiers dans une table

Plus en détail

Les deux points les plus proches

Les deux points les plus proches MPSI Option Informatique Année 2001, Deuxième TP Caml Vcent Simonet (http://cristal.ria.fr/~simonet/) Les eux pots les plus proches Lors e cette séance, nous allons nous téresser au problème suivant :

Plus en détail

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

Pré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étail

TD3: tableaux avancées, première classe et chaînes

TD3: tableaux avancées, première classe et chaînes TD3: tableaux avancées, première classe et chaînes de caractères 1 Lestableaux 1.1 Élémentsthéoriques Déclaration des tableaux Pour la déclaration des tableaux, deux notations sont possibles. La première

Plus en détail

INF2015 Développement de logiciels dans un environnement Agile. Examen intra 20 février 2014 17:30 à 20:30

INF2015 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étail

Le Langage De Description De Données(LDD)

Le Langage De Description De Données(LDD) Base de données Le Langage De Description De Données(LDD) Créer des tables Décrire les différents types de données utilisables pour les définitions de colonne Modifier la définition des tables Supprimer,

Plus en détail

TP 1 : 1 Calculs en binaire, octal et hexadécimal

TP 1 : 1 Calculs en binaire, octal et hexadécimal Univ. Lille 1 - Licence Informatique 2ème année 2013-14 Objectifs du TP Ce TP a pour but Codage de l'information TP 1 : 1. de découvrir quelques opérations logiques sur les nombres 2. et quelques formats

Plus en détail

OCL - Object Constraint Language

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

Plus en détail

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT Ces exercices portent sur les items 2, 3 et 5 du programme d informatique des classes préparatoires,

Plus en détail

Atelier C TIA Portal CTIA04 : Programmation des automates S7-300 Opérations numériques

Atelier C TIA Portal CTIA04 : Programmation des automates S7-300 Opérations numériques Atelier C TIA Portal CTIA04 : Programmation des automates S7-300 Opérations numériques CTIA04 Page 1 1. Les types de données sous S7 300 Il existe plusieurs types de données utilisées pour la programmation

Plus en détail

Conception de circuits numériques et architecture des ordinateurs

Conception de circuits numériques et architecture des ordinateurs Conception de circuits numériques et architecture des ordinateurs Frédéric Pétrot Année universitaire 2014-2015 Structure du cours C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 Codage des nombres en base 2, logique

Plus en détail

Diagramme de classes

Diagramme de classes Diagramme de classes Un diagramme de classes décrit les classes et leurs relations (associations, généralisation/spécialisation, ). classe association méthodes attributs héritage Diagramme de classes :

Plus en détail

Chapitre VI- La validation de la composition.

Chapitre 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étail

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

Génie Logiciel avec Ada. 4 février 2013 Génie Logiciel 4 février 2013 Plan I. Généralités II. Structures linéaires III. Exceptions IV. Structures arborescentes V. Dictionnaires I. Principes II. Notions propres à la POO I. Principes Chapitre

Plus en détail

1. Introduction... 2. 2. Création d'une macro autonome... 2. 3. Exécuter la macro pas à pas... 5. 4. Modifier une macro... 5

1. Introduction... 2. 2. Création d'une macro autonome... 2. 3. Exécuter la macro pas à pas... 5. 4. Modifier une macro... 5 1. Introduction... 2 2. Création d'une macro autonome... 2 3. Exécuter la macro pas à pas... 5 4. Modifier une macro... 5 5. Création d'une macro associée à un formulaire... 6 6. Exécuter des actions en

Plus en détail

Perl Console. Votre compagnon pour développer en Perl. Les Journées du Perl 2007 16, 17 novembre, Lyon. Alexis Sukrieh <sukria@sukria.

Perl Console. Votre compagnon pour développer en Perl. Les Journées du Perl 2007 16, 17 novembre, Lyon. Alexis Sukrieh <sukria@sukria. Perl Console Votre compagnon pour développer en Perl Les Journées du Perl 2007 16, 17 novembre, Lyon Alexis Sukrieh Plan Pourquoi une console? Le modèle «Read-Eval-Print-Loop» Dépendances

Plus en détail

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

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

Plus en détail

TP : Gestion d une image au format PGM

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

Plus en détail

Les chaînes de caractères

Les 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étail