Changes between Version 57 and Version 58 of CaoCourseTme2


Ignore:
Timestamp:
Feb 18, 2007, 5:11:48 PM (18 years ago)
Author:
alain
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • CaoCourseTme2

    v57 v58  
    141141== La fonction de comptage des mots ==
    142142
    143 Le code de la fonction qui compte le nombre d'occurences des différents mots se trouve dans le fichier attachment:count.c
    144 
    145  *  Le mot clé '''static''' est utilisé de trois manières différentes. Quel est son effet ?
     143Le fichier attachment:count.c contient le code de la fonction count(), qui compte le nombre d'occurences des différents mots présents dans le fichier texte analysé. Il contient également les deux fonctions auxiliaires token() et result_count().
     144
     145 *  Le mot clé '''static''' est utilisé de trois manières différentes dans le fichier ''count.c''. Quel est son effet ?
    146146 *  Aurait on pu écrire {{{static char * buffer = malloc(1024)}}} ou encore {{{char * buffer = malloc(1024);}}}. Pourquoi ?
    147  *  La fonction {{{token}}} est censé rendre un nouveau token (mot) du fichier {{{infile}}} à chaque appel. Que pensez-vous de son comportement, est-il satisfaisant d'une manière générale?.
    148  *  Pourquoi as-ton mis une étoile devant l'argument {{{numero}}} de la fonction {{{token}}}.
    149  *  La fonction result_count utilise des fonctions d'accès spécifiques pour effectuer le parcours des items présents dans la table.[[BR]]
    150     Pourquoi ne peut on pas faire un parcours directement? Dans quel ordre vont être affichés les items ?
     147 *  La fonction token() est censée rendre un nouveau "token" (mot) du fichier texte analysé {{{infile}}} à chaque appel. Que pensez-vous de son comportement, est-il satisfaisant d'une manière générale?.
     148 *  Pourquoi as-ton mis une étoile devant l'argument ''numero'' de la fonction token() ?
     149 *  Pourquoi la fonction result_count utilise-t-elle des fonctions d'accès spécifiques pour effectuer le parcours des éléments présents dans la table de hachage ? Dans quel ordre vont être affichés les élément de la table ?
    151150
    152151== Autres services utiles ==
     
    162161alors elles seront rangées à la même adresse.
    163162
    164 = Etape 2 : Evolution du programme =
    165 
    166 Vous devrez modifier le programme de façon à ce qu'il  indique, pour chaque mot,
    167 les numéros de toutes les lignes où le mot est présent.
    168 Ainsi le programme fourni appliqué sur le fichier Makefile (c'est un fichier texte) produit:
    169 {{{
    170 prompt$ ./statt Makefile
     163= Etape 2 : Modifications du programme =
     164
     165== affichage des numéros de ligne ==
     166
     167Le programme qui vous est fourni affiche, pour chaque mot présent dans le fichier texte analysé,
     168le nombre d'occurences de ce mot. Vous devez modifier le programme de façon à ce qu'il  indique
     169en plus, pour chaque mot, les numéros de toutes les lignes où le mot est présent.
     170
     171Le fichier Makefile est un fichier texte. Si on lance le programme {{{statt}}}  sur le fichier Makefile, on obtient :
     172{{{
     173$ ./statt Makefile
    171174         namealloc.o : 2 occurences
    172175               hte.o : 2 occurences
     
    195198Après modification, il devra afficher:
    196199{{{
    197 prompt$ ./statt Makefile
     200$ ./statt Makefile
    198201         namealloc.o : 2 occurences lignes: 23  22
    199202               hte.o : 2 occurences lignes: 23  22
     
    220223116 mots dont 80 différents
    221224}}}
    222 Pour répondre à cette question, il va vous falloir:
    223  *  Définir un type de liste chainée pour le stockage des numéros de ligne.
    224     Ce type contient deux champs: un champ vers l'élément suivant et un entier représentant le numéro de ligne.
    225  *  Changer la structure hte_data_s afin d'ajouter un pointeur sur une liste chainée pour le stockage des numéros de lignes.
    226  *  Créer un nouvel élément de numéro de ligne lors du parcours du fichier (fonction count)
    227  *  Parcourir les listes créées pour les afficher (fonction result_count)
     225Pour introduire cette nouvelle fonctionnalité, il faut:
     226 *  Définir un type de liste chainée pour le stockage des numéros de ligne. Cette structure contient deux champs: un pointeur vers l'élément suivant de la liste et un entier représentant le numéro de ligne.
     227 *  Changer la structure hte_data_s afin d'ajouter un champs contenant un pointeur sur la liste chainée contenant les numéros de lignes.
     228 *  Modifier la fonction count() pour ajouter un nouveau numéro de ligne dans la liste chaînée associée au champs chaque fois que la fonction token() renvoie un mot.
     229 *  Mofifier la fonction result_count() pour parcourir les listes chaînées contenant les numéros de ligne et les afficher.
     230
     231== statistiques sur la table de hachage ==
    228232
    229233Vous donnerez également des statistiques sur l'usage des tables de hachage,
    230234telles que le nombre moyen de comparaisons nécessaires lors de la recherche d'un mot.
    231235
     236== création d'un manuel en ligne ==
     237
     238Vous devez enfin écrire la page de manuel pour le programme ''statt''.
     239Le fichier attachment:tool.1 se trouve dans le répertoire man1, et contient une page de manuel
     240générique contenant des commentaires pour expliquer la syntaxe.
     241La structure de cette page est standard, c'est celle utilisée pour les commandes unix.
     242
     243Renommez le fichier ''tool.1'' en ''statt.1'', et modifiez son contenu pour documenter
     244le programme ''statt''.
     245
     246Pour rendre ce manuel utilisable en ligne, ajoutez le répertoire {{{.}}} à la variable d'environnement {{{MANPATH}}}:
     247{{{
     248export MANPATH=.:$MANPATH
     249}}}
     250Il suffit de taper la commande {{{  man statt  }}} dans le répertoire tme2 pour afficher la documentation.
     251
    232252= Compte-Rendu =
    233253
    234 Vous rédigerez un compte-rendu avec la réponse aux questions posées et une explication des évolutions démandées.
    235 Pour ce tme, comme pour les suivants, vous serez interrogez '''individuellement''' devant machine.
    236 
    237 Nous vous demandons également de renommer le fichier attachment:tool.1 (il se trouve dans le répertoire man1) en statt.1.
    238 Ce fichier contient une page de manuel générique contenant des commentaires pour expliquer la syntaxe.
    239 La structure de cette page est standard, c'est celle utilisée pour les commandes unix.
    240 Vous devez écrire la page de manuel du programme statt.
    241 Le but de cette opération est de vous montrer que l'écriture d'un man ne pose pas de problème de forme.
    242 Pour utiliser ce man ajouter, le répertoire {{{.}}} à la variable d'environnement {{{MANPATH}}}:
    243 {{{
    244 export MANPATH=.:$MANPATH
    245 }}}
    246 Ainsi, vous pouvez taper la commande {{{  man statt  }}} dans le répertoire tme2 pour voir votre manuel.
     254Pour la première partie de ce TME, vous rédigerez un compte-rendu contenant les réponse aux questions posées.
     255
     256Pour la seconde partie, une démonstration des modifications introduites dans le programme vous
     257sera demandée au début du prochain TME.
     258