Containeurs & Itérateurs

Slides:



Advertisements
Présentations similaires
Sensibilisation à l’Algorithmique
Advertisements

Sensibilisation à l’Algorithmique et structure de données
Cours n° 9 Conception et Programmation à Objets
Cours n° 8 Conception et Programmation à Objets
Cours n°2M2. IST-IE (S. Sidhom) UE 303 Promo. M2 IST-IE 2005/06 Conception dun système d'information multimédia Architecture trois-tiers : PHP/MySQL &
Methode de Tri efficace
Structures de données IFT-2000
Traiter des Données avec la STL
Présentation Structures de Données et TDA
Parallel Programming in C with MPI and OpenMP
COURS DE PROGRAMMATION ORIENTEE OBJET :
Structures de données IFT-2000
Méthodes de tri.
ETNA – 1ème année Guillaume Belmas –
Conception de Programmes - IUT de Paris - 1ère année Quelques éléments du langage C++ Les références La surcharge de fonctions Les fonctions «
2005/2006 Structures de Données Introduction à la complexité des algorithmes.
1 Listes des méthodes de la classe string, et exemples.
Chaînage et LSC : motivation et principe Manipuler la LSC : exemples Variantes : LDC, liste circulaire, …  Etude de cas : réalisation d’un buffer clavier.
Les systèmes d'information 1- Une pratique quotidienne 2- Les données 3- Approche conceptuelle 4- Notion de serveur 5- Conception d'un système d'information.
CINI – Li115 1 Semaine 9 Algorithmes de tri ● Introduction ● Tri à bulle ● - principe ● - algorithme ● - efficacité ● Tri par sélection ● - principe, algorithme,
1 Programmation en C++ IO en C++/SL. 2 Sortie à l’écran Exemple: #include int main () { std::cout
IFT359 – Programmation fonctionnelle Thème 02 B partie A introduction au langage fonctionnel choisi 1.
/ DÉTECTION DE DUPLICATION DANS DES DIAGRAMMES DE SÉQUENCE POUR LE REFACTORING DE MODÈLES DE CAS D'UTILISATION Présenté par : Hanae BOUTAYEB Samia MOATASSIME.
Stéphane Frénot, Frederique Laforest, Frédéric Le-Mouël IJA 1 TD 6 IJA Structures de données JAVA.
1 Programmation en C++ Fonctions ● Déclaration et définition de fonctions ● Arguments ● Surcharge ● Arguments optionnels ● Fonctions constantes ● Fonctions.
1 Programmation en C++ C++ de base ● Programme C++ ● Variables, objets, types ● Fonctions ● Namespace ● Tests ● Boucles ● Pointeurs, références.
1 Programmation en C++ C++ de base ● Programme C++ ● Variables, objets, types ● Types et opérations fondamentales ● Tests ● Boucles ● Pointeurs, références.
1 Observer le paramétrage d’un réseau. 2 Dans notre réseau téléphonique habituel, les postes, reliés à un auto-commutateur... …peuvent dialoguer, car.
Tableaux en C Mardi 2/05.
Semaine 8 Retour sur les tableaux : fonctions et récursivité
Les tables de multiplication au ce1 « Une construction réfléchie des tables favorise-t-elle leur mémorisation et leurs transferts ? » DOUARCHE Vaéa.
Les Instructions Itératives (Les Boucles)
Ce videoclip produit par l’Ecole Polytechnique Fédérale de Lausanne
Ce videoclip produit par l’Ecole Polytechnique Fédérale de Lausanne
Pas de variable globale
Les notions de classe et d'objet
Eléments d’Informatique Cours11 – Allocation dynamique, listes chaînées Catherine Recanati.
Pointeurs et langage C.
Techniques de décomposition
I21 Algorithmique et programmation II
Les expressions régulières en javascript
Les bases de données et le modèle relationnel
Programmation en C++ Fonctions
Références directes non sécurisées à un objet
L ES I NSTRUCTIONS I TÉRATIVES (L ES B OUCLES ) Réalisé par : OUZEGGANE Redouane Département de Technologie Faculté de Technologie – Université A.Mira,
Les tableaux.
Programmation en C++ C++ de base
1 RECURSIVITE PRESENTATION Ch. PAUL ALGORITHMIQUE Présentation de la récursivité.
Type Concret – Type Abstrait
© Robert Godin. Tous droits réservés.
Atelier de formation à l’élaboration de CD-ROM (Ouagadougou, 19 et 20 août 2015) Par-Gs 1.
Les structures de base Listes chainées. Listes Les listes(similaire aux tableaux) sont des structures informatiques qui permettent de garder en mémoire.
Transition vers l’assignation automatique des stages à la résidence
Semaine #11 INF130 par Frédérick Henri.
Expressions régulières
BUFFER CIRCULAIRE Meryem EL BAKRI. PLAN Introduction Buffer circulaire Fonctionnement.
CSI 3505 Algorithmes Voraces
Structure de données utiles
Flowchart Itération Cours 04.
Principes de programmation (suite)
Piles et files.
Tableaux Cours 06.
LISTES.
Présentation Chaînage dynamique Retour sur les tableaux
Les tris Tri Action de mettre une structure de données en ordre (croissant ou décroissant). Le plus simple est d’insérer en ordre. Les algorithmes de tri.
Listes Chaînées.
INTELLIGENCE ARTIFICIELLE
Structure de données Les listes.
Tableaux : Algorithmes de recherches
LINQ. LINQ (Language-Integrated Query) est une nouveauté du.NET Framework 3.5 C’est le nom d’un ensemble de technologies basé sur l’intégration de fonctions.
Transcription de la présentation:

Containeurs & Itérateurs Nouveaux paradigmes de manipulation des données offerts par les langages à objets

Séparer Structure de Données et Algorithmes Idée : un algorithme de recherche d’un plus grand élément template<class T> T find_greatest_element(T theArray[], size_t theNumberOfElements) { if (theNumberOfElements == 0) return T(); T greatestElement = theArray[0]; for (int index = 1; index < theNummberOfElements; index++) if (theArray[index] > greatestElement) greatestElement = theArray[index]; } return greatestElement; Comment faire fonctionner cet algorithme sur d’autres structures de données que des tableaux ?

Comment accéder aux éléments dans un ensemble de données L’approche séquentielle (uniquement en avant) Accès au premier élément de l’ensemble de données Accès à l’élément suivant Ce modèle correspond au modèle de flux (données venant d’un réseau, etc.) sans mémoire.

Comment accéder aux éléments dans un ensemble de données L’approche séquentielle (en avant et en arrière) Accès au premier élément de l’ensemble de données Accès à l’élément suivant Accès à l’élément précédent Ce modèle correspond au modèle de données stockées sur une bande magnétique par exemple.

Comment accéder aux éléments dans un ensemble de données L’approche à accès indexé Accès au premier élément de l’ensemble de données Accès au dernier élément de l’ensemble Accès à n’importe quel élément à partir de sa position. Ce modèle correspond au modèle de données stockées dans un tableau par exemple.

Idée : Rendre les structures de données conforme à un modèle d’accès Une structure de données ou toute structure modélisant un ensemble de données doit : Etre conforme à un modèle d’accès donné, Ie. fournir soit un accès séquentiel allant du premier au dernier élément. Fournir un accès séquentiel bidirectionnel Fournir un accès indexé aux données dans la structure.

Comment fournir une référence aux données internes de la structure ? Un itérateur est une classe qui : Identifie de manière unique une donnée stockée dans la structure de donnée Offre une méthode ou un opérateur qui accède à la donnée référencée par l’itérateur) Offre une méthode ou un opérateur qui permet de référencer la donnée suivante (parfois la donnée précédente).

Un « Input »Iterator en C++ L’itérateur doit fournir au moins le comportement suivant : Propriétés Imposées par le contrat Expressions valides Il supporte la recopie, l’affectation et la duplication. Les deux itérateurs après recopie font référence à la même donnée. X b(a); b = a; Si deux itérateurs sont égaux, cela signifie qu’ils font reference à la même donnée. a == b a != b L’operation de déréférencement permet d’accéder à la donnée stockée dans la structure de donnée. *a a->m Il peut être incrémentée. Dans ce cas, soit l’itérateur fait référence à la donnée stockée après la donnée actuellement référencée, soit au contraire, il ++a (void)a++ *a++ Deux itérateurs peuvent-être échangés, ie. le premier opérateur fait après l’échange référence à la donnée référencée par le second itérateur et le second itérateur fait après l’échange référence à la donnée référencée par le premier itérateur. swap(a,b)

Une structure de données « énumérable » en C++ Doit fournir au moins deux fonctions begin Retourne un itérateur faisant référence à la première donnée présente dans la structure ou à l’itérateur désignant la fin des données. end Retourne l’itérateur désignant la fin des données de la structure.

Transformer l’algorithme pour fonctionner sur des itérateurs. template<class inputIterator, class T> inputIterator find_greatest_element(inputIterator first, inputIterator end, T& value) { if(first == end) return end; inputIterator greatest = first; value = *first; first ++; for (; first != end; first ++) { if (*first > value) { greatest = first; value = *first; } return greatest;

Généralisation de l’usage int test() { int myints[] = { 10,20,30,30,20,10,10,20 }; std::vector<int> v(myints, myints + 8); int maxValue; std::vector<int>::iterator up = find_greatest_element(v.begin(), v.end(), maxValue); std::cout << "greatest value at position " << (up - v.begin()) << '\n'; return 0; }

TD --- Utilisation d’itérateur Créer un algorithme manipulant des structures itératives. Tester cet algorithme. Créer une classe itérateur pour manipuler des intervalles d’entier.