Desenvolvimento
de um Software Livre para Manipulação de Bases de URL’s e Geração Automática de
Páginas WWW
Orientador:
Roberto Marcondes Cesar Junior
MONOGRAFIA DE MAC 499
TRABALHO DE FORMATURA
Resumo
do plano inicial
O projeto consiste na implementação de um
programa, em linguagem PERL, para a criação de sites contendo revisões temáticas de recursos encontrados na
Internet como o Revision
(http://www.ime.usp.br/~cesar/revision), um site
que possui uma base de endereços organizada e comentada relacionada com visão
computacional e tópicos ligados a esse assunto. O software criado deverá ser
bastante versátil, permitindo outras aplicações, como a organização de
depositórios de programas e arquivos desenvolvidos por grupos de pesquisa e
mantidos disponíveis no WWW.
Nesse tipo de site existem várias páginas,
cada uma delas representando um tópico (indicado por uma palavra-chave)
diferente. Nessas páginas são encontrados apontadores para outros sites cujo conteúdo esteja ligado ao
tópico (tema de interesse) em questão. Tais apontadores são classificados
quanto à qualidade do seu conteúdo, podendo também possuir um comentário
específico destacando alguma peculiaridade. Além disso, os apontadores
destacarão palavras-chave responsáveis por indicar as páginas ligadas a eles.
Devido à grande quantidade de dados
existente nas páginas desse tipo de site,
é praticamente impossível um gerenciamento manual dos arquivos html que o
formam. O site Revision, por
exemplo, possui mais de 300 apontadores, mais de 70 palavras-chave e mais de
100 documentos html. Além disso, para cada novo apontador inserido, devem ser
atualizadas todas as páginas para as quais ele apresenta assuntos relacionados.
O programa gerenciador deverá ser capaz de
receber apenas os dados básicos de um determinado apontador (endereço na
Internet, palavras-chave relacionadas, nível de relevância com cada um dos
temas, comentários, etc.) que se deseja acrescentar e automaticamente modificar
todos os arquivos que deverão possuir esse apontador em seu conteúdo. Será
importante que o gerenciador funcione de
forma clara, facilitando a boa manutenção do site pelo seu webmaster.
O programa será criado na
forma de freeware (software livre),
sendo distribuído posteriormente.
Resumo do progresso realizado
O trabalho realizado foi quase integralmente
utilizado no desenvolvimento dos dois softwares ligados a esta iniciação
científica.
O programa RevieWWW funciona como esperado.
A partir de testes realizados com os dados do site
Revision, o RevieWWW já está gerando todas as páginas do site com uma
ótima eficiência e com resultados bastante satisfatórios.
O HTMatLab recebeu algumas novas funções e
também foram melhoradas as documentações das funções já existentes.
Ambos os programas já estão incluindo a licença
GPL para que estejam oficialmente sendo distribuídos como software-livre.
1 - Introdução
O plano inicial contido no relatório
inicial deste projeto de Iniciação Científica previa, em linhas gerais, os
seguintes pontos a serem desenvolvidos:
Meses 1 a 2: Projeto do software. Familiarização com o problema de criação de
um software livre. Estudo da Bibliografia;
Meses 3 a 8: Programação do software projetado. Primeiros testes;
Mês 6: Elaboração do relatório parcial;
Meses 9 a 11: Teste e validação. Implementação de ajustes finais.
Estabelecimento de estratégias de distribuição;
Mês 12: Elaboração do relatório final.
Neste relatório podem ser encontrados detalhes
sobre o desenvolvimento do programa principal deste projeto de Iniciação
Científica, bem como do Toolbox HTML para MATLAB que está sendo desenvolvido
juntamente com o orientador.
2 - Detalhes do progresso realizado
2.1 -
RevieWWW
2.1.1 - Especificação e
implementação do sistema
Novamente, apresentamos o diagrama que serviu
de base no desenvolvimento do programa RevieWWW na Figura 1:
Figura 1: Diagrama de blocos do programa RevieWWW.
O software RevieWWW foi desenvolvido
basicamente utilizando-se o poder da linguagem Perl para manipular textos e
expressões regulares (Larry Wall, 1996 e Sriram Srinivasan, 1997). Comparada com o programa anterior implementado
em Matlab, esta nova versão baseada na linguagem Perl mostrou facilidade e
poder muito maior na montagem dos códigos html das páginas geradas (Clinton Wong, 1997).
A versão feita em Matlab anteriormente pelo
orientador deste projeto havia sido implementada de maneira específica para o site
Revision. Além disso, todos os códigos html que formavam as páginas estavam
misturados com o próprio código do programa gerador.
Esta nova versão foi feita tentando separar, do
código do programa, o código html das páginas da saída, trazendo assim uma
maior versatilidade ao programa que, atualmente, possui uma facilidade muito
maior para que possam ser feitas várias modificações nos códigos das páginas
que serão geradas.
O software apresentado neste projeto foi feito
utilizando-se a linguagem Perl sob Windows 98. O interpretador da linguagem
Perl para Windows pode ser encontrado no endereço http://www.perl.com.
Apesar disso, com algumas pequenas
modificações, o programa pode ser utilizado sob Linux tendo as mesmas
características de funcionamento da versão para Windows.
A nova versão do RevieWWW apresentou ótimos
resultados com relação à eficiência, principalmente comparando-se com a versão
anterior feita no Matlab.
A versão funcional do programa pode ser
encontrada no endereço: http://www.linux.ime.usp.br/~casado/ic.html.
Nesta página são apresentadas algumas informações relativas ao projeto, bem
como documentação a seu respeito e exemplos de páginas geradas com o programa.
O programa RevieWWW baseia-se em 4 arquivos:
·
reviewww.pl
- possui o código do programa.
·
inicio.txt
- armazena a localização dos diretórios de entrada e saída e algumas outras
informações.
·
layout.dad
- guarda boa parte dos códigos que serão utilizados nas páginas geradas.
·
dados.dad
- base de dados com as informações que serão utilizadas na geração das páginas.
Para rodar o programa, basta entrar no diretório onde o
programa foi copiado e digitar na linha de comando: perl reviewww.pl
Quando o programa começa a funcionar, ele procura o arquivo
inicio.txt no mesmo diretório onde está o arquivo reviewww.pl e verifica se os
diretórios de entrada e saída apresentados existem. Em caso afirmativo, o
programa irá verificar a existência dos outros arquivos no diretório de entrada
e, a partir disso, começará efetivamente a geração das páginas.
O conteúdo dos arquivos layout.dad e dados.dad são
dependentes, visto que, no arquivo layout.dad, existem variáveis (palavras
começadas pelo símbolo $) que são trocadas no momento da geração das páginas
por informações específicas de cada entrada no arquivo dados.dad. O exemplo a
seguir ilustra seu funcionamento.
Seja o arquivo dados.dad que contém apenas as seguintes
informações:
$URL: {http://www.usp.br}
$TITLE: {USP}
$KEYWORDS: {Universidade}
$CIDADE
{São Paulo}
::
$URL: {http://www.umc.br}
$TITLE: {UMC}
$KEYWORDS: {Universidade}
$CIDADE
{Mogi das Cruzes}
No arquivo layout.dad, podemos usar a variável $CIDADE no trecho onde o programa
RevieWWW fará a troca da variável pela informação de cada link:
codigo
dos links:
{
<TR>
<TD WIDTH="50%">
<a href="$URL"> $TITLE </a>
</TD>
<TD WIDTH="10%"
VALIGN="MIDDLE">
<P ALIGN="CENTER">
<FORM>
<SELECT NAME="sitepub">
<OPTION VALUE=""> CIDADE:
<OPTION VALUE=""> $CIDADE
</SELECT>
</FORM>
</TD>
<TD WIDTH="20%"
VALIGN="MIDDLE">
GENERAL COMMENTS
</TD>
</TR>
}
trocas:
{$CIDADE}
A partir do exemplo acima, podemos notar que a variável $CIDADE indicada na linha trocas {$CIDADE} será
trocada no trecho codigo dos links.
Desta forma, podemos acrescentar vários tipos de informações para cada link sendo apenas necessário atribuir essas informações a determinadas variáveis e incluir essas variáveis no arquivo layout.dad de modo que essa variável se apresente da maneira como se desejar. Esse fato representa uma melhoria considerável em relação ao programa original.
É importante dizer que as variáveis $URL, $TITLE, $KEYWORDS, $NEXT e $PREVIOUS possuem nome reservado pelo
programa. $URL, $TITLE
e $KEYWORDS são
atributos necessários a todas as entradas de dados existentes no arquivo
dados.dad, enquanto $NEXT e $PREVIOUS são palavras reservadas
para se personalizar as teclas de acesso às páginas “adjacentes” a determinada
página.
Vejamos, a seguir, descrições mais
detalhadas de cada um dos arquivos que compõe o programa RevieWWW. Para
facilitar a visualização, serão colocados comentários em itálico, sempre
iniciados pelo símbolo #. Os exemplos utilizados aqui são retirados dos
arquivos que geram o site Revision. Vale lembrar que, para o bom funcionamento
do programa, não devem ser colocados comentários nos arquivos inicio.txt,
dados.dad e layout.dad.
O arquivo inicio.txt é composto das seguintes informações:
dir dos arquivos de entrada = #Caminho
completo do diretório de entrada.
dir dos arquivos estaticos = #Caminho completo do diretório dos arquivos estáticos.
dir de saida = #Caminho
completo do diretório onde serão colocados os arquivos gerados pelo programa.
dir dos arquivos semiestaticos = #Caminho
completo do diretório dos arquivos semi-estáticos.
arquivos semiestaticos no menu esquerdo = #Escolher
S se os arquivos semi-estáticos tiverem ligações diretas no menu de atalho
rápido ou N se não tiverem.
[ordem de ligacao]
#Aqui devem ser colocados os nomes dos arquivos semi-estáticos, um em cada linha, na ordem que eles devem ser ligados pelos apontadores NEXT PREVIOUS.
O arquivo layout.dad armazena boa parte
dos códigos html utilizados na geração das páginas. Dessa forma, esse é o
arquivo que deve ser modificado caso se deseje alterar a aparência das páginas,
bem como a forma como as informações serão dispostas nas páginas.
O arquivo está dividido em trechos
identificados por um nome código seguido de “:”. Cada nome código será tratado
como uma espécie de variável que armazenará todo o conteúdo dentro das chaves
“{“ “}” correspondentes.
Vejamos, a seguir, quais trechos formam o arquivo:
codigo introducao next previous:
{
<hr>
<table border="0" width="84%">
<tr>
$CODIGO
#A
variável $CODIGO será trocada pelos códigos existentes em codigo
next e codigo previous que vem a seguir
no arquivo layout.dad.
</tr>
</table>
<hr>
<hr>
}
codigo previous:
#A variável $PREVIOUS é reservada pelo
programa. Essa variável será substituída pelo nome do arquivo que será ligado
como previous do arquivo atual.
{ <td><a href="$PREVIOUS"
target=""><img src="iconani.gif" border=0 width=30
height=30>Previous Page</a></td>}
codigo next:
{<td>
<div
align="RIGHT">
#A variável $NEXT é reservada pelo
programa. Essa variável será substituída pelo nome do arquivo que será ligado
como next do arquivo atual.
<a
href="$NEXT" target=""><img
src="iconani.gif" border=0 width=30 height=30>Next Page</a>
</div>
</td>}
#O código contido no campo header será o código
inicial de todas as páginas geradas pelo programa.
header:
{<html>
<head>
<title>
$TITLE </title>
<script
language="JavaScript">
<!--
function MM_jumpMenu(targ,selObj,restore){ //v3.0 eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
if (restore)
selObj.selectedIndex=0;
\}
//-->
</script>
</head>
<body
text="#000000" link="#0000ff" vlink="#800080"
background="webbk.gif">}
#Aqui será colocado o código do menu esquerdo de atalhos diretos para
todas as páginas geradas pelo site.
tabela esquerda:
{<table border="0"
width="84%">
<tr>
<td VALIGN="TOP"
BGCOLOR="#ff0000" HEIGHT=170 align="LEFT" WIDTH="23%">
<P ALIGN="CENTER"><A
HREF="http://www.interjournal.org/"><IMG SRC="cover.jpg"
BORDER=0 ></A></P>
<I><FONT
COLOR="#000080">
<H1
ALIGN="CENTER"> </H1>
</font></I>
<H1 ALIGN="CENTER"><A
HREF="revision.htm"
target="">ReVision</A></H1>
<FONT COLOR="#000080">
<P> </P>
</FONT>
<P> </P>
<P> </P>
<FONT
COLOR="#000080">
<P> </P>
</FONT>
<h3
align="CENTER"><font color="#0033FF">Go Directly!</font></h3>
<form name="dropdown">
<select name="menu1"
onChange="MM_jumpMenu('parent',this,0)">
$OPTIONS #A variável $OPTIONS será trocada por
todas as opções, ou seja, todos as páginas que possuirão um campo no menu de
atalhos diretos.
</select>
</form>
</td>}
#Este é o código inicial da segunda coluna que conterá as informações
da base de dados dados.dad.
codigo inicial da segunda coluna:
{
<td VALIGN="TOP" COLSPAN=5
HEIGHT=170>
<P ALIGN="LEFT">
<table border="0"
width="101%">
<tr>
<td
NOWRAP>
<p><img src="icon2.gif"
border=0><font size="+3"> $TITLE </font> </p>
</td>
</tr>
<tr>
<td>
<p> <TABLE BORDER
CELLSPACING=1 BORDERCOLOR="#000000" WIDTH=756>}
#Aqui entra o código que será utilizado na apresentação de cada entrada
da base de dados.
codigo dos links:
{
<TR>
<TD WIDTH="50%">
#A variável $URL e a variável
$TITLE são reservadas pelo programa e serão substituídas pela $URL e pelo $TITLE de cada entrada
da base de dados.
<a
href="$URL"> $TITLE </a> </TD>
<TD WIDTH="20%"
VALIGN="MIDDLE">
GRADE: $GRADE
</TD>
<TD WIDTH="10%"
VALIGN="MIDDLE">
<P
ALIGN="CENTER">
<FORM>
<SELECT
NAME="sitepub">
<OPTION
VALUE=""> ADDITIONAL INFO:
<OPTION
VALUE="">
<OPTION
VALUE=""> PUBLICATIONS:
<OPTION
VALUE=""> Thesis $Thesis
<OPTION
VALUE=""> Technical Reports $Technical Reports
<OPTION
VALUE=""> Articles $Articles
<OPTION
VALUE=""> Tutorials $Tutorials
<OPTION
VALUE="">
<OPTION
VALUE="">DEMOS:
<OPTION
VALUE=""> Animations $Animations
<OPTION
VALUE=""> Interactive Applications $Interactive Applications
<OPTION
VALUE="">
<OPTION
VALUE="">RESOURCES:
<OPTION
VALUE=""> Links $Links
<OPTION
VALUE=""> Image Databases $Image Databases
<OPTION
VALUE=""> Code/Programs $Source Code
</SELECT>
</FORM>
</TD>
<TD WIDTH="20%" VALIGN="MIDDLE">
$GENERAL COMMENTS
</TD>
</TR>
}
#O campo trocas abaixo indica
quais são as variáveis que deverão ser trocadas no trecho acima (codigo
de links) por campos de mesmo nome existentes na entrada de dados.
trocas: {$Thesis, $Technical Reports, $Articles, $Tutorials,
$Animations, $Interactive Applications, $Links, $Image Databases, $Source Code,
$GRADE}
#O campo trocas especiais
abaixo indica quais são as variáveis que deverão ser trocadas no trecho acima (codigo
de links) por campos de mesmo nome existentes na entrada de dados. No caso das
trocas especiais, será utilizado o primeiro trecho de código (o trecho
inicial está dividido por “||” “||” e o
segundo trecho por “||” “|||”) caso a entrada na base de dados exista ou o
segundo trecho se o campo da variável estiver vazio para determinada entrada.
trocas especiais:
{$GENERAL COMMENTS||
<script
language="JavaScript">
function DisplayPage(Text) {
displayWindow =
window.open("",'messageWindow','scrollbars=yes,width=600,height=300')
displayWindow.document.write("<HTML>")
displayWindow.document.write("<HEAD><TITLE>COMMENTS</TITLE></HEAD>")
displayWindow.document.write('<BODY background="webbk.gif">')
displayWindow.document.write(Text)
displayWindow.document.write('<form> ')
displayWindow.document.write('<input type="button"
value="RETURN!" onClick="self.close()"> ')
displayWindow.document.write("</form>")
displayWindow.document.write("</BODY>")
displayWindow.document.write("</HTML>")
displayWindow.document.close()
\}
</script>
<form>
<input
type="button" value="COMMENTS" onClick="DisplayPage('$GENERAL COMMENTS')">
</form>
||COMMENTS|||
}
#Este é o código que deverá ser colocado no final das páginas geradas.
codigo final dos links:
{ </table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</body>
</html>}
O arquivo dados.dad contém a base de dados com as informações sobre os links que formarão as páginas geradas pelo RevieWWW. O arquivo é formado por entradas separadas por “\n::\n” onde \n representa o caractere nova linha.
Vejamos o exemplo de uma das entradas do site Revision.
#Os
campos $URL, $TITLE
e $KEYWORDS
são obrigatórios para todas as entradas da base de dados!
#O
campo $URL
contém o endereço do link da entrada de dados.
$URL:
{http://www.cs.columbia.edu/CAVE/physics-based-vision.html}
#O
campo $TITLE
contém o título do link da entrada de dados.
$TITLE: {Physics Based Vision}
#O
campo $KEYWORDS
contém as palavras chaves a que esta entrada de dados pertencerá. No exemplo
que mostramos a seguir, o link em questão pertencerá às páginas de título PATTERN_RECOGNITION, COMPUTER_GRAPHICS e PHYSICS
.
$KEYWORDS: {PATTERN_RECOGNITION COMPUTER_GRAPHICS PHYSICS}
#Todos
os campos abaixo são específicos do site Revision. Se não existirem referências
de uso destas variáveis no arquivo layout.dad, essas informações não terão uso.
#É
importante ressaltar que todas as variáveis devem vir seguidas de chaves. Desta
forma, podemos perceber que as palavras “$PUBLICATIONS:”, “$DEMOS:” e “$RESOURCES – DATA AND CODE”
não são usadas na geração das páginas e podem ser retiradas da entrada de dados
sem nenhuma conseqüência nas páginas geradas. Estas entradas só permaneceram
neste exemplo por terem sido herdadas da versão anterior do programa gerador
das páginas e para uma melhor visualização de como ficarão as páginas geradas.
$GRADE
{**}
$PUBLICATIONS:
$Thesis
{}
$Technical
Reports {}
$Articles
{*}
$Tutorials
{}
$DEMOS:
$Animations
{*}
$Interactive Applications {}
$RESOURCES - DATA AND CODE:
$Links {}
$Image Databases {}
$Source Code {}
$GENERAL COMMENTS {Good list of articles
in related areas.}
:: #Separador de entradas.
Este é o arquivo principal que contém o código do programa. Não é necessário fazer nenhuma modificação neste arquivo para que o programa funcione corretamente.
Para
executar a geração das páginas, basta chamar o interpretador perl com este
arquivo e as páginas serão geradas.
2.1.7 – Exemplos de páginas geradas
Vamos ver dois exemplos de uma página do site Revision gerados pelo RevieWWW. No primeiro exemplo, foram utilizadas as seguintes opções no layout da página (no arquivo layout.dad):
<body text="#000000"
link="#0000ff" vlink="#800080"
background="webbk.gif">
<td VALIGN="TOP"
BGCOLOR="#ff0000" HEIGHT=170 align="LEFT" WIDTH="23%">
No segundo exemplo, modificamos essas linhas para:
<body text="#FFFFFF"
link="#55aa55" vlink="#cf909f"
bgcolor="#114455">}
<td VALIGN="TOP" BGCOLOR="#1100ff"
HEIGHT=170 align="LEFT" WIDTH="23%">
O resultado destas mudanças pode ser visto nas Figuras 2 e 3:
Figura
2: Exemplo de página gerada com uma imagem de fundo, links
em azul e textos em preto.
Figura
3: Exemplo de página gerada com fundo em cor azul, links em
verde e textos em branco.
2.2 – HTMatLab – Toolbox HTML para Matlab
O Toolbox HTML para MATLAB foi idealizado pelo
orientador com o principal objetivo de facilitar a disponibilização de
resultados obtidos no MATLAB através da Internet. Basicamente, esse Toolbox é
composto por uma série de funções que possibilitam a criação de páginas HTML.
Um ponto extremamente importante no
desenvolvimento deste Toolbox é que tem-se procurado fazê-lo de modo que seu
uso seja simples para que efetivamente ele possa facilitar o trabalho dos
pesquisadores, usuários do Matlab, que o utilizarem. Desta forma, este Toolbox
continuará sendo melhorado, mas sempre procurando manter limites para que não
haja um crescimento acentuado de complexidade em seu uso.
Os arquivos que
compõe o HTMatLab podem ser encontrados e baixados gratuitamente no sítio deste
Toolbox sob a licença GPL.
Foi apresentado um
seminário sobre este Toolbox para os pesquisadores do IME–USP a fim de que eles
passem a utilizá-lo e possam também contribuir para seu maior desenvolvimento.
Acredita-se que o
Toolbox tenha grande utilidade pelo fato do Matlab ser um programa muito
utilizado no meio acadêmico e também pela facilidade de uso dos comandos
criados, de maneira que pode-se montar páginas com muita informação de forma
relativamente simples.
O Toolbox está sendo distribuído pelo endereço:
http://www.vision.ime.usp.br/~casado/matlab/htmltoolbox/.
3 - Apresentações do projeto
Foi feito um artigo
sobre este projeto de iniciação científica que concorreu no CTIC2001.
Também um seminário
sobre o HTMatLab para alguns pesquisadores do IME-USP.
Mais uma vez é
importante citar os sites mantidos pelo aluno relativos a este projeto
de iniciação científica. São eles o site do toolbox HTML: http://www.vision.ime.usp.br/~casado/
e o site sobre o projeto inteiro, com ênfase no software RevieWWW: http://www.linux.ime.usp.br/~casado/ic.html.
4 – CONCLUSÕES DO PROJETO
O programa RevieWWW pode ganhar algumas
características a mais que possam facilitar o seu uso, de acordo com o que o
usuário queira. Além disso, ele apresentá grande versatilidade na modificação
das páginas geradas e pode ser bastante modificado para ser utilizado com sites diferentes.
Com relação ao HTMatLab, é importante ressaltar
que este toolbox foi desenvolvido com base na sua simplicidade de uso e nas
necessidades dos alunos pesquisadores do Instituto. Seguindo estes objetivos e
necessidades, o toolbox apareceu como uma grande realização.
Vale ressaltar que o ponto forte deste toolbox foi
o fato de ele nascer de necessidades reais de usuários e, por conta disso,
todas as funções criadas tem como objetivo facilitar a montagem de páginas html
a partir de dificuldades que vão sendo encontradas durante a realização deste
processo pelos usuários.
5 – DeSAFIOS ENCONTRADOS
O software RevieWWW que foi a base desta Iniciação Científica foi um
desafio completo para o aluno pois foi feito utilizando-se a linguagem Perl,
que o aluno jamais havia trabalhado. Além disso, foi o primeiro projeto grande
realizado pelo aluno.
A linguagem Perl por si só é um grande desafio por ser uma linguagem
extremamente complicada por possuir várias formas de escrever mesmas coisas. Foi
muito importante documentar bastante o programa desenvolvido para que não fosse
perdido muito tempo quando fosse necessário rever algum trecho de código
escrito num período anterior.
6 – DISCIPLINAS MAIS IMPORTANTES
As diciplinas mais importantes cursadas foram: MAC-122 - Princípios
de Desenvolvimento de Algoritmos, MAC-211 - Laboratório
de Programação e MAC-242 - Laboratório de Programação II.
MAC-122 deu a base necessária para o desenvolvimento do projeto e as
outras duas matérias deram uma boa idéia da linguagem Perl, bem como muitas
dicas interessantes para implementar melhor o programa do projeto.
7 – RELAçÃO COM O ORIENTADOR
O orientador deste projeto, professor Roberto Marcondes, esteve sempre
presente, cobrando resultados como deveria e sempre me auxiliando,
principalmente com relatórios e seminários que foram feitos. Foi uma ajuda
muito importante porque não havia um conhecimento prévio meu sobre isso.
Também foi muito importante a compreensão do Orientador com relação a
grande dificuldade que eu tive durante todo o projeto por ter um tempo limitado
na faculdade por problemas de distância com minha casa e também por alguns períodos
difíceis passados durante todo o período do projeto. Creio que me esforcei para
contornar estes problemas e sem dúvida contei com a ajuda do professor Roberto
neste aspecto.
8 – APLICAÇÃO DOS CONCEITOS TEÓRICOS
Os conceitos aprendidos nas discipliinas do IME, principalmente nas
disciplinas citadas como mais importantes, foram muito úteis para um bom
desenvolvimento deste projeto de Iniciação Científica.
Acredito que as disciplinas que citei como mais importantes para meu
projeto são muito importantes para todos os alunos do BCC porque dão uma ótima
base para qualquer problema de computação.
Referências
Bibliográficas
1.
2.
Larry Wall, Programming Perl, O’Reilly &
Associates, 1996.
3.
Sriram Srinivasan,
Advanced Perl Programming, O’Reilly, 1997.