Ecole Nationale Polytechnique Département Génie Industriel Année Universitaire 2011/2012. Les Listes

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

Download "Ecole Nationale Polytechnique Département Génie Industriel Année Universitaire 2011/2012. Les Listes"

Transcription

1 . Ecole Nationale Polytechnique Département Génie Industriel Année Universitaire 2011/2012 Cours Algorithmique et Programmation Les structures de données Les Listes Les structures de données Une structure est une combinaison d'objets simples en un objet plus complexe. Exemples de structures de données 1. Structures finies Variables, Enregistrements (struct en C, Record en Pascal ) 2. Structures indexées : Tableaux, Tableaux associatifs. Accès aux éléments par un index (Exemple : un numéro d'ordre). 3. Structures séquentielles : Listes, Arbres, Graphes. Chaque élément indique la position de l élément suivant. Une structure de données implémente concrètement un Type Abstrait. Liste : une certaine généralisation du tableau.. Plan du Chapitre Les structures de données linéaires 1. Les structures de données Listes 2. Les structures de données Piles 3. Les structures de données Files Plan du cours Les structures de données Listes 1. Définition récursive : 2. Définition du TDA Liste 3. Implémentation du TDA Élément et Position 4. Mise en œuvre des listes en tableau a. Interface et implémentation du TDA b. Liste avec tableau à taille variable 5. Mise en œuvre des listes par cellules chaînées a. Interface et implémentation du TDA b. Listes chaînées particulières Un même TDA peut donner lieu à plusieurs structures de données, avec des performances différentes. Les structures de données linéaires S2D : Caractérisées par leur comportement Caractéristique : une fonction Successeur Structures indexées : le successeur est l élément suivant. Structures séquentielles (récursives) : lien explicite vers le successeur (son adresse par exemple). ENP /2011/2012/G.I /1 Année / Chap4 : S2D, Les Listes 1 ENP /2011/2012/G.I /1 Année / Chap4 : S2D, Les Listes 2

2 Les listes Toute suite d informations est une liste. Exemples : liste d étudiants, de livres. Liste de produits, de clients Une liste est une suite ordonnée d éléments de même type. Structures de données récursives : Structure de taille n = objet + structure de taille (n-1) Structure de taille 1 = objet Structure de taille 0 = vide L ordre chaque élément possède une position dans la liste. Exemples : Un tableau, c est : tableau de taille 1 = une case tableau de taille n = une case + tableau de taille n-1 o Liste =une certaine généralisation du tableau o Par opposition à un tableau, le nombre d éléments est variable. Operations : On peut ajouter, supprimer ou modifier un élément, en début ou en fin de liste. On peut vider une liste ou savoir si elle contient un ou plusieurs éléments. Définition récursive d une liste : Une liste est soit une liste vide, soit un élément suivi d'une liste. Ce qui peut s écrire Liste ::= Élément, Liste Opérations usuelles sur les listes Créer une liste vide et tester si une liste est vide. Ajouter un élément en tête ou en fin de liste. Ajouter un élément en en une position donnée. La queue est la liste de tous les éléments suivants. Exemple L= L= 1, 8, 71, 27, 57, T= 1, 8, 71, 27, 57 Supprimer un élément en tête ou en fin de liste. Supprimer un élément donné. Rechercher un élément. Afficher, dupliquer une liste Concaténer, fusionner des listes. ENP /2011/2012/G.I /1 Année / Chap4 : S2D, Les Listes 3 ENP /2011/2012/G.I /1 Année / Chap4 : S2D, Les Listes 4

3 Définition du TDA Liste Encapsulation des données : Accès à la représentation interne via des fonctions l'utilisateur ne voit que les services (l interface) pas la représentation interne. TDA Liste (L) Utilise Element(E), Position (P), Booleen (B) Primitives (Opérations de base) Opérations de création /destruction Créer() :() L Créer une nouvelle liste vide Liste() :() L Détruire L () Supprime la liste ainsi que tous ses éléments. EstVide() : L B Test si une liste est vide Opérations de gestion modifier : E x L L modifie un élément à une position donnée de la liste. ajouter() : E x L L insère un élément à la tête de la liste insérer : E x L xp L insère un élément à une position donnée de la liste supprimer : L xp L supprime un élément à une position donnée de la liste. Opérations de parcours tete : L E retourne le premier élément de la liste suivant : L xp L retourne la liste qui suit un élément à une position donnée de la liste. dernier: L E retourne le dernier élément de la liste queue : L L Préconditions : Soit «l» une liste tête(l) NON(estVide(l)) queue(l) NON(estVide(l)) retourne la liste qui suit le premier élément de la liste. Les opérations «tête» et «queue» ne peuvent être appelées que si la liste est non vide Axiomes Soient «e» un élément et «l» une liste 1. EstVide( Créer() ) = VRAI 2. EstVide( Ajouter(e, l) ) = FAUX 3. Tête( Ajouter(e, l) ) = e 4. Queue( Ajouter(e, l) ) = l 5. Ajouter( Tête(l), Queue(l) ) = l Opérations classiques sur les listes : Opérations primitives on peut exprimer les opérations évoluées, sans manipuler ni pointeurs, ni tableaux : Opérations évoluées taille : L N appartient : E x L B dupliquer : L L inverser : L L Axiomes Soient «e» un élément et «l» une liste 1. taille( créer() ) = 0 2. taille(l) = taille( queue(l) ) inverser (créer() ) = créer() 4. inverser (l) = ajouter(queue( tête(l), inverser(queue(l))) Les fonctions de manipulation d'une liste se prêtent souvent à une implémentation récursive. L'algorithme général : deux cas : o cas de base pour une liste vide [] sans appel récursif o cas de propagation pour [E L] avec appel récursif sur L. Exemple : Longueur d une liste Si la liste est vide taille =0 Si non taille = taille (queue) +1 ENP /2011/2012/G.I /1 Année / Chap4 : S2D, Les Listes 5 ENP /2011/2012/G.I /1 Année / Chap4 : S2D, Les Listes 6

4 Mise en œuvre du TDA Liste Longueur d une liste : Version itérative : fonction taille (liste l ) :entier Var entier longueur = 0 ; début tant que NON(estVide(l)) faire longueur longueur + 1 l queue(l) fait retourne(longueur) fin Complexité : O(n) Longueur d une liste : Version recursive : fonction taille (liste l ) :entier var longueur : entier début si estvide(l) alors longueur 0 sinon longueur taille( queue(l) ) + 1 retourne (longueur) ; fin Complexité : O(n) Operation : inverser une liste fonction inverser(liste l ) :liste l2: liste début l2 = créer() ; tantque NON(estVide(l)) faire l2 ajouter( tête(l), l2 ) ; l queue(l) ; fait retourne (l2) fin Complexité : O( ) Algo : appartient tester si un élément x appartient à une liste l Entrée : une liste l et une donnée x Sortie : un booléen r égal à vrai ssi x appartient à L fonction appartient (liste l, element x ) :booleen var l2: liste r booleen debut r= faux; tantque NON(estVide(l)) faire si (tete(l)= x) alors r= vrai; fsi; l= queue(l); Fait retourne (r) fin Implémentation du TDA Liste Hypothèses (Liste générique) Tous les éléments de la liste appartiennent à un TDA ELEMENT. Les éléments de la liste peuvent êtres repérées à l aide d un TDA_ POSITION. On dit alors que Le TDA LISTE est le Conteneur TDA ELEMENT est le Contenant ENP /2011/2012/G.I /1 Année / Chap4 : S2D, Les Listes 7 ENP /2011/2012/G.I /1 Année / Chap4 : S2D, Les Listes 8

5 Définition du TDA ELEMENT Le TDA ELEMENT est d'un type quelconque (entier, caractère, ) muni des opérations de base (primitives ) suivantes : Construire et initialiser un élément ( allocation mémoire) Détruire un élément (libérer la mémoire allouée). Dupliquer un élément. Modifier (saisir) un élément Afficher un élément Tester si l élément est vide. Affecter un élément à un autre. Comparer deux éléments Définition du TDA POSITION Le TDA POSITION peut être le rang de l'élément (indice d un tableau) ou un pointeur sur la cellule contenn élément. Le TDA POSITION doit nous permettre de : Repérer un élément dans la liste (fonction Position()) Tester si deux positions sont égales (fonction Identique()) Affecter dans une position une autre position (fonction Affecter()). Lors de l'implémentation du TDA, une POSITION sera un entier ou un pointeur. Définition d une cellule Une liste est constituée de cellules contenant : Un champ d'informations de type ELEMENT. un champ successeur indiquant la position de la cellule suivante. Analogie entre les maillons d une chaine et les cellules d une liste L implémentation des primitives du TDA Liste revient à définir les fonctions élémentaires associées à une liste, qui permettent : de créer une cellule ; d'insérer une cellule dans la liste ; de supprimer une cellule de la liste ; Un TDA est indépendant de son implémentation: Plusieurs implémentations différentes: 1. Listes contiguës (en utilisant un tableau) 2. Listes chaînées Implémentation du TDA Liste en tableau Plusieurs représentations sont possibles 1. Mise en œuvre par une structure (Entier+Tableau). 2. Mise en œuvre par-curseurs-faux-pointeurs (Tableau 2D, Structure dont le 2e champ est un indice). ENP /2011/2012/G.I /1 Année / Chap4 : S2D, Les Listes 9 ENP /2011/2012/G.I /1 Année / Chap4 : S2D, Les Listes 10

6 TDA Liste : Implémentation par une structure Une liste est un pointeur sur une structure à deux champs un tableau surdimensionné à taille fixe (NMax), qui contient les éléments de la liste. un entier indiquant l'indice du dernier élément de la liste (NE=Taille logique de la liste). typedef int TPOSITION; #define POSITION_INVALIDE -1 //typedef enum FAUX, VRAI bool ; #define int bool typedef struct int NB2Elements //n; TCELLULE* Tab; TList_Tab; Interface Une cellule contient un élément (où un pointeur vers un élément) // Accès direct aux éléments typedef TELEMENT TCELLULE Accès indirect Chaque cellule de la liste contient l adresse d un élément (une structure ou même un tableau) typedef TELEMENT * TCELLULE Interface du TDA LISTE_TABLEAU Opérations Prototypes de foncions Interface du TDA LISTE_TABLEAU TListe_Tab Creer (int NMax); void detruire(liste_tab liste); bool EstVide(LISTE_TAB liste); bool EstPleinne(TListe_Tab liste); TELEMENT element(tliste_tab liste, int pos); int affecter(tliste_tab liste, int pos, ELEMENT e); int taille(tliste_tab liste); int ajouter_debut(tliste_tab liste, ELEMENT e); int ajouter_fin(tliste_tab liste, ELEMENT e); TListe_Tab inserer(tliste_tab L, TDA_ELEMENT e,tda_position pos ); TListe_Tab supprimer (TListe_Tab L, TDA_POSITION pos) TListe _Tab rechercher(tliste_tab liste, ELEMENT e); ENP /2011/2012/G.I /1 Année / Chap4 : S2D, Les Listes 11 ENP /2011/2012/G.I /1 Année / Chap4 : S2D, Les Listes 12

7 Réalisation du TDA LISTE_TABLEAU Réalisation Implémentation des opérations struct int NB2Elements; TCELLULE * Tab; TListe_Tab; TListe_Tab Creer (); TListe_Tab L L.Tab=(TCELLULE *) malloc(nmax*sizeof(tda_cellule)); if(l.tab==null) printf(" \nproblème de mémoire") ;exit(0) ; L-> NB2Elements = 0; return(l); int taille(tliste_tab L) return L.NB2Elements bool EstVide(TListe_Tab L) return (L.NB2Elements ==0) bool EstPleinne(TListe_Tab * L) return ( L.NB2Elements ==NMax) ELEMENT element(liste_tab liste, int pos); return L.Tab[pos]; LISTE_TAB affecter(liste_tab liste, int pos, ELEMENT e) Tab[pos]=e; return(l) TListe_Tab inserer() (TListe_Tab L, TELEMENT e, TPOSITION pos) If ((pos> L.NB2Elements+1) (pos<1)) return(l); else L.NB2Elements++; for(int i= L.NB2Elements-1;i>=pos; i--) L.Tab[i] = L.Tab[i-1]; L.Tab[pos-1]=e; return(l); TListe_Tab supprimer (TListe_Tab L, TDA_POSITION pos) If (pos<1 pos>l.nb2elements) return(l); else for(int i=pos-1;i<l.nb2elements-1; i++) L.Tab[i]=L.Tab[i+1]; L.NB2Elements--; return(l); TListe_Tab ajouter_debut(tliste_tab L, TELEMENT e) inserer (L, e, 1) ; TListe_Tab ajouter_fin(tliste_tab L, TELEMENT e) inserer (L, e, L.NB2Elements+1) ; void detruire(tliste_tab liste) liste.nb2elements=0 // si accès indirecte il faut détruire aussi les éléments // avant de détruire le tableau de pointeurs free(liste.tab); ENP /2011/2012/G.I /1 Année / Chap4 : S2D, Les Listes 13 ENP /2011/2012/G.I /1 Année / Chap4 : S2D, Les Listes 14

8 Listes avec tableau: Récapitulation Complexité Insertion et suppression sont en O(n). Précédent et accès direct sont en O(1). Avantages Parcours facile à implémenter et efficace Simplicité. Limitation 1. Taille fixe : aucune flexibilité. 2. Besoin de sur-dimensionner les tableaux : 3. Coût élevé des opérations d insertion et de suppression Coût proportionnel à la taille de la liste. Inapproprié pour de très grandes listes. Liste avec tableau à taille variable Liste(taille fixe ) liste(taille variable ) : Possibilité d allouer dynamiquement un tableau. Réallocation pour suivre la croissance de la liste. aucun changement de spécification sur les opérations du TDA. Technique largement utilisées en C++, Java, C#. Levée des problèmes De surconsommation de mémoire. De manque de flexibilité. Maintien des problèmes d efficacité des opérations d insertion et de suppression Alternative : Les listes chaînées Mise en œuvre des listes par cellules chaînées Cellules chaînées Une cellule est composée de deux champs : <element>, contenant un élément de la liste Cellules doublement chaînées La structure d une cellule contient, en plus de l élément (la donnée), deux pointeurs: Un pointeur sur la cellule suivante, Un pointeur sur la cellule précédente. typedef struct TELEMENT element; TCELLULE * suivant ; TCELLULE * precedent; TCELLULE; parcours de la liste dans les deux sens. On parle de liste doublement chaînée Liste chaînée //Un liste est un pointeur sur une cellule typedef struct TCELLULE * PCELLULE ; //Pointeur typedef int TPOSITION; #define POSITION_INVALIDE -1 typedef TCELLULE * TLISTE ; <Suivant>, contenant un pointeur sur la cellule suivante typedef struct TELEMENT element; TCELLULE * suivant ; TCELLULE; ENP /2011/2012/G.I /1 Année / Chap4 : S2D, Les Listes 15 ENP /2011/2012/G.I /1 Année / Chap4 : S2D, Les Listes 16

9 Interface du TDA Liste chainée Opérations Prototypes de foncions TLISTE Creer (); void detruire(tliste liste); int taille(tliste liste); bool EstVide(TLISTE liste); TELEMENT tete(tliste L) ; TLISTE queue(tliste L) TELEMENT element(tliste liste, TPOSITION pos); int affecter(tliste liste, TPOSITION pos, TELEMENT e); TLISTE ajouter_debut(liste liste, ELEMENT e); TLISTE ajouter_fin(tliste liste, TELEMENT e); TLISTE inserer(tliste L, TELEMENT e, TPOSITION pos ); TLISTE supprimer (TLISTE L, TPOSITION pos) Réalisation du TDA Liste Chainée Implémentation des primiyives TCELLULE * Creer_Cellule (); PCELLULE * pcell pcell=(pcellule) malloc(1*sizeof(tcellule)); if (pcell==null) printf(" \nproblème de mémoire") ;exit(-1) ; pcell->suivant=null; return(pcell); bool EstVide(TLISTE L) return (L==NULL) TELEMENT tete(liste L) If!(EstVide(L)) return (L->element LISTE queue(tliste L) If (!(EstVide(L))) return (L->suivant int taille(tliste_ L) int longueur = 0 ; PCELLULE p=l ; while (!(EstVide(p))) longueur = longueur + 1 ; p = queue(p) ; return(longueur) ; Ajout et Insertion d'un élément dans la liste Algorithme Déclarer l'élément à insérer Allouer de la mémoire pour le nouvel élément Remplir le contenu du champ de données Mettre à jour les pointeurs en faisant attention aux cas particuliers (Premier et dernier élément, liste avec un seul élément etc) TLISTE Creer (); TLISTE L =NULL ; // TLISTE L = Creer_Cellule() ; return(l); TListe ajouter_debut(tliste L, TELEMENT e) PCELLULE Nouvelle_Cellule=Creer_Cellule (); Nouvelle_Cellule ->element=e; Nouvelle_Cellule ->suivant=l; l= Nouvelle_Cellule ; ENP /2011/2012/G.I /1 Année / Chap4 : S2D, Les Listes 17 ENP /2011/2012/G.I /1 Année / Chap4 : S2D, Les Listes 18

10 TListe ajouter_fin(tliste L, TELEMENT e) PCELLULE, dernier, p=l; while (!(EstVide(p))) dernier=p; p=p->suivant; Nouvelle_Cellule ->suivant=null; dernier->suivant= Nouvelle_Cellule; return l; /* insérer un élément après une position donnée */ TLISTE inserer (TLISTE l, TELEMENT e, TPOSITION pos) // précondition :0 < pos < longueur(l)+1 if (pos<1 pos>taille(l)+1) printf("erreur : rang non valide!\n"); exit(-1); PCELLULE Nouvelle_Cellule=Creer_Cellule (); Nouvelle_Cellule ->element=e; Nouvelle_Cellule ->suivant=null; if (pos==1) Nouvelle_Cellule ->suivant=l; l= Nouvelle_Cellule ; else int k; PCELLULE p=l; for (k=1; k<pos-1; k++) p=p->suivant; Nouvelle_Cellule ->suivant= p->suivant; p->suivant= Nouvelle_Cellule; return l; Supprimer un élément après une position donnée Algorithme Atteindre l 'élément à supprimer qui se trouve à une position donnée Utiliser un pointeur temporaire pour sauvegarder l'adresse de l élément à supprimer. Faire pointer le pointeur suivant de l'élément précédent vers l'adresse du pointeur suivant de l'élément à supprimer. Libérer la mémoire occupée par l'élément supprimé TLISTE suppimer (TListe * liste, TPOSITION pos) if (pos<1 pos>taille(l)) printf("erreur : rang non valide!\n"); exit(-1); TCELLULE *=liste; TCELLULE *p1 for (int i = 1; i < pos; ++i) p= p->suivant; // position pos p1 = p->suivant; // position pos+1 p->suivant = p->suivant->suivant; // position pos+2 //éventuellement free (p1-> element); free (p1) return liste; ENP /2011/2012/G.I /1 Année / Chap4 : S2D, Les Listes 19 ENP /2011/2012/G.I /1 Année / Chap4 : S2D, Les Listes 20

11 void detruire (TListe liste) TLISTE p2delete; while ((liste!= NULL) p2delete = liste; liste = liste->suivant; //free (p2delete->element); free (p2delete); Manipulation de listes chaînées Recherche par valeur TLISTE Rechercher( TLISTE liste, TELEMENT e) TLISTE p = liste; While ((p!= NULL) If ( p->element ==e)) return p else p = p->suivant; return p; Recherche par position TLISTE Renvoyer( TLISTE liste, TPOSITION pos) Listes chaînées particulières Pour avoir le contrôle de la liste il est préférable de sauvegarder certains éléments : le premier élément (début), le dernier élément (fin), l élément courant, le nombre d'éléments. Un liste est [un pointeur sur] une structure composée de plusieurs champs. typedef struct TCELLULE * debut; TCELLULE * fin;.. TCELLULE *Courant; int NB2Elements; TListe; Complexité : Plusieurs autres variantes des listes chaînées Liste doublement chaînée : On introduit un double chaînage pour autoriser un parcours dans les deux sens. Liste avec sentinelle : On peut insérer une tête de liste fictive (une sentinelle, toujours présente), pour simplifier quelques opérations et éviter plusieurs validations. ENP /2011/2012/G.I /1 Année / Chap4 : S2D, Les Listes 21 ENP /2011/2012/G.I /1 Année / Chap4 : S2D, Les Listes 22

12 Liste avec sentinelle La liste vide doit comporter au moins un élément, la sentinelle L adresse de la liste n est pas modifiée par les insertions/ suppressions en tête de liste. Liste circulaire ou anneau : Le pointeur final pointe sur le premier élément de la liste Donner un successeur au dernier élément de la liste. Le premier et le dernier élément de la liste sont comme tous les autres. Liste circulaire avec sentinelle. Le premier élément de la liste, sentinelle, est toujours présent, le dernier élément pointe vers la sentinelle. Fin de liste : on ne teste plus si le pointeur est nul, mais s il est égal à la sentinelle. On peut utiliser la place pour mettre une information temporaire (cas de la recherche séquentielle). Comparatif des deux représentations Tableaux/listes chainées. Tableaux Accès direct et rapide aux éléments. Coût élevé des opérations d insertion et de suppression d un élément (déplacement d éléments).. Inapproprié pour de très grandes listes Gestion de la mémoire Tableaux Taille maximale fixée Gestion statique de la mémoire Tout l espace mémoire est alloué à l avance. Espace mémoire optimisé pour la sauvegarde des éléments de la Listes chainées Accès séquentiel, souvent dans une seule direction. Insertion et suppression rapides et efficaces. insertion par déviation suppression par court-circuit bien adaptée pour la manipulation des séquences de longueurs différentes Listes chainées Pas de limitation de taille gestion dynamique de la mémoire. Surencombrement de l espace mémoire pour la sauvegarde des pointeurs liste. Complexité des opérations Opération Tableau Liste Accès à un élément O(1) O(n) Insertion/Suppression en tête O(n) O(1) Insertion/suppression au milieu O(n) O(n) Parcours O(n) O(n) ENP /2011/2012/G.I /1 Année / Chap4 : S2D, Les Listes 23 ENP /2011/2012/G.I /1 Année / Chap4 : S2D, Les Listes 24

13 Conclusion Choix de l implémentation? Tout dépend des opérations envisagées. ENP /2011/2012/G.I /1 Année / Chap4 : S2D, Les Listes 25 ENP /2011/2012/G.I /1 Année / Chap4 : S2D, Les Listes 26

Ensimag 1ère année Algorithmique 1 Examen 2ième session 24 juin 2010. Algorithmique 1

Ensimag 1ère année Algorithmique 1 Examen 2ième session 24 juin 2010. Algorithmique 1 Algorithmique 1 Durée : 2h Machines électroniques interdites Tous documents papiers autorisés Il est conseillé de traiter les deux parties dans l ordre du sujet. Veuillez respecter les notations introduites

Plus en détail

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

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

Plus en détail

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

Les structures de données. Rajae El Ouazzani

Les structures de données. Rajae El Ouazzani Les structures de données Rajae El Ouazzani Les arbres 2 1- Définition de l arborescence Une arborescence est une collection de nœuds reliés entre eux par des arcs. La collection peut être vide, cad l

Plus en détail

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

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

Plus en détail

Cours d 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

Université Bordeaux 1, Licence Semestre 3 - Algorithmes et struct...

Université Bordeaux 1, Licence Semestre 3 - Algorithmes et struct... Université Bordeaux 1 table des matières Licence Semestre 3 - Algorithmes et structures de données 1 Dernière mise à jour effectuée le 23 Octobre 2013 Piles et Files Déitions Primitives de piles, exemples

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

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

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

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

Plus en détail

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

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

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

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

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

Plus en détail

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

Programmation avec des objets : Cours 7. Menu du jour

Programmation avec des objets : Cours 7. Menu du jour 1 Programmation avec des objets : Cours 7 Menu du jour 1. Retour sur la classe Liste 2. Précisions sur l interface 3. Difficultés dans le cas d erreurs 4. Soulever des exceptions 5. Utilisation des Listes

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

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

Les arbres binaires de recherche

Les arbres binaires de recherche Institut Galilée Année 2010-2011 Algorithmique et arbres L2 TD 6 Les arbres binaires de recherche Type en C des arbres binaires (également utilisé pour les ABR) : typedef struct noeud_s { struct noeud_s

Plus en détail

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

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

PROJET ALGORITHMIQUE ET PROGRAMMATION II

PROJET ALGORITHMIQUE ET PROGRAMMATION II PROJET 1 ALGORITHMIQUE ET PROGRAMMATION II CONTENU DU RAPPORT A RENDRE : o Fiche signalétique du binôme o Listing des différents fichiers sources o CD sources o Il sera tenu compte de la présentation du

Plus en détail

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

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

Plus en détail

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

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

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

Plus en détail

É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

Cours de Programmation Impérative: Zones de mémoires et pointeurs

Cours de Programmation Impérative: Zones de mémoires et pointeurs Cours de Programmation Impérative: Zones de mémoires et pointeurs Julien David A101 - david@lipn.univ-paris13.fr Julien David (A101 - david@lipn.univ-paris13.fr) 1 / 1 Z`o n`e s `d`e m`é m`o i r`e Julien

Plus en détail

Introduction à la programmation concurrente

Introduction à la programmation concurrente Introduction à la programmation concurrente Moniteurs Yann Thoma Reconfigurable and Embedded Digital Systems Institute Haute Ecole d Ingénierie et de Gestion du Canton de Vaud This work is licensed under

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

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

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

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

Java Licence Professionnelle CISII, 2009-10

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

Plus en détail

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

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

6. Hachage. Accès aux données d'une table avec un temps constant Utilisation d'une fonction pour le calcul d'adresses

6. Hachage. Accès aux données d'une table avec un temps constant Utilisation d'une fonction pour le calcul d'adresses 6. Hachage Accès aux données d'une table avec un temps constant Utilisation d'une fonction pour le calcul d'adresses PLAN Définition Fonctions de Hachage Méthodes de résolution de collisions Estimation

Plus en détail

Polymorphisme, la classe Object, les package et la visibilité en Java... 1

Polymorphisme, la classe Object, les package et la visibilité en Java... 1 Polymorphisme, la classe Object, les package et la visibilité en Java. Polymorphisme, la classe Object, les package et la visibilité en Java.... 1 Polymorphisme.... 1 Le DownCast... 4 La Classe Object....

Plus en détail

6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr

6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr 6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr Interface d un SGF Implémentation d un SGF Gestion de la correspondance entre la structure logique et la structure

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

INTRODUCTION AUX SYSTEMES D EXPLOITATION. TD2 Exclusion mutuelle / Sémaphores

INTRODUCTION AUX SYSTEMES D EXPLOITATION. TD2 Exclusion mutuelle / Sémaphores INTRODUCTION AUX SYSTEMES D EXPLOITATION TD2 Exclusion mutuelle / Sémaphores Exclusion mutuelle / Sémaphores - 0.1 - S O M M A I R E 1. GENERALITES SUR LES SEMAPHORES... 1 1.1. PRESENTATION... 1 1.2. UN

Plus en détail

Cours d Algorithmique et de Langage C 2005 - v 3.0

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

Plus en détail

T. A. D. pile. Chapitre 7 (suite) Listes particulières. T. A. D. file. représentation chaînée de la file algorithmique. Files

T. A. D. pile. Chapitre 7 (suite) Listes particulières. T. A. D. file. représentation chaînée de la file algorithmique. Files Chapitre 7 (suite) Listes particulières Pile : liste particulière T. A. D. pile insertion et suppression au sommet de la pile extraction Files queue Listes doublement chaînées insertion file : liste particulière

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

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

TP, première séquence d exercices.

TP, première séquence d exercices. TP, première séquence d exercices. Benoît Valiron benoit.valiron@lipn.univ-paris13.fr 7 novembre 2010 Introduction Vous écrirez les réponses aux questions courtes sur une feuille à rendre à la fin de la

Plus en détail

Correction TD Algorithmique 5.3 Pile - 5.4 Liste 5.3 Pile

Correction TD Algorithmique 5.3 Pile - 5.4 Liste 5.3 Pile Correction TD Algorithmique 5.3 Pile - 5.4 Liste 5.3 Pile Classe Pile var sommet : entier var vals : Tableau Methode Pile() vals nouveau Tableau (?) sommet -1 Methode estvide() :booléen Renvoie

Plus en détail

Sommaire. Structure. Liste simplement chaînée ALGORITHME ET STRUCTURES DE DONNÉES II

Sommaire. Structure. Liste simplement chaînée ALGORITHME ET STRUCTURES DE DONNÉES II Sommaire ALGORITHME ET STRUCTURES DE DONNÉES II LES LISTES Liste simplement chaînée Liste doublement chaînée Liste circulaire Dr. Jihène Tounsi ISG de Sousse Site web http://www.jihenetounsi.com Email:

Plus en détail

Représentation d un entier en base b

Représentation d un entier en base b Représentation d un entier en base b 13 octobre 2012 1 Prérequis Les bases de la programmation en langage sont supposées avoir été travaillées L écriture en base b d un entier est ainsi défini à partir

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

Algorithmique & programmation

Algorithmique & programmation Algorithmique & programmation Type structuré Article, Enregistrement, Structure Définition de nouveaux types!! On a vu les types simples "! entier, booléen, caractère, chaîne de caractères!! Comment gérer

Plus en détail

Dans le chapitre 1, nous associions aux fichiers ouverts des descripteurs de fichiers par lesquels nous accédions aux fichiers.

Dans le chapitre 1, nous associions aux fichiers ouverts des descripteurs de fichiers par lesquels nous accédions aux fichiers. I Présentation : Dans le chapitre 1, nous avons vu comment utiliser les appels-systèmes de bas niveau pour créer et accéder à des fichiers sur le disque. Nous avons notamment mis en évidence leur dépouillement

Plus en détail

Travaux Dirigés n 1 : chaînes de caractères

Travaux Dirigés n 1 : chaînes de caractères UE LE315 Travaux Dirigés n 1 : chaînes de caractères Exercice 1 Ecrire une fonction int nombre_caract(char *chaîne) qui retourne la taille d une chaîne de caractères. Exercice 2 Ecrire la fonction void

Plus en détail

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

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

Plus en détail

École Polytechnique de Montréal. Département de Génie Informatique et Génie Logiciel. Cours INF2610. Contrôle périodique.

École Polytechnique de Montréal. Département de Génie Informatique et Génie Logiciel. Cours INF2610. Contrôle périodique. École Polytechnique de Montréal Département de Génie Informatique et Génie Logiciel Cours INF2610 Contrôle périodique Automne 2013 Date : 11 octobre 2013 de 18h à 20h Professeur : Boucheneb Hanifa Documentation

Plus en détail

Le prototype de la fonction main()

Le prototype de la fonction main() Le prototype de la fonction main() 1. Introduction...1 2. Paramètres et type de retour de la fonction main()...1 3. Exemple 1...2 4. La fonction exit() du C...2 5. Détecter le code de retour d un programme

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

Cours Informatique Master STEP

Cours Informatique Master STEP Cours Informatique Master STEP Bases de la programmation: Compilateurs/logiciels Algorithmique et structure d'un programme Programmation en langage structuré (Fortran 90) Variables, expressions, instructions

Plus en détail

Langage C. Patrick Corde. Patrick.Corde@idris.fr. 22 juin 2015. Patrick Corde ( Patrick.Corde@idris.fr ) Langage C 22 juin 2015 1 / 289

Langage C. Patrick Corde. Patrick.Corde@idris.fr. 22 juin 2015. Patrick Corde ( Patrick.Corde@idris.fr ) Langage C 22 juin 2015 1 / 289 Langage C Patrick Corde Patrick.Corde@idris.fr 22 juin 2015 Patrick Corde ( Patrick.Corde@idris.fr ) Langage C 22 juin 2015 1 / 289 Table des matières I 1 Présentation du langage C Historique Intérêts

Plus en détail

Projet Active Object

Projet Active Object Projet Active Object TAO Livrable de conception et validation Romain GAIDIER Enseignant : M. Noël PLOUZEAU, ISTIC / IRISA Pierre-François LEFRANC Master 2 Informatique parcours MIAGE Méthodes Informatiques

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

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

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test Grandes lignes Analyseur Statique de logiciels Temps RÉel Embarqués École Polytechnique École Normale Supérieure Mercredi 18 juillet 2005 1 Présentation d 2 Cadre théorique de l interprétation abstraite

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

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

Initiation à la programmation en Python

Initiation à la programmation en Python I-Conventions Initiation à la programmation en Python Nom : Prénom : Une commande Python sera écrite en caractère gras. Exemples : print 'Bonjour' max=input("nombre maximum autorisé :") Le résultat de

Plus en détail

Cours de Systèmes d Exploitation

Cours de Systèmes d Exploitation Licence d informatique Synchronisation et Communication inter-processus Hafid Bourzoufi Université de Valenciennes - ISTV Introduction Les processus concurrents s exécutant dans le système d exploitation

Plus en détail

RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION)

RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION) CLASSE RACINE Object ancêtre de toutes les classes RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION) définit donc des méthodes héritées par toutes

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

Compression de Données - Algorithme de Huffman Document de Conception

Compression de Données - Algorithme de Huffman Document de Conception ROLLET Samuel SALLE Jennifer Compression de Données - Algorithme de Huffman Document de Conception Projet d'algorithmique et Structure des Données 1 SOMMAIRE 1. Domaine d application....4 1.1 Objectifs

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

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

L exclusion mutuelle distribuée

L exclusion mutuelle distribuée L exclusion mutuelle distribuée L algorithme de L Amport L algorithme est basé sur 2 concepts : L estampillage des messages La distribution d une file d attente sur l ensemble des sites du système distribué

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

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ; CNAM NFP121 TP 10 19/11/2013 (Séance 5) Objectif Manipuler les exceptions ; 1 Entrées/sorties Exercice 1 : Lire un entier à partir du clavier Ajouter une méthode readint(string message) dans la classe

Plus en détail

MISE A NIVEAU INFORMATIQUE LANGAGE C - EXEMPLES DE PROGRAMMES. Université Paris Dauphine IUP Génie Mathématique et Informatique 2 ème année

MISE A NIVEAU INFORMATIQUE LANGAGE C - EXEMPLES DE PROGRAMMES. Université Paris Dauphine IUP Génie Mathématique et Informatique 2 ème année 2003-2004 Université Paris Dauphine IUP Génie Mathématique et Informatique 2 ème année MISE A NIVEAU INFORMATIQUE LANGAGE C - EXEMPLES DE PROGRAMMES Maude Manouvrier La reproduction de ce document par

Plus en détail

QUESTION 1 {2 points}

QUESTION 1 {2 points} ELE4301 Systèmes logiques II Page 1 de 8 QUESTION 1 {2 points} En se servant de paramètres électriques donnés dans le Tableau 1 ci-dessous, on désire déterminer la fréquence d opération du compteur présenté

Plus en détail

Java Licence Professionnelle 2009-2010. Cours 7 : Classes et méthodes abstraites

Java Licence Professionnelle 2009-2010. Cours 7 : Classes et méthodes abstraites Java Licence Professionnelle 2009-2010 Cours 7 : Classes et méthodes abstraites 1 Java Classes et méthodes abstraites - Le mécanisme des classes abstraites permet de définir des comportements (méthodes)

Plus en détail

Processus! programme. DIMA, Systèmes Centralisés (Ph. Mauran) " Processus = suite d'actions = suite d'états obtenus = trace

Processus! programme. DIMA, Systèmes Centralisés (Ph. Mauran)  Processus = suite d'actions = suite d'états obtenus = trace Processus 1) Contexte 2) Modèles de Notion de Points de vue Modèle fourni par le SX Opérations sur les 3) Gestion des Représentation des Opérations 4) Ordonnancement des Niveaux d ordonnancement Ordonnancement

Plus en détail

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

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

Plus en détail

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

#include <stdio.h> #include <stdlib.h> struct cell { int clef; struct cell *suiv; };

#include <stdio.h> #include <stdlib.h> struct cell { int clef; struct cell *suiv; }; #include #include struct cell int clef; struct cell suiv; ; / longueur. pc->suiv est l abréviation de (pc).suiv. pour cette fonction comme pour les suivantes, on donne, lorsqu il existe

Plus en détail

Organigramme / Algorigramme Dossier élève 1 SI

Organigramme / Algorigramme Dossier élève 1 SI Organigramme / Algorigramme Dossier élève 1 SI CI 10, I11 ; CI 11, I10 C24 Algorithmique 8 février 2009 (13:47) 1. Introduction Un organigramme (ou algorigramme, lorsqu il est plus particulièrement appliqué

Plus en détail

Licence Sciences et Technologies Examen janvier 2010

Licence Sciences et Technologies Examen janvier 2010 Université de Provence Introduction à l Informatique Licence Sciences et Technologies Examen janvier 2010 Année 2009-10 Aucun document n est autorisé Les exercices peuvent être traités dans le désordre.

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

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

INITIATION AU LANGAGE JAVA

INITIATION AU LANGAGE JAVA INITIATION AU LANGAGE JAVA I. Présentation 1.1 Historique : Au début des années 90, Sun travaillait sur un projet visant à concevoir des logiciels simples et performants exécutés dans des PDA (Personnal

Plus en détail

Programmation Par Objets

Programmation Par Objets Programmation Par Objets Structures de données package java.util B. Carré Polytech Lille 1 Tableaux et structures de données Tableaux «Objets» taille fixe type des éléments : primitif (homogène) ou objets

Plus en détail

Brefs rappels sur la pile et le tas (Stack. / Heap) et les pointeurs

Brefs rappels sur la pile et le tas (Stack. / Heap) et les pointeurs Brefs rappels sur la pile et le tas (Stack / Heap) et les pointeurs (exemples en C) v1.11 - Olivier Carles 1 Pile et Tas Mémoire allouée de manière statique Mémoire Allouée Dynamiquement variables locales

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

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

OS Réseaux et Programmation Système - C5

OS Réseaux et Programmation Système - C5 OS Réseaux et Programmation Système - C5 Rabie Ben Atitallah rabie.benatitallah@univ-valenciennes.fr RPC - XDR Rappel RPC: Remote Procedure Call Besoin d un environnement de haut niveau pour le développement

Plus en détail

Cours de Programmation 2

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

Plus en détail

Arbres binaires de recherche

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

Plus en détail

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java Langages objets Introduction M2 Pro CCI, Informatique Emmanuel Waller, LRI, Orsay présentation du module logistique 12 blocs de 4h + 1 bloc 2h = 50h 1h15 cours, 45mn exercices table, 2h TD machine page

Plus en détail

4. Groupement d objets

4. Groupement d objets Conception objet en Java avec BlueJ une approche interactive 4. Groupement d objets Collections et itérateurs David J. Barnes, Michael Kölling version française: Patrice Moreaux Rédigé avec 1.0 Principaux

Plus en détail

ECR_DESCRIPTION CHAR(80), ECR_MONTANT NUMBER(10,2) NOT NULL, ECR_SENS CHAR(1) NOT NULL) ;

ECR_DESCRIPTION CHAR(80), ECR_MONTANT NUMBER(10,2) NOT NULL, ECR_SENS CHAR(1) NOT NULL) ; RÈGLES A SUIVRE POUR OPTIMISER LES REQUÊTES SQL Le but de ce rapport est d énumérer quelques règles pratiques à appliquer dans l élaboration des requêtes. Il permettra de comprendre pourquoi certaines

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

Définition des Webservices Ordre de paiement par email. Version 1.0

Définition des Webservices Ordre de paiement par email. Version 1.0 Définition des Webservices Ordre de paiement par email Version 1.0 Rédaction, Vérification, Approbation Rédaction Vérification Approbation Nom Date/Visa Nom Date/Visa Nom Date/Visa Historique du document

Plus en détail

Examen Médian - 1 heure 30

Examen Médian - 1 heure 30 NF01 - Automne 2014 Examen Médian - 1 heure 30 Polycopié papier autorisé, autres documents interdits Calculatrices, téléphones, traducteurs et ordinateurs interdits! Utilisez trois copies séparées, une

Plus en détail

FONCTION DE DEMANDE : REVENU ET PRIX

FONCTION DE DEMANDE : REVENU ET PRIX FONCTION DE DEMANDE : REVENU ET PRIX 1. L effet d une variation du revenu. Les lois d Engel a. Conditions du raisonnement : prix et goûts inchangés, variation du revenu (statique comparative) b. Partie

Plus en détail