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 ? |
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 | |
| 167 | Le programme qui vous est fourni affiche, pour chaque mot présent dans le fichier texte analysé, |
| 168 | le nombre d'occurences de ce mot. Vous devez modifier le programme de façon à ce qu'il indique |
| 169 | en plus, pour chaque mot, les numéros de toutes les lignes où le mot est présent. |
| 170 | |
| 171 | Le fichier Makefile est un fichier texte. Si on lance le programme {{{statt}}} sur le fichier Makefile, on obtient : |
| 172 | {{{ |
| 173 | $ ./statt Makefile |
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) |
| 225 | Pour 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 == |
| 236 | == création d'un manuel en ligne == |
| 237 | |
| 238 | Vous devez enfin écrire la page de manuel pour le programme ''statt''. |
| 239 | Le fichier attachment:tool.1 se trouve dans le répertoire man1, et contient une page de manuel |
| 240 | générique contenant des commentaires pour expliquer la syntaxe. |
| 241 | La structure de cette page est standard, c'est celle utilisée pour les commandes unix. |
| 242 | |
| 243 | Renommez le fichier ''tool.1'' en ''statt.1'', et modifiez son contenu pour documenter |
| 244 | le programme ''statt''. |
| 245 | |
| 246 | Pour rendre ce manuel utilisable en ligne, ajoutez le répertoire {{{.}}} à la variable d'environnement {{{MANPATH}}}: |
| 247 | {{{ |
| 248 | export MANPATH=.:$MANPATH |
| 249 | }}} |
| 250 | Il suffit de taper la commande {{{ man statt }}} dans le répertoire tme2 pour afficher la documentation. |
| 251 | |
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. |
| 254 | Pour la première partie de ce TME, vous rédigerez un compte-rendu contenant les réponse aux questions posées. |
| 255 | |
| 256 | Pour la seconde partie, une démonstration des modifications introduites dans le programme vous |
| 257 | sera demandée au début du prochain TME. |
| 258 | |