Informatique appliquée à la Géomatique Cours destiné à former les Ingénieurs Informaticiens Géomaticiens de l ENSG et les Master 2 "IASIG" de l UPMC François BOUILLÉ Prof. UPMC / ENSG Chapitre 7
Chapitre 7 Le traitement des listes Cedrus atlantica
Objectifs du chapitre 7 : Présenter ce qu est une liste, comment la manipuler, ajouter, insérer ou extraire des éléments, la parcourir à l aide de foncteurs. Mots-clés : ajout / extraction / insertion d un élément, vidage, liste linéaire / circulaire / simple / multiple / croissante / décroissante / chronologique, cardinalité, typage, nombre d occurrences, parcours d une liste, foncteurs de liste, opérateurs de liste, sous-liste, pile, file, chaînage double, descripteur de liste, segmentation, pool de buffers, gestionnaire de listes.
PLAN 1 Opérations élémentaires sur une liste 2 - Déplacements dans la liste 3 Caractéristiques d une liste 4 Quelques foncteurs opérant sur les listes 5 La boucle ensembliste 6 Les opérateurs de liste 7 - Bilan comparatif des listes et des vecteurs 8 - Implantation des listes de très grande taille 9 - Principe d'implantation 10 - Descripteur de liste 11 - Segmentation 12 - Méthodologie 12 - Architecture F. Bouillé ADL Chap.1
1 Opérations élémentaires sur une liste Ajout d un élément à la liste : Extraction d un élément de la liste :
Insertion d un élément X dans la liste L :
Vidage d une liste :
2 - Déplacements dans la liste : (monofoncteurs)
Liste linéaire : (cas implicite) NONE NONE
Liste circulaire : NB : les concepts de premier et dernier existent toujours.
3 Caractéristiques d une liste Organisation de la liste L (linéaire ou circulaire) : -la transformer en liste circulaire : circular L -la retransformer en liste linéaire : linear L
Modification de la multiplicité (implicitement multiple) : -la transformer en liste «single» : single L -la retransformer en liste «tuple» : tuple L
Modification du classement (implicitement chronologique) : -la transformer en liste croissante : (ascendante) ascend L -la transformer en liste décroissante : (descendante) descend L -la retransformer en liste chronologique : (libre) free L
Sauf spécification préalable, une liste, à sa création, est implicitement libre ; il est donc possible ultérieurement de la réorganiser, par exemple, en ordre croissant. Exemple : -soit la liste L ci-dessous contenant les noms bien connus d un certain nombre de batailles, noms rangés en ordre chronologique, c est à dire l ordre d introduction dans la liste, et qui correspond aussi, ici, à la chronologie historique : Camerone Tuyen Quang Messifré Rachaya El Moungar Phu Tong Hoa Faisons alors ou encore : ascend L On obtient la liste L en ordre alphabétique : Camerone El Moungar Messifré Phu Tong Hoa Rachaya Tuyen Quang
Typage d une liste : Ce typage ne concerne pas l étape algorithmique. A l étape de la programmation, une liste pourra être déclarée ou spécifiée d un type donné, qui peut être : -un type de base : -numérique (entier, flottant, complexe, quaternion ) -booléen -texte (caractère, chaîne) -un type abstrait de donnée (cours ultérieur). Les instructions de typage seront vues lors de l étude de la programmation, et seront revues à l occasion du cours de compilation.
4 Quelques foncteurs opérant sur les listes -gestion de file et de pile, -cardinalité, -nombre d occurrences d un élément, -position d un élément dans une liste, -désignation d un élément par sa position, -manipulation d une sous-liste.
Gestion de file et de pile :
Cardinalité : Nombre d occurrences de X dans L: (bifoncteur)
Position d un élément dans une liste : -depuis le début : p vaut 7 -depuis une position quelconque :
Récupération d un élément dont on connaît la position : -on peut aussi utiliser une notation proche de celle des vecteurs :
Expression d une sous-liste :
5 La boucle ensembliste Exploration systématique d une liste :
Exemple :
6 Les opérateurs de liste Opérateurs ensemblistes sur les listes : Attention : les listes sont des ensembles ordonnés Par exemple, en général :
Appartenance d un élément à une liste : Non appartenance d un élément à une liste : Ces deux opérateur donnent un résultat booléen. Ils seront respectivement traduits en ADT sous la forme de : IN et NOTIN
7 - Bilan comparatif des listes et des vecteurs -l utilisation de listes apparaît plus simple et plus claire, -l on n a pas à manipuler les compteurs, -des boucles destinées à explorer le vecteur deviennent inutiles, car il suffit de faire un test exprimant le fait qu un élément appartient ou non à la liste, -de ce fait le degré d emboîtement diminue. mais
Cette facilité apparente ne doit pas faire illusion : -"derrière la scène", une boucle est réellement effectuée, et en raison de l organisation inhérente à l implantation des listes, elle prend plus de temps que le balayage d un simple vecteur, -un compteur, présent dans le descripteur de liste caché à l usager, est incrémenté comme celui d un vecteur, -la diminution du degré d emboîtement facilite la décodabilité de l algorithme par l usager, mais cette diminution n est qu apparente, car des boucles cachées sont effectuées.
Nous verrons lors du cours n 11.4 comment implanter les listes selon un mécanisme très simple, fonctionnant pour des listes de taille "raisonnable". Mais dans certaines applications, l'on a à traiter des listes de très grande taille, comportant des milliers d'éléments, voire des dizaines de milliers (ou beaucoup plus). C'est notamment le cas dans le traitement de problèmes sur des structures complexes, où l'on enchaîne divers foncteurs, dont nous verrons certains exemples dans le cours n 10.2, traitant notamment de la Géomatique. L'on aboutira alors à l'architecture du moteur de listes.
Pour compléter votre information : -chaque chapitre faisant l objet d une vidéo est accompagné d un diaporama. Regardez-le! -reportez-vous aux supports de cours. Les divers fascicules (plus de 1000 pages) sont beaucoup plus détaillés. -reprenez les projets des Travaux Pratiques faits à l ENSG.
Sur ce cours, pour plus d information : - regarder la vidéo, - se reporter au support de cours intitulé : "Le traitement des listes de très grande taille" Travaux pratiques à l ENSG : Ecriture systématique des algorithmes des diverses primitives du Gestionnaire de Listes GLST. Utilisation du GLST pour manipuler des listes de TAD persistants, notamment pour l écriture d un Moteur de Foncteurs (voir cours ultérieurs).
Abies numidica Bon courage!!!