Structures de données IFT-2000

Slides:



Advertisements
Présentations similaires
Programmation Orienté Objet en C++
Advertisements

Cours n° 7 Standard Template Library II.
Cours n° 6 Standard Template Library I.
Introduction au langage C++
C++ 6ème cours Patrick Reuter maître de conférences
Cours n° 8 Conception et Programmation à Objets
Structures de données et algorithmes – C5 Maria-Iuliana Dascalu, PhD
Leçon 6 : Structures de données dynamiques IUP 2 Génie Informatique Méthode et Outils pour la Programmation Françoise Greffier.
Bibliothèque standard du C++
La fonction alloue un bloc de taille size. Il faut indiquer la taille du bloc que lon veut allouer. Le premier exemple: #include void main()
Les Classes les structures en C (struct) regroupent des variables : structuration de l'analyse mais problèmes de cohérence problèmes de sécurité d'accès.
Structures de données IFT-2000
Leçon 2 : Surcharge des opérateurs IUP 2 Génie Informatique Méthode et Outils pour la Programmation Françoise Greffier Université de Franche-Comté.
IFT-2000: Structures de données
Structures de données IFT-2000
Structures de données IFT Abder Alikacem La classe string Département dinformatique et de génie logiciel Édition Septembre 2009 Département dinformatique.
Structures de données IFT Abder Alikacem Espace de nommage Département d’informatique et de génie logiciel Édition Septembre 2009.
Structures de données IFT-2000
Structures de données IFT-2000 Abder Alikacem Espace de nommage Département dinformatique et de génie logiciel Édition Septembre 2009 Département dinformatique.
Programme de baccalauréat en informatique Programmation Orientée Objets IFT Thierry EUDE Module 5 : La surcharge des opérateurs Département dinformatique.
Structures de données IFT-10541
Structures de données IFT-2000
Structures de données IFT-2000 Abder Alikacem Standard Template library Édition Septembre 2009 Département dinformatique et de génie logiciel.
Structures de données IFT-2000
Structures de données IFT Abder Alikacem Gestion des exceptions Département dinformatique et de génie logiciel Édition Septembre 2009.
Structures de données IFT-2000
Structures de données IFT-2000
Structures de données IFT-2000 Abder Alikacem Sous-séquence de somme maximale (Algo#4). Algorithme retour arrière. Département dinformatique et de génie.
Structures de données IFT-10541
Programme de baccalauréat en informatique Programmation Orientée Objets IFT Thierry EUDE Module 7 : Classes et fonctions paramétrables Département.
Conteneurs STL.
Types de données abstrait et mécanismes d'encapsulation
COURS DE PROGRAMMATION ORIENTEE OBJET :
Standard Template Library
Leçon 1 : notion dobjet IUP Génie Informatique Besançon Méthode et Outils pour la Programmation Françoise Greffier Université de Franche-Comté.
Structures de données IFT-2000
Structures de données IFT-10541
Structures de données IFT Abder Alikacem Linéarisation des matrices Département dinformatique et de génie logiciel Édition septembre 2009.
Structures de données IFT-2000 Abder Alikacem L’héritage en C++ Département d’informatique et de génie logiciel Édition Septembre 2009.
Structures de données IFT-2000 Abder Alikacem Semaine 11 Gestion des arbres binaires de tri et de recherche. Les arbres cousus. Les arbres n-aires Département.
Structures de données IFT-2000
Structures de données IFT-2000 Abder Alikacem Retour sur les listes ordonnées Département dinformatique et de génie logiciel Édition Septembre 2009.
Analyse d’algorithmes
Structures de données IFT-10541
Structures de données IFT-2000
Programmation Orienté Objet en C++ Ricard julien.
Structures de données IFT-2000
Structures de données IFT-2000 Abder Alikacem Introduction Semaine 1 Département d’informatique et de génie logiciel Édition Septembre 2009.
Masters IIGLI et IGLII – Programmation générique et conception objet – – Claude Montacié 1 Cours n° 3 Polymorphisme I.
Structures de données IFT Abder Alikacem Semaine 2 Tests sur les pointeurs Département d’informatique et de génie logiciel Édition Janvier 2009.
Les classes et les objets
Chapitre X Modèles.
2.1 - Historique Chapitre 2 : Introduction au langage C++
Le langage C Rappel Pointeurs & Allocation de mémoire.
Les Pointeurs et les Tableaux Statiques et Tableaux Dynamiques
La notion de type revisitée en POO
La fonction alloue un bloc de taille size. Il faut indiquer la taille du bloc que l’on veut allouer. Le premier exemple: #include void main()
Cours C++ Fonctions Surcharge d’opérateurs Passage d’arguments
Tutorat en bio-informatique
Les types composés Les enregistrements.
Les surcharges d'opérateurs
Classe 1 CSI2572 Autres modificateurs de déclaration de variables: & volatile & register & static & auto & extern & const volatile Indique au compilateur.
Liste Une liste est une séquence d’éléments. Concept important: Chaque élément possède une position dans la liste. Notation: De quelles opérations a-t-on.
Chapitre VII Techniques plus avancées à travers le concept de classe.
Langage de Programmation Orientée Objet : C++
Structures de données IFT-2000 Abder Alikacem Pointeurs, références et gestion dynamique de la mémoire. QQ éléments techniques du C++. Semaine 2..suite.
Structures de données IFT-2000 Abder Alikacem Laboratoire #1 Département d’informatique et de génie logiciel Édition Septembre 2009.
Conception de Programmes - IUT de Paris - 1ère année Les classes Introduction Déclaration d’une classe Utilisation d’une classe Définition des.
M. BENJELLOUN : 2005 Le but final est de programmer un jeu où l'ordinateur choisira un nombre aléatoire entre 0 et 100 que vous devez deviner.
Transcription de la présentation:

Structures de données IFT-2000 Abder Alikacem Les listes ordonnées Programmation générique en C++ Semaine 3 Édition Septembre 2009 Département d’informatique et de génie logiciel

Laboratoire #3 Implantation d’une liste ordonnée Nous vous fournissons 3 packetages, un par projet/implantation que vous devez faire: tableau dynamique liste doublement chaînée liste circulaire Uniquement ceci pour cette semaine Dans chacun d'eux, vous devez compléter le fichier .inl étant donné le modèle d'implantation décrit dans la partie privée de la classe Liste. Bien entendu, les 3 implantations demandées doivent être génériques.   Ces 2 main() fournis sont pour tester les 3 packetages (séparément), un main() pour instancier une liste ordonnée d'entiers et un autre pour déclarer une liste d'objets définis dans la classe ClasseTests.h que nous vous fournissons également.

Liste ordonnée Implantation dans un tableau dynamique Un tableau alloué du monceau (tas ou heap) Taille décidé par l’utilisateur #include <iostream> # include <stdexcept> using namespace std; #pragma warning( disable : 4290 ) template <typename T> class Liste { public: //… private: int tailleMax; // taille maximum de la liste int cpt; // cardinalité de la liste T * tab; // tableau "dynamique" contenant les éléments de la liste } ; #include "Liste.inl"

Gestion du tableau dynamique Il faut donc modifier le constructeur d’une liste: allouer un tableau sur le tas et dont le pointeur sera assigné à au membre privé tab. template <typename T> Liste<T>::Liste (int max) throw(bad_alloc) { tailleMax=max; cpt = 0; tab = new T [tailleMax]; } Le destructeur de la liste : Libération de l’espace du tableau pointé par tab Constructeur template <typename T> Liste<T>::~Liste () // Destructeur { delete [] tab ; cpt = tailleMax = 0; } Destructeur

Gestion du tableau dynamique Il ne faut pas oublier le constructeur de copie: allouer un tableau sur le tas et dont le pointeur sera assigné à au membre privé tab puis copier de l’instance source template <typename T> Liste<T>:: Liste(const Liste<T>& source) throw (bad_alloc) { tailleMax = source.tailleMax; cpt= source.cpt; tab = new T [tailleMax]; for (int position =0; position < source.cpt; ++position) tab[position]= source.tab[position]; } Constructeur de copie

Gestion du tableau dynamique et la surcharge de l’opérateur = allouer un tableau sur le tas et dont le pointeur sera assigné à au membre privé tab puis copier de l’instance source, ne pas oublier de nettoyer… template <typename T> Liste<T>& Liste<T>::operator = (const Liste<T>& l) throw(bad_alloc) { if (tab!=0) delete [] tab; //nettoyer ... tab=new T [l.tailleMax]; for (int i=0; i< l.cpt; i++) tab[i]=l .tab[i]; tailleMax=l.tailleMax; cpt=l.cpt; return (*this); } Surcharge de l’opérateur =