ࡱ > V X U [@ 5 bjbj44 (b Vi Vi - x x x x x x x P P P P , r 2 $ ! R # x ; ; ; x x , ? ? ? ; N x x ? ; ? ? [ : , x x / P B A
B 0 r K R ~$ j ~$ x x x x ~$ x T > J , ? v $ P 5
P CSI 2531 Gestion de Fichiers, Hiver 2005
Informatique, Universit dOttawa
Devoir # 1 (100 points, poids 10%)
Rendre: Vendredi, le 4 Fvrier 17h00 (via webCT)
Programme: Traduction de format Html en format Texte (90 points)
1. Description du Problme
Lobjectif de cet exercice est de vous familiariser la programmation en C++, et en particulier aux oprations de traitement de fichiers discutes en classe.
Vous devez crire un programme en C++ qui lira un fichier dentre en format html (hyper-text markup language) et crira un fichier de sortie en format texte (ASCII). Ceci sera semblable (mais plus simple que) lopration performe par certains Web Browsers lorsque vous choisissez loption Save as... suivie de loption text. Pour voir quoi ressemble un fichier html, veuillez aller sur une page Web et slectionner une option du type View>Source.
Le fichier html contient de nombreuses tiquettes (des commandes spciales entoures par des <>), qui dtermineront le format de votre fichier de sortie de la manire suivante:
Toutes les cas suivants doivent tre transformes en un seul espace: plusieurs espaces lun aprs lautre, toute squence despace et de caractres reprsentant un changement de ligne (CR+LF).
Les espaces qui ne sparent pas les mots, tels que les espaces en dbut deligne ou entre deux tiquettes doivent tre ignors.
Il ny a pas dindentation au dbut dun paragraphe.
Ltiquette line break
force un passage la ligne suivante. Plusieurs de ces caractres apparaissant lun aprs lautre sont cumuls (exemple: sil y en a trois lun aprs lautre, trois lignes sont sautes).
Ltiquette new-paragraph
force un passage la ligne suivante (si on ne se trouve pas en dbut de ligne) et saute une autre ligne. Plusieures de ces tiquettes lune aprs lautre NE saccumulent PAS.
Les tiquettes entourant des enttes
Entte
(on peut avoir de ):
produisent leffet de suivi de 2n espaces pour lindentation; ltiquette de
fermeture
produit leffet de
.
Les listes ordonnes ou non ordonnes produisent des indentations relatives lindentation courante. Donc, les sous-listes accumulent leurs indentations. Les dbuts de liste
ou produiront les effets de . Les lments de listes
- lintrieur dune liste non ordonne
produira les 6 caractres suivants aprs lindentation courante: 4 espaces, 1 caractre *, 1 espace. Les lments de listes - lintrieur dune liste ordonne
produira les 6 caractres suivants aprs lindentation courante: ordre de llment de liste justifi sur 4 espaces, 1 caractre ., 1 espace. Un line break lintrieur dun lment de liste gardera cette indentation de 6 caractres.
Etiquettes Link texte dsir produit: texte dsir
Toute autre tiquette devra tre ignore: ignorez-les et elles nauront aucun effet sur le fichier texte.
Exemple de fichier dentre:
Example of a piece of html file
The heading above
produced fine 2-space indentation.
Spaces after
a line break have no effect.
Spaces are
also ignored at the beginning of paragraphs.
Ordered and unordered lists
See how heading 4 produces 8-space indentation?
Now I will show nested lists.
- Vegetables
- Cheese
- Brie
- Blue
-
Gouda
- Cereal: corn, rice,
and barley
Testing a link.
Exemple du fichier de sortie correspondant
Example of a piece of html file
The heading above produced fine 2-space indentation.
Spaces after a line break have no effect.
Spaces are also ignored at the beginning of paragraphs.
Ordered and unordered lists
See how heading 4 produces 8-space indentation?
Now I will show nested lists.
* Vegetables
* broccoli
* aspargus
* Cheese
1. Brie
2. Blue
3. Gouda
* Cereal: corn, rice,
and barley
Testing a link .
2. Dtails dimplmentation et standards pour vos programmes
Arguments sur la ligne de commandes:
Les noms des fichiers dentre pour votre programme seront donns sur la ligne de commande. Ceci signifie quaprs la compilation de votre programme et la cration dun fichier excutable, vous allez excuter le programme sur le prompt DOS et spcifier des arguments qui reprsenteront le nom des fichiers utiliser dans vos programmes. Les dtails sur la faon dont vous pouvez accder aux arguments de ligne de commande lintrieur de vos programmes seront donns sur une page Web spare. Rapidement, le mcanisme principal pour le faire est dutiliser les arguments suivants dans le programme principal:
int main (int argc, char* argv[]) { ... }. Vous pouvez chercher de linformation sur lutilisation de ces paramtres sur le Web ou dans un livre sur le C++.
Crer et excuter votre programme:
Les standards ci-dessous (noms des fichiers et faons dexcuter votre programme) doivent tre strictement suivis. Vous pouvez tre cratifs dans la manire dons vous organisez vos classes et votre programme, mais le nombre et le nom de vos fichiers doivent tre standard de manire pouvoir tre utiliss uniformment par lassistante lenseignement.
Veuillez crer un projet et appelez-le html2text avec les classes et les fichiers suivants:
La classe HtmlTranslator (fichiers: HtmlTranslator.cpp, HtmlTranslator.h)
Le programme principal (fichier: main.cpp)
Le programme excutable sappellera html2text.exe par dfaut, puisque html2text est le nom du projet. Ce programme (html2text.exe) sera excut au prompt DOS o lutilisateur pourra spcifier des arguments de ligne de commande en utilisant le format suivant:
html2text.exe } ou alternativement (lutilisateur peut omettre lextension .exe): html2text < nom_de_fichier_dentre > < nom_de_fichier_de_sortie >
o < nom_de_fichier_dentre > est le nom physique du fichier dentre et < nom_de_fichier_de_sortie > est le nom physique du fichier de sortie.
Tester et vrifier vos fichiers de sortie:
Nous allons mettre votre disposition des fichiers dentre qui vous permettront de tester votre programme. Nous nous rservons le droit dutiliser des fichiers supplmentaires au moment o nous testerons votre programme. Lorsque des sorties correctes existent pour les entres disponibles, elles seront affiches sur la page webCT. Veuillez, sil vous plait, crer le fichier de sortie exactement dans le format spcifi dans le texte de ce devoir, puisquil se peut que nous utilisions une technique automatique de comparaison entre vos sorties et les sorties correctes.
Documentation et Style
Votre programme doit tre bien document et crit dans un bon style. Une partie des points qui vous seront octroys seront ddis la documentation et au style. Afin de documenter votre programme, veuillez inclure des commentaires expliquant ce qui est fait dans les lignes suivantes et ajouter des commentaires la fin de certaines lignes expliquant ce qui a t fait sur ces lignes (utilisez votre jugement pour choisir les endroits o ces commentaires doivent se trouver). Pour chaque fonction ou mthode, veuillez ajouter une explication complte avant sa dfinition, expliquant sa raison dtre et ce que ses paramtres reprsentent. Pour chaque classe cre, ajoutez une explication avant sa dfinition. Un bon style correspond une bonne documentation, un choix de noms clairs (pour vos variables, classes, fonctions, etc.) et une bonne organisation et conception de programme (comme la cration de mthodes qui traite chaque aspect/tche lintrieur dune classe).
Que rendre et comment rendre votre devoir?
Veuillez sil vous plait prendre connaissance du document sur le plagiat et la collaboration post sur le site Web. Vous ne devez pas inclure les ides ou parties de code de vos collgues ou dautres programmes disponibles sur le Web ou autre part. En rendant ce devoir, vous reconnaissez automatiquement votre comprhension de notre loi sur le plagiat et la collaboration.
Veuillez crer un rpertoire appel a1 et ne contenant que les fichiers suivants: main.cpp, HtmlTranslator.cpp, HtmlTranslator.h et written.txt.
Le fichier written.txt contient vos rponses aux questions crites poses ci-dessous dans la section 2. Ce fichier doit tre un fichier en texte pur (utilisez notepad ou des diteurs du mme genre). TOUT FICHIER DOIT CONTENIR UNE ENTTE INDICANT le nom de ltudiant, le numro dtudiant, le numro de cours (csi2531). Comprimez (Zip) le rpertoire et veuillez soumettre le fichier comprim sous la rubrique soumission du devoir #1 sur WebCT (seul un fichier est soumis); Ceci doit tre fait de manire ce que la commande unzip produise le rpertoire a1 avec tous les fichiers lintrieur.
Partie crite: Disques Magntiques (10 points)
Veuillez considrer un disque magntique aux spcifications suivantes:
Capacit = 419,020,800 bytes
Temps de recherche minimum (de piste en piste) [seek time] = 1 msec
Temps de recherche moyen [Average seek time] = 12 msec
Vitesse de rotation [Spindle speed] = 5200 rpm
Delai de rotation moyen [Average rotational delay] = 6 msec
taux de transfer maximum [Maximum transfer rate] = 12 msec/track
Nombre de bytes par secteur = 512
Nombre de secteurs par pistes = 50
Nombre de pistes par cylindres = 4
Nombres de cylindres = 4092
et un fichier contenant 409,600,000 bytes organises en 1,600,000 enregistrements de 256 bytes chacun.
Veuillez, sil vous plait, montrer vos tapes dans les calculs suivants. Veuillez calculer le temps de lecture du fichier entier si la lecture est effectue de deux manires diffrentesde manire squentielleou de manire alatoire, dans chacun des cas suivants:
Le fichier est sauvegard, dans le bon ordre, dans des cylindres contigus et un premier cylindre doit tre compltement rempli, piste par piste, avant que le suivant ne commence tre rempli. Seulement dans ce cas, les secteurs conscutifs dun cylindre continu sont dcals de manire approprie pour quils puissent tre lus sans dlai de rotation une fois que le bras du disque se dplace vers le cylindre suivant.
Le fichier est sauvegard, dans le bon ordre, dans des cylindres disperss alatoirement travers le disque et un premier cylindre doit tre compltement rempli, piste par piste, avant que le suivant ne commence tre rempli.
Le fichier est sauvegard dans des pistes disperses alatoirement travers le disque et une premire piste doit tre compltement remplie avant que la suivante ne commence tre remplie.
Le fichier est sauvegard en secteurs disperss alatoirement travers le disque.
Question difficile: Est-ce que la manire dont vos calculs ont t faits lors de la lecture alatoire du fichier changerait de faon substantielle ( cause des approximations qui auront t faites), dans certains des quatre cas prcdents, si le fichier navait que 800 enregistrements (de la mme taille que prcdemment)? Si oui, veuillez indiquer dans lesquels des quatre cas prcdents, et expliquer la manire dont vous re-calculeriez vos rsultats avec les nouvelles donnes pour le cas qui aurait chang le plus.
( 5 6 A K L S n y z { 魗pZDZp +hLu hLu 5CJ OJ QJ ^J aJ mHsH+hLu h@ 5CJ OJ QJ ^J aJ mHsH hLu h@ OJ QJ ^J mHsH +hLu hLu 5CJ OJ QJ ^J aJ mHsH+hLu h@ 5CJ OJ QJ ^J aJ mHsH%hLu 5CJ OJ QJ ^J aJ mHsH+hLu hLu 5CJ OJ QJ ^J aJ mHsH%hLu 5CJ OJ QJ ^J aJ mHsH+hLu h@ 5CJ OJ QJ ^J aJ mHsH ) K L o { | 2 3 u
a 6 u % % % % % v: % v: % % v: % % v: % s % s % s % s % s % s % . % . % % % % % s % s
&