Changes between Version 4 and Version 5 of CaoCourseTme2


Ignore:
Timestamp:
Feb 15, 2007, 2:08:00 PM (18 years ago)
Author:
franck
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • CaoCourseTme2

    v4 v5  
    1212L'objectif de ce programme est double :
    1313
    14  1. Il doit d'une part vous permettre de faire une auto-évaluation de vos connaissances des outils de developpement C 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, ou auprès de vos camarades.
     14 1. Il doit d'une part vous permettre de faire une auto-évaluation de vos connaissances des outils
     15    de developpement C en vous posant des questions auxquelles vous devriez savoir répondre.
     16    Si ce n'est pas le cas, vous '''devez''' trouver les réponses dans les documentations (man, web),
     17    ou auprès de vos camarades.
    1518 2. Il vous offre un modèle de programme, avec makefile et man pour vos futurs développements.
    1619
     
    2225 *  Faire des mesures de performances avec gprof.
    2326 *  Ecrire un man sur l'outil.
     27
     28= Travail demandé =
     29
     30 *  Vous devez commencer par copier sur votre compte le répertoire :
     31    {{{cp -rp /users/enseig/encadr/cao/tme2 ~/cao/tme2}}}
     32 *  Ce répertoire contient un programme utilisant une table de hachage.
     33 *  Le travail consiste:
     34    1. à répondre aux questions portant sur le code fourni. Les questions sont sur cette page. Vous rédigerez un compte rendu informatique pour vous même avec les réponses.
     35    2. à programmer des évolutions du programme:
     36 *  L'évaluation sera individuelle et orale au début du tme3.
     37 *  Commencez par lire le programme en entier et faîtes le tourner pour comprendre son fonctionnement.
     38 *  Répondez ensuite aux questions et faîtes les évolutions demandées.
     39 
     40= Evolution du programme =
     41
     42Le programme fourni compte le nombre de mots d'un fichier texte et indique le nombre de mots présents et le nombre de mots différents.
     43Votre programme devra indiquer pour chaque mot:
     44 *  le nombre d'occurences
     45 *  les numéros de lignes où il est présent
     46
     47Vous donnerez également des statistiques sur l'usage des tables de hachage:
     48 *  taux de remplissage.
     49 *  moyenne du nombre de comparaisons nécessaire lors de la recherche d'un mot
     50       
     51= Description des sources fournies =
     52
     53 *  {{{Makefile .......................}}} description du processus de construction de l'exécutable.
     54 *  {{{main.c, main.h .................}}} programme principal source et déclaration.
     55 *  {{{count.c, count.h ...............}}} algorithme de parcours d'un fichier texte en vue de comptage.
     56 *  {{{hte.c, hte.h ...................}}} fonction de création des tables de hachage et déclaration de toutes fonctions de gestion.
     57 *  {{{dico.c, dejavu.c, namealloc.c ..}}} fonctions de gestion des tables pour trois types d'usage
     58 *  {{{man1/tool.1 ....................}}} fichier au format man
     59
     60= Questions =
     61
     62== Le Makefile ==
     63
     64 1. Completez la liste des dépendances lignes 24 à 28
     65 1. Réécrivez les commandes en utilisant les variables automatiques : {{{$@ $< $^}}}
     66    * {{{$@}}} : désigne la cible d'une règle
     67    * {{{$<}}} : désigne le premier fichier de la liste des sources d'une règle
     68    * {{{$^}}} : désigne la liste des sources d'une règle
     69 1. Donnez une raison à la definition des commandes et parametres au début du Makefile
     70 1. A quoi servent les options -p, -g, -wall, -werror, -ansi
     71 1. Comment demander l'optimisation maximale du compilateur
     72 1. L'option -p est présente dans LDFLAGS et CFLAGS, pourquoi n'est-ce pas le cas de -g
     73 1. Que fait la regle indent ? quelle est la signification des flags utilisés par le programme indent?
     74
     75{{{
     76  1 # Definition des commandes
     77  2 CC      = gcc
     78  3 AR      = ar
     79  4 RM      = rm
     80  5 INDENT  = indent
     81  6 
     82  7 # Definition des parametres
     83  8 LDFLAGS = -p
     84  9 CFLAGS  = -g -p -Wall -ansi -Werror
     85 10 ARFLAGS = -r
     86 11 IDFLAGS = -gnu  -bli0 -npsl -l90
     87 12
     88 13 # Definition de la liste des librairies necesaires a l'edition de lien
     89 14 LDLIBS  = -L. -lhte
     90 15
     91 16 .PHONY: all clean realclean
     92 17
     93 18 stat : main.o count.o libhte.a
     94 19         $(CC) $(LDFLAGS) main.o count.o -o stat $(LDLIBS)
     95 20
     96 21 libhte.a : hte.o dico.o dejavu.o namealloc.o
     97 22         $(AR) $(ARFLAGS) libhte.a hte.o dico.o dejavu.o namealloc.o
     98 23
     99 24 main.o:
     100 25 count.o:
     101 26 hte.o:
     102 27 dejavu.o:
     103 28 namealloc.o:
     104 29
     105 30 all: clean stat
     106 31
     107 32 clean:
     108 33         $(RM) *.o *.a *.out *~ 2> /dev/null || true
     109 34
     110 35 realclean: clean
     111 36         $(RM) stat 2> /dev/null || true
     112 37
     113 38 indent:
     114 39         $(INDENT) $(IDFLAGS) *.c *.h
     115}}}