Algorithmique et Structures de données

Slides:



Advertisements
Présentations similaires
Algorithmes et structures de données (avancées) Cours 1+2
Advertisements

Structures de données avancées : Principales structures de fichiers
Chap. 4 Recherche en Table
Algorithmes et structures de données
Algorithmes et structures de données Cours 2
Structures de données et complexité
Structures de données et complexité LIFO – FILO – FIFO – etc…
Algorithmique et évaluation
Approfondissement du langage
(Classes prédéfinies – API Java)
C.
INTRODUCTION.
Chap. 1 Structures séquentielles : listes linéaires
Dossier TICE Excel.
8. Les tableaux P. Costamagna – ISEN N1.
Introduction à la programmation (420-PK2-SL) cours 15 Gestion des applications Technologie de linformation (LEA.BW)
Algorithme et programmation
Initiation à la programmation et algorithmique cours 3
Lycée Louis Vincent SEANCE 6 Python Les listes Lundi 25 novembre 2013.
Chapitre IV. Structures linéaires (piles, files, listes chaînées)
Principes de programmation (suite)
Cours 7 - Les pointeurs, l'allocation dynamique, les listes chaînées
Structures de données linéaires
Introduction à la programmation (420-PK2-SL) cours 12 Gestion des applications Technologie de linformation (LEA.BW)
LOGO Responsable du cours Mlle Amina GHRAB : 1 ère année IAG Institut Supérieur de Gestion de Tunis.
Methode de Tri efficace
II. Chaînage, SDD séquentielles
TD2 2 IMACS Romaric GUILLERM Algo-Prog en Ada.
Principes de programmation (suite)
FICHIERS : Définition : Algorithme général:
Les fichiers indexés (Les B-arbres)
Les pointeurs Modes d’adressage de variables. Définition d’un pointeur. Opérateurs de base. Opérations élémentaires. Pointeurs et tableaux. Pointeurs et.
Structures de données IFT-2000 Abder Alikacem Standard Template library Édition Septembre 2009 Département dinformatique et de génie logiciel.
66 Utilisation des classes et des objets. 6-2 Objectifs A la fin de ce cours, vous serez capables de : Créer de nouvelles classes à laide de Eclipse Utiliser.
Principes de programmation (suite)
Présentation Structures de Données et TDA
Les listes chaînées par Frédérick Henri.
LIFI-Java 2004 Séance du Jeudi 9 sept. Cours 1. La notion de langage Décrire une tâche à effectuer –programme Écrire à un haut niveau –facile pour lutilisateur.
Standard Template Library
Table de hachage Introduction Notion de clé Fonction de hachage
Structures de données IFT-10541
Algo-Prog en Ada TD2 2 IMACS Romaric GUILLERM
Exemple de gestion d'un buffer clavier en liste circulaire
Le langage C Structures de données
4 Introduction des objets. Les chaînes et tableaux
Initiation MS Access 2010 Requêtes - Sélection (travail en autonomie)
INTRODUCTION.
Programmation en Java Tableaux NGUYEN Thi Minh Tuyen
David Rivreau Table de hachage David Rivreau
JavaScript.
Strings et Tableaux en Java
Sémantique des instructions pour le langage Z minimal Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
ISBN Chapitre 10 L'implémentation des sous- programmes.
Ceci est une session expert Cette session est déconseillée aux novices des moteurs Analysis Services 2000 ou 2005 La session « Découverte de Analysis.
Organisation des données Introduction à la programmation Traitements simples Affectation Parcours Définition du tableau Les Tableaux Mise en situation.
Cours LCS N°4 Présenté par Mr: LALLALI
Aide a la décision avec le tableur
1 Système d’exploitation Les scripts csh 1 ère Année Année Tienté HSU.
Les algorithmes recursifs
ITI Lab # 11 Adapté de versions antérieures créées par: Daniel Amyot et Alan Williams.
L T I Laboratoire de Téléinformatique 2 Projet de semestre Parseur XML basé sur la DTD : Buts –Utiliser la grammaire définissant un type de fichiers XML.
Algorithmique Tableaux de données
 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 TABLEAUX Définition: Création d’un tableau:
CSI2510 Structures des Données et Algorithmes
A la découverte d’Excel Certificat Informatique et Internet.
DreamWeaver Séance 2 HMIDA Ahmed A2008. Plan 1.Calques 2.CSS 3.Modèles 4.Formulaires 5.Comportements 6.Mise en ligne.
Les calques Les Template (modèles) Les Comportements Les scénarios Les formulaires Les CSS Le serveur Web de l’UTC Présentation.
L'exécution d'un programme nécessite l'utilisation des ressources de l'ordinateur : temps de calcul pour exécuter les opérations, et l'occupation de la.
Transcription de la présentation:

Algorithmique et Structures de données Institut Supérieur de Gestion de Tunis Soltana Ghanem : sultana.ghanem@gmail.com 1ère année IAG 2009 - 2010

Objectifs connaître l’utilité des structures de données L’étudiant devra : connaître l’utilité des structures de données connaître les structures de données linéaires connaître les avantages et inconvénients de chaque structure Pouvoir implémenter les structures de données linéaires Être capable de choisir la structure adéquate à chaque problème 2

Références Michel Divay : Algorithmes et structures de données génériques Abdelali Guerid, Pierre Breguet, Henri Röthlisberger : Algorithmes et structures de données avec C++ et Java Cours Mme Nahla Ben Amor : Algorithmes et structures de données , http://isgprog2.ifrance.com/ 3

Plan Définitions Structures de données linéaires Exercice 1 2 Tableau contiguë Liste chainée File Pile Exercice 3 4

Définitions C’est un programme écrit dans un langage naturel Algorithme C’est une structure logique destinée à contenir des données, afin de leur donner une organisation permettant de simplifier leur traitement Structure de données 5

Définitions Mise en situation : Vous voulez créer une application qui calcule votre moyenne (6 matières) Vous décidez de créer 12 variables qui serviront à contenir les notes exemple : mat1_exam, mat2_exam.. On vous demande de réaliser une application qui calcule la moyenne de tout les étudiants de ta classe(40)  Vous allez définir et gérer manuellement 40 * 12 variables! 6

Tableau contiguë Un tableau est un ensemble de cellules contigües visant à Contenir des données homogènes Un tableau est caractérisé par : Un nom Une taille physique Le type des données qu’il va contenir 7

Tableau contiguë Exemple : T = 12 7 8 18 3 Indice 1 2 3 4 5 Pour récupérer la valeur d’une case : Nom_du_tableau [ indice ]  T[4] contient la valeur 18 Pour modifier une case : Nom_du_tableau [ indice ] = Valeur  T[2] = 200 12 200 8 18 3 1 2 3 4 5 8

Tableau contiguë Manipulation des tableaux contigües : Taille () : entier= une fonction qui retourne la Taille logique du tableau Suppression A la création du tableau initialiser la variable taille 0 Si une opération d’ajout est effectuée avec succès taille  taille +1 Si une opération de suppression est effectuée avec succès taille taille -1 Récupérer ( indice : entier ) : Objet = fonction qui retourne l’élément à la position indice Pré condition : indice > 0 et indice <= taille () Traitement : retourner ( tableau [ indice ] ) 9

Tableau contiguë Ajouter ( élément : objet , indice : entier ) : booléenne = fonction qui ajoute l’élément dans le tableau à la position indice Pré condition : taille() < taille physique indice > 0 et indice <= taille ()+1 élément à ajouter doit être de même nature que les éléments contenus par le tableau Ajouter ( 200 , 3 ) 12 7 8 18 3 1 2 3 4 5 12 7 8 18 3 1 2 3 4 5 12 7 200 8 18 3 1 2 3 4 5 6 10

Tableau contiguë Supprimer ( indice : entier ) : booléenne = fonction qui supprime l’élément se trouvant à la position indice Pré condition : indice > 0 et indice <= taille () Supprimer ( 3 ) 12 7 200 8 18 1 2 3 4 5 12 7 8 18 1 2 3 4 5 12 7 8 18 1 2 3 4 5 L’élément d’indice 5 sera toujours présent mais l’décrémentation de la taille le rendra inaccessible . 11

Tableau contiguë Inconvénients Avantages Simple à implémenter et à manipuler On doit définir la taille maximale au préalable Accès directe aux données L’espace mémoire doit être contiguë Ajout et suppression en fin de tableau en O(1) Utilisation non optimisé de la mémoire 12

Une Liste est un ensemble de nœuds reliés entre eux Liste chainée LISTE Une Liste est un ensemble de nœuds reliés entre eux Un nœud est une entité renfermant de l’information et ayant un pointeur sur le nœud qui la suit Nœud Une liste peut être caractériser par un nœud tête car ce dernier sera le point de départ pour retrouver les autres nœuds Implémentation 13

Liste chainée la tête de liste représente le point d’accès à la liste Exemple : Pointeur suivant suivant 12 7 8 18 3 Nœud Tête de liste la tête de liste représente le point d’accès à la liste Chaque nœud : Renferme une information Indique l’emplacement du prochain nœud Le dernier nœud ne pointe vers rien (null) 14

Liste chainée Ajout : cas 1 : à la première position 12 7 8 18 3 22 22 15

Liste chainée 22 Ajout : cas 2 à la nième position 12 7 8 18 3 12 7 8 16

Il est préférable d’optimiser Liste chainée Suppression: cas 1 : de la tête de liste 12 7 8 18 3 Il est préférable d’optimiser la mémoire !! 7 8 22 18 3 17

Liste chainée Suppression: cas 2 : suppression d’un élément autre que la tête de liste À supprimer 12 7 8 18 3 12 7 18 3 18

Liste chainée Inconvénients Avantages Utilisation optimale de la Mémoire L’accès aux données Est plus couteux (temps) L’espace mémoire ne doit pas être contiguë Ajout à la fin de liste en O(n) La taille de la liste peut ne Pas être définie au préalable Gestion des pointeurs Toutes les opérations Sur la tête de liste sont en O(1) 19

Gestion des imprimantes… File Une file (Queue) est un type particulier de liste , où les éléments sont insérés en queue et supprimer en tête Le nom vient des files d’attente à un guichet, où le premier Arrivé est le premier servi : FIFO (First In First Out ) Les files sont d’un usage très répandu dans la programmation système : gestion des processus, Gestion des imprimantes… 20

File Seul le premier élément peut quitter la file Exemple : Station de traitement 7 8 18 3 12 1 2 3 4 5 Point de sorite 14 Un nouveau venu Seul le premier élément peut quitter la file Les nouveaux éléments sont ajoutés à la fin de la file 21

File Implémentation Puisque les Files sont des cas particuliers de listes pourquoi ne pas utiliser ces dernières pour les implémenter ? Doit-on utiliser les tableaux contigües ou les listes chainées? Liste doublement chainée !! Enfiler ( élément )  revient à faire ajouter ( élément , taille ()+1 ) Défiler ( )  revient à faire supprimer (1) 22

Pile Une pile (stack) représente une séquences d’éléments accessibles par une seule extrémité appelée sommet La stratégie de gestion d’une pile est : dernier arrivé, premier servi : LIFO ( Last In First Out ) Les opérations de mise à jour (insertion et suppression) , d’après la définition, se font à partir du sommet 23

Je vois mieux maintenant !! Pile Exemple : 3 Sommet Je vois mieux maintenant !! 18 8 7 12 Base Le sommet de la pile est le seul élément manipulable Pour manipuler un élément se trouvant au milieu de la pile il faudra dépiler tout ces prédécesseurs Si on ajoute un nouvel élément il serra empiler au dessus du sommet 24

Pile Les piles sont utilisées pour gérer les appels récursifs !!!! Doit-on utiliser les tableaux contigües ou les listes chainées? Tableau contiguë !! liste chainée !! Empiler ( élément )  revient à faire ajouter ( élément , taille () +1 ) Dépiler ( )  revient à faire supprimer (taille () ) Sommet ( )  revient à faire récupérer ( taille () ) Les piles sont utilisées pour gérer les appels récursifs !!!! 25

Exercice : Quiz Quel est la structure de données linéaire la plus adéquate à chaque problème? 1 La gestion d’une équipe de football Tableau contiguë 2 La gestion des demandes de location d’une voiture File 3 Le problème des tours de Hanoï Pile 4 La gestion des clients d’une banque Liste chainée 26