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