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

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

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

Transcription

1 Génie Logiciel I Cours VII - La S.T.L. et les conteneurs Nicolas Kielbasiewicz C.D.C.S.P./I.S.T.I.L./I.C.J. Filière M.A.M. 2ème année - 08/09 Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 1 / 37 Plan du cours 1 Généralités sur la S.T.L. 2 Les conteneurs séquentiels 3 Les conteneurs associatifs Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 2 / 37

2 Généralités sur la S.T.L. La S.T.L. Definition (S.T.L.) La S.T.L. ou Standard Template Library est la grande nouveauté de la bibliothèque standard intégrée à la norme C++. Elle contient un ensemble de patrons de classes permettant de manipuler simplement les éléments du C++. Ex : les classes de flots, la classe string, la classe type info, la classe exception et ses dérivées, La S.T.L. introduit de nouvelles notions : les conteneurs; les itérateurs; les algorithmes; les prédicats. Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 3 / 37 Généralités sur la S.T.L. Les conteneurs Definition (Les conteneurs) Les conteneurs sont des classes permettant de représenter les structures de données les plus répandues : listes, vecteurs, ensembles, tableaux associatifs, Ce sont des patrons de classes paramétrés par le type de leurs éléments. Chacune de ces classes dispose de fonctionnalités appropriées et en tant que patrons, peuvent être instanciées pour n importe quel paramètre, y compris un paramètre de type classe défini par l utilisateur. Beaucoup de fonctionnalités sont communes à différents conteneurs. Il existe deux types de conteneurs : les conteneurs séquentiels : ce sont des conteneurs dont les éléments sont ordonnés. On peut parcourir le conteneur suivant cet ordre et insérer ou supprimer un élément en un endroit explicitement choisi; les conteneurs associatifs : ce sont des conteneurs dont les éléments sont identifiés par un clé et ordonnés suivant celle-ci. Pour insérer un élément, il n est en théorie plus utile de préciser un emplacement. Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 4 / 37

3 Généralités sur la S.T.L. Les itérateurs : rappels sur les pointeurs Parcours classique d un tableau double p t r [ 6 ] ; f o r ( i n t j =0; j <6; j ++) { cout << p t r [ j ] << e n d l ; Parcours d un tableau avec pointeur double p t r [ 6 ] ; double i=new double ( ) ; f o r ( i=&p t r ; i!=& p t r +6; i ++) { cout << i << e n d l ; i ptr[0] ptr[1] ptr[2] ptr[3] ptr[4] ptr[5] Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 5 / 37 Généralités sur la S.T.L. Les itérateurs Definition (itérateur) Un itérateur est un objet défini par la classe conteneur concernée. Il généralise la notion de pointeur : à un instant donné, un itérateur possède une valeur qui désigne un élément donné du conteneur. On dit qu un itérateur pointe vers un élément du conteneur; un itérateur peut être incrémenté par l opérateur ++, de manière à pointer vers l élément suivant du conteneur; un itérateur peut être déréférencé, comme un pointeur, à l aide de l opérateur *. Par exemple, si it est un itérateur sur une liste de points, *it désigne un point de la liste; deux itérateurs sur un même conteneur peuvent être comparés par égalité ou inégalité. Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 6 / 37

4 Généralités sur la S.T.L. Les itérateurs Il existe 3 principaux types d itérateurs : les itérateurs unidirectionnels : ce sont des itérateurs qui ne peuvent qu être incrémentés (++); les itérateurs bidirectionnels : ce sont des itérateurs qui peuvent être incrémentés (++) et décrémentés ( ); les itérateurs à accès direct : ce sont des itérateurs bidirectionnels pour lesquels les expressions de la forme it+i ont un sens. Dans ce cas, on surdéfinit souvent l opérateur []. Les itérateurs à accès direct peuvent être comparés par inégalité. Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 7 / 37 Généralités sur la S.T.L. Utilisation des itérateurs Pour parcourir un conteneur avec un itérateur, on dispose de deux fonctions begin() et end() retournant une valeur de type itérator pour un parcours direct, et de deux fonctions rbegin() et rend() retournant une valeur de type reverse iterator pour un parcours inverse (pour les itérateurs au moins bidirectionnels) : Exemple l i s t <p o i n t > l p ; // i t é r a t e u r s u r l i s t e de p o i n t s l i s t <p o i n t >:: i t e r a t o r i t ; f o r ( i t=l p. b e g i n ( ) ; i t!= l p. end ( ) ; i t ++) { // i t é r a t e u r i n v e r s e s u r l i s t e de p o i n t s l i s t <p o i n t >:: r e v e r s e i t e r a t o r r i t ; f o r ( r i t =l p. r b e g i n ( ) ; r i t!= l p. rend ( ) ; r i t ++) { Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 8 / 37

5 Généralités sur la S.T.L. Les intervalles d itérateurs Comme nous l avons précisé, tous les conteneurs sont ordonnés, de sorte que l on peut toujours les parcourir d un début jusqu à une fin. Definition (intervalle d itérateur) On appelle intervalle d itérateur d un conteneur un couple de valeurs de deux itérateurs it1 et it2 précisant les bornes. On le note [it1,it2). Cela signifie qu à partir de l élément du conteneur pointé par it1, on peut atteindre l élément pointé par it2 à l aide d un certain nombre d incrémentations. L intervalle d itérateur [it1,it2) contiendra la séquence des éléments pointés durant le parcours, de l élément pointé par it1 inclus à l élément pointé par it2 exclu. Cette notion d intervalle d itérateur sera très utilisée dans les algorithmes. Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 9 / 37 Généralités sur la S.T.L. Les algorithmes La notion d algorithme est tout aussi originale que les deux précédentes. Elle se fonde sur le principe suivant : Par le biais des itérateurs, beaucoup d opérations peuvent être appliquées à un conteneur quels que soient sa nature et le type de ses éléments. Par exemple, on peut trouver le premier élément ayant une valeur donnée aussi bien dans une liste que dans un vecteur ou un ensemble. Le seul besoin est que l égalité entre deux éléments soit convenablement définie. De même, on peut trier un conteneur de type quelconque, y compris un type classe défini par l utilisateur, à la condition que le conteneur en question dispose d un itérateur à accès direct et que la relation d ordre < soit convenablement définie. Definition (algorithme) Un algorithme est un patron de fonction dont le paramètre est le type des itérateurs fournis en arguments. L utilisation des algorithmes standards demandera d include <algorithm>. Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 10 / 37

6 Généralités sur la S.T.L. Exemples d algorithmes Compter le nombre d occurences d une valeur dans un intervalle d itérateur : l algorithme count v e c t o r <i n t > v ; i n t n=count ( v. b e g i n ( ), v. end ( ), 1 ) ; l i s t <double> l ; i n t m=count ( l. b e g i n ( ), l. end ( ), 2. 0 ) ; Copier une séquence de valeurs dans un autre (type de) conteneur : l algorithme copy v e c t o r <double> v,w; l i s t <double> l ; copy ( v. b e g i n ( ), v. end ( ), l. b e g i n ( ) ) ; copy ( v. r b e g i n ( ), v. rend ( ),w. b e g i n ( ) ) ; Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 11 / 37 Généralités sur la S.T.L. Fonctions unaires Beaucoup d algorithmes et quelques fonctions membres des classes conteneurs permettent d appliquer une fonction aux éléments d une séquence. Cette fonction est simplement passée en argument de l algorithme : Exemple : for each main ( ) { l i s t <f l o a t > l f ; void a f f i c h e ( f l o a t ) ; f o r e a c h ( l f. b e g i n ( ), l f. end ( ), a f f i c h e ) ; cout << e n d l ; void a f f i c h e ( f l o a t x ) { cout << x << ; Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 12 / 37

7 Généralités sur la S.T.L. Fonctions, prédicats et classes fonctions Definition (Prédicat) Un prédicat est une fonction dont la valeur de retour est de type bool. Là encore, certains algorithmes et fonctions membres des classes conteneurs demandent un prédicat en argument. Exemple : find if main ( ) { l i s t <i n t > l ; l i s t <i n t >:: i t e r a t o r i t ; bool i m p a i r ( i n t ) ; i t=f i n d i f ( l. b e g i n ( ), l. end ( ), i m p a i r ) ; bool i m p a i r ( i n t i ) { r e t u r n i %2; Dans la plupart des cas, les fonctions passées en arguments sont des objets fonctions. Pour utiliser les classes fonctions prédéfinies, on inclura <functional>. Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 13 / 37 Généralités sur la S.T.L. Conteneurs, algorithmes et relation d ordre par définition, les conteneurs séquentiels sont ordonnés. Par ailleurs, le conteneur list dispose d une fonction membre sort qui permet de les réarranger selon un certain critère; pour des raisons d efficacité, les éléments d un conteneur associatif sont ordonnés; il existe beaucoup d algorithmes de tri qui réorganisent également les éléments d un conteneur suivant un certain ordre. Tant que les éléments concernés sont d un type standard (type de base ou string) on peut se permettre d appliquer ces méthodes de réordonnancement sans se poser de questions. Par contre, si les élements concernés sont de type classe, il faut s assurer de la surcharge de l opérateur <, et pas n importe comment. On peut également choisir d utiliser une relation autre que l opérateur <, soit en choisissant un autre opérateur, soit en fournissant une fonction de comparaison de deux éléments. Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 14 / 37

8 Généralités sur la S.T.L. Conteneurs, algorithmes et relation d ordre Quel que soit le choix de la relation d ordre R, R doit être une relation d ordre faible strict, c est-à-dire vérifie les propriétés suivantes : 1 la comparaison de deux éléments identiques retourne la valeur faux : a!(ara); 2 la relation d ordre est transitive : si arb et brc, alors arc; 3 si!(arb) et!(brc), alors!(arc). Pour des valeurs numériques, on peut donc utiliser les opérateurs < et >, mais pas les opérateurs <= et >=, qui ne sont pas des relations d ordre faible strict. Il faudra faire bien attention à respecter ces propriétés lors de la définition de la relation d ordre sur un conteneur associatif, comme nous le verrons. Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 15 / 37 Les conteneurs séquentiels Généralités Definition Les conteneurs séquentiels sont des conteneurs ordonnés suivant un ordre imposé explicitement par le programme lui-même. Il existe 3 conteneurs séquentiels principaux : list : ce conteneur correspond à la liste doublement chaînée; vector : ce conteneur correspond à la généralisation des tableaux; deque : ce conteneur est intermédiaire entre list et vector et n existe que pour des raisons d efficacité. En tant que conteneurs, les trois ont des fonctionnalités communes. Ils ont aussi des fonctionnalités propres. Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 16 / 37

9 Les conteneurs séquentiels Fonctionnalités communes à list, vector et deque Les fonctionnalités communes sont de 4 types : 1 la construction; 2 l affectation globale; 3 la comparaison; 4 l insertion / suppression d éléments. Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 17 / 37 Les conteneurs séquentiels Construction Les conteneurs list, vector et deque disposent de différents constructeurs : construction d un conteneur vide : l i s t <i n t > l i ; v e c t o r <f l o a t > v f ; construction avec un nb donné d éléments, initialisés par une valeur ou pas : l i s t <i n t > l i ( 1 0 ) ; p o i n t p ( 2, 3 ) ; deque<p o i n t > dd ( 5, p ) ; construction à partir d une séquence : construction par copie : l i s t <i n t > l i ( 5 ) ; v e c t o r <i n t > v f ( l i. b e g i n ( ), l i. end ( ) ) ; l i s t <i n t > l i r ( l i. r b e g i n ( ), l i. rend ( ) ) ; l i s t <i n t > l i ; l i s t <i n t > l i 2 ( l i ) ; Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 18 / 37

10 Les conteneurs séquentiels Modifications globales affectation : elle n est possible qu entre conteneurs de même type; l i s t <i n t > l i ( ), l i 2 ( ) ; l i s t <f l o a t > l f ( ) ; l i 2= l i ; // c o r r e c t l i 2= l f ; // i n c o r r e c t fonction membre assign : permet d affecter à un conteneur existant les éléments d une séquence définie par un intervalle [deb,fin) ; l i s t <i n t > l i ( ) ; v e c t o r <i n t > v i ( ) ; l i s t <f l o a t > l f ( ) ; v i. a s s i g n ( l i. b e g i n ( ), l i. end ( ) ) ; // c o r r e c t v i. a s s i g n ( 1 0, 1 ) ; // c o r r e c t : 10 é l é m e n t s v a l a n t 1 v i. a s s i g n ( l f. r b e g i n ( ), l f. rend ( ) ) ; // i n c o r r e c t Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 19 / 37 Les conteneurs séquentiels Modifications globales fonction membre clear : vide le conteneur de son contenu; l i s t <int > l i ( ) ; l i. c l e a r ( ) ; fonction membre swap : permet d échanger le contenu de deux conteneurs de même type ; l i s t <int > l i ( ), l i 2 ( ) ; l i. swap ( l i 2 ) ; Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 20 / 37

11 Les conteneurs séquentiels Comparaison l opérateur == : retourne vrai si les deux conteneurs passés en arguments sont de même type, de même taille et ont le même contenu. A surdéfinir si besoin; Exemple < : retourne faux si l une des comparaisons lexicographiques entre éléments de même rangs est fausse. Les deux conteneurs comparés ne sont pas nécessairement de même taille ; i n t t1 [ ] = {2, 5, 2, 4, 8 ; i n t t2 [ ] = {2, 5, 2, 8 ; v e c t o r <int > v1 ( t1, t1 +5); v e c t o r <int > v2 ( t2, t2 +4); v e c t o r <int > v3 ( t2, t2 +3); v e c t o r <int > v4 ( v3 ) ; v e c t o r <int > v5 ; v2 < v1 ; v5 < v4 ; v5 < v5 ; v3 < v2 ; v3 == v4 ; v2 == v3 ; Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 21 / 37 Les conteneurs séquentiels Comparaison l opérateur == : retourne vrai si les deux conteneurs passés en arguments sont de même type, de même taille et ont le même contenu. A surdéfinir si besoin; Exemple < : retourne faux si l une des comparaisons lexicographiques entre éléments de même rangs est fausse. Les deux conteneurs comparés ne sont pas nécessairement de même taille ; i n t t1 [ ] = {2, 5, 2, 4, 8 ; i n t t2 [ ] = {2, 5, 2, 8 ; v e c t o r <int > v1 ( t1, t1 +5); v e c t o r <int > v2 ( t2, t2 +4); v e c t o r <int > v3 ( t2, t2 +3); v e c t o r <int > v4 ( v3 ) ; v e c t o r <int > v5 ; v2 < v1 ; // f a l s e v5 < v4 ; // t r u e v5 < v5 ; // f a l s e v3 < v2 ; // t r u e v3 == v4 ; // t r u e v2 == v3 ; // f a l s e Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 22 / 37

12 Les conteneurs séquentiels Insertion / suppression fonction membre insert : l i s t <double> l d ; l i s t <double >:: i t e r a t o r i t ; l d. i n s e r t ( i l, 2. 5 ) ; l d. i n s e r t ( l d. b e g i n ( ), 6. 7 ) ; l d. i n s e r t ( l d. end ( ), 3. 2 ) ; l d. i n s e r t ( i l, 1 0, 1. 0 ) ; v e c t o r <double> vd ( ) ; l d. i n s e r t ( l d. end ( ), vd. b e g i n ( ), vd. end ( ) ) ; fonction membre erase : supprime des éléments et retourne la valeur de l élément suivant le dernier supprimé : l i s t <double> l d ; l i s t <double >:: i t e r a t o r i t 1, i t 2 ; i t 1=l d. e r a s e ( i t 1, i t 2 ) ; i t 2=l d. e r a s e ( l d. b e g i n ( ) ) ; Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 23 / 37 Les conteneurs séquentiels Le conteneur list Alors que les conteneurs vector et deque disposent d un itérateur à accès direct (ce qui permet de les manipuler comme de simples tableaux), le conteneur list ne dispose que d un itérateur bidirectionnel. On peut donc parcourir un conteneur list dans les deux sens, sans pour autant avoir la possibilité d accéder à un élément par un indice. Le conteneur list est également le conteneur le plus efficace et rapide pour les opérations d insertion / suppression (coût en O(1) plutôt qu en O(n) pour vector et deque. Nous allons voir maintenant quelles sont les fonctionnalités spécifiques au conteneur list, les fonctionnalités communes vues précédemment étant bien évidemment disponibles. Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 24 / 37

13 Les conteneurs séquentiels Le conteneur list Le conteneur list ne dispose que d un itérateur bidirectionnel. On ne peut donc pas accéder directement à un élément de la liste. Il dispose néanmoins de deux fonctions membres sans arguments back et front permettant d accéder au dernier / premier élément. Exemple l i s t <i n t > l i ( ) ; i f ( l i. f r o n t ( ) == 99) l i. f r o n t ()=0; Le conteneur list dispose également de deux fonctions membres remove et remove if permettant de supprimer des éléments par valeur ou suivant un prédicat : Exemple b o o l p a i r e ( i n t n ) { r e t u r n n%2; i n t t [ ] = {1, 3, 1, 6, 4, 1, 5, 2, 1 ; l i s t <i n t > l i ( t, t +9); l i. remove ( 1 ) ; // l i c o n t i e n t 3, 6, 4, 5 e t 2 l i. r e m o v e i f ( p a i r e ) ; // l i c o n t i e n t 3 e t 5 Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 25 / 37 Les conteneurs séquentiels Le conteneur list Nous allons voir maintenant quelques opérations globales : tri : le conteneur list dispose d une fonction membre sort très efficace, permettant de trier ses élements : #i n c l u d e <f u n c t i o n a l > i n t t [ ] = {1, 6, 3, 9, 11, 18, 5 ; l i s t <i n t > l i ( t, t +7); l i. s o r t ( ) ; // 1, 3, 5, 6, 9, 11, 18, l i. s o r t ( g r e a t e r <i n t >); // 18, 11, 9, 6, 5, 3, 1 suppression des doublons : le conteneur list dispose d une fonction membre unique très efficace, permettant d éliminer les doublons quand ils sont consécutifs : i n t t [ ] = {1, 6, 6, 4, 6, 5, 5, 4, 2 ; l i s t <i n t > l i ( t, t +9); l i s t <i n t > l i 2= l i ; l i 1. u nique ( ) // 1, 6, 4, 6, 5, 4, 2 l i 2. s o r t ( ) ; // 1, 2, 4, 4, 5, 5, 6, 6, 6 l i 2. u nique ( ) ; // 1, 2, 4, 5, 6 Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 26 / 37

14 Les conteneurs séquentiels Le conteneur list Voici un exemple permettant d illustrer les diverses fonctionnalités abordées (il y en a d autres, bien entendu) sur le conteneur list : Le programme test #i n c l u d e <iostream > #i n c l u d e < l i s t > using namespace s t d ; main ( ) { void a f f i c h e ( l i s t <char >); char mot [ ] = { a n t i c o n s t i t u t i o n n e l l e m e n t ; l i s t <char> l c 1 ( mot, mot+s i z e o f ( mot ) 1); l i s t <char> l c 2 ; cout << l c 1 i n i t : << a f f i c h e ( l c 1 ) << e n d l ; cout << l c 2 i n i t : << a f f i c h e ( l c 2 ) << e n d l ; Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 27 / 37 Les conteneurs séquentiels Le conteneur list Le programme test (suite) l i s t <char >:: i t e r a t o r i t 1, i t 2 ; i t 2=l c 2. b e g i n ( ) ; f o r ( i t 1=l c 1. b e g i n ( ) ; i t 1!= l c 1. end ( ) ; i t 1 ++) i f ( i l 1!= t ) l c 2. push back ( i l 1 ) ; // e n l e v e r l e s t cout << l c 2 a p r e s : ; a f f i c h e ( l c 2 ) ; l c 1. remove ( t ) ; cout << l c 1 remove : ; a f f i c h e ( l c 1 ) ; i f ( l c 1 == l c 2 ) cout << l e s deux l i s t e s s o n t e g a l e s << e n d l ; l c 1. s o r t ( ) ; cout << l c 1 s o r t : ; a f f i c h e ( l c 1 ) ; l c 1. unique ( ) ; cout << l c 1 unique : ; a f f i c h e ( l c 1 ) ; Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 28 / 37

15 Les conteneurs séquentiels Le conteneur list Fonction affiche et sortie écran void a f f i c h e ( l i s t <char> l c ) l i s t <char >:: i t e r a t o r i t ; f o r ( i t=l c. b e g i n ( ) ; i t!= l c. end ( ) ; i t ++) cout << ( i t ) << ; cout << e n d l ; l c 1 i n i t : a n t i c o n s t i t u t i o n n e l l e m e n t l c 2 i n i t : l c 2 a p r e s : a n i c o n s i u i o n n e l l e m e n l c 1 remove : a n i c o n s i u i o n n e l l e m e n l e s deux l i s t e s s o n t e g a l e s l c 1 s o r t : a c e e e i i i l l m n n n n n o o s u l c 1 u nique : a c e i l m n o s u Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 29 / 37 Les conteneurs associatifs Généralités Definition Les conteneurs associatifs sont destinés à retrouver une information, non pas en fonction de sa place dans le conteneur, mais en fonction de sa valeur, ou une partie de sa valeur appelée clé. Pour des raisons d efficacité, un conteneur associatif se trouve ordonné en permanence, en se fondant sur une relation d ordre définie à la construction. Ex : dans un répertoire téléphonique, les numéros de téléphones sont ordonnés par une clé que constitue le nom et le prénom de la personne. À la différence des conteneurs séquentiels, chaque élément est ici composé de deux parties : la clé et la valeur. Les deux conteneurs associatifs les plus importants sont : map : conteneur associatif pur qui impose l unicité des clés. On peut donc utiliser à bon escient l opérateur []; multimap : à la différence de map, l unicité de la clé n est pas exigée. Dans l exemple du répertoire téléphonique, le conteneur multimap autorisera les homonymes. Les deux classes n ont pas vraiment de fonctionnalités communes en raison de l unicité de la clé ou pas. Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 30 / 37

16 Les conteneurs associatifs Le conteneur map Exemple #i n c l u d e <i o s t r e a m > #i n c l u d e <map> using namespace s t d ; main ( ) { void a f f i c h e (map<char, i n t >); map<char, i n t > m; cout << map i n i t : ; a f f i c h e (m) ; m[ S ]=5; m[ C ]=12; cout << map SC : ; a f f i c h e (m) ; cout << map( S ) : << m[ S ] << e n d l ; cout << map(x) : << m[ X ] << e n d l ; cout << map X : ; a f f i c h e (m) ; m[ S ]=m[ c ] ; cout << map f i n a l : ; a f f i c h e (m) ; Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 31 / 37 Les conteneurs associatifs Le conteneur map Exemple(suite) void a f f i c h e (map<char, i n t > m) { map<char, i n t >:: i t e r a t o r i t ; f o r ( im=m. b e g i n ( ) ; i t!=m. end ( ) ; i t ++) cout << ( << im > f i r s t <<, << im >second << ) ; cout << e n d l ; map i n i t : map SC = (C, 1 2 ) (S, 5 ) map( S ) : 5 map(x) : 0 map X : (C, 1 2 ) (S, 5 ) (X, 0 ) map f i n a l : (C, 1 2 ) (S, 0 ) (X, 0 ) ( c, 0 ) Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 32 / 37

17 Les conteneurs associatifs Le conteneur map Analysons cet exemple introductif : la classe map dispose d un itérateur iterator bidirectionnel; les éléments d un objet de type map sont d un type particulier pair, dont la classe comporte deux attributs, first et second, pour accéder respectivement à la clé et à la valeur; lorsqu on utilise l opérateur [], si la clé utilisée n existe pas dans le conteneur, elle est créée et la valeur associée sera 0; le conteneur map est ordonné intrinsèquement. Ici c est l opérateur < par défaut. Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 33 / 37 Les conteneurs associatifs Le conteneur map Pour construire un conteneur map, on ne dispose que de 3 possibilités : construire un conteneur vide; construire un conteneur par copie; construire un conteneur à partir d une séquence; La syntaxe est la même que celle vue pour les conteneurs séquentiels. On peut spécifier la relation d ordre utilisée à l aide d un prédicat. Rappelons que par défaut, c est l opérateur < pour le type de la clé qui est utilisé. Si c est un type classe, on s assurera de le surcharger. map<char, long, g r e a t e r <char> > m1 ; map<char, long, g r e a t e r <char> > m2(m1 ) ; Dans le cas de la construction par copie, si m1 et m2 ne sont pas ordonnés par la même relation, il y a erreur de compilation : La relation d ordre fait partie du type du conteneur. Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 34 / 37

18 Les conteneurs associatifs Le conteneur map Comme pour tout conteneur, on peut accéder à un élément existant, soit pour en connaître la valeur, soit pour la modifier. Néanmoins, dans le cas d une map, c est un peu particulier. On a vu en effet qu une tentative d accès à une clé existante amène à la création d un nouvel élément. Si l on accède aux éléments par itérateur, ce comportement automatique n existe plus. En théorie, il n est pas interdit de modifier la valeur de l élément désigné par un itérateur, mais le rôle exact d une telle opération n est pas spécifié par la norme. // modif par a p p e l à f c t membre make pair de c l a s s e p a i r i t=make pair ( R, 4 ) ; En effet, on peut modifier la valeur de la clé et l ordre des éléments peut s en trouver modifié. Sur quoi pointe alors l itérateur? Il est donc fortement déconseillé de modifier la valeur d un élément d une map par le biais d un itérateur. Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 35 / 37 Les conteneurs associatifs Le conteneur map Quelques fonctions membres utiles : find : permet de recherche un élément et retourne un itérateur. Si l élément est introuvable, elle retourne end() : i f (m1. f i n d ( R )!=m1. end ( ) ) cout << t r o u v é <<e n d l ; insert : permet d insérer un élément. Les syntaxes sont les mêmes que vues précédemment; erase : permet de supprimer un élément. Les syntaxes sont les mêmes que vues précédemment. Il existe une nouvelle possibilité : donner la clé en argument. Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 36 / 37

19 Les conteneurs associatifs Le conteneur map Que se passe t-il quand on veut supprimer un élément en passant un itérateur en argument? Sur quoi va pointer l itérateur? La réponse dépend de la version du compilateur. Toutefois, il existe une manière de contourner le problème : Exemple template <c l a s s T> e r a s e Z e r o s (map<i n t, T> m) { typename map<i n t, T>:: i t e r a t o r i t ; f o r ( i t=m. b e g i n ( ) ; i t!=m. end ( ) ; ) { i f ( ( i t >second )==0.0){ m. e r a s e ( i t ++); e l s e { ++i t ; On peut voir le mot clé typename dans la syntaxe de déclaration de l itérateur, nécessaire dans ce cas. Il permet de signifier au compilateur que le type de l itérateur sera décidé à l utilisation. Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 37 / 37

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

Génie Logiciel I. Cours VI - Typage statique / dynamique, fonctions virtuelles et classes abstraites, flots d entrées / sorties, et string

Génie Logiciel I. Cours VI - Typage statique / dynamique, fonctions virtuelles et classes abstraites, flots d entrées / sorties, et string Génie Logiciel I Cours VI - Typage statique / dynamique, fonctions virtuelles et classes abstraites, flots d entrées / sorties, et string Nicolas Kielbasiewicz C.D.C.S.P./I.S.T.I.L./I.C.J. Filière M.A.M.

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

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

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

et Programmation Objet

et Programmation Objet FACULTE POLYTECHNIQUE DE MONS Service d Informatique et Programmation Objet Mohammed Benjelloun 2 ème Bachelier Année académique 2008-2009 Table des matières Avant-propos--------------------------------------------------------------------------

Plus en détail

Architecture des Systèmes d Information Architecture des Systèmes d Information

Architecture des Systèmes d Information Architecture des Systèmes d Information Plan... Tableaux et tris I3 - Algorithmique et programmation 1 Rappels Nicol Delestre 2 Tableaux à n dimensions 3 Initiation aux tris Tableaux - v2.0.1 1 / 27 Tableaux - v2.0.1 2 / 27 Rappels : tableau

Plus en détail

C++ Programmer. en langage. 8 e édition. Avec une intro aux design patterns et une annexe sur la norme C++11. Claude Delannoy

C++ Programmer. en langage. 8 e édition. Avec une intro aux design patterns et une annexe sur la norme C++11. Claude Delannoy Claude Delannoy Programmer en langage C++ 8 e édition Avec une intro aux design patterns et une annexe sur la norme C++11 Groupe Eyrolles, 1993-2011. Groupe Eyrolles, 2014, pour la nouvelle présentation,

Plus en détail

Cours d initiation à la programmation en C++ Johann Cuenin

Cours d initiation à la programmation en C++ Johann Cuenin Cours d initiation à la programmation en C++ Johann Cuenin 11 octobre 2014 2 Table des matières 1 Introduction 5 2 Bases de la programmation en C++ 7 3 Les types composés 9 3.1 Les tableaux.............................

Plus en détail

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski cegielski@u-pec.fr

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski cegielski@u-pec.fr Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski cegielski@u-pec.fr Mars 2002 Pour Irène et Marie Legal Notice Copyright c 2002 Patrick Cégielski Université

Plus en détail

Les structures. Chapitre 3

Les structures. Chapitre 3 Chapitre 3 Les structures Nous continuons notre étude des structures de données qui sont prédéfinies dans la plupart des langages informatiques. La structure de tableau permet de regrouper un certain nombre

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

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

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

Plus en détail

Cours de C++ François Laroussinie. 2 novembre 2005. Dept. d Informatique, ENS de Cachan

Cours de C++ François Laroussinie. 2 novembre 2005. Dept. d Informatique, ENS de Cachan Cours de C++ François Laroussinie Dept. d Informatique, ENS de Cachan 2 novembre 2005 Première partie I Introduction Introduction Introduction Algorithme et programmation Algorithme: méthode pour résoudre

Plus en détail

Programmation Objet - Cours II

Programmation Objet - Cours II Programmation Objet - Cours II - Exercices - Page 1 Programmation Objet - Cours II Exercices Auteur : E.Thirion - Dernière mise à jour : 05/07/2015 Les exercices suivants sont en majorité des projets à

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

LES TYPES DE DONNÉES DU LANGAGE PASCAL

LES TYPES DE DONNÉES DU LANGAGE PASCAL LES TYPES DE DONNÉES DU LANGAGE PASCAL 75 LES TYPES DE DONNÉES DU LANGAGE PASCAL CHAPITRE 4 OBJECTIFS PRÉSENTER LES NOTIONS D ÉTIQUETTE, DE CONS- TANTE ET DE IABLE DANS LE CONTEXTE DU LAN- GAGE PASCAL.

Plus en détail

GOL502 Industries de services

GOL502 Industries de services GOL502 Industries de services Conception d un service Partie IIb Version 2013 Introduction Conception d un service partie IIb Nous verrons dans ce chapitre Modélisation d un service; Langage de modélisation

Plus en détail

Claude Delannoy. 3 e édition C++

Claude Delannoy. 3 e édition C++ Claude Delannoy 3 e édition Exercices Exercices C++ en en langage langage delc++ titre 4/07/07 15:19 Page 2 Exercices en langage C++ AUX EDITIONS EYROLLES Du même auteur C. Delannoy. Apprendre le C++.

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

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

Création d objet imbriqué sous PowerShell.

Création d objet imbriqué sous PowerShell. Création d objet imbriqué sous PowerShell. Par Laurent Dardenne, le 13/01/2014. Niveau Ce tutoriel aborde la création d objet composé, c est-à-dire que certains de ses membres seront eux-mêmes des PSObjects.

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

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

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

03/04/2007. Tâche 1 Tâche 2 Tâche 3. Système Unix. Time sharing

03/04/2007. Tâche 1 Tâche 2 Tâche 3. Système Unix. Time sharing 3/4/27 Programmation Avancée Multimédia Multithreading Benoît Piranda Équipe SISAR Université de Marne La Vallée Besoin Programmes à traitements simultanés Réseau Réseau Afficher une animation en temps

Plus en détail

Package Java.util Classe générique

Package Java.util Classe générique Package Java.util Classe générique 1 Classe Vector La taille est dynamique: dès qu un tableau vectoriel est plein, sa taille est doublée, triplée, etc. automatiquement Les cases sont de type Object add(object

Plus en détail

Premiers Pas en Programmation Objet : les Classes et les Objets

Premiers Pas en Programmation Objet : les Classes et les Objets Chapitre 2 Premiers Pas en Programmation Objet : les Classes et les Objets Dans la première partie de ce cours, nous avons appris à manipuler des objets de type simple : entiers, doubles, caractères, booléens.

Plus en détail

Département Automatisation et Informatisation Année 2005-2006. Programmation en C++ Institut des Sciences et Techniques de l Ingénieur d Angers

Département Automatisation et Informatisation Année 2005-2006. Programmation en C++ Institut des Sciences et Techniques de l Ingénieur d Angers Département Automatisation et Informatisation Année 2005-2006 Programmation en C++ Institut des Sciences et Techniques de l Ingénieur d Angers 1 Bertrand Cottenceau 1. Introduction du cours de C++...3

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

Cours 1: Java et les objets

Cours 1: Java et les objets Ressources Les interface homme-machine et le langage Java DUT première année Henri Garreta, Faculté des Sciences (Luminy) Cyril Pain-Barre & Sébastien Nedjar, IUT d Aix-Marseille (Aix) Cours 1: infodoc.iut.univ-aix.fr/~ihm/

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

Structure fonctionnelle d un SGBD

Structure fonctionnelle d un SGBD Fichiers et Disques Structure fonctionnelle d un SGBD Requetes Optimiseur de requetes Operateurs relationnels Methodes d acces Gestion de tampon Gestion de disque BD 1 Fichiers et Disques Lecture : Transfert

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

Quelques éléments de compilation en C et makefiles

Quelques éléments de compilation en C et makefiles Quelques éléments de compilation en C et makefiles Guillaume Feuillade 1 Compiler un programme C Le principe de la compilation consiste à passer d un ensemble de fichiers de code à un programme exécutable

Plus en détail

Excel avancé. Frédéric Gava (MCF) gava@univ-paris12.fr

Excel avancé. Frédéric Gava (MCF) gava@univ-paris12.fr Excel avancé Frédéric Gava (MCF) gava@univ-paris12.fr LACL, bâtiment P2 du CMC, bureau 221 Université de Paris XII Val-de-Marne 61 avenue du Général de Gaulle 94010 Créteil cedex Rappels et compléments

Plus en détail

TP1 : Initiation à Java et Eclipse

TP1 : Initiation à Java et Eclipse TP1 : Initiation à Java et Eclipse 1 TP1 : Initiation à Java et Eclipse Systèmes d Exploitation Avancés I. Objectifs du TP Ce TP est une introduction au langage Java. Il vous permettra de comprendre les

Plus en détail

NIMEGUE V3. Fiche technique 3.07 : Sauvegarde / Restauration manuelle

NIMEGUE V3. Fiche technique 3.07 : Sauvegarde / Restauration manuelle NIMEGUE V3 Fiche technique 3.07 : Sauvegarde / Restauration manuelle Version au 2 mai 2011 Toute donnée mémorisée sur un ordinateur, quelque soit le support, peut-être supprimée/effacée suite à un dysfonctionnement

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

Module.NET 3 Les Assemblys.NET

Module.NET 3 Les Assemblys.NET Module.NET Chapitre 3 Les Assemblys.NET 2011/2012 Page 1 sur 13 Contenu Cours... 3 3.1 - Définition d un assembly.net... 3 3.2 - Private assembly ou assembly privé.... 3 3.3 - Shared assembly ou assembly

Plus en détail

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris : Développement d un client REST, l application Vélib 1. Présentation L application présentée permet de visualiser les disponibilités des vélos et des emplacements de parking à la disposition des parisiens

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

Langage SQL : créer et interroger une base

Langage SQL : créer et interroger une base Langage SQL : créer et interroger une base Dans ce chapitre, nous revenons sur les principales requêtes de création de table et d accès aux données. Nous verrons aussi quelques fonctions d agrégation (MAX,

Plus en détail

EXTENSION D UN OUTIL DE VISUALISATION DE TRACES

EXTENSION D UN OUTIL DE VISUALISATION DE TRACES ASR9 - Projet de Fin d Études EXTENSION D UN OUTIL DE VISUALISATION DE TRACES Encadré par: M. François TRAHAY Mayssem BOUZAZI Khalil JEBALI Octobre 2013 - Janvier 2014 Remerciements Nous tenons à remercier

Plus en détail

La gestion des exceptions

La gestion des exceptions La gestion des exceptions Même lorsqu un programme est au point, certaines circonstances exceptionnelles peuvent compromettre la poursuite de son exécution ; il peut s agir par exemple de données incorrectes

Plus en détail

ERETES-SERIES. Support de formation. Formation ERETES ERETES-SERIE 1/58

ERETES-SERIES. Support de formation. Formation ERETES ERETES-SERIE 1/58 ERETES-SERIES Support de formation 2013 Formation ERETES ERETES-SERIE 1/58 1. Introduction... 4 2. La base de données «Serie»... 5 3. Les Interfaces... 11 4. Le Bloc-Notes... 14 5. La gestion des nomenclatures...

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

TP Bases de données réparties

TP Bases de données réparties page 1 TP Bases de données réparties requêtes réparties Version corrigée Auteur : Hubert Naacke, révision 5 mars 2003 Mots-clés: bases de données réparties, fragmentation, schéma de placement, lien, jointure

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

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

Chap III : Les tableaux

Chap III : Les tableaux Chap III : Les tableaux Dans cette partie, on va étudier quelques structures de données de base tels que : Les tableaux (vecteur et matrice) Les chaînes de caractères LA STRUCTURE DE TABLEAU Introduction

Plus en détail

Le langage C. Séance n 4

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

Plus en détail

C++ COURS N 2 : CLASSES, DONNÉES ET FONCTIONS MEMBRES Classes et objets en C++ Membres d'une classe Spécification d'une classe Codage du comportement

C++ COURS N 2 : CLASSES, DONNÉES ET FONCTIONS MEMBRES Classes et objets en C++ Membres d'une classe Spécification d'une classe Codage du comportement C++ COURS N 2 : CLASSES, DONNÉES ET FONCTIONS MEMBRES Classes et objets en C++ Membres d'une classe Spécification d'une classe Codage du comportement des objets d'une classe Utilisation d'une classe Droit

Plus en détail

Introduction à MATLAB R

Introduction à MATLAB R Introduction à MATLAB R Romain Tavenard 10 septembre 2009 MATLAB R est un environnement de calcul numérique propriétaire orienté vers le calcul matriciel. Il se compose d un langage de programmation, d

Plus en détail

Programme Compte bancaire (code)

Programme Compte bancaire (code) using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; Programme Compte bancaire (code) namespace compte_bancaire /// Classe Program public

Plus en détail

Une introduction à Java

Une introduction à Java Une introduction à Java IFT 287 (Semaine 1) UNIVERSITÉ DE SHERBROOKE 1 Java - Historique Développé par Sun Microsystems en 1994 Inventeur James Gosling (canadien!) Objectif langage sûr (fortement typé)

Plus en détail

Introduction à la Programmation Parallèle: MPI

Introduction à la Programmation Parallèle: MPI Introduction à la Programmation Parallèle: MPI Frédéric Gava et Gaétan Hains L.A.C.L Laboratoire d Algorithmique, Complexité et Logique Cours du M2 SSI option PSSR Plan 1 Modèle de programmation 2 3 4

Plus en détail

Java Licence Professionnelle CISII, 2009-2010. Cours 2 : Classes et Objets

Java Licence Professionnelle CISII, 2009-2010. Cours 2 : Classes et Objets Licence Professionnelle CISII, 2009-2010 Cours 2 : Classes et Objets 1 Classes et Objets Objectifs des LOO : - Manipuler des objets - Découper les programmes suivant les types des objets manipulés - Regrouper

Plus en détail

IMPORTATION, CRÉATION, MANIPULATION, EXPORTATION DE DONNÉES STATISTIQUES

IMPORTATION, CRÉATION, MANIPULATION, EXPORTATION DE DONNÉES STATISTIQUES IMPRTATIN, CRÉATIN, MANIPULATIN, EXPRTATIN DE DNNÉES STATISTIQUES Bernard Dupont Bernard.Dupont@univ-lille1.fr ahm.bahah@yahoo.fr Bien que l'analyse et le traitement des données ne soient pas sa vocation

Plus en détail

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL Cours PL/SQL Langage propre à Oracle basé sur ADA Offre une extension procédurale à SQL PL/SQL permet d utiliser un sous-ensemble du langage SQL des variables, des boucles, des alternatives, des gestions

Plus en détail

Classe ClInfoCGI. Fonctions membres principales. Gestion des erreurs

Classe ClInfoCGI. Fonctions membres principales. Gestion des erreurs Utilisation des classes de PourCGI par Michel Michaud, version 2002-11-23 Les fichiers PourCGI.h et PourCGI.cpp rendent disponibles deux classes et une fonction libre qui permettent de faire facilement

Plus en détail

Présentation du langage et premières fonctions

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

Plus en détail

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

Chapitre 2. Classes et objets

Chapitre 2. Classes et objets Chapitre 2: Classes et Objets 1/10 Chapitre 2 Classes et objets Chapitre 2: Classes et Objets 2/10 Approche Orientée Objet Idée de base de A.O.O. repose sur l'observation de la façon dont nous procédons

Plus en détail

1. Introduction...2. 2. Création d'une requête...2

1. Introduction...2. 2. Création d'une requête...2 1. Introduction...2 2. Création d'une requête...2 3. Définition des critères de sélection...5 3.1 Opérateurs...5 3.2 Les Fonctions...6 3.3 Plusieurs critères portant sur des champs différents...7 3.4 Requête

Plus en détail

Cours No 3 : Identificateurs, Fonctions, Premières Structures de contrôle.

Cours No 3 : Identificateurs, Fonctions, Premières Structures de contrôle. Université Montpellier-II UFR des Sciences - Département Informatique - Licence Informatique UE GLIN302 - Programmation Applicative et Récursive Cours No 3 : Identificateurs, Fonctions, Premières Structures

Plus en détail

(Langage de commandes) Les commandes sont données par l'utilisateur grâce au clavier, à partir d'une "invite" ou "prompt" (par exemple "c:\>" )

(Langage de commandes) Les commandes sont données par l'utilisateur grâce au clavier, à partir d'une invite ou prompt (par exemple c:\> ) Système d Exploitation d : MS-DOS MicroSoft Disk Operating System C est un système d exploitation développé par la société Microsoft. Il offre une interface textuelle basée sur un ensemble de commandes.

Plus en détail

Organiser le disque dur Dossiers Fichiers

Organiser le disque dur Dossiers Fichiers Ce document contient des éléments empruntés aux pages d aide de Microsoft Organiser le disque dur Dossiers Fichiers Généralités La connaissance de la logique d organisation des données sur le disque dur

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

Programmer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr)

Programmer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr) Programmer en JAVA par Tama (tama@via.ecp.fr( tama@via.ecp.fr) Plan 1. Présentation de Java 2. Les bases du langage 3. Concepts avancés 4. Documentation 5. Index des mots-clés 6. Les erreurs fréquentes

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

Chapitre I Notions de base et outils de travail

Chapitre I Notions de base et outils de travail Chapitre I Notions de base et outils de travail Objectifs Connaître les principes fondateurs et l historique du langage Java S informer des principales caractéristiques du langage Java Connaître l environnement

Plus en détail

Déploiement et monitoring

Déploiement et monitoring 1 Déploiement et monitoring Déploiement et monitoring Sommaire Déploiement et monitoring... 1 1 Introduction... 2 2 Configuration de IIS pour l environnement ASP.NET... 2 2.1 Activer IIS... 2 2.2 Prise

Plus en détail

Cours en ligne Développement Java pour le web

Cours en ligne Développement Java pour le web Cours en ligne Développement Java pour le web We TrainFrance info@wetrainfrance Programme général du cours Développement Java pour le web Module 1 - Programmation J2ee A) Bases de programmation Java Unité

Plus en détail

Cours Programmation Système

Cours Programmation Système Cours Programmation Système Filière SMI Semestre S6 El Mostafa DAOUDI Département de Mathématiques et d Informatique, Faculté des Sciences Université Mohammed Premier Oujda m.daoudi@fso.ump.ma Février

Plus en détail

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Structure d un programme et Compilation Notions de classe et d objet Syntaxe Cours1 Structure d un programme et Compilation Notions de classe et d objet Syntaxe POO 1 Programmation Orientée Objet Un ensemble d objet qui communiquent Pourquoi POO Conception abstraction sur les types

Plus en détail

Algorithmique I. Augustin.Lux@imag.fr Roger.Mohr@imag.fr Maud.Marchal@imag.fr. Algorithmique I 20-09-06 p.1/??

Algorithmique I. Augustin.Lux@imag.fr Roger.Mohr@imag.fr Maud.Marchal@imag.fr. Algorithmique I 20-09-06 p.1/?? Algorithmique I Augustin.Lux@imag.fr Roger.Mohr@imag.fr Maud.Marchal@imag.fr Télécom 2006/07 Algorithmique I 20-09-06 p.1/?? Organisation en Algorithmique 2 séances par semaine pendant 8 semaines. Enseignement

Plus en détail

Exercices sur les interfaces

Exercices sur les interfaces Exercices sur les interfaces Fabrice Rossi 18 octobre 1999 1 Le type Object 1.1 Manipulations élémentaires Exercice 1.1 : Indiquer l affichage produit par le programme suivant : public class UpCast1 {

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

Construire des plug-ins pour SAS Management Console SAS 9.1

Construire des plug-ins pour SAS Management Console SAS 9.1 Construire des plug-ins pour SAS Management Console SAS 9.1 Janvier 2005 Sommaire 1 INTRODUCTION... 3 1.1 OBJECTIFS... 3 1.2 PERIMETRE... 3 2 LES COMPOSANTS DE SAS MANAGEMENT CONSOLE... 4 3 LA CONSTRUCTION

Plus en détail

MIS 102 Initiation à l Informatique

MIS 102 Initiation à l Informatique MIS 102 Initiation à l Informatique Responsables et cours : Cyril Gavoille Catherine Pannier Matthias Robine Marc Zeitoun Planning : 6 séances de cours 5 séances de TD (2h40) 4 séances de TP (2h40) + environ

Plus en détail

COMPARAISONDESLANGAGESC, C++, JAVA ET

COMPARAISONDESLANGAGESC, C++, JAVA ET REPUBLIQUE DU BENIN *******@******* MINISTERE DE L ENSEIGNEMENT SUPERIEUR ET DE LA RECHERCHE SCIENTIFIQUE(MESRS) *******@******* UNIVERSITE D ABOMEY CALAVI(UAC) *******@******* ECOLE POLYTECHNIQUE D ABPOMEY

Plus en détail

Bernard HAMM, Évelyne LAVOISIER

Bernard HAMM, Évelyne LAVOISIER 92 MAÎTRISE DE PROGICIELS DE GESTION DE BASES DE DONNÉES ET DE TRAITEMENT DE TEXTE Compte rendu d'un stage à l'usage des professeurs de sciences sociales. Ce stage a été programmé A la demande et avec

Plus en détail

TP1 : Initiation à Java et Eclipse

TP1 : Initiation à Java et Eclipse TP1 : Initiation à Java et Eclipse 1 I. Objectif du TP TP1 : Initiation à Java et Eclipse Programmation Mobile Initiation à l environnement Eclipse et aux notions de base du langage Java. II. Environnement

Plus en détail

Projet L1, S2, 2015: Simulation de fourmis, Soutenance la semaine du 4 mai.

Projet L1, S2, 2015: Simulation de fourmis, Soutenance la semaine du 4 mai. Projet L1, S2, 2015: Simulation de fourmis, Soutenance la semaine du 4 mai. 1 Introduction On considère une grille de 20 lignes 20 colonnes. Une case de la grille peut être vide, ou contenir une et une

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

Débuter avec Excel. Excel 2007-2010

Débuter avec Excel. Excel 2007-2010 Débuter avec Excel Excel 2007-2010 Fabienne ROUX Conseils & Formation 10/04/2010 TABLE DES MATIÈRES LE RUBAN 4 LE CLASSEUR 4 RENOMMER LES FEUILLES DU CLASSEUR 4 SUPPRIMER DES FEUILLES D UN CLASSEUR 4 AJOUTER

Plus en détail

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object) Quelques patterns pour la persistance des objets avec DAO Ce cours présente des modèles de conception utilisés pour effectuer la persistance des objets Université de Nice Sophia-Antipolis Version 1.4 30/8/07

Plus en détail

as Architecture des Systèmes d Information

as Architecture des Systèmes d Information Plan Plan Programmation - Introduction - Nicolas Malandain March 14, 2005 Introduction à Java 1 Introduction Présentation Caractéristiques Le langage Java 2 Types et Variables Types simples Types complexes

Plus en détail

Algorithmique, Structures de données et langage C

Algorithmique, Structures de données et langage C UNIVERSITE PAUL SABATIER TOULOUSE III Algorithmique, Structures de données et langage C L3 IUP AISEM/ICM Janvier 2005 J.M. ENJALBERT Chapitre 1 Rappels et compléments de C 1.1 Structures Une structure

Plus en détail

Les fichiers. Chapitre 4

Les fichiers. Chapitre 4 Chapitre 4 Les fichiers Jusqu à maintenant tous les programmes que nous avons conçus travaillaient sur des données qui étaient perdues après chaque session de travail. On peut cependant, c est bien naturel,

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

Chapitre 1 : La gestion dynamique de la mémoire

Chapitre 1 : La gestion dynamique de la mémoire Chapitre 1 : La gestion dynamique de la mémoire En langage C un programme comporte trois types de données : Statiques; Automatiques ; Dynamiques. Les données statiques occupent un emplacement parfaitement

Plus en détail

et Active Directory Ajout, modification et suppression de comptes, extraction d adresses pour les listes de diffusion

et Active Directory Ajout, modification et suppression de comptes, extraction d adresses pour les listes de diffusion et Active Directory Ajout, modification et suppression de comptes, extraction d adresses pour les listes de diffusion Copyright 2009 Alt-N Technologies. 3 allée de la Crabette Sommaire Résumé... 3 MDaemon

Plus en détail

Création et Gestion des tables

Création et Gestion des tables Création et Gestion des tables Version 1.0 Z Grégory CASANOVA 2 Sommaire 1 Introduction... 3 2 Pré-requis... 4 3 Les tables... 5 3.1 Les types de données... 5 3.1.1 Les types de données Sql Server... 5

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

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

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

Plus en détail

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

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