Changes between Version 35 and Version 36 of CaoCourseTme2
- Timestamp:
- Feb 18, 2007, 7:54:01 AM (18 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
CaoCourseTme2
v35 v36 15 15 * Ecrire un man sur l'outil. 16 16 17 L'objectif de ce TME est double :17 L'objectif de ce TME est triple : 18 18 19 19 1. Il doit d'une part vous permettre de complêtez l'auto-évaluation de vos connaissances des outils de developpement C que vous avez commencée dans le précédent TME, en vous posant des questions auxquelles vous devriez savoir répondre. Si ce n'est pas le cas, vous '''devez''' trouver les réponses dans les documentations (man, web), ou auprès de vos camarades. 20 20 1. Il introduit de nouveaux outils permettant l'indentation automatique d'un programme source (outil ''indent''), la constructtion d'une bibliothèque C (outil ''ar''), ou l'écriture d'une documentation (outil ''man''). 21 1. Il présente une structure de données, la table de hachage, très utile quelquesoit le type de programme. 21 22 22 23 Il vous offre également un modèle de programme, avec Makefile et man pour vos futurs développements. … … 38 39 39 40 * {{{Makefile .......................}}} description du processus de construction de l'exécutable. 40 * {{{main.c, main.h .................}}} programme principal source et déclaration .41 * {{{main.c, main.h .................}}} programme principal source et déclarations. 41 42 * {{{count.c, count.h ...............}}} algorithme de parcours d'un fichier texte en vue de comptage. 42 43 * {{{hte.c, hte.h ...................}}} fonction de création des tables de hachage et déclaration de toutes fonctions de gestion. … … 46 47 Une table de hachage est une structure de données permettant de stocker des 47 48 ensembles contenant un nombre quelconque d'éléments, où chaque élément est un couple 48 de la forme (clé, valeur). Le plus souvent la clé est une chaîne de caractères.49 La valeur peut être un nombre ou une structure de données plus ou moins complexe.49 de la forme (clé, data). Le plus souvent la clé est une chaîne de caractères. 50 La donnée peut être un nombre ou une structure de données plus ou moins complexe, parfois la donnée est absente. 50 51 Le principal objectif d'une table de hachage est d'accélérer la recherche d'un élément 51 52 par sa clé. 52 53 53 Pour représenter un ensemble de couple (clé, valeur) la méthode la plus simple54 Pour représenter un ensemble de couple (clé, data) la méthode la plus simple 54 55 consiste à les stocker dans une liste chainée. 55 56 La recherche d'un élément se fait alors par un parcours de la liste, donc de 56 l'ensemble des éléments, ce qui n'est pas très efficace si le nombre d'élémentest grand.57 l'ensemble des éléments, ce n'est pas très efficace si le nombre d'éléments est grand. 57 58 58 59 Pour accélérer la recherche, on créé un tableau de listes chainées. Le nombre de … … 61 62 d'environ 1000 cases. 62 63 On définit ensuite une fonction, que l'on nomme '''fonction de hachage''', 63 qui calcule un indexà partir de la clé d'un élément.64 qui calcule l'index d'une case à partir de la clé d'un élément. 64 65 Un élément doit être rangé dans la liste chainée associée à la case du tableau 65 66 définie par l'index calculé par la fonction de hachage. … … 76 77 qu'un tout petit nombre de listes contenant plus d'un élément. 77 78 78 La propriété principale d'une table de hachage est que (si la taille de la table79 est du même ordre de grandeur que le nombre d'éléments ),le temps de80 recherche est en O(1), c'est à dire indépendant du nombre d'éléments, (même pour81 un million d'éléments ).79 La propriété principale d'une table de hachage est que, si la taille de la table 80 est du même ordre de grandeur que le nombre d'éléments, alors le temps de 81 recherche est en O(1), c'est à dire indépendant du nombre d'éléments, même pour 82 un million d'éléments. 82 83 83 84 Les deux principales actions sont l'ajout d'un élément (add) et la recherche d'un élément (get). 84 * La fonction get() prend en paramètre la clé de l'élément recherché. Si l'élément existe, elle rend la valeurassociée.85 * La fonction add() prend en paramètre le couple (clé, valeur). Si l'élément existe, elle change sa valeur, sinon elle créé l'élément.85 * La fonction get() prend en paramètre la clé de l'élément recherché. Si l'élément existe, elle rend la donnée associée. 86 * La fonction add() prend en paramètre le couple (clé, data). Si l'élément existe, elle change sa donnée, sinon elle créé l'élément. 86 87 87 88 = Etape 1 : Questions sur le code fourni =