Objectifs du cours d aujourd hui. Informatique I : Cours d introduction à l informatique et à la programmation Structures de Données Abstraites & Tris
|
|
- Benoît Pageau
- il y a 8 ans
- Total affichages :
Transcription
1 Objectifs du cours d aujourd hui Informatique I : Cours d introduction à l informatique et à la programmation Structures de Données Abstraites & Tris Continuer l approfondissement de la programmation de base en présentant d autres thèmes de l informatique : introduction aux structures de données abstraites : listes chaînées piles introduction aux algorithmes de tris Jamila Sam Haroud Laboratoire d Intelligence Artificielle Faculté I&C Informatique I Cours1 : S.D.A. & Tris 1 Informatique I Cours1 : S.D.A. & Tris Pourquoi modéliser les données? C est quoi une «structure de données abstraite»? L élaboration d un algorithme est grandement facilité par l utilisation de structures de données abstraites, de plus haut niveau, et de fonctions de manipulations associées. Une structure de données doit modéliser au mieux les informations à traiter pour en faciliter le traitement par l algorithme considéré. Choisir les bons modèles de données est aussi important que le choix de bons algorithmes Algorithme et structure de données abstraite sont intimement liés : Programme = algorithme + données Une structure de données abstraite (S.D.A.) est un ensemble organisé d informations (ou données) reliées logiquement et pouvant être manipulées non seulement individuellement mais aussi comme un tout. Exemples généraux : tableau (au sens général du terme) contenu : divers éléments de types à préciser interactions : demander la taille du tableau, accéder (lecture/écriture) à chaque élément individuellement,... vecteur (au sens général, pas C++) : formalisation mathématique d espace vectoriel sur un corps K contenu : n coordonnées (éléments de K) interactions : les propriétés élémentaires définissant un espace vectoriel Informatique I Cours1 : S.D.A. & Tris 3 Informatique I Cours1 : S.D.A. & Tris 4
2 C est quoi une «structure de données abstraite»? Une structure de données abstraite (S.D.A.) est un ensemble organisé d informations (ou données) reliées logiquement et pouvant être manipulées non seulement individuellement mais aussi comme un tout. Exemple informatique élémentaire : Vous connaissez déjà des structures de données abstraites, très simples : les types élémentaires. Par exemple, un int interactions : affectation, lecture de la valeur, +, -, *, / Spécifications des structures de données abstraites Une S.D.A. est caractérisée par : son contenu les interactions possibles (manipulation, accès,...) Du point de vue informatique, une structure de données abstraite peut être spécifiée à deux niveaux : niveau fonctionnel / logique : spécification formelle des données et des algorithmes de manipulation associés niveau physique (programmation) : comment est implémentée la structure de données abstraite dans la mémoire de la machine déterminant pour l efficacité des programmes utilisant ces données. Informatique I Cours1 : S.D.A. & Tris 4 Informatique I Cours1 : S.D.A. & Tris 5 Spécifications des S.D.A. [] Spécifications des S.D.A. [3] Au niveau formel (modèle), on veut généraliser cette idée «d objets» manipulables par des opérateurs propres, sans forcément en connaître la structure interne et encore moins l implémentation. Par exemple, vous ne pensez pas un int comme une suite de 3 bits, mais bien comme un «entier» (dans un certain intervalle) avec ses opérations propres : +, -, *, / Une structure de données abstraite définit une abstraction des données et cache les détails de leur implémentation. abstraction : identifier précisément les caractéristiques de l entité (par rapport à ses applications), et en décrire les propriétés. Informatique I Cours1 : S.D.A. & Tris Une structure de données abstraite modélise donc l «ensemble des services» désirés plutôt que l organisation intime des données (détails d implémentation) On identifie usuellement 4 types de «services» : 1. les modificateurs, qui modifient la S.D.A.. les sélecteurs, qui permettent «d interroger» la S.D.A. 3. les itérateurs, qui permettent de parcourir la structure 4. les constructeurs (que l on verra plus tard) Exemple : tableau dynamique modifieur : affectation d un élément (t[i]=a) sélecteur : lecture d un élément (t[i]) sélecteur : le tableau est-il vide? (t.size() == 0) itérateur : index d un élément ([i] ci-dessus) Informatique I Cours1 : S.D.A. & Tris 7
3 Divers exemples de S.D.A. Il y a beaucoup de structures de données abstraites en Informatique. Dans ce cours, nous n allons voir que les plus fondamentales (après les tableaux) : les listes et les piles Autres : files d attente (avec ou sans priorité) multi-listes arbres (pleins de sorte...) graphes tables de Hash Listes Spécification logique : Ensemble d éléments successifs (pas d accès direct), ordonnés ou non Interactions : accès au premier élément (sélecteur) accès à l élément suivant d un élément (sélecteur) modifier l élément courant (modificateur) insérer/supprimer un élément après(/avant) l élément courant (modificateur) tester si la liste est vide (sélecteur) parcourir la liste (itérateur) Informatique I Cours1 : S.D.A. & Tris 8 Informatique I Cours1 : S.D.A. & Tris 10 Listes Réalisations d une liste Exemple concret : Exemple informatique : visionneuse stéreo (essayez d accéder à la 3e image directement, sans passer par la e!) ( a ( b ( c (d)))) a b c d 0 Une liste peut être vu comme une structure récursive : liste = élément + liste OU liste = vide réalisation statique : tableau réalisation dynamique (liste chaînée) : ou vector (mais inconvénient 1 ci-après) structure : struct Element ; typedef Element* ListeChainee ; struct Element { type_el element; ListeChainee suivant; Informatique I Cours1 : S.D.A. & Tris 11 Informatique I Cours1 : S.D.A. & Tris 1
4 Pourquoi les listes dynamiques? Les tableaux sont un type de données très utile en programmation mais présentent limitations : 1. les données sont contiguës (les unes derrières les autres) et donc l insertion d un nouvel élément au milieu du tableau demande la recopie (le décalage) de tous les éléments suivants. = insertion en O(n). pour les tableaux statiques, augmenter la taille (par exemple si elle n est pas connue a priori) nécessite la création d un nouveau tableau = O(n) Complexité optimale des opérations insérer un élément : supprimer un élément : calculer la longueur : élémentaires sur les listes O(1) O(1) O(n) (voire O(1) si le stockage de cette valeur est effectué, en particulier si «longueur» a été spécifiée dans les «services» de la SDA «liste») vider la liste : parcourir la liste : O(n) O(n) Informatique I Cours1 : S.D.A. & Tris 13 Informatique I Cours1 : S.D.A. & Tris 14 Exemples d implémentation des opérations élémentaires sur les listes Exemples d insertion d un élément À des fins pédagogiques, voici une implémentation simple des listes dynamiques sous forme de listes chaînées struct Element; typedef Element* ListeChainee; struct Element { type_el element; ListeChainee suite; dans une liste void insere(listechainee& liste, type_el un_element) { if (est_vide(liste)) { liste = new Element; (*liste).element = un_element; // On peut aussi écrire liste->element = un_element; liste->suite = LISTE_VIDE; else insere(*liste, un_element); après un élément donné Informatique I Cours1 : S.D.A. & Tris 15 void insere(element& existant, type_el a_inserer) { Element* e(new Element); e->element = a_inserer; e->suite = existant.suite; existant.suite = e; Informatique I Cours1 : S.D.A. & Tris 1
5 de la tête de liste Exemples de suppression void supprime(listechainee& liste) { if (!est_vide(liste)) { ListeChainee nouvelle(liste->suite); delete liste; liste = nouvelle; Exemple de calcul de la longueur unsigned int taille(listechainee liste) { unsigned int taille(0); while (!est_vide(liste)) { ++taille; liste = liste->suite; return taille; d un élément suivant un élément donné void supprime(element& e) { // supprime le premier élément de la liste "suite" supprime(e.suite); Informatique I Cours1 : S.D.A. & Tris 17 Informatique I Cours1 : S.D.A. & Tris 18 Piles Piles : exemples Spécification : Une pile est une structure de données abstraite dynamique contenant des éléments homogènes (de type non précisé) à 1 point d accès et permettant d ajouter une valeur à la pile (empiler ou push) ; de lire la dernière valeur ajoutée ; d enlever la dernière valeur ajoutée (dépiler ou pop) ; de tester si la pile est vide. Exemples concrets : une pile d assiettes une tour dans le jeu des tours de Hanoi On ne «connait» donc de la pile que le dernier élément empilé (son sommet). Spécification physique : liste chaînée ou tableau dynamique (vector) Informatique I Cours1 : S.D.A. & Tris 0 Informatique I Cours1 : S.D.A. & Tris 1
6 Piles : exemples () Exemple d utilisation des piles Exemple d utilisation (formelle) : empiler x empiler a dépiler empiler b x a x x b x Le problème des parenthèses : étant donnée une expression avec des parenthèses, est-elle bien ou mal parenthésée? ((a + b) c (d + 4) (5 + (a + c))) (c + (d + (e + 5 g) f) a) (correct) (a + b)( (incorrect) Encore un peu plus complexe : différentes parenthèses Exemple avec [ et ( ([])[()(()[])] correct ([)] incorrect empiler y dépiler y b x b x Informatique I Cours1 : S.D.A. & Tris Autres exemples d utilisation des piles (non traités ici) : tours de Hanoi notation postfixée (ou «polonaise inverse») : ( 5 (4 + )) Informatique I Cours1 : S.D.A. & Tris 3 Vérification de parenthésage Deuxième Exemple Tant que lire caractère c Si c est ( ou [ empiler c Sinon Si c est ) ou ] Si pile vide ÉCHEC Sinon c lire la pile Si c et c correspondent dépiler Sinon ÉCHEC Si pile vide OK Sinon ÉCHEC Exemple Entrée : ([)] empile ( ( empile [ lu = ), top = [ ne correspond pas = ERREUR [ ( Entrée : ([()]) empile ( ( empile [ empile ( lu ) correspond = dépile lu ] correspond = dépile ( lu ) correspond = dépile [ ( ( [ ( [ ( Informatique I Cours1 : S.D.A. & Tris 4 pile vide = OK Informatique I Cours1 : S.D.A. & Tris 5
7 code C++ bool check(string s) { Pile p; for (unsigned int i(0); i < s.size(); ++i) { if ((s[i] == ( ) (s[i] == [ )) empile(p,s[i]); else if (s[i] == ) ) { if ((!est_vide(p)) && (top(p) == ( )) depile(p); else return false; else if (s[i] == ] ) { if ((!est_vide(p)) && (top(p) == [ )) depile(p); else return false; return est_vide(p); Plan Terminons nos approfondissements en nous intéressant au problème du tri d une S.D.A. Structures de données abstraites Listes Piles Tris Informatique I Cours1 : S.D.A. & Tris Informatique I Cours1 : S.D.A. & Tris 7 Algorithmes et données : les tris les tris Les méthodes de tris sont très importantes en pratique non seulement en soi, mais aussi parce qu elle interviennent dans beaucoup d autres algorithmes. Elles sont par exemple nécessaires pour faire une recherche efficace. Le problème du tri est également un problème intéressant en tant que tel et un bon exemple de problème pour lequel il existe de nombreux algorithmes. Spécification du problème : On considère une structure de données abstraite contenant des éléments que l on peut comparer (entre eux : relation d ordre totale sur l ensemble des éléments) On dira que la S.D.A est triée si ses éléments sont disposés par ordre croissant pour l opérateur de comparaison. Informatique I Cours1 : S.D.A. & Tris 8 Par exemple : on cherche à trier un tableau de taille fixe d entiers. Remarques : entrée 1 3 programme de tri un tri ne supprime pas les doublons sortie 1 3 quelque soit l algorithme de tri, une S.D.A. vide ou réduite à un seul élément est déjà triée!... On parle de tri interne (par opposition à tri externe) lorsque l on peut effectuer le tri en mémoire dans la machine, sans utiliser de support extérieur (fichier). Informatique I Cours1 : S.D.A. & Tris 9
8 Un premier exemple : le tri par insertion Exemple de déroulement du tri par insertion Le principe du tri par insertion est extrêmement simple : un élément mal placé dans le tableau va systématiquement être inséré à sa «bonne place» dans le tableau. Tant que il y a un élément mal placé on cherche sa bonne place on déplace l élément à sa bonne place Par «élément mal placé», on entend ici tout élément du tableau strictement plus petit que son prédécesseur. Tant que il y a un élément mal placé on cherche sa bonne place on déplace l élément à sa bonne place Informatique I Cours1 : S.D.A. & Tris 30 Informatique I Cours1 : S.D.A. & Tris 31 Tri par insertion : résolution globale Tri par insertion : résolution détaillée Le schéma général de l algorithme de tri par insertion est donc le suivant : tri insertion entrée : un tableau sortie : le tableau trié Tant que il y a un élément mal placé on cherche sa bonne place on déplace l élément à sa bonne place Il faut spécifier plus clairement les blocs ci-dessus. Le bloc mal placé entrée : un tableau tab sortie : indice du 1 er élément de tab de prédécesseur strictement plus grand Par convention, s il n y a pas d élément mal placé, la sortie sera l indice du premier élément du tableau (0 en C++). Comme le 1 er élément de tab ne peut être mal placé (car sans prédécesseur), le bloc mal placé parcourira donc les éléments de tab à partir du e. Le bloc mal placé effectue donc une itération sur les éléments de tab, du deuxième au dernier. Informatique I Cours1 : S.D.A. & Tris 3 Informatique I Cours1 : S.D.A. & Tris 33
9 Tri par insertion : résolution détaillée () Le bloc bonne place entrée : un tableau tab et l indice pos d un élément mal placé sortie : l indice newpos de la bonne place de l élément mal placé dans le tableau. La «bonne position» correspond à la plus grande position newpos (<pos) dans le tableau tab telle que tab[newpos-1] tab[pos]. Le bloc bonne place doit donc parcourir les positions de tab, entre le premier élément et pos, à la recherche d une bonne position. Le bloc bonne place effectue donc aussi une itération sur les éléments du tableau, du premier élément à celui d indice pos. Tri par insertion : résolution détaillée (3) Le bloc déplace entrée : un tableau tab, un indice d origine pos et un indice final newpos Il doit déplacer l élément d indice pos dans tab à l indice newpos. On peut effectuer cette opération par décalages successifs (en utilisant un stockage temporaire tmp). tmp tab... newpos newpos+1 pos Informatique I Cours1 : S.D.A. & Tris 34 Informatique I Cours1 : S.D.A. & Tris 35 Tri par insertion : codage Tri par insertion : codage (3) Codage de l algorithme de tri par insertion : void tri_insertion(int tab[], unsigned int taille) { for (int pos(mal_place(tab,taille)); pos > 0; pos = mal_place(tab,taille)) deplace(pos, bonne_place(pos,tab), tab); Codage de la fonction mal placé : unsigned int mal_place(int tab[], unsigned int taille) { for (unsigned int i(1); i < taille; ++i) if (tab[i-1] > tab[i]) return i; return 0; Informatique I Cours1 : S.D.A. & Tris 3 Codage de la fonction bonne place : unsigned int bonne_place(unsigned int pos, int tab[]) { // il est important de déclarer i avant : pourquoi? unsigned int i; for (i = 0; (i < pos) && (tab[i] <= tab[pos]); ++i); return i; Codage de la fonction déplace : void deplace(unsigned int pos, unsigned int newpos, int tab[]) { int tmp(tab[pos]); // stockage temporaire for (unsigned int i(pos); i > newpos; --i) { tab[i] = tab[i-1]; tab[newpos] = tmp; Informatique I Cours1 : S.D.A. & Tris 37
10 Version itérative : améliorations Version itérative : améliorations 1. Pour rechercher le prochain élément mal placé, ce n est pas la peine de recommencer du début à chaque fois. On peut partir de la dernière position mal placée.. On pourrait faire la recherche de la bonne place et le déplace ment à cette place en même temps (i.e. en 1 seule boucle) Si on regroupe tout ceci on arrive à l algorithme suivant : Pour i de à n pivot tableau[i] j i Tant que j et tableau[j 1]>pivot tableau[j] tableau[j 1] j j 1 tableau[j] pivot Informatique I Cours1 : S.D.A. & Tris 38 Et voici le code en C++ : void tri_insertion(int tab[], unsigned int taille) { for (unsigned int pos(1); pos < taille; ++pos) { int mal_place(tab[pos]); unsigned int j; for (j = pos; (j > 0) && (tab[j-1] > mal_place); --j) tab[j] = tab[j-1]; tab[j] = mal_place; Informatique I Cours1 : S.D.A. & Tris 39 Version récursive On peut aussi concevoir le tri par insertion de façon récursive : tri entrée : tableau de n éléments sortie : tableau trié condition arrêt : moins de éléments tri (instance réduite du problème) entrée : tableau de n 1 éléments sortie : tableau trié... insertion du n ème élément dans le tableau trié de n 1 éléments Version récursive : exemple tri insertion Informatique I Cours1 : S.D.A. & Tris 40 Informatique I Cours1 : S.D.A. & Tris 41
11 Implémentation récursive L algorithme de tri récursif sera implémenté en C++ par la fonction : // trie le tableau tab entre first et last void tri_recursif(int tab[], int first, int last) { if (last > first) // moins de éléments -> fini { tri_recursif(tab, first, last-1); deplace(last, bonne_place(last, tab), tab); Schéma des appels récursifs : exemple tri_recursif({3,,1,0,) {1,,3 tri_recursif({3,,1,0,1) ; deplace(, {,3,1) {,3,1 Appel de départ : tri_recursif(mon_tab, 0, taille-1) ; tri_recursif({3,,1,0,0) ; deplace(1,{3,,1) {3,,1 Informatique I Cours1 : S.D.A. & Tris 4 Informatique I Cours1 : S.D.A. & Tris 43 Conclusions sur les tris Conclusions sur les tris : comparaison Ce n était qu une brève introduction, du fait de l importance des tris. Il existe plein d autres algorithmes de tris : par sélection bulles tri shaker tri de Shell tri tournois tri fusion tri par tas quick sort («tri rapide»)... COMPLEXITÉ TEMPORELLE moyenne pire cas bulles O(n ) O(n ) par sélection O(n ) O(n ) insertion O(n ) O(n ) de Shell O(n 1.5 ) quick sort O(n log n) O(n ) par tas O(n log n) O(n log n) optimum théorique O(n log n) O(n log n) Mais en pratique : à partir de quelle taille les méthodes simples deviennent-elle vraiement plus mauvaises que les méthodes sophistiquées (quick sort ou tri par tas)? Informatique I Cours1 : S.D.A. & Tris 44 Informatique I Cours1 : S.D.A. & Tris 45
12 Conclusions sur les tris : comparaison () Cela dépend de nombreux facteurs, mais en général on peut dire que pour moins d une centaine d éléments les tris sophisitiqués n en valent pas la peine. Par ailleurs, Expérimentalement le quick sort est a 3 fois plus rapide que le tris par tas Ce que j ai appris aujourd hui les bases de la formalisation des données : les structures de données abstraites les deux structures de données abstraites les plus utilisées en informatique (en plus des tableaux et des types élémentaires) : les listes chaînées et les piles introduction aux algorithmes de tri Dans le cas de liste presque triées, les tris par insertion sont efficaces Le tri bulles, très simple à écrire, est le moins bon des tris : à proscrire (sauf à des fins pédagogiques) Informatique I Cours1 : S.D.A. & Tris 4 Informatique I Cours1 : S.D.A. & Tris 47
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étailCentre 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étailAlgorithmique, 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étail1 de 46. Algorithmique. Trouver et Trier. Florent Hivert. Mél : Florent.Hivert@lri.fr Page personnelle : http://www.lri.fr/ hivert
1 de 46 Algorithmique Trouver et Trier Florent Hivert Mél : Florent.Hivert@lri.fr Page personnelle : http://www.lri.fr/ hivert 2 de 46 Algorithmes et structures de données La plupart des bons algorithmes
Plus en détailLes 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étailLicence 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étailArchitecture 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étailSuivant 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étailINITIATION 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étailAlgorithmique 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étailRecherche 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étailTravaux 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étail1 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étailManuel d utilisation 26 juin 2011. 1 Tâche à effectuer : écrire un algorithme 2
éducalgo Manuel d utilisation 26 juin 2011 Table des matières 1 Tâche à effectuer : écrire un algorithme 2 2 Comment écrire un algorithme? 3 2.1 Avec quoi écrit-on? Avec les boutons d écriture........
Plus en détailLes 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étailLicence 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étailIN 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étailGé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étailPré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étailDé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étail1. 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étailProjet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte
Projet d informatique M1BI : Compression et décompression de texte Le but de ce projet est de coder un programme réalisant de la compression et décompression de texte. On se proposera de coder deux algorithmes
Plus en détailExercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT
Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT Ces exercices portent sur les items 2, 3 et 5 du programme d informatique des classes préparatoires,
Plus en détailCours 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# 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étailBases 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étailObjectifs du cours d aujourd hui. Informatique II : Cours d introduction à l informatique et à la programmation objet. Complexité d un problème (2)
Objectifs du cours d aujourd hui Informatique II : Cours d introduction à l informatique et à la programmation objet Complexité des problèmes Introduire la notion de complexité d un problème Présenter
Plus en détailChapitre 5 : Flot maximal dans un graphe
Graphes et RO TELECOM Nancy A Chapitre 5 : Flot maximal dans un graphe J.-F. Scheid 1 Plan du chapitre I. Définitions 1 Graphe Graphe valué 3 Représentation d un graphe (matrice d incidence, matrice d
Plus en détailC++ 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étailCours 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étailUEO11 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étailProgrammation 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étailEncapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.
Encapsulation L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets. La visibilité dépend des membres : certains membres peuvent être visibles et d'autres
Plus en détailInitiation à LabView : Les exemples d applications :
Initiation à LabView : Les exemples d applications : c) Type de variables : Créer un programme : Exemple 1 : Calcul de c= 2(a+b)(a-3b) ou a, b et c seront des réels. «Exemple1» nom du programme : «Exemple
Plus en détailJade. Projet Intelligence Artificielle «Devine à quoi je pense»
Jade Projet Intelligence Artificielle «Devine à quoi je pense» Réalisé par Djénéba Djikiné, Alexandre Bernard et Julien Lafont EPSI CSII2-2011 TABLE DES MATIÈRES 1. Analyse du besoin a. Cahier des charges
Plus en détailReprésentation des Nombres
Chapitre 5 Représentation des Nombres 5. Representation des entiers 5.. Principe des représentations en base b Base L entier écrit 344 correspond a 3 mille + 4 cent + dix + 4. Plus généralement a n a n...
Plus en détailArchitecture des ordinateurs
Architecture des ordinateurs Cours 4 5 novembre 2012 Archi 1/22 Micro-architecture Archi 2/22 Intro Comment assembler les différents circuits vus dans les cours précédents pour fabriquer un processeur?
Plus en détailObjets et Programmation. origine des langages orientés-objet
Objets et Programmation origine des langages orientés-objet modularité, encapsulation objets, classes, messages exemples en Java héritage, liaison dynamique G. Falquet, Th. Estier CUI Université de Genève
Plus en détailUniversité du Québec à Chicoutimi. Département d informatique et de mathématique. Plan de cours. Titre : Élément de programmation.
Université du Québec à Chicoutimi Département d informatique et de mathématique Plan de cours Titre : Élément de programmation Sigle : 8inf 119 Session : Automne 2001 Professeur : Patrice Guérin Local
Plus en détailPoker. A rendre pour le 25 avril
Poker A rendre pour le 25 avril 0 Avant propos 0.1 Notation Les parties sans * sont obligatoires (ne rendez pas un projet qui ne contient pas toutes les fonctions sans *). Celles avec (*) sont moins faciles
Plus en détailLMI 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étailV- Manipulations de nombres en binaire
1 V- Manipulations de nombres en binaire L ordinateur est constitué de milliards de transistors qui travaillent comme des interrupteurs électriques, soit ouverts soit fermés. Soit la ligne est activée,
Plus en détailLes algorithmes de base du graphisme
Les algorithmes de base du graphisme Table des matières 1 Traçage 2 1.1 Segments de droites......................... 2 1.1.1 Algorithmes simples.................... 3 1.1.2 Algorithmes de Bresenham (1965).............
Plus en détailStructure 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étailPremiers 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étailGrandes 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étail1/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étailAlgorithmique 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étailConventions 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étailPartie 7 : Gestion de la mémoire
INF3600+INF2610 Automne 2006 Partie 7 : Gestion de la mémoire Exercice 1 : Considérez un système disposant de 16 MO de mémoire physique réservée aux processus utilisateur. La mémoire est composée de cases
Plus en détailLogiciel Libre Cours 3 Fondements: Génie Logiciel
Logiciel Libre Cours 3 Fondements: Génie Logiciel Stefano Zacchiroli zack@pps.univ-paris-diderot.fr Laboratoire PPS, Université Paris Diderot 2013 2014 URL http://upsilon.cc/zack/teaching/1314/freesoftware/
Plus en détailIntroduction à 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étailCours 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étailEXCEL TUTORIEL 2012/2013
EXCEL TUTORIEL 2012/2013 Excel est un tableur, c est-à-dire un logiciel de gestion de tableaux. Il permet de réaliser des calculs avec des valeurs numériques, mais aussi avec des dates et des textes. Ainsi
Plus en détailPlan du cours. Historique du langage http://www.oracle.com/technetwork/java/index.html. Nouveautés de Java 7
Université Lumière Lyon 2 Faculté de Sciences Economiques et Gestion KHARKIV National University of Economic Introduction au Langage Java Master Informatique 1 ère année Julien Velcin http://mediamining.univ-lyon2.fr/velcin
Plus en détailINTRODUCTION 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étail2. Comprendre les définitions de classes
Conception objet en Java avec BlueJ une approche interactive 2. Comprendre les définitions de classes Analyser le contenu des classes David J. Barnes, Michael Kölling version française: Patrice Moreaux
Plus en détailProgrammes des classes préparatoires aux Grandes Ecoles
Programmes des classes préparatoires aux Grandes Ecoles Filière : scientifique Voies : Mathématiques, physique et sciences de l'ingénieur (MPSI) Physique, chimie et sciences de l ingénieur (PCSI) Physique,
Plus en détailCours 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étailCours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions
Cours d introduction à l informatique Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions Qu est-ce qu un Une recette de cuisine algorithme? Protocole expérimental
Plus en détailCours 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étailComplexité. Licence Informatique - Semestre 2 - Algorithmique et Programmation
Complexité Objectifs des calculs de complexité : - pouvoir prévoir le temps d'exécution d'un algorithme - pouvoir comparer deux algorithmes réalisant le même traitement Exemples : - si on lance le calcul
Plus en détailInformatique Générale
Informatique Générale Guillaume Hutzler Laboratoire IBISC (Informatique Biologie Intégrative et Systèmes Complexes) guillaume.hutzler@ibisc.univ-evry.fr Cours Dokeos 625 http://www.ens.univ-evry.fr/modx/dokeos.html
Plus en détailJava 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étailPROJET 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étailArithmétique binaire. Chapitre. 5.1 Notions. 5.1.1 Bit. 5.1.2 Mot
Chapitre 5 Arithmétique binaire L es codes sont manipulés au quotidien sans qu on s en rende compte, et leur compréhension est quasi instinctive. Le seul fait de lire fait appel au codage alphabétique,
Plus en détailET 24 : Modèle de comportement d un système Boucles de programmation avec Labview.
ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview. Sciences et Technologies de l Industrie et du Développement Durable Formation des enseignants parcours : ET24 Modèle de
Plus en détailChaînes de Markov au lycée
Journées APMEP Metz Atelier P1-32 du dimanche 28 octobre 2012 Louis-Marie BONNEVAL Chaînes de Markov au lycée Andreï Markov (1856-1922) , série S Problème 1 Bonus et malus en assurance automobile Un contrat
Plus en détailConception des systèmes répartis
Conception des systèmes répartis Principes et concepts Gérard Padiou Département Informatique et Mathématiques appliquées ENSEEIHT Octobre 2012 Gérard Padiou Conception des systèmes répartis 1 / 37 plan
Plus en détailUE C avancé cours 1: introduction et révisions
Introduction Types Structures de contrôle Exemple UE C avancé cours 1: introduction et révisions Jean-Lou Desbarbieux et Stéphane Doncieux UMPC 2004/2005 Introduction Types Structures de contrôle Exemple
Plus en détailCorrigé des exercices sur les références
Corrigé des exercices sur les références Exercice 3.1.1 dessin Pour cet exercice, vous allez dessiner des structures de données au moyen de petits schémas analogues à ceux du cours, comportant la pile
Plus en détailInitiation à 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étailProgramme 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étailEPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE
EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE QCM Remarque : - A une question correspond au moins 1 réponse juste - Cocher la ou les bonnes réponses Barème : - Une bonne réponse = +1 - Pas de réponse = 0
Plus en détailInfo0101 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étailPG208, Projet n 3 : Serveur HTTP évolué
PG208, Projet n 3 : Serveur HTTP évolué Bertrand LE GAL, Serge BOUTER et Clément VUCHENER Filière électronique 2 eme année - Année universitaire 2011-2012 1 Introduction 1.1 Objectif du projet L objectif
Plus en détailInitiation à l algorithmique
Informatique S1 Initiation à l algorithmique procédures et fonctions 2. Appel d une fonction Jacques TISSEAU Ecole Nationale d Ingénieurs de Brest Technopôle Brest-Iroise CS 73862-29238 Brest cedex 3 -
Plus en détailintroduction Chapitre 5 Récursivité Exemples mathématiques Fonction factorielle ø est un arbre (vide) Images récursives
introduction Chapitre 5 Images récursives http ://univ-tln.fr/~papini/sources/flocon.htm Récursivité http://www.poulain.org/fractales/index.html Image qui se contient elle-même 1 Exemples mathématiques
Plus en détailTraduction des Langages : Le Compilateur Micro Java
BARABZAN Jean-René OUAHAB Karim TUCITO David 2A IMA Traduction des Langages : Le Compilateur Micro Java µ Page 1 Introduction Le but de ce projet est d écrire en JAVA un compilateur Micro-Java générant
Plus en détailQuelques Algorithmes simples
Quelques Algorithmes simples Irène Guessarian ig@liafa.jussieu.fr 10 janvier 2012 Je remercie Patrick Cegielski de son aide efficace pour la programmation Java ; la section sur le codage de Huffman a été
Plus en détailPour 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É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#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étailLes 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étailSouad EL Bernoussi. Groupe d Analyse Numérique et Optimisation Rabat http ://www.fsr.ac.ma/ano/
Recherche opérationnelle Les démonstrations et les exemples seront traités en cours Souad EL Bernoussi Groupe d Analyse Numérique et Optimisation Rabat http ://www.fsr.ac.ma/ano/ Table des matières 1 Programmation
Plus en détailCours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre 2009. Enrica.Duchi@liafa.jussieu.fr
. Cours intensif Java 1er cours: de C à Java Septembre 2009 Enrica DUCHI LIAFA, Paris 7 Enrica.Duchi@liafa.jussieu.fr LANGAGES DE PROGRAMMATION Pour exécuter un algorithme sur un ordinateur il faut le
Plus en détailCompression 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étailUtilisation 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étailProjet de programmation (IK3) : TP n 1 Correction
Projet de programmation (IK3) : TP n 1 Correction Semaine du 20 septembre 2010 1 Entrées/sorties, types de bases et structures de contrôle Tests et types de bases Tests et types de bases (entiers) public
Plus en détailProgrammer 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étailTP 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étailCorrigés des premiers exercices sur les classes
Corrigés des premiers exercices sur les classes Exercice 2.1.1 utilisation d une classe Voici le texte d une classe représentant de façon sommaire un compte bancaire et les opérations bancaires courantes.
Plus en détailTP3 : 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étailAlgorithmes récursifs
Licence 1 MASS - Algorithmique et Calcul Formel S. Verel, M.-E. Voge www.i3s.unice.fr/ verel 23 mars 2007 Objectifs de la séance 3 écrire des algorithmes récursifs avec un seul test rechercher un élément
Plus en détailUn ordonnanceur stupide
Un ordonnanceur simple Université Paris Sud L objet des exercices qui suivent est de créer un ordonanceur implantant l algorithme du tourniquet ( round-robin scheduler ). La technique utilisée pour élire
Plus en détailChapitre V : La gestion de la mémoire. Hiérarchie de mémoires Objectifs Méthodes d'allocation Simulation de mémoire virtuelle Le mapping
Chapitre V : La gestion de la mémoire Hiérarchie de mémoires Objectifs Méthodes d'allocation Simulation de mémoire virtuelle Le mapping Introduction Plusieurs dizaines de processus doivent se partager
Plus en détailOrdonnancement temps réel
Ordonnancement temps réel Laurent.Pautet@enst.fr Version 1.5 Problématique de l ordonnancement temps réel En fonctionnement normal, respecter les contraintes temporelles spécifiées par toutes les tâches
Plus en détailExceptions. 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étailInitiation. àl algorithmique et à la programmation. en C
Initiation àl algorithmique et à la programmation en C Initiation àl algorithmique et à la programmation en C Cours avec 129 exercices corrigés Illustration de couverture : alwyncooper - istock.com Dunod,
Plus en détail