CSI 3525, Automne 2003, Devoir 4 Par equipe de deux

Transcription

CSI 3525, Automne 2003, Devoir 4 Par equipe de deux
CSI 3525, Automne 2003, Devoir 4
Par equipe de deux
DistribuŽ le 6 Novembre, ˆ rendre le 20 Novembre ˆ 23:55
Ë rendre en format ŽlŽctonique [dŽtails de remise, ˆ suivre]
Dans tous vos scripts de Perl, les seules formules dÕentrŽe/sortie nŽcŽssaires sont STDIN et
STDOUT.
Probl•me 1 [3 points]
Veuillez Žcrire un script de Perl qui parcours la pi•ce de Shakespeare Othello et qui retourne la
liste des personnages de la pi•ce qui prononcent le mot ÒAlasÓ une fois ou plus. Veuillez
indiquer le nombre de fois que chacun de ces personnages le prononce. Veuillez prŽsenter votre
liste en ordre dŽcroissant de frŽquence du mot ÒAlasÓ. Le texte de la pi•ce est disponible ˆ
<Êhttp://the-tech.mit.edu/Shakespeare/Ê> en format HTML.
(Votre programme devrait marcher pour nÕimporte quel mot ou mots que vous voulez compter, et pour
nÕimporte laquelle des pi•ces de Shakespeare sur le site de MIT. Si vous parvenez ˆ gŽnŽraliser votre
solution, vous pouvez vous attendre ˆ un tout petit bonus.)
Indices
Commencez par obtenir le fichier source HTML de la version en une page de la pi•ce et Žtudiez
la structure de ses Žtiquettes (tags). Voici un exemple:
<a NAME=speech1><b>RODERIGO</b></a>
<blockquote>
<a NAME=1.1.1>Tush! never tell me; I take it much unkindly</a><br>
<a NAME=1.1.2>That thou, Iago, who hast had my purse</a><br>
<a NAME=1.1.3>As if the strings were thine, shouldst know of this.</a><br>
</blockquote>
LÕentrŽe ci-dessus est la premi•re de la pi•ce. Le personnage qui la prononce est RODERIGO, et
le premier mot quÕil prononce est "Tush".
Votre script doit reconnaitre le nom du personnage, lire ses paroles et dŽcider si le mot ÒalasÓ ou
ÒAlasÓ (en lettres capitales ou non) apparait dans ses paroles. SÕil y apparait, vous devez ajuster
le compte qui correspond aux paroles de ce personnage.
Vous devez imprimer les rŽsultats en ordre dŽcroissant du compte sous le format suivant:
<Nom du personnage>:
<Nombre dÕapparitions du mot "alas">
Veuillez nÕimprimer que le nom des personnages qui ont prononcŽ le mot ÒalasÓ au moins une
fois.
page 1 de 3
Probl•me 2 [6 points]
Veuillez considŽrer les informations sur les cours CSI de la page Web maintenue par le bureau
dÕinscription: <Êwww.uottawa.ca/academic/info/regist/crs/coursesEN/CSI.htmÊ>
Nous vous demandons dÕextraire les ŽlŽments intŽrŽssants de cette page, cÕest ˆ dire, vous devez
Žcrire une succession de scripts en Perl. [Chaque script vaudra 2 points.]
ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
Script 1 extrait la liste des cours CSI offerts en Anglais aux Žtudiants en CSI. Pour chacun de ces
cours, le script trouvera la liste de ses prŽalables (qui peut •tre vide) et la liste des cours avec
lesquels il ne peut pas •tre combinŽ en vue dÕaccumuler des crŽdits (cette liste peut Žgalement
•tre vide). Votre script doit construire un hash indexŽ par code de cours et imprimer ce hash triŽ
par code de cours. Veuillez imprimer un titre informatif avant de commencer ˆ imprimer la liste
des cours.
Indices
Considerez le fichier source HTML et ne vous occuppez que des donnŽes comprises entre les
deux commentaires:
<!-- CONTENT STARTS HERE -->
<!-- CONTENT ENDS HERE -->.
Les cours en Anglais que vous trouverez sont codŽs de la mani•re suivante: CSIx1yz, avec x, y, z
reprŽsentatnt nÕimporte quel chiffre.
Les donnŽes concŽrnant les prŽalables et les rŽstrictions sur la combinaison de crŽdits ne sont pas
structurŽes par Žtiquette HTML. Vous devez les extraire du texte (mais vous avez de la chance:
le format est toujours le m•me).
Un hash ne peut contenir que des scalaires, donc vous devez dŽcider de la fa•on dont vous
reprŽsenterez les prŽalables et les restrictions dans un ŽlŽment de hash. Tout ce dont vous avez
besoin, en fait, est un sŽparateur innovatif qui vous permettera de sŽparer les prŽalables et
rŽstrictions divers les un des autres.
ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
Script 2 prend le code dÕun cours de lÕutilisateur (en mode intŽractif) et cherche tous les
prŽalables de ce cours, incluant les prŽalables des prŽalables, etc. Par exemple, Žtant donnŽ
CSI4125, le script devrait trouver CSI3104, CSI3125 et CSI3310, suivi des prŽalables de ces trois
cours, etc. jusquÕˆ CSI1100.
ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
Script 3 devra faire la m•me chose que script 2, mais au lieu dÕimprimer la rŽponse en format
texte, il devra crŽer un fichier XML contenant la rŽponse. Vous devez Žgalement crŽer un DTD
et une fiche de style (stylesheet) XSL afin de permettre ˆ vos rŽponses dÕ•tre validŽes et
affichŽes dans un browser pour Web.
page 2 de 3
Probl•me 3 [3 points]
Veuillez considŽrer les fichiers DTD / XML / XSL dÕexemple du compte en banque (checkboook)
sur <Êwww.site.uottawa.ca/~szpak/teaching/3125/handouts/other/xml.htmlÊ>
Dans lÕexemple, les utilisateurs nÕutilisent quÕun compte en banque. Le but de cette question est
dÕŽtendre cet exemple.
(a) Veuillez inclure un second compte en banque chŽquier (checkbook). LÕun des comptes
aura la valeur ÒBusinessÓ pour un attribut appelŽ type, alors que lÕautre aura la valeur
ÒPersonalÓ. Chaque transaction doit spŽcifier le numŽro de compte. De m•me, les
transferts de fonds entre les deux comptes doivent •tre possibles. Vous devez dŽfinir un
nouveau DTD et Žcrire un nouvel exemple de fichier XML afin de tester votre rŽponse.
(Si, de plus, vous prŽparez un fichier XSL ajustŽ, vous recevrez un petit bonus.)
(b) Veuillez crŽer une fiche de style (stylesheet) afin dÕafficher les rapports de comptes dans
un format diffŽrent du format implŽmentŽ dans le fichier appelŽ checkbook.xsl . Cette
partie de question ne concerne que la fiche de style. Le DTD reste le m•me et vous pouvez
utiliser lÕexemple du fichier checkbook.xml pour tester votre nouvel affichage.
(i)
Veuillez afficher le dŽpots et les retraits dans deux tables plutot quÕen deux listes
de paragraphes numŽrotŽs. Les deux tables devraient •tre sŽparŽes clairement, et
les transactions dans chacunes des tables devrait apparaitre en ordre
dhronologique (de la transaction la plus ancienne ˆ la plus rŽcente).
(ii)
Chaque type de transaction devrait •tre affichŽ de couleur diffŽrente. Par exemple,
vous pouvez utiliser bleue, vert, violet et noir pour les dŽpots en liquide (cash),
par ch•ques, directs et transferts, rŽspŽctivement; rouge, orange et marron pour les
retraits par atm, ch•que ou dŽbit, rŽspŽctivement.
Juste un rappel de ce que la fiche style checkbook.xsl produit (en Netscape 7.1)
lorsquÕutilisŽe en conjonction avec lÕexemple checkbook.xml.
Income from 21-6-00 until 31-6-00:
1. On 21-6-00, $987.32 was deposited into your account by Bob's Bolts.
Expenditures from 21-6-00 until 31-6-00, ranked from highest to lowest:
1. On 31-6-00, you paid $800.00 to Old Man Ferguson for a 3-legged antique
credenza that once belonged to Alfred Hitchcock.
2. On 23-6-00, you paid $132.77 to Kimora's Sports Equipment for kendo equipment.
3. On 30-6-00, you paid $58.79 to Barnes and Noble for O'Reilly Books.
4. On 29-6-00, you paid $47.28 to Wild Oats Market for groceries.
5. On 24-6-00, you withdrew $40.00 from an ATM for pocket money.
6. On 26-6-00, you paid $36.86 to Lone Star Cafe for lunch with Greg.
Balance
Your balance as of 31-6-00 is $-128.38
DANGER! Deposit money quick!
Les tables en HTML sont construites avec les ŽlŽments <table>, <tr> et <td>. Cette formule
indique les tables, les lignes dÕune table et les donnŽes de ligne, rŽspŽctivement. Vous pouvez
trouver des exemples de tables simples dans le site Web du cours. Ne crŽez pas de table trop
sophistiquŽe.
page 3 de 3