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

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

Download "# 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 = "

Transcription

1 94 Programmation en OCaml 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 la liste composée d abord des éléments de l1 (dans le même ordre) puis des éléments de l2 (dans le même ordre). Par exemple, concat [1 ; 2] [3 ; 4] doit calculer la liste [1 ; 2 ; 3 ; 4]. Cette liste se met aussi sous la forme 1::[2 ; 3 ; 4], on remarque que c est exactement le résultat de l expression 1::(concat [2] [3 ; 4]), et [2] est le reste de la liste initiale [1 ; 2]. Ceci nous suggère la solution récursive suivante : # 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> # concat ["a"; "b"; "c"] ["d"; "ef"];; - : string list = ["a"; "b"; "c"; "d"; "ef"] # concat [1; 2; 3] [];; - : int list = [1; 2; 3] # let l = [3; 4] in concat l l;; - : int list = [3; 4; 3; 4] Cette fonction est prédéfinie en OCaml : (concat l1 l2) s écrit l2 en utilisant la primitive de OCaml. Elle existe également dans le module List de la bibliothèque standard, sous le nom append Manipulation de listes triées Dans cette partie, nous isolons deux fonctions qui travaillent, non pas avec des listes quelconques, mais avec des listes triées. Une liste est dite triée si ses éléments apparaissent dans la liste dans l ordre croissant (ou décroissant) selon une certaine relation d ordre. De telles listes sont fréquentes : par exemple un dictionnaire, le fichier des élèves d une promotion etc. Nous développons deux opérations, celle de la recherche d un élément dans une liste triée et celle de l insertion d un élément dans une liste triée. La première opération peut bien sûr être réalisée au moyen de la fonction appartient précédente, qui traite de n importe quelle liste, triée ou non. Mais on peut proposer un algorithme plus astucieux et plus efficace en moyenne, qui exploite la caractéristique liste triée. De même, la fonction d insertion reconstruit une liste triée en plaçant le nouvel élément à sa place dans la liste.

2 Listes Recherche d un élément dans une liste triée Lorsque l on recherche un élément dans une liste triée, par exemple un mot dans un dictionnaire, il est alors inutile de poursuivre, non seulement quand on a trouvé l élément recherché, mais aussi quand on a dépassé son emplacement possible, c està-dire quand on a trouvé un élément strictement plus grand. En effet, la liste étant triée dans l ordre croissant, tous les éléments qui suivent sont, eux aussi, plus grands, donc aucune chance de trouver l élément recherché parmi ceux-ci. Par exemple, on arrête de chercher le mot googler, issu du jargon Internet, dans le Petit Larousse 2003, quand on a atteint le mot gopak 1. Ainsi, on écrit la fonction app triée qui recherche un élément dans une liste déjà triée en ordre croissant : # let rec app_triée e l = match l with [] -> false x::l -> e=x (e>x && (app_triée e l ));; val app_triée : a -> a list -> bool = <fun> # app_triée 0 [1; 2; 3];; - : bool = false # app_triée 2 [1; 2; 3];; - : bool = true # app_triée "googler" ["gonze"; "gopak"; "gopura"];; - : bool = false Si la liste n est pas ordonnée selon l ordre croissant, alors app triée peut rendre un résultat incorrect comme le montre l exemple suivant : # app_triée 2 [3; 2; 1];; - : bool = false Insertion dans une liste triée Écrivons à présent la fonction insérer qui insère un élément e «à sa place» dans une liste triée dans l ordre croissant. L expression «à sa place» signifie que la liste résultat est également triée dans l ordre croissant. Par exemple on insère toto entre titi et tutu dans une liste de mots ordonnée selon l ordre alphabétique. L algorithme pour l insertion s appuie sur un raisonnement similaire à celui mis en œuvre pour la recherche dans une liste triée. On s intéresse ici à une liste, l, triée dans 1. gopak : danse folklorique ukrainienne, gopura : pavillon pyramidal des temples hindouistes, dans le sud de l Inde, Le Petit Larousse 2003.

3 96 Programmation en OCaml l ordre croissant. Si la liste est vide, l insertion se fait sans difficulté : le résultat est la liste singleton contenant le nouvel élément, cette liste résultat est bien évidemment triée. Si la liste est non vide, si son élément de tête est plus grand que l élément à insérer, e, on peut sans conteste placer ce dernier en tête de l, la liste e::l, résultat de l insertion, est bien triée dans l ordre croissant puisque l est triée dans l ordre croissant et que e est plus petit que la tête de l (donc plus petit que tous les éléments de l). Si maintenant, l élément à insérer est plus grand ou égal à la tête de l, on insérera e dans le reste de la liste initiale, qui est, lui-même, une liste triée croissante. Supposons maintenant que l appel récursif insérer e l a produit une liste triée croissante. Ses éléments sont tous plus grands ou égaux à la tête de l, nommée x dans le texte OCaml ci-dessous. Par conséquent, la liste résultat x::(insérer e l ) est triée dans l ordre croissant. Le raisonnement précédent établit que le résultat de l insertion est une liste triée croissante si l argument est une liste triée croissante, il s appuie sur un principe de récurrence concernant les listes. Ce principe logique constitue l outil logique de base dès qu il s agit de démontrer, par exemple, qu un programme manipulant des listes satisfait sa spécification. Le lecteur pourra consulter un ouvrage de logique, [LAL 90] par exemple, pour approfondir ce point. La fonction insérer s écrit de la façon suivante : # let rec insérer e l = match l with [] -> [e] x::l -> if e < x then e::l else x::(insérer e l );; val insérer : a -> a list -> a list = <fun> Appliquons cette fonction sur une liste d entiers, puis sur une liste de chaînes de caractères : # insérer 3 [1; 2; 4];; - : int list = [1; 2; 3; 4] # insérer "googler" ["gonze"; "gopak"; "gopura"];; - : string list = ["gonze"; "googler"; "gopak"; "gopura"] # insérer "dupont" ["dupont"; "milou"; "tintin"; "tournesol"];; - : string list = ["dupont"; "dupont"; "milou"; "tintin"; "tournesol"] Et si l élément est déjà présent, peu importe! Une occurrence supplémentaire est ajoutée à la liste. Encore une fois, si la liste fournie à la fonction insérer n est pas triée dans l ordre croissant, le résultat sera incorrect, comme dans l exemple suivant : # insérer 3 [4; 1; 2];; - : int list = [3; 4; 1; 2]

4 Listes Algorithmes de tri Les listes qui sont fournies à un programme ne sont généralement pas triées. Or, traiter des listes triées accélère notablement la plupart des algorithmes sur les listes. Il est donc important de disposer d algorithmes de transformation d une liste quelconque en une liste triée, que l on appelle un algorithme de tri. Il existe plusieurs méthodes de tri. Nous en présentons trois ci-dessous Tri par insertion L idée générale de cette méthode de tri est d isoler un élément (la tête de la liste par exemple), de trier les autres éléments puis d insérer à sa place l élément isolé. On peut donc utiliser la fonction précédente insérer, pour trier une liste dans l ordre croissant : on prend le premier élément de la liste et on l insère dans le reste de la liste que l on a trié par un appel récursif préalable. Le cas de base est le cas de la liste vide qui est triée d emblée. La fonction de tri par insertion s écrit donc ainsi : # let rec tri_insertion l = match l with [] -> [] x::l -> insérer x (tri_insertion l );; val tri_insertion : a list -> a list = <fun> # tri_insertion [1; 6; 1];; - : int list = [1; 1; 6] # tri_insertion ["milou"; "dupont"; "tintin"; "milou"; "tournesol"; "dupond";];; - : string list = ["dupond"; "dupont"; "milou"; "milou"; "tintin"; "tournesol"] Suivons le calcul de tri insertion [1 ; 6 ; 1], seuls les appels à la fonction récursive tri insertion sont tracés : tri_insertion [1; 6; 1] = insérer 1 (tri_insertion [6; 1]) = insérer 1 (insérer 6 (tri_insertion [1])) = insérer 1 (insérer 6 (insérer 1 (tri_insertion []))) = insérer 1 (insérer 6 (insérer 1 [])) = insérer 1 (insérer 6 [1])) = insérer 1 [1; 6] = [1; 1; 6]

5 98 Programmation en OCaml Tri par sélection Cette méthode consiste à chercher le plus petit élément de la liste, qui se trouvera donc en tête de la liste triée résultat, et de recommencer sur la liste d où l on a retiré cet élément. Nous avons donc besoin d une fonction supprimer qui supprime la première occurrence d un élément donné dans une liste. Nous utiliserons également la fonction min liste, écrite précédemment dans la section 5.4.4, pour déterminer le plus petit élément d une liste. # let rec supprimer e l = match l with [] -> [] x::l -> if x=e then l else x::(supprimer e l );; val supprimer : a -> a list -> a list = <fun> # supprimer 4 [1;4;0;4;8];; - : int list = [1; 0; 4; 8] On peut alors écrire la fonction de tri tri sélection : # let rec tri_sélection l = match l with [] -> [] _ -> let m = min_liste l in let l = supprimer m l in m::(tri_sélection l );; val tri_sélection : a list -> a list = <fun> # tri_sélection [1; 3; 6; 1];; - : int list = [1; 1; 3; 6] # tri_sélection ["milou"; "dupont"; "tintin"; "milou"; "tournesol"; "dupond";];; - : string list = ["dupond"; "dupont"; "milou"; "milou"; "tintin"; "tournesol"] Remarquons que le cas général consiste en un appel récursif sur la liste initiale privée d un de ces éléments, l dans le texte de la fonction (mais ce n est pas son reste comme dans la plupart des fonctions récursives programmées dans ce chapitre). Par conséquent, la taille de la liste l est plus petite que celle de la liste initiale, on se rapproche alors du cas de base. Ceci assure la terminaison de la fonction tri sélection Tri par fusion L idée de cette méthode est de couper la liste en deux parties à peu près égales, puis de trier ces deux sous-listes séparément et enfin de fusionner ces deux listes triées,

6 Listes 99 c est-à-dire de regrouper les éléments de ces deux listes triées en une seule liste triée. Par exemple, les listes triées [3 ; 5 ; 6 ; 7 ; 8 ; 9] et [1 ; 2 ; 4 ; 7 ; 10 ; 11] se fusionnent en la liste [1 ; 2 ; 3 ; 4 ; 5 ; 6 ; 7 ; 7 ; 8 ; 9 ; 10 ; 11]. La réalisation de cette méthode de tri nécessite donc l écriture de trois fonctions : diviser liste qui coupe une liste en deux, fusion qui fusionne deux listes triées, et enfin tri fusion qui trie une liste dans l ordre croissant. L objectif de la fonction diviser liste est de fournir, à partir d une liste, deux sous-listes dont la taille est la moitié de la taille de la liste initiale. La façon dont les éléments de la liste initiale sont répartis dans les sous-listes importe peu. Nous choisissons de séparer les éléments de position paire de ceux de position impaire. La fonction va donc calculer un couple de deux sous-listes (l1, l2) où l1 contient les éléments placés dans la liste initiale à une place impaire tandis que l2 contient les éléments placés dans la liste initiale à une place paire. La fonction fait apparaître trois cas. La liste initiale est vide : coupée en deux, elle donne deux listes vides. La liste initiale ne contient qu un seul élément : elle se coupe en elle-même et la liste vide. La liste a au moins deux éléments x1 en tête (place impaire) et x2 en deuxième position (place paire), le résultat s obtient en coupant en deux selon la même méthode la liste des autres éléments de la liste (diviser liste l ) et en plaçant x1 et x2 en tête de chacune des deux sous-listes obtenues par l appel récursif. On écrit donc : # let rec diviser_liste l = match l with [] -> ([], []) [x] -> ([x], []) x1::x2::l -> let (l1, l2) = diviser_liste l in (x1::l1, x2::l2);; val diviser_liste : a list -> a list * a list = <fun> Écrivons à présent la fonction de fusion de deux listes triées : # let rec fusion l1 l2 = match (l1, l2) with ([], []) -> [] ([], _) -> l2 (_, []) -> l1 (x1::l 1, x2::l 2) -> if x1 < x2 then x1::(fusion l 1 (x2::l 2)) else x2::(fusion (x1::l 1) l 2);; val fusion : a list -> a list -> a list = <fun> Le cas général de la fonction fusion consiste à interclasser les éléments des deux listes déjà triées dans l ordre croissant, les uns par rapport aux autres. En effet, si x1 (resp. x2) est le plus petit élément de l1 (resp. l2) et si x1 est plus petit que x2, alors

7 100 Programmation en OCaml x1 sera plus petit que tous les éléments réunis de l1 et l2, on peut donc sans conteste placer x1 en tête de la liste résultat de la fusion. Il reste ensuite à placer les autres éléments de l1 (la sous-liste l 1) par rapport aux éléments de l2. Un raisonnement symétrique s applique dans le cas où x1 x2. L étude de la terminaison de la fonction fusion se fait en considérant, non pas l un des deux arguments, mais le couple formé par les deux arguments. En effet, à chaque appel récursif, l une des deux listes perd son premier élément. Au bout d un nombre fini d appels récursifs, on peut assurer que l un des deux arguments sera la liste vide, ce qui établit la terminaison de la fonction. La fonction tri fusion est la traduction directe de la spécification informelle énoncée en début de paragraphe couper la liste en deux, trier les deux sous-listes puis fusionner. # let rec tri_fusion l = match l with [] -> [] [x] -> [x] _ -> let (l1, l2) = diviser_liste l in fusion (tri_fusion l1) (tri_fusion l2);; val tri_fusion : a list -> a list = <fun> # tri_fusion [1; 3; 6; 1];; - : int list = [1; 1; 3; 6] # tri_fusion ["milou"; "dupont"; "tintin"; "milou"; "tournesol"; "dupond";];; - : string list = ["dupond"; "dupont"; "milou"; "milou"; "tintin"; "tournesol"] Le schéma de récursivité de la fonction tri fusion diffère de celui de la plupart des fonctions récursives programmées dans ce chapitre. Le cas général consiste en un appel récursif où les deux listes, passées en argument, sont des «moitiés» de la liste initiale, différentes de celle-ci (le cas général est une liste comprenant au moins deux éléments). Par conséquent, la taille de chacune de ces deux «moitiés» est plus petite que celle de la liste initiale, on se rapproche alors des cas de base. Nous venons ainsi de montrer la terminaison de la fonction tri fusion, certes d une manière très intuitive.

8 Listes Sélection Insertion Fusion Comparaison des tris sur les listes Temps en secondes Nombre d éléments Figure 5.3. Comparaison des tris sur les listes Comparaison de ces différentes méthodes de tri Voici un test effectué pour ces trois méthodes de tri sur une liste 2 de 1 000, puis 2 000, puis 4 000, puis et ainsi de suite jusqu à entiers. Méthode Temps (en secondes) pour une liste de longueur (en milliers) Insertion Sélection Fusion La figure 5.3 correspond à un relevé précis pour des listes de à entiers. 2. Les éléments de la liste sont tirés au hasard par la fonction int du module Random et on itère un nombre suffisant de fois l algorithme de tri pour mesurer un temps raisonnablement fiable, c est-à-dire au moins de l ordre de quelques secondes, que l on divise ensuite par le nombre d itérations bien entendu

9 102 Programmation en OCaml 2 Tri par fusion sur les listes 1.5 Temps en secondes Nombre d éléments Figure 5.4. Le tri fusion Les courbes 3 des tris par sélection et insertion s envolent au-dessus de la courbe du tri par fusion qui est collée à l axe des abscisses. Le tri fusion 4 est beaucoup plus rapide que les deux autres. En outre, plus la liste est longue, plus l écart est important. Par exemple, pour éléments le rapport des temps entre le tri par insertion et le tri par fusion est d environ 165, alors que pour éléments il est d environ 950. En revanche, le rapport des temps entre le tri par insertion et le tri par sélection est à peu près constant, entre 1 et 2. Le tri par fusion rejoint la catégorie des algorithmes dichotomiques de résolution puisqu il résout le problème en le décomposant en deux sous-problèmes similaires de taille moitié (comme l algorithme de calcul de la fonction puissance). Cela s avère une fois de plus une méthode efficace. La figure 5.4 présente plus en détail le comportement du tri par fusion. Les irrégularités y sont peu importantes et peu fréquentes. La scission de la liste prend le même temps quelle que soit la liste, mais le temps nécessité par la fusion de deux 3. Obtenues avec l outil xgraphic 4. Le tri sort du module List est un tri fusion 2 à 2,5 fois plus rapide que celui que nous proposons ici, mais il est écrit de façon beaucoup plus astucieuse. Pour en savoir plus, on pourra lire le code source du module List dans la distribution de OCaml

10 Listes 103 listes peut varier selon que tous les éléments d une liste sont plus grands que ceux de l autre ou bien si la fusion entremêle successivement un élément de chacune des deux listes comme les doigts des deux mains. Par exemple, trions trois listes de éléments composées : 1) des entiers de 1 à rangés dans cet ordre ; 2) des entiers de à 1 rangés dans cet ordre ; 3) des entiers rangés ainsi [ ; ; ; ;... ; ; 1]. Le tri de la première liste nécessite 3.21 secondes, la deuxième 3.11 secondes et la troisième 2.79 secondes. La différence de temps entre les deux premières listes est négligeable, ce sont les listes pour lesquelles la fusion consiste à entremêler les souslistes. En revanche la troisième liste nécessite significativement moins de temps pour le tri car la fusion consiste à faire passer tous les éléments de la première liste devant ceux de la seconde donc il n y a pas analyse et reconstruction de la seconde liste. Le tri par insertion présente des sauts plus importants et cela tient au comportement de la fonction insérer sur la liste. Selon que la liste est déjà triée ou bien triée dans l ordre inverse, on va tout de suite passer dans le cas de base de la fonction récursive ou bien au contraire parcourir toute la liste pour aller ajouter l élément en fin de liste. Si la liste aléatoire du test présente des zones importantes triées dans un sens ou dans l autre, on obtient alors un changement significatif de la courbe. Le tableau ci-dessous montre l impact de l ordre de la liste initiale sur le temps de tri par insertion : Nombre d éléments Liste triée Liste en épi Liste aléatoire moyennée Liste triée en ordre inverse La liste en épi est de la forme [1 ; n ; 2 ; n-1 ;... ; n/2 ; n/2+1]. Le test de la liste aléatoire moyennée consiste à tirer 10 listes aléatoires, à les trier et à diviser le temps obtenu par 10. En revanche le tri par sélection est insensible à la forme de la liste. Pour une analyse plus précise de ces phénomènes, il est nécessaire de se reporter à l analyse de complexité d un cours d algorithmique, mais nous avons pu montrer ici qu une expérimentation soigneuse permet de toucher du doigt bien des phénomènes.

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

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

Plus en détail

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

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

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

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

Plus en détail

Les tableaux. Chapitre 3

Les tableaux. Chapitre 3 Chapitre 3 Les tableaux 3.1 Généralités Les tableaux en PERL sont identifiés par le symbole @ à l image du $ pour les variables. Comme ces dernières, les tableaux ne sont pas typés et un même tableau peut

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

Cours numéro 9 : arbres binaires et de recherche

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

Plus en détail

Arbres binaires et codage de Huffman

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

Plus en détail

Introduction à l Algorithmique

Introduction à l Algorithmique Introduction à l Algorithmique N. Jacon 1 Définition et exemples Un algorithme est une procédure de calcul qui prend en entier une valeur ou un ensemble de valeurs et qui donne en sortie une valeur ou

Plus en détail

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

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

Plus en détail

Enveloppes convexes dans le plan

Enveloppes convexes dans le plan ÉCOLE POLYTECHNIQUE ÉCOLES NORMALES SUPÉRIEURES ÉCOLE SUPÉRIEURE DE PHYSIQUE ET DE CHIMIE INDUSTRIELLES CONCOURS D ADMISSION FILIÈRE MP HORS SPÉCIALITÉ INFO FILIÈRE PC COMPOSITION D INFORMATIQUE B (XECLR)

Plus en détail

Listes et arbres binaires

Listes et arbres binaires Des structures de données dynamiques Listes, Listes ordonnées Arbres binaires, arbre binaires de recherche Listes chaînées Utile si le nombre d éléments n est pas connu à l avance et évolue beaucoup. Permet

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

} 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

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

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

Plus en détail

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte Projet d informatique M1BI : Compression et décompression de texte Le but de ce projet est de coder un programme réalisant de la compression et décompression de texte. On se proposera de coder deux algorithmes

Plus en détail

Algorithmes de tri. 1 Introduction

Algorithmes de tri. 1 Introduction Algorithmes de tri L objectif de ce document est de présenter plusieurs algorithmes classiques de tri. On commence par présenter chaque méthode de manière intuitive, puis on détaille un exemple d exécution

Plus en détail

INF-130 Travail Pratique #2

INF-130 Travail Pratique #2 École de technologie supérieure INF-30 Travail Pratique #2 Travail individuel Tracé d un métro Francis Bourdeau, Frédérick Henri et Patrick Salois Remise à la 0 e semaine. Objectifs - Amener l étudiant

Plus en détail

Série d exercices N 9 Arbres

Série d exercices N 9 Arbres Série d exercices N 9 Arbres Exercice 1 a) Ecrire une fonction ARBIN creerarbreentiers() qui permet de créer et de renvoyer l arbre d entiers suivant : b) Ecrire une fonction int feuilles(arbin a) qui

Plus en détail

Cours de Mathématiques Seconde. Généralités sur les fonctions

Cours de Mathématiques Seconde. Généralités sur les fonctions Cours de Mathématiques Seconde Frédéric Demoulin 1 Dernière révision : 16 avril 007 Document diffusé via le site www.bacamaths.net de Gilles Costantini 1 frederic.demoulin (chez) voila.fr gilles.costantini

Plus en détail

Programmation fonctionnelle

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

Plus en détail

Induction sur les arbres

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

Plus en détail

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

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

Option Informatique Arbres binaires équilibrés

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

Plus en détail

L enseignement de l algorithmique au Lycée

L enseignement de l algorithmique au Lycée L enseignement de l algorithmique au Lycée Sisteron 12 novembre 2009 Fernand Didier didier@irem.univ-mrs.fr Approche naïve C est une méthode, une façon systématique de procéder, pour faire quelque chose

Plus en détail

Licence STIC, Semestre 1 Algorithmique & Programmation 1

Licence STIC, Semestre 1 Algorithmique & Programmation 1 Licence STIC, Semestre 1 Algorithmique & Programmation 1 Exercices Alexandre Tessier 1 Introduction 2 instruction de sortie 3 expressions 4 variable informatique 5 séquence d instructions, trace Exercice

Plus en détail

1 de 46. Algorithmique. Trouver et Trier. Florent Hivert. Mél : Florent.Hivert@lri.fr Page personnelle : http://www.lri.fr/ hivert

1 de 46. Algorithmique. Trouver et Trier. Florent Hivert. Mél : Florent.Hivert@lri.fr Page personnelle : http://www.lri.fr/ hivert 1 de 46 Algorithmique Trouver et Trier Florent Hivert Mél : Florent.Hivert@lri.fr Page personnelle : http://www.lri.fr/ hivert 2 de 46 Algorithmes et structures de données La plupart des bons algorithmes

Plus en dé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

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

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

Plus en détail

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

Épreuve d informatique 2011

Épreuve d informatique 2011 A 2011 INFO. MP ÉCOLE NATIONALE DES PONTS ET CHAUSSÉES, ÉCOLES NATIONALES SUPÉRIEURES DE L AÉRONAUTIQUE ET DE L ESPACE, DE TECHNIQUES AVANCÉES, DES TÉLÉCOMMUNICATIONS, DES MINES DE PARIS, DES MINES DE

Plus en détail

Fonctions homographiques

Fonctions homographiques Fonctions homographiques On donne ci-dessous deux définitions des fonctions homographiques, et on montre que ces deux définitions sont équivalentes. On décrit la courbe représentative d une fonction homographique.

Plus en détail

INFO-F-101 Programmation Projet 4 Page Ranking(1/4): Création de la matrice du compte des liens

INFO-F-101 Programmation Projet 4 Page Ranking(1/4): Création de la matrice du compte des liens INFO-F-101 Programmation Projet 4 Page Ranking(1/4): Création de la matrice du compte des liens Année académique 2009 2010 1 Introduction Ce projet est le premier d une série de quatre projets qui ont

Plus en détail

Algorithmique. Mode d application

Algorithmique. Mode d application I - Généralités Algorithmique T ale S Définition: Un algorithme est une suite finie d instructions permettant la résolution systématique d un problème donné. Un algorithme peut-être utilisé pour décrire

Plus en détail

Les types utilisateurs (VBA) Corrigé

Les types utilisateurs (VBA) Corrigé PAD INPT ALGORITHMIQUE ET PROGRAMMATION 1 Cours VBA, Semaine 2 avril mai 2013 Corrigé Résumé Ce document décrit comment traduire en VBA les types utilisateur du langage algorithmique. Table des matières

Plus en détail

Parcours d un arbre Arbres de recherche CHAPITRE 6. Arbres binaires. Karelle JULLIAN. MPSI, Option Info 2014/2015. Karelle JULLIAN

Parcours d un arbre Arbres de recherche CHAPITRE 6. Arbres binaires. Karelle JULLIAN. MPSI, Option Info 2014/2015. Karelle JULLIAN CHAPITRE 6 Arbres binaires Lycée Kléber MPSI, Option Info 2014/2015 1 Définitions 2 Parcours en largeur Parcours en profondeur Parcours préfixe, infixe, postfixe Reconstitution 3 Recherche Complexité Insertion

Plus en détail

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

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

Plus en détail

Langage C et aléa, séance 4

Langage C et aléa, séance 4 Langage C et aléa, séance 4 École des Mines de Nancy, séminaire d option Ingénierie Mathématique Frédéric Sur http://www.loria.fr/ sur/enseignement/courscalea/ 1 La bibliothèque GMP Nous allons utiliser

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

Informatique Chapitre 4: Types et typages

Informatique Chapitre 4: Types et typages Informatique Chapitre 4: Types et typages Booléens et listes Jérôme DIDIER 8/10/2014 Objectifs du cours Compétences visées Savoir que les variables peuvent avoir plusieurs types et les connaitre ; Type

Plus en détail

Diviser pour Régner : Complexité et Tri Fusion

Diviser pour Régner : Complexité et Tri Fusion Diviser pour Régner : Complexité et Tri Fusion 1 Notion de Complexité Nous allons étudier la complexité des algorithmes étudiés. Il s agit, en général, d estimer le nombre d opérations «élémentaires» (dont

Plus en détail

Proposition d activité utilisant l application. Tripatouille. (http://www.malgouyres.fr/tripatouille/)

Proposition d activité utilisant l application. Tripatouille. (http://www.malgouyres.fr/tripatouille/) IREM Clermont-Ferrand Algorithmique au lycée Malika More malika.more@u-clermont1.fr 28 janvier 2011 Proposition d activité utilisant l application Tripatouille (http://www.malgouyres.fr/tripatouille/)

Plus en détail

Algorithmique avancée en Python TDs

Algorithmique avancée en Python TDs Algorithmique avancée en Python TDs Denis Robilliard sept. 2014 1 TD 1 Révisions 1. Ecrire un programme qui saisit un entier, et détermine puis affiche si l entier est pair où impair. 2. Ecrire un programme

Plus en détail

Chapitre 1. Programmation en Python 2ème année. 23 septembre 2014. E-mail mlahby@gmail.com

Chapitre 1. Programmation en Python 2ème année. 23 septembre 2014. E-mail mlahby@gmail.com Chapitre 1 La récursivité Programmation en Python 2ème année E-mail mlahby@gmailcom 23 septembre 2014 Programmation en Python 2ème année CPGE GSR 2014-2015 1/ 24 Plan 1 Rappel 2 Récurrence en mathématique

Plus en détail

Travaux dirigés n o 6

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

Plus en détail

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

Complément C7 Infodauphine.com

Complément C7 Infodauphine.com Complément C7 Infodauphine.com Pourquoi se soucier des performances? L'utilisateur n'aime pas attendre Le timing peut-être critique Trading VBA est un outil de productivité La notion de temps d'exécution

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

Définitions. Numéro à préciser. (Durée : )

Définitions. Numéro à préciser. (Durée : ) Numéro à préciser (Durée : ) On étudie dans ce problème l ordre lexicographique pour les mots sur un alphabet fini et plusieurs constructions des cycles de De Bruijn. Les trois parties sont largement indépendantes.

Plus en détail

TS214 - Compression/Décompression d une image binaire

TS214 - Compression/Décompression d une image binaire Filière Télécommunications, 2 ème année TS214 - Compression/Décompression d une image binaire De nombreux télécopieurs utilisent la recommandation T.4 Groupe 3 de l International Telecommunications Union

Plus en détail

1 Recherche en table par balayage

1 Recherche en table par balayage 1 Recherche en table par balayage 1.1 Problème de la recherche en table Une table désigne une liste ou un tableau d éléments. Le problème de la recherche en table est celui de la recherche d un élément

Plus en détail

Polytechnique. Épreuve d Informatique 1998

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

Plus en détail

Séance de travaux pratiques n 1 Quelques éléments de correction

Séance de travaux pratiques n 1 Quelques éléments de correction Master Sciences, Technologies, Santé Mention Mathématiques, spécialité Enseignement des mathématiques Algorithmique et graphes, thèmes du second degré Séance de travaux pratiques n 1 Quelques éléments

Plus en détail

Lycée Cassini BTS CGO 2014-2015. Test de début d année

Lycée Cassini BTS CGO 2014-2015. Test de début d année Lycée assini BTS GO 4-5 Exercice Test de début d année Pour chaque question, plusieurs réponses sont proposées. Déterminer celles qui sont correctes. On a mesuré, en continu pendant quatre heures, la concentration

Plus en détail

Langages et concepts de programmation

Langages et concepts de programmation Langages et concepts de programmation Séances 3 et 4 Tri d un fichier de voitures Une correction possible 1 Le sujet On dispose d un fichier contenant des informations sur des voitures d occasion : le

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

Informatique TP4 : Manipulations de fichiers Manipulations de chaînes et de tableaux CPP 1A

Informatique TP4 : Manipulations de fichiers Manipulations de chaînes et de tableaux CPP 1A Informatique TP4 : Manipulations de fichiers Manipulations de chaînes et de tableaux CPP 1A Djamel Aouane, Frederic Devernay, Matthieu Moy Mars - avril 2015 1 Manipulations de fichiers Pour organiser des

Plus en détail

Programmation en Python - Cours 2 : Premiers programmes

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

Plus en détail

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

Points fixes de fonctions à domaine fini

Points fixes de fonctions à domaine fini ÉCOLE POLYTECHNIQUE ÉCOLE NORMALE SUPÉRIEURE DE CACHAN ÉCOLE SUPÉRIEURE DE PHYSIQUE ET DE CHIMIE INDUSTRIELLES CONCOURS D ADMISSION 2013 FILIÈRE MP HORS SPÉCIALITÉ INFO FILIÈRE PC COMPOSITION D INFORMATIQUE

Plus en détail

Arbres bien équilibrés

Arbres bien équilibrés Arbres bien équilibrés ENSIIE : Programmation avancée 1/24 Recherche par dichotomie on aimerait avoir des opérations de recherche, d insertion et de suppression efficaces en moyenne et dans le pire des

Plus en détail

Correction langage Java

Correction langage Java MINISTÈRE DE L ÉCOLOGIE, DU DÉVELOPPEMENT DURABLE, DES TRANSPORTS ET DU LOGEMENT EXAMEN PROFESSIONNEL DE VÉRIFICATION D APTIDUDE AUX FONCTIONS DE PROGRAMMEUR Session 2010 Correction langage Java Langage:

Plus en détail

Structures de données non linéaires

Structures de données non linéaires Structures de données non linéaires I. Graphes Définition Un graphe (simple) orienté G est un couple (S, A), où : S est un ensemble dont les éléments sont appelés les sommets. A est un ensemble de couples

Plus en détail

Programmation C++ (débutant)/les tableaux statiques

Programmation C++ (débutant)/les tableaux statiques Programmation C++ (débutant)/les tableaux statiques 1 Programmation C++ (débutant)/les tableaux statiques Le cours du chapitre 6 : les tableaux statiques Les tableaux Une variable entière de type int ne

Plus en détail

Corrigé des exercices

Corrigé des exercices hapitre 1 option informatique orrigé des eercices Arbres binaires Eercice 1 La première solution qui vient à l esprit est sans doute celle-ci : let rec profondeur p = function Nil > [] a when p = 0 > [a]

Plus en détail

Manuel d utilisation 26 juin 2011. 1 Tâche à effectuer : écrire un algorithme 2

Manuel d utilisation 26 juin 2011. 1 Tâche à effectuer : écrire un algorithme 2 éducalgo Manuel d utilisation 26 juin 2011 Table des matières 1 Tâche à effectuer : écrire un algorithme 2 2 Comment écrire un algorithme? 3 2.1 Avec quoi écrit-on? Avec les boutons d écriture........

Plus en dé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

3 Structures de données Tableaux Listes. Problème du tri. Tri rapide

3 Structures de données Tableaux Listes. Problème du tri. Tri rapide Cours 2 Algorithmique IN102-02 Michel Mauny ENSTA Prénom.Nom@ensta.fr 1 Tris Retour sur fusion et quicksort Complexité minimale Efficacité 2 Récursivité 3 Structures de données Tableaux Listes Michel Mauny

Plus en détail

La Clé informatique. Formation Word XP Aide-mémoire

La Clé informatique. Formation Word XP Aide-mémoire La Clé informatique Formation Word XP Aide-mémoire Septembre 2003 Table des matières Édition et insertion de texte... 4 Manipulation d un document Exploration de la fenêtre de travail Bouton de maximisation

Plus en détail

Introduction au langage

Introduction au langage Introduction au langage Un langage de programmation : de haut niveau interprété orienté objet si on le souhaite rapide à écrire et proche du pseudo-code simple tant qu on fait des choses simples Un programme

Plus en détail

Les types somme. 1 Préparation du TP. 2 Interface du module Carte. Algorithmes et Programmation Impérative 2. 2.1 Les types de donnees

Les types somme. 1 Préparation du TP. 2 Interface du module Carte. Algorithmes et Programmation Impérative 2. 2.1 Les types de donnees Univ. Lille1 - Licence Informatique 2ème année 2014-15 Algorithmes et Programmation Impérative 2 Les types somme 1 Préparation du TP Dans le prochain TP, vous allez réaliser un programme de jeu de poker

Plus en détail

EXAMEN FINAL. 2 Février 2006-2 heures Aucun document autorisé

EXAMEN FINAL. 2 Février 2006-2 heures Aucun document autorisé MIE - E ANNÉE ALGORITHMIQUE GÉNÉRALE Vincent Mousseau EXAMEN FINAL Février 006 - heures Aucun document autorisé Exercice : On s intéresse à la gestion informatique des réservations sur l année d une salle

Plus en détail

Tableau d'enregistrements

Tableau d'enregistrements Tableau d'enregistrements Regrouper plusieurs enregistrements dans un tableau est parfaitement possible! Exemple : représenter les données concernant 50 personnes algorithme monalgorithme // déclaration

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

Marches, permutations et arbres binaires aléatoires

Marches, permutations et arbres binaires aléatoires Marches, permutations et arbres binaires aléatoires Épreuve pratique d algorithmique et de programmation Concours commun des Écoles Normales Supérieures Durée de l épreuve: 4 heures Cœfficient: 4 Juillet

Plus en détail

Architecture des ordinateurs TP 3

Architecture des ordinateurs TP 3 Architecture des ordinateurs ESIPE - IR1 TP 3 Objectif de cette séance L objectif de cette séance est d apprendre à utiliser la pile et à écrire des fonctions en assembleur En particulier, nous verrons

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

Les supports de cours suivants font référence au cours de Mr SOL et à son livre : "Accès à l'université" chez DUNOD

Les supports de cours suivants font référence au cours de Mr SOL et à son livre : Accès à l'université chez DUNOD Les supports de cours suivants font référence au cours de Mr SOL et à son livre : "Accès à l'université" chez DUNOD Les supports de cours ne sont pas complets, ils ne contiennent ni les démonstrations,

Plus en détail

Texte Agrégation limitée par diffusion interne

Texte Agrégation limitée par diffusion interne Page n 1. Texte Agrégation limitée par diffusion interne 1 Le phénomène observé Un fût de déchets radioactifs est enterré secrètement dans le Cantal. Au bout de quelques années, il devient poreux et laisse

Plus en détail

InitProg par l exemple

InitProg par l exemple InitProg par l exemple Martin Monperrus 16 décembre 2011 Ce cument illustre avec des programmes Ocamlcartes et Ocaml le polycopié du cours Initiation à la programmation (InitProg) de l Université Lille

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

Listes de personnes et calculatrice polonaise inverse en Java

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

Plus en détail

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

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

Plus en détail

4. Créer des compteurs, des curseurs ou des bandes déroulantes : a) Création des objets. b) Affectation à une cellule et réglage du pas.

4. Créer des compteurs, des curseurs ou des bandes déroulantes : a) Création des objets. b) Affectation à une cellule et réglage du pas. Logiciel Excel version Office 2007. Voici une liste non exhaustive de fonctions de ce logiciel en relation avec le stage. Au sommaire : 1. Créer des boutons de raccourci dans une barre d outils: a) Sélection

Plus en détail

Chaîne d additions ATTENTION!

Chaîne d additions ATTENTION! Chaîne d additions Épreuve pratique d algorithmique et de programmation Concours commun des écoles normales supérieures Durée de l épreuve: 3 heures 30 minutes Juin 2012 ATTENTION! N oubliez en aucun cas

Plus en détail

Généralités sur les fonctions ( En seconde )

Généralités sur les fonctions ( En seconde ) Généralités sur les fonctions ( En seconde ) Dernière mise à jour : Dimanche 31 Octobre 2010 Vincent OBATON, Enseignant au lycée Stendhal de Grenoble (Année 2010-2011) Lycée Stendhal, Grenoble ( Document

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

Algorithmes récursifs

Algorithmes récursifs Licence 1 MASS - Algorithmique et Calcul Formel S. Verel, M.-E. Voge www.i3s.unice.fr/ verel 23 mars 2007 Objectifs de la séance 3 écrire des algorithmes récursifs avec un seul test rechercher un élément

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

Arbres binaires de recherche

Arbres binaires de recherche Chapitre 6 Arbres binaires de recherche 6.1 Introduction On a étudié le problème de la recherche dans une collection d éléments ordonnés entre eux : on a montré que Pour une liste contiguë, la recherche

Plus en détail

Algorithmique IN102 TD 3

Algorithmique IN102 TD 3 Algorithmique IN10 TD 16 décembre 005 Exercice 1 Clairement, il existe des arbres de hauteur h à h + 1 éléments : il sut pour cela que leurs n uds internes aient au plus un ls non vide. On a alors un arbre

Plus en détail

Algorithmique - Techniques fondamentales de programmation Exemples en Python (nombreux exercices corrigés) - BTS, DUT informatique

Algorithmique - Techniques fondamentales de programmation Exemples en Python (nombreux exercices corrigés) - BTS, DUT informatique 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

FSAB1402: Informatique 2. Algorithmes sur les Listes. Peter Van Roy. Département d Ingénierie Informatique, UCL. P. Van Roy, FSAB1402 1.

FSAB1402: Informatique 2. Algorithmes sur les Listes. Peter Van Roy. Département d Ingénierie Informatique, UCL. P. Van Roy, FSAB1402 1. FSAB1402: Informatique 2 Algorithmes sur les Listes Peter Van Roy Département d Ingénierie Informatique, UCL pvr@info.ucl.ac.be P. Van Roy, FSAB1402 1 Annonces P. Van Roy, FSAB1402 2 1 L interro Pour les

Plus en détail

Série 2 Premiers programmes

Série 2 Premiers programmes Licence pro. GTSBD 2013-2014 Structures de données, langage Python Série 2 Premiers programmes Programmes avec des affectations, des lectures et des écritures Exo 2.1 Le problème de la machine qui rend

Plus en détail

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

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

Plus en détail

INF601 : Algorithme et Structure de données

INF601 : Algorithme et Structure de données Cours 2 : TDA Liste B. Jacob IC2/LIUM 15 février 2010 Plan 1 Définition du TDA Liste 2 Réalisation du TDA Liste 3 Type de stockage des éléments 4 Recherche d un élément Dans une liste non triée Dans une

Plus en détail

Fonction polynôme du second degré : Forme canonique

Fonction polynôme du second degré : Forme canonique Fonction polynôme du second degré : Forme canonique I) Introduction. Soit g(x) = a(x - s)²+h. Toute fonction polynôme du second degré peut s écrire sous cette forme. Le passage de la forme développée à

Plus en détail

CREER UNE BASE DE DONNEES ACCESS AVEC DAO (étape par étape)

CREER UNE BASE DE DONNEES ACCESS AVEC DAO (étape par étape) CREER UNE BASE DE DONNEES ACCESS AVEC DAO (étape par étape) NIVEAU : PREMIERE RENCONTRE AVEC VB INITIES/EXPERIMENTES Pré requis pour comprendre ce tutorial : - Connaître les principales commandes de VB

Plus en détail

La Clé informatique. Formation Access XP Aide-mémoire

La Clé informatique. Formation Access XP Aide-mémoire La Clé informatique Formation Access XP Aide-mémoire Septembre 2003 Définitions de termes Base de données : Se compare à un énorme classeur ayant plusieurs tiroirs où chacun d eux contient des informations

Plus en détail