Você está na página 1de 81

Coordena ca o do Curso de Ci encia da Computa ca o Universidade Estadual de Mato Grosso do Sul

Uma Ferramenta Web de Apoio ao Ensino de Algoritmos

Paulo Henrique Figueiredo Tiago Pereira do Nascimento

Nilton C ezar de Paula (Orientador)

Dezembro de 2010

Uma Ferramenta Web de Apoio ao Ensino de Algoritmos

Paulo Henrique Figueiredo Tiago Pereira do Nascimento

Este exemplar corresponde a ` reda ca o nal da monograa da disciplina Projeto Final de Curso devidamente corrigida e defendida por Paulo Henrique Figueiredo e Tiago Pereira do Nascimento e aprovada pela Banca Examinadora, como parte dos requisitos para a obten ca o do t tulo de Bacharel em Ci encia da Computa c ao.

Dourados, 15 de dezembro de 2010.

Nilton C ezar de Paula (Orientador)

ii

Coordena ca o do Curso de Ci encia da Computa ca o Universidade Estadual de Mato Grosso do Sul

Uma Ferramenta Web de Apoio ao Ensino de Algoritmos

Paulo Henrique Figueiredo Tiago Pereira do Nascimento


Dezembro de 2010

Banca Examinadora: Nilton C ezar de Paula (Orientador) Delair Osvaldo Martinelli J unior Raquel M arcia M uller

iii

Noventa por cento do sucesso se baseia simplesmente em insistir. Woody Allen

iv

Resumo
O aprendizado de algoritmos e essencial para bons prossionais na a rea de Tecnologia da Informa ca o, por em este aprendizado e muitas vezes comprometido por quest oes pedag ogicas ou diculdades inerentes aos alunos iniciantes na disciplina. Dispor de uma ferramenta Web de apoio ao ensino de algoritmos tem a fun ca o de aumentar o interesse de alunos com diculdades, auxiliar o professor na corre ca o de exerc cios e oferecer ao professor algumas informa co es que possam ser capazes de auxili a-lo no processo de ensino. Uma ferramenta Web que realize tais tarefas s ao os objetivos deste trabalho. Um levantamento pr evio do assunto foi efetuado, de modo que pud essemos conhecer a problem atica do ensino de algoritmos e de que maneira esse assunto apresenta-se no meio cient co. Os testes tem a nalidade de vericar se a ferramenta caracterizar-se- a em uma aliada ao processo pedag ogico. Palavras-chave: ferramenta, ensino, algoritmos,corre c ao, Web

Abstract
The learning of algorithm is essential for good professionals in Information Technology, but this learning is often compromised by pedagogical questions or diculties with beginning students in the discipline. Have to a tool to support the teaching of algorithms have the task of increasing the interest of students with diculty, help the teacher in correcting exercises and to oer the teacher some information that would be able to assist you in the teaching process. A web tool to carry out such tasks are evaluated. A preliminary survey of the subject was made, so that we might know the problem of teaching algorithms and how that subject presents itself in scientic circles. The test objective to verify if the tool characterized it as an ally in the educational process. Keywords: tool, teaching, algorithms, correction, Web.

vi

Agradecimentos
Paulo Henrique Figueiredo Primeiramente a ` Deus, por ter me dado for ca e perseveran ca nos momentos de diculdades. ` minha fam A lia, em especial aos meus pais (Edvaldo e Sonia) por todo apoio e conan ca em mim depositados, e aos meus tios Luzia e Norato, por ter cedido sua casa para eu morar por dois anos e tamb em pela for ca e carinho que me deram. Ao orientador Nilton C ezar de Paula, por toda a paci encia e persist encia que demonstrou ao longo deste trabalho. Tiago Pereira do Nascimento Agrade co ` a Deus, pois foi nele que me apoiei nos momentos desesperadores desse projeto. ` mulheres da minha vida (Elizabete e Jordana) por sempre acreditarem em mim, As e me apoiaram em todos os momentos. Aos amigos que nos ajudaram neste processo, em especial o Bruno Andrade, o Leandro Queiroz, Jos e Fernandes e Michael Willers.

vii

Sum ario
Resumo Abstract Agradecimentos 1 Introdu c ao 1.1 Objetivos . . . . . . . . 1.2 Justicativa e motiva ca o 1.3 Metodologia . . . . . . . 1.4 Organiza ca o do texto . . v vi vii 1 2 2 3 3 5 5 7 7 8 10 11 11 12 13 14 16 17 19 20 20 21 21

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

2 Referencial te orico 2.1 Algoritmos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2 Ferramentas de apoio ao ensino de algoritmos . . . . . . . . . . . . . . 2.2.1 ASA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.2 Ambap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.3 CIFluxProg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.4 GPT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.5 Comparativo entre as ferramentas . . . . . . . . . . . . . . . . . 2.3 Compilador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.1 An alise l exica . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.2 An alise sint atica . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.3 An alise sem antica . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.4 Detalhando o compilador e interpretador do GPT . . . . . . . . 2.4 Banco de dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.4.1 MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.4.2 PostgreSQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.4.3 Firebird . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.4.4 Considera co es entre os sistemas gerenciadores de banco de dados viii

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

2.5

Tecnologias utilizadas 2.5.1 Java EE . . . 2.5.2 JSP . . . . . 2.5.3 JDBC . . . . 2.5.4 PostgreSQL . 2.5.5 GPT . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

22 22 22 23 23 24 25 25 26 27 28 29 30 31 33 33 35 35 36 37 38 40

3 Projeto e desenvolvimento da ferramenta 3.1 Arquitetura l ogica . . . . . . . . . . . . . . . . . . 3.1.1 O m odulo do aluno . . . . . . . . . . . . . 3.1.2 O m odulo do professor . . . . . . . . . . . 3.2 Apresenta c ao da sintaxe esperada pela gram atica 3.2.1 Declara c ao do algoritmo . . . . . . . . . . 3.2.2 Declara c oes de vari aveis . . . . . . . . . . 3.2.3 Estrutura de sele c ao . . . . . . . . . . . . 3.2.4 Estruturas de repeti ca o . . . . . . . . . . . 3.2.5 Fun co es . . . . . . . . . . . . . . . . . . . 3.3 Quest oes de implementa ca o . . . . . . . . . . . . 3.3.1 Diagrama de entidade e relacionamentos . 3.3.2 Descri c ao das interfaces das classes . . . . 3.3.3 Organograma da ferramenta . . . . . . . . 3.3.4 Telas principais . . . . . . . . . . . . . . . 3.4 Testes realizados . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

4 Considera c oes nais e melhorias futuras 45 4.1 Considera c oes nais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 4.2 Melhorias futuras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 4.3 Diculdades encontradas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 A Gram atica da linguagem G-Portugol B Imagens das telas da ferramenta C Partes principais do c odigo-fonte 50 55 62

ix

Lista de Tabelas
2.1 Tabela comparativa entre as ferramentas estudadas . . . . . . . . . . . . . 12

Lista de Figuras
2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 2.10 2.11 2.12 2.13 2.14 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10 3.11 3.12 Exemplo de uma solu ca o na ferramenta ASA . . . . . . . . . . . . . . . . . Ferramenta Ambap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . M etodo de desenvolvimento uxograma da ferramenta CIFluxProg . . . . . Exemplo de um compilador . . . . . . . . . . . . . . . . . . . . . . . . . . Fases de um compilador . . . . . . . . . . . . . . . . . . . . . . . . . . . . Exemplo de uma a rvore gramatical . . . . . . . . . . . . . . . . . . . . . . A c ao do analisador sem antico sobre a entrada . . . . . . . . . . . . . . . . Exemplo de um erro l exico . . . . . . . . . . . . . . . . . . . . . . . . . . . Mensagem de um erro l exico do compilador do GPT para o algoritmo da Figura 2.8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Exemplo de um erro sint atico . . . . . . . . . . . . . . . . . . . . . . . . . Mensagem de um erro sint atico do compilador do GPT para o algoritmo da Figura 2.10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Exemplo de um erro sem antico . . . . . . . . . . . . . . . . . . . . . . . . Mensagem de um erro sem antico do compilador do GPT para o algoritmo da Figura 2.12 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ilustra ca o do JDBC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Arquitetura do sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Usu ario aluno utilizando a ferramenta . . . . . . . . . . . . . . . . . . . . . Usu ario professor utilizando a ferramenta . . . . . . . . . . . . . . . . . . . Sintaxe esperada para declarar um algoritmo . . . . . . . . . . . . . . . . . Sintaxe esperada para declarar as vari aveis do algoritmo . . . . . . . . . . Sintaxe do comando de sele c ao . . . . . . . . . . . . . . . . . . . . . . . . . Sintaxe de um comando de repeti c ao para . . . . . . . . . . . . . . . . . Exemplo de algoritmo usando uma fun ca o . . . . . . . . . . . . . . . . . . Diagrama de entidade e relacionamento para o banco de dados da ferramenta Diagrama de classes da ferramenta . . . . . . . . . . . . . . . . . . . . . . Estrutura hier arquica da ferramenta . . . . . . . . . . . . . . . . . . . . . . Tela de acesso ao sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi 7 8 10 13 13 16 17 18 18 19 19 19 20 23 26 27 28 30 31 32 33 34 35 37 37 38

3.13 3.14 3.15 3.16 3.17 3.18 3.19 B.1 B.2 B.3 B.4 B.5 B.6 B.7 B.8 B.9 B.10 B.11 B.12 B.13

Tela de um aluno com acesso ao sistema . . . . . . . . . . . . Tela de um professor com acesso ao sistema . . . . . . . . . . Tela de alunos cadastrados na ferramenta . . . . . . . . . . . . Tela dos exerc cios cadastrados na ferramenta . . . . . . . . . Listagem das pastas dos alunos . . . . . . . . . . . . . . . . . Exemplo de um algoritmo submetido e sua respectiva execu c ao Notepad++ aberto para o aluno escrever seu algoritmo . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . pelo GPT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . .

40 41 42 42 43 44 44 55 56 56 57 57 58 58 59 59 60 60 61 61

Tela de cadastro de alunos . . . . . . . . . . . . . . . . . . . . . . . Novo exerc cio sendo cadastrado . . . . . . . . . . . . . . . . . . . . Modicar dados do exerc cio . . . . . . . . . . . . . . . . . . . . . . Executa o programa GPT para o professor . . . . . . . . . . . . . . Tela de inser ca o de nota do aluno . . . . . . . . . . . . . . . . . . . Exibe/Imprime o relat orio escolhido pelo professor . . . . . . . . . Vis ao geral dos dados cadastrados do aluno . . . . . . . . . . . . . Tela de altera ca o dos dados de um aluno . . . . . . . . . . . . . . . Tela onde o aluno visualiza os exerc cios cadastrados pelo professor Tela mostrando os dados dos exerc cios detalhadamente . . . . . . Notepad++ aberto para o aluno elaborar seu algoritmo . . . . . . Tela de submiss ao de algoritmos . . . . . . . . . . . . . . . . . . . Verica ca o da nota de acordo com os exerc cios submetidos . . . .

xii

Lista de Siglas e Abreviaturas

ANSI API ASA BD BOM CIFluxProg DER GALS GPL HTML ISO Java EE JAVA SE JDBC JSP LEX ODBC RGM SENAC SGBD SQL TCP/IP UML UTF YACC XML

American National Standards Institute Aplication Program Interface Anima ca o e Simula ca o de Algoritmos Banco de Dados Byte Order Mark Construtor e Interpretador de Algoritmos para Programa ca o Diagrama de Entidade e Relacionamentos Gerador de Analisadores L exicos e Sint aticos GNU General Public License HiperText Markup Language International Organization for Standardization Java Enterprise Edition Java Standard Edition Java Database Connectivity Java Server Pages Lexical Analyzer Generator Open Data Base Connectivity Registro Geral de Matr cula Servi co Nacional de Apredizagem Comercial Sistema Gerenciados de Banco de Dados Structured Query Language Transmission Control Protocol/Internet Protocol Unied Modeling Language Unicode Transformation Format Yet Another Compiler-Compiler eXtensible Markup Language

xiii

Cap tulo 1 Introdu c ao


Discutir o assunto aprendizado de algoritmos n ao e uma tarefa f acil. Propor uma ferramenta de apoio a isso e ainda mais delicado. O presente trabalho tem esse desao pela frente. Elaborar uma ferramenta de apoio ao professor, que seja aceita pelos alunos e, ao mesmo tempo, torne-se uma ferramenta pedag ogica eciente, pode ser considerado como um dos maiores desaos para os pesquisadores do tema. Muitas maneiras de melhoria do aprendizado dos alunos no ensino de algoritmos s ao constantemente debatidas. O pleno consenso ainda n ao foi obtido, mas e de ci encia de todos que dispor de meios pedag ogicos certamente contribui na melhoria do aprendizado. Segundo Bini (2010), uma deci encia no aprendizado de algoritmos pode ser detectada em boa parte dos alunos iniciantes. Devido a esse fato, surgiu a ideia da constru c ao de uma ferramenta Web, elaborado nesta pr opria institui ca o, que apoie o aluno nessa tarefa. O fato de ser voltado a ` Web deixa o projeto mais inovador e interessante. Inovador porque o aluno poderia efetuar suas atividades fora do ambiente acad emico e ao mesmo tempo interessante porque a grande maioria de ferramentas de apoio ao aprendizado de algoritmos n ao s ao aplicativos Web, ou seja, requerem instala c ao da ferramenta. A ferramenta tamb em tem a fun c ao de auxiliar no processo de corre ca o dos exerc cios dos alunos pelo professor. Ela poder a executar os exerc cios enviados pelos alunos e vericar se est ao corretamente solucionados. Al em disso, o uso de um Banco de Dados (BD) tem a fun ca o de armazenamento e gerenciamento das informa c oes dos alunos. Uma pesquisa bibliogr aca foi efetuada para iniciar os estudos para a elabora c ao da ferramenta. Ap os o desenvolvimento da mesma, testes ser ao elaborados na tentativa de aferir se o presente trabalho ir a cumprir com o seu objetivo. O referencial te orico e uma parte importante deste trabalho, onde conceitos s ao explanados de uma maneira sucinta para que o leitor situe-se no amplo contexto em que a ferramenta est a inserida.

1.1. Objetivos

1.1

Objetivos

O trabalho tem por objetivo geral a elabora ca o de uma ferramenta Web que apoie os alunos na aprendizagem de algoritmos e que, concomitantemente, auxilie o professor na corre ca o dos mesmos. Por em, alguns objetivos espec cos podem ser mencionados. Dentre eles, citamos: Realizar a pesquisa te orica com a nalidade de obter informa c oes relevantes para o desenvolvimento do projeto. Efetuar testes na ferramenta de modo que possamos vericar a sua ec acia no apoio ao ensino de algoritmos, para alunos inicias na elabora ca o de algoritmos. Oferecer um mecanismo de aux lio ao professor na corre ca o de algoritmos. Utilizar um BD para armazenar os exerc cios solucionados e os exerc cios apresentados pelo professor. Permitir que o professor execute os exerc cios enviados pelos alunos, para que seja atribu da uma nota ao exerc cio.

1.2

Justicativa e motiva c ao

Devido a ` problem atica do tema aqui levantado, a elabora c ao de uma ferramenta Web de apoio ao ensino de algoritmos justica-se por ter o prop osito de auxiliar o aluno em seu processo de aprendizagem em algoritmos. Dispor de uma ferramenta pedag ogica tem o ideal de tornar-se uma importante aliada no ensino de algoritmos. Visto que muitos alunos apresentam diculdades no aprendizado de algoritmos e que o seu processo de corre c ao (at e mesmos os mais simples) torna-se dispendioso para o professor, nasceu a ideia da elabora ca o da ferramenta. Os motivos pelos quais esta ferramenta foi idealizada podem aqui serem sucintamente mencionados: Aumentar o interesse dos alunos no aprendizado de algoritmos. Utilizar uma ferramenta de apoio elaborada na pr opria institui ca o. Vericar se as respostas enviadas pelos alunos s ao, de fato, corretas. Vericar se uma ferramenta desse tipo auxilia o processo de aprendizagem, apresentandose como um projeto que possa ser futuramente melhorado em outros aspectos. Devido os motivos acima citados que o presente trabalho faz-se necess ario.

1.3. Metodologia

1.3

Metodologia

A metodologia que foi empregada no desenvolvimento do projeto compreendeu, primeiramente, de uma ampla pesquisa do tema em fontes bibliogr acas, bem como em textos publicados (trabalhos de conclus ao de curso, artigos, teses, entre outras). Depois do embasamento te orico necess ario do tema, foi feita a implementa ca o da ferramenta. Esta implementa ca o foi realizada utilizando a linguagem Java com JSP ( Java Server Pages). No processo de implementa ca o da ferramenta, primeiro foi feito uma pesquisa sobre as t ecnicas de desenvolvimento, para, posteriormente, implementar a ferramenta. O estudo de assuntos correlatos a este trabalho, mostrou que seria necess aria a utiliza c ao de softwares j a existentes, dentre eles, o Notepad++ e o GPT. A utiliza ca o destas ferramentas mostraram-se necess arias para a obten ca o do objetivo deste trabalho. O primeiro serviu-nos para oferecer ao algoritmo do aluno uma codica c ao espec ca que e utilizado pelo compilador GPT: o UTF (Unicode Transformation Format)-8 sem o Byte Order Mark ( BOM ). O BOM e um identicador para arquivos em UTF/8/16/32 bits, sevindo para dizer ao editor que se trata de um arquivo codicado em UTF-8. Esta implementa ca o foi realizada com a nalidade de gerar a ferramenta compat vel com o Windows, utilizando funcionalidade espec cas desta linguagem (batch) para trazer benef cios aos usu arios. O amplo estudo sobre o compilador e interpretador GPT possibilitou-nos conhecer seus comandos de execu ca o. Permitiu-nos, ainda, um maior conhecimento sobre suas gram aticas e, consequentemente, a estrutura que os algoritmos devem apresentar para que sejam compilados e interpretados pelo GPT. Por m, ser ao feitos os testes na ferramenta,com a nalidade de vericar o funcionamento da ferramenta, possibilitando-nos sugerir melhorias futuras, bem como erros e acertos do projeto.

1.4

Organiza c ao do texto

O texto e organizado em um u nico volume e conta ainda com 3 ap endices. O Cap tulo 1 apresentou a problem atica em que o trabalho est a envolvida, os objetivos pretendidos, as motiva co es e a justicativa. O texto ainda apresenta mais tr es cap tulos, que ser ao brevemente descritos a seguir. Cap tulo 2

Referencial Te orico
No cap tulo 2 fazemos uma contextualiza ca o do trabalho com parte do que j a nesse cap foi produzido e discutido. E tulo que diversas opini oes e deni c oes s ao postas

1.4. Organiza ca o do texto

nesse cap de modo a embasar o trabalho. E tulo ainda que alguns conceitos que norteiam o trabalho s ao brevemente explanados. Al em de conceitos, s ao tamb em colocados aqui o estudo de algumas ferramentas de apoio ao ensino de algoritmos. Cap tulo 3

Projeto e desenvolvimento da ferramenta


apresentada No cap tulo 3 do trabalho, o leitor e apresentado a ` ferramenta. E a arquitetura l ogica da ferramenta, mostrando o modo que a ferramenta est a estruturada. Ser a apresentada tamb em as partes principais da gram atica utilizada pelo GPT, bem como demonstra c oes mais pr aticas da rela ca o entre a gram atica e a sintaxe esperada dos algoritmos pelo GPT . Quest oes de implementa ca o s ao apresentadas neste cap tulo. Para o detalhamento da implementa ca o, s ao apresentados os diagramas de classe e de entidade e relacionamentos da ferramenta. A descri ca o das principais interfaces (e suas respectivas descri c oes) e os testes realizados ndam o cap tulo. Cap tulo 4

Considera co es nais, melhorias futuras e diculdades encontradas


No cap tulo 4 nalizaremos com nossas considera co es nais e apresentaremos nossas sugest oes de melhorias futuras para a ferramenta. Ap endice A

Gram atica da linguagem G-Portugol


Neste ap endice, a gram atica utilizada pelo GPT e apresentada. Na gram atica podem ser reconhecidos todos os padr oes que devem ser adotados para a escrita de um algoritmo que ser a corrigido pela ferramenta. Ap endice B

Imagens das telas da ferramenta


S ao apresentadas neste ap endice as telas principais da ferramenta, permitindo uma melhor visualiza ca o ao leitor. Ap endice C

Partes principais do c odigo-fonte


S ao apresentados partes cruciais da implementa ca o da ferramenta: conex ao e verica c ao de usu arios, chamada do Notepad++ para o aluno e a implementa c ao da submiss ao de um exerc cio do aluno. Os c odigos dessas partes est ao na ntegra.

Cap tulo 2 Referencial te orico


Este Cap tulo visa a explana c ao de conceitos b asicos que s ao intr nsecos ao contexto do trabalho.

2.1

Algoritmos

Ao procurarmos uma deni c ao para a palavra algoritmo, notaremos que n ao h a uma u nica correta, e sim v arias. Cormem et.al (2002) ao deni-lo diz que um algoritmo se trataria de um procedimento computacional bem especicado, que, tomando um valor ou um conjunto destes como entrada, seria produzida uma sa da. Partindo desta deni c ao sucinta e clara, vemos que o termo e frequentemente associado a uma receita de bolo. Essa associa ca o e completamente plaus vel, pois para que o algoritmo chegue ao resultado esperado (ou seja, o resultado correto) temos que seguir passos bem denidos. Sendo assim, um algoritmo pode ser tratado como um procedimento que, a partir de uma determinada entrada, produzir a uma sa da, ap os a an alise do conjunto de entradas. Um algoritmo correto e aquele que, segundo Cormem et.al (2002), resolve o problema computacional dado. Forbellone (2005) dene algoritmo como sendo uma sequ encia de passos que visam atingir um objetivo bem denido. A import ancia dos algoritmos e not oria e inquestion avel. Imaginar o mundo atual sem eles seria imposs vel. O mundo moderno tem neles uma ferramenta aliada que certamente contribuiu para que cheg assemos ao panorama tecnol ogico atual. Prossionais capazes de lidar com essa realidade se fazem necess arios. Aprender a planejar e executar algoritmos tornou-se, para muitos, uma das pross oes do presente e ao mesmo tempo do futuro. Formar bons prossionais nesta a rea, reconhecidamente n ao e uma tarefa f acil. Lidar com programa c ao certamente e algo muito complexo por diversos motivos. Segundo Bini (2010 apud Dunican,2002,p. 89-99) e poss vel identicar tr es tipos de alunos: primeiro, aqueles que n ao tem aptid ao para assimilar conceitos b asicos de programa c ao; 5

2.1. Algoritmos

segundo, os que conseguem assimilar, desde que haja uma abordagem pedag ogica eciente; e, por u ltimo, os que se sentem confort aveis com a abstra c ao da programa ca o de computadores. O fato dos alunos terem um tempo de assimila ca o ou um processo de aprendizagem diferentes entre si, pode ser apontado como uma diculdade em aprender algoritmos. Ainda segundo Bini (2010), a literatura sobre o assunto traz algumas alternativas na tentativa de minimizar os impactos causados pela diculdades que alunos iniciantes em programa ca o apresentam. Uma dessas alternativas seria diminuir o impacto que o alto grau de abstra ca o exigido requer dos alunos. Uma outra seria uma maior avalia ca o de qu ao adequ avel e a linguagem de programa ca o ensinada no come co do processo de aprendizagem. Uma abordagem muito utilizada no ensino de algoritmos divide todo o processo em fases: primeiro s ao apresentados ao alunos conceitos de vari aveis, comandos de entradas, estruturas de sele c ao e de repeti c ao, dentre outras. Esse processo, aliado ao uso do pseudoc odigo, d a ao iniciante em programa c ao uma boa dimens ao do que ser a apresentado adiante pela disciplina. A segunda fase seria o desenvolvimento de programas em escalas de diculdades inerentemente ascendentes, com um dado paradigma de programa ca o adotado pelo professor (frequentemente o primeiro a ser usado e o procedural e, posteriormente, o orientado a objetos). Bini (2010 apud Motil e Epstein,2000) aponta um dos fatores de diculdades no processo de aprendizagem de algoritmos est a no uso de linguagens de programa ca o com muitas e complexas regras de sintaxe em disciplinas introdut orias. Ainda segundo Almeida et.al (2002), outro fator de diculdades e uma frequente desmotiva c ao por parte de alguns alunos em mat erias que objetivam o aprendizado da l ogica de programa ca o, fato comumente associado ` a resist encia e diculdade no aprendizado de tal disciplina. Pode-se dizer que uma das hip oteses associadas a esta quest ao est a no fato de ocorrer uma grande quantidade de conceitos abstratos envolvidos na atividade de programa ca o, sendo que o ambiente de programa ca o e a pr opria m aquina tendem, muitas vezes, atrapalhar o desenvolvimento da l ogica de programa ca o dos alunos. E v alido salientar que diculdades no processo de aprendizagem frequentemente geram alunos desmotivados, que julgam-se incapazes de efetuar tal atividade, sendo que isso n ao raramente leva alguns a pensar na desist encia da mat eria de programa c ao. Conforme Bini (2010), muitas s ao as discuss oes no sentido de se chegar a uma maneira de acabar com esse problema, por em um consenso ainda n ao foi denido. Desenvolver uma ferramenta que ajude o aluno a romper essa barreira em seu aprendizado seria o auge deste presente trabalho. Uma ferramenta que, segundo Almeida et.al (2002) tenha muita simplicidade em seu uso, certamente contribuiria com todo o processo de desenvolvimento do aluno em quest ao. Conforme visto anteriormente, essa

2.2. Ferramentas de apoio ao ensino de algoritmos

problem atica do aprendizado e algo muito complexo e uma raz ao consensual para isso ainda n ao foi encontrada pelos estudiosos. Mais e quase unanimidade que dispor de m etodos pedag ogicos podem facilitar esse processo.

2.2

Ferramentas de apoio ao ensino de algoritmos

Algumas ferramentas com o intuito de auxiliar o aprendizado de alunos em algoritmos j a foram elaboradas. Algumas surgiram da necessidade de ter uma ferramenta de apoio, por em caracterizam-se em n ao ser ferramentas Web, tornando-se necess aria a instala c ao em seu ambiente de trabalho. A seguir ser a apresentada a descri c ao de algumas dessas ferramentas.

2.2.1

ASA

Iniciais de Anima ca o e Simula ca o de Algoritmos, essa ferramenta foi desenvolvida pelo SENAC. Esta ferramenta estrutura-se em torno de tr es m odulos: Li c oes, Construtor e Analisador. A Figura 2.1 mostra uma imagem da ferramenta.

Figura 2.1: Exemplo de uma solu ca o na ferramenta ASA A ferramenta ASA e composta por alguns m odulos, sendo estes descritos a seguir.

2.2. Ferramentas de apoio ao ensino de algoritmos

Li co es Caracteriza-se por ser o primeiro contato do aluno com uma mat eria nova. A apresenta c ao da mat eria e feita atrav es de imagem ou texto. Os exerc cios propostos pelo professor est ao dispon veis neste m odulo. Construtor Tem a nalidade de ser o ambiente respons avel pela aplica ca o por parte do aluno do que foi apresentado no m odulo Li co es. Neste m odulo, o aluno cria e executa Simula co es. Essas Simula co es feitas pelo aluno s ao armazenadas em sua Ficha. E nesse m odulo, portanto, que a cria c ao e realizada. A ferramenta separa os m odulos Construtor e Li co es porque a apresenta ca o das mat erias e dirigida, limitando a cria ca o do usu ario. o respons Analisador E avel pela corre ca o da proposta, pela recupera ca o de chas dos alunos bem como a gera ca o de dados estat sticos. O ASA aborda t opicos relacionados a sistemas num ericos, mem oria, vari aveis, opera co es l ogicas e sequenciais, sele c oes, repeti c oes (enquanto e para), vetores e matrizes. Faz o uso de uxogramas e tamb em pseudoc odigo como formas de representa co es.

2.2.2

Ambap

O Ambap e uma ferramenta originalmente projetada em Java, que, pelo fato de requerer uma M aquina Virtual Java instalada, foi reescrito na linguagem C++. A Figura 2.2 e referente a ` ferramenta.

Figura 2.2: Ferramenta Ambap

2.2. Ferramentas de apoio ao ensino de algoritmos

Trata-se de um ambiente, segundo Almeida et.al (2002), com v arios m odulos, sendo que estes m odulos s ao descritos a seguir. M odulo Interpretador Executa as instru co es denidas pelo usu ario, sendo que a ferramenta oferece ao usu ario quatro modos diferentes de linguagens, s ao elas: uxograma (o usu ario faz uso de uma linguagem mais visual, onde o principal s ao os uxos de execu ca o); pseudoc odigo (expressa as solu co es do usu ario em uma linguagem pr oxima a ` natural); assembly (usu ario exercita a programa c ao em assembly); e linguagem de micro-programa ca o (destinados aos usu arios que desejam programar em mais baixo n vel, assim como o assembly). M odulo Simulador Tem a fun ca o de representar gracamente os resultados do m odulo Interpretador e tamb em fornecer uma interface com o usu ario para entrada e sa da de dados. O aluno tamb em tem a possibilidade de execu ca o passo-a-passo da solu ca o, op ca o bastante interessante, pois a visualiza ca o e a detec ca o de eventuais erros tornam-se mais simples. Esse m odulo e composto por Gerenciador de Entradas e Sa das, Analisador de Express oes e Simulador Gr aco de Mem oria. O primeiro e uma interface amig avel para a entrada e sa da de dados durante a execu c ao de uma solu c ao apresentada ao aluno. O Analisador de Express oes tem por nalidade auxiliar o usu ario em express oes complexas quando o mesmo est a executando no modo passo-a-passo, auxiliando-o na verica c ao de erros. O Simulador Gr aco de Mem oria representa de uma maneira gr aca os resultados de a c oes do Interpretador, simulando de uma maneira abstrata o status da mem oria do computador. M odulo Editor Tem por nalidade oferecer ao usu ario um bom ambiente para a escrita da solu ca o, sendo que cabe a ele adaptar-se a cada linguagem escolhida pelo usu ario (uxograma, pseudoc odigo, assembly ou linguagem de micro-programa ca o). Um exemplo dessa adapta ca o e que o ambiente deve, caso a linguagem pseudoc odigo seja a escolhida, avisar eventuais erros de sintaxes e dar dicas de como corrigi-los. M odulo Tradutor Tem a fun ca o de converter, caso seja a vontade do aluno, de uma linguagem para outra. Por exemplo, o aluno pode desenvolver a solu ca o em pseudoc odigo e traduzi-la para assembly. M odulo Tutor Seu papel e auxiliar o aluno em seu aprendizado. Nesse m odulo o aluno encontra o conte udo pedag ogico relacionado a ` mat eria, encontra tamb em erros cometidos em exerc cios produzidos, dentre outros. E nesse m odulo que o professor tem acesso ` as informa co es de seus alunos, insere e remove problemas e dene sua estrat egia pedag ogica. O Ambap n ao e uma ferramenta Web, sendo que requer instala c oes nas m aquinas dos usu arios para que seja utilizado.

2.2. Ferramentas de apoio ao ensino de algoritmos

10

2.2.3

CIFluxProg

Conforme Santiago e Dazzi (2003), trata-se de uma ferramenta composta por duas maneiras de desenvolvimento distintas: o Fluxograma e o Portugol. Atrav es desses m odulos, o usu ario pode escolher o modo de solu ca o que julgar mais adequado, quer seja ele usando uxogramas ou pseudoc odigo, respectivamente. A ferramenta foi desenvolvida em C++ e conta ainda com um interpretador feito na mesma linguagem. As ferramentas LEX (Lexical Analyzer Generator) e YACC (Yet Another Compiler-Compiler) foram utilizadas na elabora ca o do interpretador da ferramenta. Pode-se dizer que esta ferramenta e composta de tr es partes distintas, sendo elas: Interpretador Foi desenvolvido para que houvesse a execu c ao do c odigo na ferramenta. Ele analisa a solu ca o proposta pelo usu ario na busca de erros l exicos e sint aticos, tentando executar a solu ca o. Para que isso seja poss vel, a ferramenta faz uso de uma gram atica que compreende at e estruturas simples de repeti c ao. Fluxograma Se esse m etodo de solu ca o for o escolhido pelo usu ario, uma ambiente novo apresenta-se a ele. Este ambiente cont em guras que representam entrada/sa da, por exemplo. Ap os o t ermino da solu ca o o usu ario pode executar e ainda pode salvar a solu ca o em uma m dia de armazenamento. Na Figura 2.3 podemos ver o modelo uxograma da ferramenta.

Figura 2.3: M etodo de desenvolvimento uxograma da ferramenta CIFluxProg Portugol Elaborado para usu arios com perl mais verbal, sendo que a solu ca o e realizada de maneira textual. Aqui o c odigo pode ser executado atrav es de uma solicita ca o ao interpretador, que retorna o resultado.

2.2. Ferramentas de apoio ao ensino de algoritmos

11

2.2.4

GPT

Conforme Silva e Cavalcante (2008), o GPT e um compilador e interpretador para a linguagem G-Portugol. A linguagem G-Portugol caracteriza-se por ser uma formaliza ca o do popular portugol. Ou seja, os desenvolvedores do projeto GPT elaboraram uma padroniza ca o de uma linguagem muito utilizada nos primeiros passos do aprendizado de algoritmos. Motil et al. (2000) diz que, frequentemente, e utilizada uma linguagem de programa ca o grande e complexa no in cio do aprendizado dos alunos, linguagens estas voltadas ao ambiente industrial. Analisando essa constata ca o, vemos uma necessidade de, ao menos no in cio do processo de ensino de algoritmos, utilizar-se uma linguagem e um ambiente de programa ca o mais simples e mais intuitivo para os alunos. O uso do compilador e interpretador GPT permite ao aluno elaborar o seu algoritmo obedecendo a `s regras e comandos escritos totalmente em portugu es, algo que pode facilitar, consideravelmente, os primeiros passos na elabora ca o de algoritmos. GPT tornou-se, portanto, um importante aliado ao processo de ensino e aprendizado de algoritmos. Pelo fato de n ao requerer assimila c ao de comandos e estruturas em ingl es, bem como permitir a elabora c ao de algoritmos na l ngua vern acula do aluno, tornou o GPT muito importante para a elabora ca o da nossa ferramenta. O uso do GPT e frequentemente associado ` a uma interface chamada GPTEditor, uma interface que utiliza o compilador e interpretador GPT para a execu ca o dos algoritmos. Segundo Silva e Cavalcante (2008), o GPTEditor e um editor que suporta cores para as sintaxes, facilitando o desenvolvimento. Trata-se de uma interface simples, por em interessante para executar e depurar os programas. Ainda segundo eles, o uso do GPTEditor e dependente de plataforma, sendo que o seu uso est a restrito ao ambiente Linux. Tanto o GPT quanto o editor GPTEditor foram elaborados utilizando o C++ como linguagem de programa ca o. Por em, conforme j a foi dito, o editor foi desenvolvido exclusivamente para a plataforma Linux, enquanto o GPT pode ser encontrado para ambientes Linux e Windows. Ambos foram desenvolvidos sob a licen ca GPL ( GNU General Public License).

2.2.5

Comparativo entre as ferramentas

A seguir, na Tabela 2.1 e apresentada as principais caracter sticas das ferramentas j a brevemente discutidas neste Cap tulo, possibilitando-nos uma maior compreens ao das suas principais diferen cas. Como podemos notar na Tabela 2.1, as ferramentas descritas neste Cap tulo j a est ao h a alguns anos no ambito educacional. O diferencial do GPT est a na continuidade

2.3. Compilador

12

Ambap 2002 Java, migrando para C++ Representa ca o de algoritmo usada uxograma e portugol Plataforma Windows Executar passo-a-passo Gera Execut avel Executa em ambiente Web sim n ao n ao

Ferramenta x Caracter sticas Ano de Produ c ao Linguagem de desenvolvimento

ASA CIFluxProg GPT 2004 2004 2003 n ao en- C++ C++ contrada

uxograma uxograma e portugol Windows sim sim n ao Windows sim sim n ao

portugol

Windows e Linux n ao n ao n ao

Tabela 2.1: Tabela comparativa entre as ferramentas estudadas do projeto, sendo que um grupo de desenvolvedores lan caram vers oes mais recentes do mesmo, corrigindo defeitos pontuais em vers oes anteriores. Percebemos, ainda, uma predomin ancia do uxograma como forma de representa c ao de algoritmos. Isto, certamente, deve-se ao fato dele tratar-se de uma maneira mais visual em compara ca o ao pseudoc odigo (portugol), facilitando a compreens ao de muitas solu c oes por parte dos alunos. A execu ca o passo-a-passo est a ausente somente no GPT, pois esta funcionalidade foi incorporada ao GPTEditor, que e o seu editor padr ao. Nota-se que nenhuma das ferramentas descritas s ao voltadas ` a Web. Notadamente, um importante diferencial da ferramenta proposta neste trabalho com as descritas no Cap tulo est a na funcionalidade Web.

2.3

Compilador

Sem d uvida alguma, uma parte crucial do presente trabalho est a na an alise do c odigo. Isto se deve ao fato de que muitos dos erros nos algoritmos est ao diretamente ligados a erros na escrita do mesmo. Segundo Aho (1986), compilador e um programa que l e um programa escrito numa linguagem - a linguagem fonte - e o traduz num programa equivalente numa outra linguagem - a linguagem alvo.A Figura 2.4 ilustra isso. Um compilador completo possui muitas fases. Dentre elas, podemos destacar: a primeira e a an alise l exica; segundo temos a an alise sint atica e, posteriormente, temos a an alise sem antica. Cont em ainda fases intermedi arias que terminam com o gerador de c odigo. Na Figura 2.5 segue uma ilustra ca o das fases de um compilador.

2.3. Compilador

13

Figura 2.4: Exemplo de um compilador

Figura 2.5: Fases de um compilador Segundo Aho (1986), na pr atica, algumas dessas fases podem ser agrupadas e a representa ca o intermedi aria entre as fases n ao precisa ser explicitamente constru da. Contudo, para que haja uma an alise sint atica, tem-se a necessidade de criar uma regra geral, essa regra recebe o nome de Gram atica Livre de Contexto (ou simplesmente gram atica).

2.3.1

An alise l exica

O analisador l exico pode ser considerado como a fase inicial de um compilador. Aho (1986) relata que a principal tarefa do analisador e ler os caracteres de entradas e agrup a-los em tokens, sendo que estes, por consequ encia, ser ao utilizados pelo parser na an alise sint atica. Aho (1986) diz que estruturas como palavras-chave, operadores, identicadores, constantes, literais, cadeias e s mbolos de pontua ca o s ao tratadas como

2.3. Compilador

14

tokens na maioria das linguagens de programa ca o. Na an alise l exica, o parser classicar aa entrada em tokens. Como o analisador l exico pode ser considerado um aut omato nito, os tokens s ao os estados terminais do aut omato. Portanto, caso o parser encontre caracteres que n ao sejam tokens, um erro l exico ser a informado. Vejamos um exemplo de como seria a an alise l exica em uma certa entrada: montante := deposito inicial+taxa de juros*60 Essa entrada poderia ser agrupada nos seguintes tokens: 1. O identicador montante. 2. O s mbolo de atribui c ao :=. 3. O identicador deposito inicial. 4. O sinal de adi c ao. 5. O identicador taxa de juros. 6. O sinal de multiplica c ao. 7. O n umero 60. Analisando o exemplo acima, notamos que a fun ca o do analisador l exico e percorrer cada elemento da entrada e agrup a-los em tokens, onde, segundo Aho (1986), cada token seja uma sequ encia de caracteres logicamente coesivos (identicador, palavras-chave, entre outros).

2.3.2

An alise sint atica

a fase subsequente ` E a an alise l exica. Segundo Aho (1986), o analisador sint atico ir a obter uma sequ encia de tokens originados pelo analisador l exico, e, posteriormente, vericar a se a mesma pode ser gerada pela gram atica da linguagem-fonte. A gram atica e a respons avel por gerar uma linguagem onde todas as cadeias de terminais s ao geradas a partir do s mbolo inicial da gram atica usando as devidas produ c oes. Neste processo, a gram atica utilizada foi a gram atica livre de contexto. Segundo Aho (1986), descreve naturalmente a estrutura hier arquica de muitas constru co es das linguagens de programa c ao. Analisando o seguinte exemplo do comando if-else em C, temos: if (expressao) comando else comando

2.3. Compilador

15

Nota-se que o comando e uma concatena ca o da palavra-chave if, uma express ao entre par enteses, uma outra palavra-chave(else) e um outro comando. Analogamente, uma gram atica para regra de estrutura ca o acima poderia ser: cmd -> if (expr) cmd else cmd Na express ao anterior, expr denota uma express ao e cmd um comando, sendo que a seta tem signicado pode ter a forma. Isso caracteriza uma produ ca o, sendo que o if, o else e os par enteses s ao tokens conhecidos como terminais, e as vari aveis como cmd e expr s ao os n ao-terminais. Segundo Aho (1986), uma gram atica possui quatro componentes b asicos. S ao eles: Um conjunto de tokens, denominados s mbolos terminais; Um conjunto de n ao-terminais; Um conjunto de produ co es, sendo que uma produ ca o possui um n ao-terminal (lado esquerdo da produ c ao), uma seta e uma sequ encia de tokens e/ou n ao-terminais (lado direito da produ c ao); Uma identica c ao de um dos n ao-terminais como o s mbolo de partida. Quando o analisador sint atico devolve um erro, e esperado um retorno intelig vel pelo compilador. Aho (1986) diz ainda que essa an alise envolve o agrupamento de tokens do programa fonte em frases gramaticais, sendo que estas frases ser ao posteriormente utilizadas pelo compilador. Uma representa ca o muito comum dessas frases gramaticais est a na utiliza ca o de a rvores gramaticais. Uma arvore gramatical, segundo Aho (1986), pode ser vista como uma representa ca o gr aca para uma deriva c ao, ltrando, desse modo, a escolha relacionada a ` substitui ca o. Um n o (terminal) sempre e rotulado por um n ao-terminal. Considere a Figura 2.6. Na Figura 2.6 visualizamos uma arvore gramatical para a entrada montante := deposito inicial+taxa de juros*60. Ainda segundo Aho (1986), geralmente a sa da de um analisador sint atico e alguma representa ca o de uma arvore gramatical para o uxo de tokens, sendo este uxo produzido pela an alise l exica. E por meio desta arvore gramatical que o analisador sem antico far a a verica c ao de tipos. Ainda segundo Aho (1986), o tratador de erros do analisador sint atico possui algumas metas que devem ser estabelecidas e buscadas ao longo do projeto do compilador, tais como: Informar a presen ca de erros de maneira clara e aprimorada;

2.3. Compilador

16

Figura 2.6: Exemplo de uma a rvore gramatical A recupera c ao de erros deve ser r apida para que erros subsequentes n ao passem despercebidos; O processamento de programas corretos n ao deve ser retardado signicativamente. Satisfazer a todas essas metas e uma tarefa nada f acil; por em Aho (1986) arma que a maioria dos erros comuns s ao simples, sendo que, frequentemente, basta um mecanismo de tratamento de erros relativamente direto.

2.3.3

An alise sem antica

A an alise sem antica e fase subsequente a ` an alise sint atica. Aho (1986) diz que nesta fase h a a verica c ao dos erros sem anticos e captura das informa co es de tipo para a fase subsequente, que e a gera ca o de c odigo. Utiliza a estrutura hier arquica determinada pela fase anterior, com a nalidade de identica c ao dos operadores e operandos das express oes e enunciados. Ainda segundo Aho (1986), um importante componente deste tipo de an alise e nesta fase que o compilador verica se cada operador recebe a verica ca o de tipos. E operandos que s ao permitidos pela especica ca o da linguagem-fonte. Na Figura 2.7 podemos visualizar um exemplo. Na Figura 2.7 podemos visualizar o papel do analisador sem antico sobre uma dada entrada. Uma vis ao geral dos tr es principais analisadores e mostrada. Cabe ao analisador l exico agrupar a entrada em tokens. Uma a rvore de deriva c ao e gerada pelo analisador sint atico, tomando, como valores de entrada, os tokens gerados pela fase anterior. A fase ulterior ` a analise sint atica e a an alise sem antica. Esta e respons avel pela identica c ao dos

2.3. Compilador

17

Figura 2.7: A c ao do analisador sem antico sobre a entrada tipos de dados da arvore sem antica. No exemplo, vemos que e atribu do ao n umero 60 o tipo inteiro.

2.3.4

Detalhando o compilador e interpretador do GPT

Conforme mencionado na se ca o 2.2.4, o GPT e uma ferramenta muito importante para este trabalho. A sua tarefa e realizar a compila c ao e execu ca o dos algoritmos submetidos pelos alunos ao ambiente Web. Mediante uma estrutura previamente denida (as gram aticas do GPT), o compilador far a a verica ca o de erros e, caso n ao hajam, interpretar a o algoritmo, mostrando os resultados da execu c ao. Para que a execu c ao do algoritmo seja realizada, este deve ser submetido a `s an alises descritas neste Cap tulo. Segundo Aho (1986), uma atividade importante do compilador est a na detec ca o e informa c ao dos erros do algoritmo para o usu ario. Estes erros devem ser apresentados de uma forma clara, facilitando o processo de corre c ao dos mesmos por parte do usu ario. O compilador do GPT traz um retorno de erros encontrados de uma maneira muito clara e objetiva. Ele informa ao usu ario, por exemplo, a linha onde se encontra o erro, qual o erro encontrado e porque os comandos da linha foram classicados como um erro. Podemos citar alguns exemplos de erros.

2.3. Compilador

18

Erro l exico Temos este tipo de erro, segundo Aho (1986), quando caracteres da entrada n ao formam nenhum tipo de token. Sendo assim, vari aveis com s mbolos e identicadores inv alidos conguram-se como sendo erros, conforme ilustrado na Figura 2.8. Na Figura 2.8, o usu ario declarou *id (linha 3) como sendo um nome de vari avel, por em, mediante a gram atica do compilador do GPT, isso n ao e poss vel, congurando-se como nome inv alido de vari avel. Assim, o compilador exibir a os seguintes erros, de acordo com a Figura 2.9. A Figura 2.9 mostra que *id n ao e reconhecido como vari avel, visto que o compilador espera uma vari avel ap os o in cio do bloco de declara ca o de vari aveis ( a palavra vari aveis inicia esse bloco).

Figura 2.8: Exemplo de um erro l exico

Figura 2.9: Mensagem de um erro l exico do compilador do GPT para o algoritmo da Figura 2.8 Erro sint atico S ao caracterizados erros deste tipo os que violem a estrutura da linguagem, gerando produ co es inalcan ca veis pela gram atica utilizada. Na gura 2.10 ilustramos um exemplo deste tipo de erro. Quando desejou-se somar duas vari aveis (soma e soma2, linha 10), foi esquecido o sinal de adi ca o da opera c ao. Este esquecimento, resultou em um n ao reconhecimento da estrutura por parte do GPT, acusando um erro. Esta mensagem de erro, conforme a Figura 2.11, informa ao usu ario que era esperado uma outra nota ca o para a linha 10, e n ao outra vari avel. Ou seja, duas vari aveis, de acordo com a gram atica do GPT, devem estar separadas por um s mbolo aritm etico. Erro Sem antico Aho (1986) relata que uma das tarefas da an alise sem antica est a relacionada a ` verica c ao de tipos. Esta verica c ao deveria relatar um erro caso um operador fosse atribu do a um operando incompat vel. Na Figura 2.12 podemos visualizar um exemplo, que atribui-se a uma vari avel do tipo literal (linha 8), uma vari avel do tipo real. Sendo esses tipos incompat veis, o compilador do GPT deve

2.4. Banco de dados

19

Figura 2.10: Exemplo de um erro sint atico

Figura 2.11: Mensagem de um erro sint atico do compilador do GPT para o algoritmo da Figura 2.10 informar um erro, conforme mostrado na Figura 2.13. Nota-se na Figura 2.13 que a mensagem informada e muito clara, onde e avisado que a vari avel id n ao pode receber uma vari avel do tipo que est a sendo-lhe atribu da.

Figura 2.12: Exemplo de um erro sem antico Uma breve consulta ao manual do GPT ou o estudo da gram atica no Ap endice A evitaria a maioria dos erros aqui mencionados, pois familiarizaria o usu ario com a sintaxe exigida.

2.4

Banco de dados

Uma importante tarefa da presente ferramenta est a no armazenamento dos dados. Ter acesso aos dados para sua an alise congura-se como um dos atrativos da ferramenta. Um BD e, segundo Date (2000), e um reposit orio ou recipiente para uma cole ca o de

2.4. Banco de dados

20

Figura 2.13: Mensagem de um erro sem antico do compilador do GPT para o algoritmo da Figura 2.12 arquivos computadorizados, podendo ser visualizado como o equivalente eletr onico de um arm ario de arquivamento. Um BD e caracterizado por ser uma cole ca o de dados estruturados, sendo que para fazer opera co es, como as de acesso, adi ca o e processamento em um BD, ser a necess ario o uso de um Sistema Gerenciador de Banco de Dados. Para fazer o acesso aos banco de dados, utiliza-se uma linguagem padr ao, denominada SQL (Structured Query Language) , que e denida pelo Padr ao ANSI (American National Standards Institute)/ISO (International Organization of Standardization) SQL. A seguir, apresentamos uma breve descri c ao dos Sistemas Gerenciadores de Banco de Dados mais conhecidos e utilizados.

2.4.1

MySQL

Segundo o Manual de refer encia do MySQL 4.1 (2010), ele e um software Open Source, isso signica que e poss vel o usu ario modic a-lo de acordo com seus interesses. Efetuar o download sem qualquer onus ao usu ario e uma caracter stica importante, para isso o MySQL usa a GPL (GNU General public License), sendo que nessa licen ca ser a especicado o que o usu ario pode ou n ao fazer. O servidor de BD MySQL prop oe-se a ser extremamente r apido, con avel e f acil de usar. Foi desenvolvido para lidar com grandes cole co es de dados e tem sido usado em ambientes de produ ca o de alta demanda. Caracter sticas como a conectividade, velocidade e seguran ca s ao apontadas como respons aveis pelo sua adaptabilidade para o acesso de banco de dados na internet. A grande maioria dos erros encontrados no sistema est ao reportados na p agina ocial do desenvolvedor.

2.4.2

PostgreSQL

O PostgreSQL, segundo seu o Manual PostgreSql 8 (2010), foi assim denominado no ano de 1996 com o surgimento da nova vers ao do POSTGRES. O PostgresSQL representava o relacionamento do POSTGRES original e as vers oes mais recentes com capacidades SQL. O PostgreSQL e um sistema gerenciador de banco de dados objeto-relacional, sendo baseado no POSTGRES Vers ao 4.2. O PostgreSQL e de c odigo fonte aberto, suportando grande parte do padr ao SQL:2003. Muitas das funcionalidades mais modernas em banco de dados est ao dispon veis no SGBD (Sistema Gerenciador de Banco de Dados)PostgreSQL 8.0.0, dentre elas est ao: chaves estrangeiras, gatilhos, integridade transa-

2.4. Banco de dados

21

cional, dentre outras. Como trata-se de uma ferramenta Open Source, o usu ario pode efetuar modica co es, como adicionar novos tipos de dados, fun c oes, operadores, dentre outros. Como possui uma licen ca ex vel, o PostgreSQL pode ser utilizado, modicado e distribu do para qualquer que seja sua nalidade, completamente livre de encargos. A sua arquitetura e baseada no modelo cliente-servidor, onde o processo servidor faz o gerenciamento dos arquivos do BD, efetua tamb em o recebimento de conex oes do aplicativo cliente e executa a c oes de no banco de dados em nome dos clientes. J a os aplicativos do cliente t em em sua maioria a sua distribui ca o pelo pr oprio PostgreSQl.

2.4.3

Firebird

Segundo Santos (2010), Trata-se de um Sistema Gerenciador de Banco de Dados open source, sendo livre para uso e distribui ca o. Suporta padr oes ANSI SQL 92, possui ainda um grande suporte aos protocolos de redes como o TCP/IP (Transmission Control Protocol/Internet Protocol). Possui triggers, que s ao m odulos de c odigo pr e-programados que s ao ativados quando dados de uma determinada tabela s ao manipulados. um O Firebird satisfaz a `s necessidades de estabilidade, robustez e velocidade. E Sistema muito utilizado por corpora co es e apresenta comunidades que se dedicam a constantes melhorias em seu projeto. A sua f acil utiliza ca o e a facilidade de encontrar-se materiais a seu respeito, o Firebird e bastante utilizado no meio acad emico e comercial.

2.4.4

Considera c oes entre os sistemas gerenciadores de banco de dados

Caracterizar SGBDs com a nalidade de classicar o melhor dentre eles e uma tarefa complexa. Isto deve-se ao fato de n ao haver, unanimemente, um SGBD que seja classicado como sendo o melhor. Abaixo segue caracter sticas breves dos BDs aqui j a descritos. MySQL Segundo Porf rio (2010), apresenta grande velocidade e especializa c ao Web. Ocupa em torno de 12 MB na m aquina que est a instalado. Possui um n umero limitado de ferramentas se comparados aos outros. Utiliza pouca mem oria. PostgreeSQL Segundo o Manual PostgreSql 8, eo timo para trabalhar no ambiente Linux. Utiliza o Sistema objeto-relacional. Possui funcionalidades da orienta ca o a objetos. A sua arquitetura est a baseada no modelo cliente-servidor.Ainda possibilita a manipula c ao de dados armazenados atrav es de camadas ODBC (Open Data Base Connectivity) e JDBC (Java Database Connectivity).

2.5. Tecnologias utilizadas

22

Firebird Segundo Porf rio (2010), e caracterizado por ser est avel, seguro e robusto, oferecendo maiores recursos. Tem melhor desempenho em aplica c oes desktop. Possui arquitetura baseada em processos. Instalado, ocupa pouco mais de 10 MB. Como podemos perceber, s ao caracter sticas diferentes que comp oem cada um, sendo que o uso ou n ao de um SGBD espec co est a aliado a um maior dom nio de um ou de outro e ` as quest oes de aplicabilidade em cada projeto espec co.

2.5

Tecnologias utilizadas

O presente trabalho visa a elabora ca o de uma ferramenta voltada ` a Web. A seguir, apresenta-se uma breve explana c ao referente a `s tecnologias: Java EE, JSP, JDBC, PostgreSql e GPT.

2.5.1

Java EE

Java EE e, segundo a Trilha do aprendizado (2010), uma plataforma de desenvolvimento Web bastante utilizada. Isso deve-se ao fato de reduzir a complexidade do desenvolvimento, bem como a implanta c ao e o gerenciamento dos aplicativos centrados no servidor. E baseada na plataforma do Java SE(Java Standard Edition), oferecendo um conjunto de APIs( Aplication Program Interface) para desenvolvimento e execu c ao de aplicativos no lado do servidor. Uma aplica c ao Java Web tem a nalidade de gerar p aginas interativas, que por ser vers atil, pode integrar a si v arias outras linguagens de programa c ao (HTML (HiperText Markup Language) , XML (eXtensible Markup Language), etc.). Normalmente faz uso de componentes Web, como JSP (Java Server Pages), JDBC e servlets, para modicar e armazenar dados temporariamente, fazer intera ca o com o banco de dados e processar respostas ao cliente, por exemplo.

2.5.2

JSP

A JSP e, conforme o JSP (2010), uma tecnologia baseada em Java que visa a considerada simplica ca o do processo de desenvolvimento de p aginas Web din amicas. E como sendo uma linguagem de cria ca o de script no servidor. JSPs s ao caracterizadas por seus arquivos de texto que normalmente possuem a extens ao .jsp que substituem as p aginas HTML tradicionais, por em a JSP utiliza muito o HTML. A JSP tem a nalidade de ser facilmente codicada, facilitando a elabora ca o e manuten ca o de aplicativos. Al em disso, ela permite, no decorrer do desenvolvimento, que

2.5. Tecnologias utilizadas

23

a programa ca o l ogica e a programa c ao visual quem bem separadas. Essa separa ca o possibilita o surgimento de aplica co es mais robustas, possibilitando uma maior independ encia entre programador e o web designer, por exemplo. Como a JSP e uma linguagem baseada em Java, caracter sticas deste tamb em foram incorporadas ` a JSP, tais como a orienta c ao a objetos, heran ca, encapsulamento e o tratamento de exce c oes.

2.5.3

JDBC

Segundo H ubner (2010), e uma API para o acesso ao Sistema Gerenciador de Banco de Dados relacionais por meio de comandos SQL. Respons avel pela conex ao entre a linguagem Java e o SGBD. A Figura 2.14 mostra essa conex ao.

Figura 2.14: Ilustra c ao do JDBC. Tem como vantagem de ser independente do BD escolhido para desenvolvimento, ou seja, a sua API e a mesma para qualquer SGBD. Ele permite a constru ca o de p aginas Web que acessam um BD, pois n ao h a a necessidade de congura co es na m aquina cliente. Tem como caracter stica ainda o fato de manter a independ encia de plataforma, caracter stica essa da linguagem Java. O driver JDBC tem a necessidade de ser carregado no cliente e, caso a aplica ca o seja um applet, o SGBD deve estar na mesma m aquina que o servidor Web. Por em, segundo H ubner (2010), o seu uso melhora o tempo de resposta de aplica co es na Internet.

2.5.4

PostgreSQL

Para o armazenamento de dados pela ferramenta foi escolhido o SGBD PostgreSQL. Isso se deve ` a sua facilidade, tanto da sua utiliza c ao quanto obten c ao de materiais para seu estudo.

2.5. Tecnologias utilizadas

24

2.5.5

GPT

O uso do GPT mostrou-se interessante no processo de compila ca o e interpreta ca o dos algoritmos enviados pelos alunos. Com base nisso, decidiu-se pelo seu uso nesta ferramenta, simplicando o processo de corre c ao dos algoritmos.

Cap tulo 3 Projeto e desenvolvimento da ferramenta


O presente Cap tulo visa descrever, do ponto de vista l ogico, a ferramenta a ser elaborada. Descrever o sistema do ponto de vista l ogico d a ao leitor uma boa no c ao do que ser a desenvolvido.

3.1
balho.

Arquitetura l ogica
A Figura 3.1 caracteriza-se por ser um esquema da ferramenta proposta no traSegue abaixo a descri ca o de partes da ferramenta esquematizada na Figura 3.1.

Usu ario Pessoa respons avel por interagir com o sistema, podendo ser alunos ou o professor que utilizar a a ferramenta. Ferramenta O aplicativo Web em si, com seus bot oes e suas interfaces. GPT Compilador e interpretador que far a a an alise e interpreta ca o do algoritmo enviado pelo aluno. Banco de Dados Respons avel pelo armazenamento dos dados que ser ao acessados pelo professor e pelos alunos na obten c ao de informa co es sobre submiss ao, corre c ao e execu c ao do algoritmo Na Figura 3.1, vemos que o usu ario acessar a a ferramenta se for o professor que estiver fazendo uso dela, ou se for um aluno previamente cadastrado. Sendo o professor, ele ter a op co es de submiss ao de novos exerc cios ou de consultas de exerc cios j a armazenados.

25

3.1. Arquitetura l ogica

26

Figura 3.1: Arquitetura do sistema Nota-se que ambas as hip oteses conguram-se por fazer a comunica c ao com o banco de dados. O professor poder a tamb em fazer a corre ca o de exerc cios submetidos pelos alunos. Caso o usu ario seja um aluno, este efetuar a sua solu ca o mediante exerc cios propostos pelo professor utilizando a ferramenta. Poder a fazer tamb em o gerenciamento de suas informa c oes, tais como altera c ao de dados cadastrais.

3.1.1

O m odulo do aluno

Esta se c ao visa descrever com mais detalhes a maneira que o aluno interagir a com a ferramenta. Caso o usu ario que utilizar a a ferramenta seja aluno, a estrutura l ogica congurar-se- a pela Figura 3.2. Ela ilustra a arquitetura que um usu ario aluno previamente cadastrado ter a ao acessar a ferramenta. O papel da ferramenta e disponibilizar ao aluno o envio da solu ca o de um exerc cio, a verica ca o de seu cadastro, a resposta correta de determinado exerc cio disponibilizado pelo professor e tamb em vericar a nota que recebeu do professor em um determinado exerc cio. Para submeter uma solu c ao de um exerc cio, o aluno dever a, primeiramente, elaborar o algoritmo seguindo alguns passos preestabelecidos na p agina inicial da ferramenta. O algoritmo e escrito utilizando o Notepad++. Para tanto, o aluno deve, primeiramente, instal a-lo em seu computador (link para download disponibilizado na ferramenta). Depois de instalado, o Notepad++ e iniciado na pr opria ferramenta ao clique do bot ao Escrever

3.1. Arquitetura l ogica

27

Figura 3.2: Usu ario aluno utilizando a ferramenta solu ca o de um exerc cio, onde o aluno poder a, enm, elaborar sua solu ca o para um determinado exerc cio. Depois de escrito, o aluno ir a enviar sua solu c ao a ` ferramenta. O aluno poder a, a qualquer momento, editar seus dados. Esta edi c ao e disponibilizada a todos os alunos cadastrados, onde, atrav es de um bot ao, o aluno ter a acesso aos dados fornecidos no seu cadastro e, caso haja discord ancia de algo apresentado, ele poder a alterar seus dados, salvando tal opera ca o.

3.1.2

O m odulo do professor

Aqui ser a descrito a maneira que o professor interagir a com a presente ferramenta. A gura 3.3 visa ilustrar essa intera ca o do ponto de vista l ogico. A Figura 3.3 nos permite uma visualiza ca o do ponto de vista l ogico do usu ario professor. Notamos que as funcionalidades que a ferramenta deve apresentar podem ser assim resumidas: cadastro de exerc cios, pesquisa de solu co es de alunos e consulta de aluno. Abaixo segue a explana c ao de cada uma desses cen arios. Cadastro de exerc cios P agina onde o professor submeter a os exerc cios propostos por eles para que os alunos resolvam sua solu ca o. O professor tamb em estipular a uma nota a cada exerc cio, o dia de entrega e uma observa ca o(se julgar necess ario). Ele tamb em pode retirar ou modicar exerc cios quando julgar necess ario.

3.2. Apresenta ca o da sintaxe esperada pela gram atica

28

Figura 3.3: Usu ario professor utilizando a ferramenta Corre c ao de exerc cios O professor ter a acesso a cada solu ca o submetida por um aluno para executar e atribuir uma nota a ela. Consulta de aluno O cadastro dos alunos e dispon vel ao professor, podendo obter qualquer dado de um determinado aluno.

3.2

Apresenta c ao da sintaxe esperada pela gram atica

Uma gram atica, conforme j a apresentada na se c ao 2.3.2, tem a nalidade de gerar uma estrutura para um determinado c odigo-fonte. Ou seja, dada uma determinada entrada, e ela que ir a analisar se a sintaxe da produ ca o est a sendo violada. Uma produ ca o, segundo Aho (1986), consiste de um n ao-terminal (o lado esquerdo da produ c ao), uma seta e uma sequ encia de tokens e/ou outros n ao-terminais, sendo que s mbolos a ` direita da seta s ao denominados de lado direito da produ c ao. Um exemplo de uma produ c ao e mostrado a seguir, onde a seta e representado por :. declaracao_algoritmo ; : "algoritmo" T_IDENTIFICADOR ";"

Uma produ c ao faz parte de um conjunto de produ co es denidas pela gram atica de um compilador. Caso a produ ca o seja violada pelo programa-fonte, erros s ao apresentados, que, conforme j a mencionados, podem ser l exicos, sint aticos ou sem anticos.

3.2. Apresenta ca o da sintaxe esperada pela gram atica

29

Nesta se c ao, ser a feita a correla c ao entre as produ c oes da gram atica utilizada pelo compilador do GPT com a sintaxe do algoritmo esperada, exemplicando com exemplos pr aticos a estrutura exigida pelo compilador. Vale mencionar que a gram atica utilizada pelo compilador do GPT encontra-se no Ap endice A deste trabalho. A seguir, s ao apresentadas as partes principais de um algoritmo com suas produ c oes.

3.2.1

Declara c ao do algoritmo

Para que o algoritmo seja considerado, ele deve obedecer a ` sintaxe imposta pelas produ c oes a seguir. algoritmo : declaracao_algoritmo (var_decl_block)? stm_block (func_decls)* EOF ; declaracao_algoritmo : "algoritmo" T_IDENTIFICADOR ";" ; stm_block : "in cio" (stm_list)* "fim" ; T_IDENTIFICADOR : [a-zA-Z_] [a-zA-Z0-9_]*

A produ c ao algoritmo tem a fun ca o de derivar as seguintes produ co es: declaracao algoritmo, var decl block, stm block e func decls. A produ c ao declaracao algoritmo faz o reconhecimento da primeira linha de todo algoritmo especicado pela gram atica do GPT. Esta produ ca o reconhece a palavra reservada algoritmo; ap os isso, deriva o termo T IDENTIFICADOR e, por u ltimo, reconhece o caractere ;. O T IDENTIFICADOR e um termo da regra respons avel pelo reconhecimento dos nomes das vari aveis, fun c oes, entre outros. A produ c ao var decl block faz o reconhecimento do bloco de declara c ao das vari aveis utilizadas pelo algoritmo. A produ c ao stm block faz o reconhecimento das palavras in cio e m, al em de gerar produ c oes que far ao todo o reconhecimento do corpo do algoritmo. J a func decls reconhece uma fun ca o ou procedimento usada no algoritmo. Um exemplo pr atico da aplica ca o de algumas destas produ co es e apresentado na Figura 3.4. Conforme exemplicado na Figura 3.4, e esperada pela gram atica a palavra algoritmo, seguida de um identicador e de um ;. O identicador e um nome para o

3.2. Apresenta ca o da sintaxe esperada pela gram atica

30

Figura 3.4: Sintaxe esperada para declarar um algoritmo algoritmo, sendo que pode come car com letra (mai uscula ou min uscula) ou por um . N umeros podem estar inseridos no identicador, desde que n ao sejam a primeira letra do mesmo. O caractere ; indica que a declara c ao do algoritmo est a conclu da.

3.2.2

Declara c oes de vari aveis

Como mencionado, a produ c ao que reconhece o bloco de declara c ao de vari aveis (var decl block) e derivada a partir da produ c ao que reconhece o algoritmo (algoritmo). No entanto, a declara ca o de uma vari avel n ao e realizada por apenas uma produ ca o, como pode ser notado a seguir. var_decl_block : "vari aveis" (var_decl ";")+ "fim-vari aveis" ; var_decl : T_IDENTIFICADOR ("," T_IDENTIFICADOR)* ":" (tp_primitivo | tp_matriz) ; tp_primitivo : "inteiro" | "real" | "caractere" | "literal" | "l ogico" ; tp_matriz : "matriz" ("[" T_INT_LIT ; tp_prim_pl : "inteiros" | "reais" | "caracteres"

"]")+ "de" tp_prim_pl

3.2. Apresenta ca o da sintaxe esperada pela gram atica

31

| "literais" | "l ogicos" ; T_INT_LIT : T_OCTAL_LIT | T_HEX_LIT | T_BIN_LIT | T_DEC_LIT A produ ca o var decl block, conforme j a mencionado, e respons avel por indicar in cio e t ermino do bloco de declara c ao de vari aveis. Esta mesma produ c ao deriva uma outra que far a o reconhecimento do nome das vari aveis: var decl. O tipo de uma vari avel e reconhecida por uma terceira produ c ao: tp primitivo. Caso a vari avel declarada seja do tipo matriz, ela ser a reconhecida por uma outra produ c ao que desempenha o papel de reconhecimento exclusivo deste tipo, a produ c ao tp matriz. O tipo da matriz e reconhecido pela produ ca o tp prim p1 e o termo T INT LIT dene o sistema num erico usado (octal, hexadecimal,bin ario ou decimal). Em termos pr aticos, temos que a declara c ao de vari aveis deve ser feita dentro de um bloco espec co, sendo que a palavra vari aveis inicia este bloco. A Figura 3.5 mostra um exemplo disso.

Figura 3.5: Sintaxe esperada para declarar as vari aveis do algoritmo Nota-se que a sintaxe e bastante simples, compreendendo um nome de vari avel, seguida do sinal :. Ap os deve vir o tipo da vari avel e, para nalizar a declara ca o desta vari avel, o sinal de ; deve ser inserido. Pode-se declarar quantas vari aveis fazerem-se necess ario. A palavra m-vari aveis indica o t ermino deste bloco.

3.2.3

Estrutura de sele c ao

O reconhecimento de uma estruturas de sele c ao e feito pelas produ co es mostradas a seguir. stm_se : "se" expr "ent~ ao" stm_list ("sen~ ao" stm_list)? "fim-se"

3.2. Apresenta ca o da sintaxe esperada pela gram atica

32

; expr : expr ("ou"|"||") expr | expr ("e"|"&&") expr | expr "|" expr | expr "^" expr | expr "&" expr | expr ("="|"<>") expr | expr (">"|">="|"<"|"<=") expr | expr ("+" | "-") expr | expr ("/"|"*"|"%") expr | ("+"|"-"|"~"|"n~ ao")? termo ; stm_list : stm_attr | fcall ";" | stm_ret | stm_se | stm_enquanto | stm_para ; A produ c ao stm se faz o reconhecimento das palavras reservadas (se, ent ao, sen ao e m-se) e deriva outras produ c oes. A produ ca o expr faz o reconhecimento das diversas express oes poss veis, envolvendo operadores l ogicos , aritm eticas ou relacionais. A produ c ao stm list permite o uso das diversas estruturas (se, enquanto, etc.) dentro do comando sen ao. Na Figura 3.6 e mostrada a sintaxe esperada para o uma estrutura de sele ca o.

Figura 3.6: Sintaxe do comando de sele c ao A Figura 3.6 mostra uma estrutura bastante simples de um comando se sele ca o. O uso de se... ent ao... sen ao dentro de outro e muito comum na elabora ca o de algoritmos,

3.2. Apresenta ca o da sintaxe esperada pela gram atica

33

sendo que este tipo de uso e plenamente poss vel utilizando a gram atica do GPT.

3.2.4

Estruturas de repeti c ao

As estruturas de repeti c ao especicada na gram atica do GPT dizem respeito ` as estruturas para e enquanto. Suas produ c oes s ao mostradas a seguir. stm_enquanto : "enquanto" expr "fa ca" stm_list "fim-enquanto" ; stm_para : "para" lvalue "de" expr "at e" expr ; passo : "passo" ("+"|"-")? T_INT_LIT ; lvalue : T_IDENTIFICADOR ("[" expr "]")* ; A produ ca o stm enquanto reconhece a estrutura enquanto do c odigo-fonte. Al em de reconhecer o in cio e t ermino da estrutura, deriva a produ c ao expr e stm list, ambas j a descritas nesta se c ao. O stm para reconhece o comando de repeti c ao para, al em de derivar outras produ c oes. A produ ca o passo reconhece a sintaxe do passo, pertencente ao comando para. Por m, lvalue faz o reconhecimento do identicador que est a sendo utilizado na chamada do comando para. A Figura 3.7 mostra um exemplo pr atico dessas produ c oes.

passo? "fa ca" stm_list "fim-para"

Figura 3.7: Sintaxe de um comando de repeti c ao para

3.2.5

Fun c oes

A utiliza c ao de fun co es e permitida nos algoritmos compilados pelo GPT. A produ ca o que dene o seu uso e mostrada a seguir.

3.2. Apresenta ca o da sintaxe esperada pela gram atica

34

func_decls : "fun ca ~o" T_IDENTIFICADOR "(" fparams? ")" (":" tp_primitivo)? fvar_decl stm_block ; fparams : fparam ("," fparam)* ; fparam : T_IDENTIFICADOR ":" (tp_primitivo | tp_matriz) ; A produ ca o func decls faz o reconhecimento de eventuais fun co es utilizadas no c odigo-fonte, derivando outras produ co es necess arias. A produ ca o fparams deriva uma outra produ c ao, a fparam, sendo que esta reconhece os diversos par ametros utilizados na fun c ao. Um exemplo pr atico da sintaxe esperada por estas produ c oes pode ser visto na Figura 3.8.

Figura 3.8: Exemplo de algoritmo usando uma fun ca o Como pode ser visto na Figura 3.8, a gram atica espera que a fun ca o seja escrita ap os a palavra m. Nota-se que a mesma estrutura do bloco principal ([in cio ... m]) deve ser utilizada dentro da fun c ao. Algo que deve ser notado est a relacionado a ` sintaxe do in cio da fun ca o. A gram atica espera a palavra fun ca o seguida de um identicador (nome da fun ca o). Ap os isso, deve vir uma vari avel com o seu tipo, devendo ambos

3.3. Quest oes de implementa ca o

35

estarem entre ( ). Finalizando a declara c ao da fun ca o temos o tipo do seu retorno, onde deve ser de um tipo primitivo.

3.3

Quest oes de implementa c ao

Nesta se ca o ser ao apresentados e discutidas alguns componentes da implementa ca o realizada, com a nalidade de descrever, do ponto de vista da implementa ca o, a ferramenta elaborada. Esta implementa ca o, foi realizada na linguagem Java, utilizando o JSP. A plataforma denida foi o Windows e o ambiente de desenvolvimento utilizado foi o NetBeans IDE 6.8.

3.3.1

Diagrama de entidade e relacionamentos

Um diagrama de entidade e relacionamento (DER) e, segundo Date (2000) uma das principais t ecnicas de representa ca o l ogica de um Banco de Dados. Ou seja, fornece um meio simples e f acil de entender a comunica c ao dos aspectos principais do projeto de qualquer banco de dados. O DER do banco de dados utilizado pela ferramenta e mostrado na Figura 3.9.

Figura 3.9: Diagrama de entidade e relacionamento para o banco de dados da ferramenta Na Figura 3.9 nota-se o uso de quatro rela co es, sendo que os seus campos e o relacionamento entre elas ca evidente.

3.3. Quest oes de implementa ca o

36

A rela c ao aluno e respons avel pelo armazenamento das informa co es dos alunos cadastrados. Somente mediante cadastro o aluno tem acesso ` a ferramenta. A rela ca o professor e an aloga ` a do aluno, por em e respons avel pelo gerenciamento dos professores. Na rela c ao exerc cio e onde encontra-se a especica ca o do exerc cio submetido pelo professor. As informa co es dos exerc cios est ao todos contidos nesta rela ca o. J a a rela c ao solu c ao e respons avel pelo gerenciamento de uma submiss ao feita pelo aluno, bem como a obten c ao dos dados necess arios para a gera c ao dos relat orios.

3.3.2

Descri c ao das interfaces das classes

Uma representa c ao bastante utilizada para descrever o comportamento das classes de um sistema e, sem d uvida, utilizar a diagrama c ao de classes da UML (Unied Modelling Language). Silva e Videira (2001), denem UML como uma linguagem diagram atica, utilizada para especicar, visualizar e documentar sistemas de software. Ainda segundo eles, a UML apresenta as seguintes caracter sticas principais: independ encia de dom nio de aplica ca o; e independente do processo ou metodologia de software; e independente das ferramentas utilizadas no processo de modelagem; apresenta mecanismos poderosos de extens ao; agrega um conjunto signicativo de diferentes t ecnicas/diagramas dispersos por diferentes linguagens. Na Figura 3.10 e apresentado o diagrama de classes da ferramenta. Nela nota-se que, para cada classe, temos funcionalidades espec cas. A classe Aluno faz o gerenciamento dos alunos cadastrados na ferramenta. Os m etodos dessa classe s ao especicados na Figura 3.10. A classe Aluno e respons avel por gerenciar os alunos na ferramenta atrav es de seus atributos e m etodos. Ela tem o papel de enviar uma resposta de um exerc cio feita por um aluno. Essa submiss ao comunica-se com a classe Solu c ao, respons avel pelo recebimento da submiss ao do aluno. A classe Exerc cio e manipulada pela classe Professor. A classe Professor tem o papel de manipular a classe GPT, fazendo a corre c ao das submiss oes dos alunos e atribuindo uma nota pertinente a ` cada submiss ao. O relacionamento entre as classes e representado por uma seta. Esse diagrama torna a visualiza ca o dos relacionamentos entre as classes dos sistema mais concreta, possibilitando um maior entendimento do mesmo.

3.3. Quest oes de implementa ca o

37

Figura 3.10: Diagrama de classes da ferramenta

3.3.3

Organograma da ferramenta

Um organograma, segundo Chiavenato (2004), e uma representa c ao de uma estrutura organizacional, mostrando as rela co es hier arquicas da implementa c ao de um sistema. A Figura 3.11 ilustra a estrutura organizacional da ferramenta desenvolvida.

Figura 3.11: Estrutura hier arquica da ferramenta Na Figura 3.11 vemos claramente que a ferramenta est a dividida em dois m odulos (ou tipos de usu arios): aluno e professor. Vemos tamb em o papel desempenhado por eles ao fazer seu uso.

3.3. Quest oes de implementa ca o

38

3.3.4

Telas principais

Esta se c ao tem a nalidade de mostrar as principais telas da ferramenta, bem como explanar sobre suas funcionalidades. A Figura 3.12 apresenta a tela de acesso a ` ferramenta. Nota-se que a op ca o de efetuar um novo cadastro e apresentada, op c ao esta que dever a ser escolhida caso o aluno n ao tenha efetuado seu cadastro. Mediante acesso a ` ferramenta, a separa ca o entre alunos e professor e realizada. Vale ressaltar que tal separa ca o e primordial para a ferramenta, pois alunos n ao gerenciam exerc cios, tampouco t em acesso aos dados de outros alunos.

Figura 3.12: Tela de acesso ao sistema apresentado A Figura 3.13 mostra a tela de um aluno com acesso ` a ferramenta. E ao mesmo alguns passos para uma correta utiliza c ao da ferramenta. O link do Manual da linguagem G-Portugol e disponibilizado ao aluno. D uvidas referentes ` a sintaxes de comandos e estruturas podem ser sanadas com uma consulta ao Manual. Os passos s ao bastante claros e objetivos. Ressaltam a necessidade de utiliza ca o do Notepad++, bem como a escolha da codica ca o a qual o exerc cio deve ser submetido. O link de download do Notepad++ e disponibilizado. Na tela do alunos, s ao apresentados os seguintes menus, brevemente descritos a seguir:

3.3. Quest oes de implementa ca o

39

Meus dados Caso este menu seja acessado, os dados do aluno que fez a requisi ca o ser a exibido. Com exce ca o do RGM(Registro Geral de Matr cula) os demais dados(nome de usu ario, senhae e-mail) podem ser alterados, para tanto, o usu ario deve clicar sobre o cone do campo alterar. Para consultar as telas mencionadas, vide Ap endice B. Exerc cios a resolver Este menu tem a nalidade de listar os exerc cios cadastrados pelo professor. Esta listagem apresenta as seguintes informa c oes do exerc cio: n umero do exerc cio, nome do mesmo, nota m axima, data m axima de entrega, ano e avalia ca o a qual ele pertence. Um bot ao de visualiza ca o e apresentado ao aluno, onde ele pode obter mais informa co es sobre o exerc cio, como por exemplo a descri ca o do mesmo, observa c ao (caso haja) e a solu ca o do exerc cio disponibilizada pelo professor. Escrever solu c ao do exerc cio O aluno deve escolher este menu para escrever um algoritmo. O clique abrir a o Notepad++ na m aquina do aluno, sendo necess aria a instala c ao do software para que a opera ca o seja realizada. Submeter solu c ao do exerc cio Ao selecionar essa op c ao, ser a mostrada ao aluno a op ca o de sele c ao do exerc cio que ele estar a submetendo a resposta, e, em seguida, o aluno pode fazer o upload do algoritmo. A Figura 3.14 mostra a tela ap os um professor efetuar o seu acesso a ` ferramenta. E apresentado um link para que o professor fa ca o download do compilador e interpretador GPT. Outro link dispon vel e o que leva o professor ao Manual da linguagem G-Portugol. Uma s erie de passos tamb em e mostrado ao professor para que o mesmo possa utilizar a ferramenta. A tela inicial do professor mostra alguns menus, sendo estes descritos a seguir: Alunos Esta op ca o mostra os alunos e suas informa co es cadastradas na ferramenta. O cadastro de alunos pelo professor e disponibilizado neste menu. por meio deste menu que o professor faz a inser Cadastro de exerc cios E c ao de exerc cios propostos aos alunos. Para o cadastro de um novo exerc cio, devem ser inseridos: nome do exerc cio, sua descri c ao, observa ca o (caso haja), nota m axima para o exerc cio, solu ca o para o exerc cio (disponibilizado apenas ap os expirado o prazo de entrega), data m axima de entrega , ano de submiss ao e a avalia c ao que pertence. O professor tem ainda a op c ao de edi ca o ou exclus ao de um determinado exerc cio. Listar pastas dos alunos Essa op ca o mostra ao professor os RGMs e suas respectivas submiss oes. Vale ressaltar que apenas submiss oes com a extens ao .gpt e mostrada, pois somente esses arquivos mostram-se necess arios.

3.4. Testes realizados

40

Figura 3.13: Tela de um aluno com acesso ao sistema Chamar GPT Essa op ca o faz com que o compilador e interpretador GPT seja execu por meio desta op tado para o professor. E ca o que o professor far a a execu ca o e, consequentemente, a corre ca o de uma submiss ao de um aluno, atribuindo a nota pertinente para cada submiss ao. Exibir relat orios Esta op ca o refere-se a `s informa co es que o professor poder a obter atrav es da ferramenta. Alguns relat orios podem ser exibidos, como: as notas dos alunos, alunos que zeram determinados exerc cios, alunos que n ao zeram determinados exerc cios e a descri c ao de um exerc cio e sua solu c ao. Vale ressaltar que todos esses relat orios podem ser impressos, caso o professor deseje.

3.4

Testes realizados

A verica ca o da ferramenta por meio de testes e uma etapa importante do trabalho. Por meio destes, pode-se vericar o funcionamento da mesma, constatando que ela auxilia o professor na tarefa de corre ca o de algoritmos, ao mesmo tempo em que torna-se uma ferramenta de apoio aos alunos. Os passos a seguir foram seguidos, vericando que a

3.4. Testes realizados

41

Figura 3.14: Tela de um professor com acesso ao sistema ferramenta torna-se bastante u til para o processo de ensino e corre ca o de algoritmos pelo professor. Com a nalidade de exemplica ca o dos testes, telas foram mostradas, sendo que telas n ao mostradas nesta se ca o s ao mostradas no Ap endice B. Como a ferramenta e Web, os testes foram realizados utilizando o modelo clienteservidor. No cliente, h a a necessidade de instala co es de softwares. Caso o cliente seja um aluno, h a a necessidade da instala ca o do Notepad++. Caso seja um professor, o GPT deve estar instalado na m aquina do professor. Para efetuar esses testes, foi utilizada a seguinte congura c ao para a m aquina servidora: sistema operacional Windows; processador Intel dual core 1.6 GHz e com 3 GB de mem oria Ram. J a a m aquina cliente tinha as seguintes congura c oes: processador AMD Turion64 X2, 2.2 GHz e com 2GB de mem oria Ram. A respeito dos testes efetuados, primeiramente a tela de acesso foi testada no intuito de vericar se somente pessoas cadastradas t em acesso ao sistema. Ap os essa verica ca o, os teste dividiram-se nos 2 ambientes que a ferramenta apresenta: o m odulo do professor e o m odulo do aluno. No m odulo professor foram realizados os seguintes testes: Listagem dos alunos cadastrados, conforme Figura 3.15;

3.4. Testes realizados

42

Figura 3.15: Tela de alunos cadastrados na ferramenta Inser c ao, edi ca o e exclus ao de exerc cios, conforme Figura 3.16;

Figura 3.16: Tela dos exerc cios cadastrados na ferramenta Listagem das pastas com seus respectivos arquivos .gpt dos alunos cadastrados, conforme Figura 3.17; Download dos exerc cios dos alunos para o computador; O compilador e interpretador GPT foi executado para efetuar a corre ca o de uma submiss ao, conforme Figura 3.18;

3.4. Testes realizados

43

Figura 3.17: Listagem das pastas dos alunos Exibi ca o e impress ao de relat orios. No M odulo do aluno, os seguintes testes foram efetuados: Consulta aos dados do aluno que est a acessando a ferramenta; Listagem dos exerc cios cadastrados pelo professor, conforme Figura 3.16; Execu c ao do Notepad++ atrav es do menu Escrever exerc cio, conforme Figura 3.19; Submiss ao de um algoritmo. Findo esses testes, vericou-se a adequa ca o da maioria dos objetivos propostos. Objetivos n ao cumpridos foram propostos como melhorias futuras.

3.4. Testes realizados

44

Figura 3.18: Exemplo de um algoritmo submetido e sua respectiva execu c ao pelo GPT

Figura 3.19: Notepad++ aberto para o aluno escrever seu algoritmo

Cap tulo 4 Considera co es nais e melhorias futuras


4.1 Considera c oes nais

No presente trabalho foi realizada uma pesquisa em diversas fontes com a nalidade de obter informa c oes sobre o processo de ensino de algoritmos. Vericou-se que diculdades no aprendizado de algoritmos est ao longe de ser um problema facilmente resolvido e que muitas discuss oes s ao realizadas na tentativa de superar esta barreira. Concomitantemente, buscou-se obter informa co es de ferramentas para facilitar o ensino de algoritmos, que seriam capazes de fornecer-nos requisitos para a elabora c ao deste trabalho. Com esse estudo realizado, foi necess ario obter embasamento sobre linguagens de programa ca o, SGBDs e um estudo do GPT. Ap os isso, a implementa ca o p ode ocorrer. Este projeto teve o objetivo de tornar-se um aliado ao processo de ensino e, ao mesmo tempo, ajudar o professor nas corre co es de exerc cios elaborados pelos alunos. Congurase ainda por ser um estudo para a constru ca o de uma ferramenta Web, requerendo poucas instala c oes de programas. Assuntos ligados a ` linguagem Java e JSP tiveram uma aten ca o maior pelo fato de serem as linguagens utilizadas na elabora c ao deste projeto, o mesmo ocorrendo com o SGBD PostgreSql. Transcorrido o processo de implementa ca o, a fase de testes foi iniciada para aferir a funcionalidade da ferramenta. Pode-se concluir a sua validade no aux lio ao processo de ensino e tamb em corre ca o dos algoritmos enviados pelos alunos.

45

4.2. Melhorias futuras

46

4.2

Melhorias futuras

A seguir, s ao listadas poss veis melhorias que poder ao ser realizadas para tornar a ferramenta ainda mais funcional. N ao aceitar como submiss ao um algoritmo se este conter erros de sintaxe, evitando que o professor corrija mesmo os que certamente n ao ser ao executados, pois cont em esse tipo de erro. Inserir criptograa nas senhas, para que a mesma proporcione mais seguran ca aos alunos e ao professor. Cadastrar, para cada exerc cio, um conjunto de entrada e sa da esperado. Este conjunto de entrada teria o papel de submeter a resposta do aluno aos valores que foram cadastrados pelo professor neste conjunto. Sendo assim, caso o algoritmo apresente como sa da o conjunto de sa da esperado (cadastrado pelo professor), o mesmo poderia ser considerado correto e sua nota m axima armazenada no banco de dados. Esse tipo de abordagem facilitaria o processo de corre ca o, pois somente os exerc cios parcialmente corretos seriam corrigidos pelo professor. Implementar uma forma de compara ca o de submiss oes dos alunos, evitando pl agios de algoritmos entre os mesmos. Enviar, para o e-mail cadastrado, um aviso de que novos exerc cios foram cadastrados pelo professor. Melhorar a interface gr aca da ferramenta de um modo geral. Substitui ca o do Notepad++ por um mecanismo no lado do servidor para interpreta c ao correta do algoritmo no padr ao UTF-8 (sem BOM). Estudar uma solu c ao para executar o algoritmo no lado do servidor, mostrando a execu c ao passo-a-passo no lado do cliente; e ainda eliminar congura co es completas na m aquina do professor. As melhorias citadas acima podem facilitar ainda mais o objetivo deste trabalho: de auxiliar no processo de aprendizagem dos alunos, bem como o professor na corre ca o de algoritmos.

4.3. Diculdades encontradas

47

4.3

Diculdades encontradas

Uma diculdade que precisou ser vencida foi a inexperi encia com o desenvolvimento de um sistema usando arquitetura cliente-servidor. Al em disso, a programa c ao usando tecnologias Web (como o JSP) e conex oes com bancos de dados e outros aplicativos, como o GPT e Notepad++.

4.3. Diculdades encontradas

48

Refer encias
Aho, A. V.; Sethi, R.;Ullman, J. D. Compiladores: Princ pios,T ecnicas e Ferramentas. Menlo Park: Addison-Wesley, 1986. Almeida, E. S.; Costa, E. B.; Silva, K. S.; Paes, R. B.; Almeida, A. A. M.; Braga, J. D. H. AMBAP: Um Ambiente de Apoio ao Aprendizado de Programa c ao.In: WORK SHOP SOBRE EDUCAC AO EM COMPUTAC AO, 10., 2002, Florian opolis. Anais... Florian opolis: SBC, 2002. Bini, E. M., Ensino de Programa ca o com enfase na solu c ao de problemas.2010, 84 f. (disserta ca o de mestrado) - Mestrado em Ensino de Ci encia e Tecnologia, Universidade Tecnol ogica Federal do Paran a, Ponta Grossa, 2010. Chiavenato, I. Introdu c ao ` a Teoria Geral da Administra c ao. Elsevier Editora, 2004. Cormen, T. H.; Leiserson, C. E.; Rivest, R. L.; Stein, C. Algoritmos: Teoria e Pr atica. Elsevier Editora, 2002. Date, C.J. Introdu ca o a Sistemas de Banco de Dados. Editora Campus, 2000. Forbellone,A,L,V.; Eberspacher, H,F. L ogica de programa ca o. 3a Edi c ao. S ao Paulo: Pearson.2005. 1-11 p. Motil, J. and Epstein, D. (2000). JJ: a Language Designed for Beginners.
http://www.publicstaticvoidmain.com/JJ A Language Designed For Beginners LessIsMore.pdf

Santiago, R., Dazzi, R. Ferramenta de apoio ao ensino de algoritmos.In: SEMINARIO - SEMINCO,13,2004, Blumenau. Anais...,Blumenau,2004. DE COMPUTAC AO Silva , A.M.R. da; Videira, C.A.E. UML, Metodologias e Ferramentas Case. Edi co es Centro Atl antico, 2001 The Lex Yacc Page . Dispon vel em http://www.combo.org/lex yacc page/. Acessado em maio de 2010 M ario Andr e Mayerhofer Guimar aes. Um paradigma para o Desenvolvimento de Software Educacional. Dispon vel em: http://www.senac.br/BTS/222/boltec222d.htm. Acessado em julho de 2010

4.3. Diculdades encontradas

49

Oracle Corporation. Manual de Refer encia do MySQL 4.1. Dispon vel em: http://dev.mysql.com/doc/refman/4.1/pt/index.html. Acessado em julho de 2010. Manual de refer encia do MySql 4.1. Dispon vel em: http://dev.mysql.com/doc/refman/4.1/pt/index.html. Acessado em julho de 2010. Manual PostgreSql 8. Dispon vel em: http://www.postgresql.org.br/docs. Acessado em julho de 2010 Santos, P. V. dos. Caracter sticas e Especica c oes do SGBD Firebird 1.0. Dispon vel em: http://www.comunidade-rebird.org/cp/downloads/CFLP O014.PDF. Acessado em julho de 2010 Trilha do aprendizado. Trilha do Aprendizado do Java EE e Java Web. Dispon vel em: http://netbeans.org/kb/trails/java-ee pt BR.html. Acessado em julho de 2010. Uma Palavrinha sobre as Vers oes do Java. Dispon vel em: http://www.javaman.com.br/artigos/versoesJava.html. Acessado em julho de 2010. Firebird Documentation Index. Dispon vel em: http://www.rebirdsql.org/index.php?op=doc. Acessado em julho de 2010 JSP.O que e JSP. Dispon vel em: http://www.htmlsta.org/ver.php?id=1592. Acessado em julho de 2010 H ubner, J.F. Acesso a Banco de Dados em Java(JDBC).Dispon vel em: http://www.lsi.usp.br/ paiva/linguagem/jdbc.pdf. Acessado em julho de 2010. Porf rio, A. Firebird e MySQL - Parceiros ou Concorrentes. Dispon vel em: http://www.comunidade-rebird.org/cp/downloads/CFLP O024.PDF. Acessado em agosto de 2010.

Ap endice A
Gram atica da linguagem G-Portugol

Termos l exicos
Regras para identificar literais num ericos T_INT_LIT : T_OCTAL_LIT | T_HEX_LIT | T_BIN_LIT | T_DEC_LIT T_DEC_LIT : [0-9]+ T_OCTAL_LIT : 0 (c|C) [0-8]+ T_HEX_LIT : 0 (x|X) [0-9a-fA-F]+ T_BIN_LIT : 0 (b|B) [01]+ T_REAL_LIT : T_DEC_LIT+ . T_DEC_LIT+ Regras para identificar caracteres e cadeias de caracteres T_CARAC_LIT : ( ~(|\) |\ . )?

T_STRING_LIT : " ( ~( " | \ | CR | LF ) | \ . )* " Regras para identificar coment arios SL_COMMENT ML_COMMENT : "//" [^LF]* (\n)? : "/*" ( ~(*) | * ~/ )* "*/"

50

51

Regra para identificar nomes de vari aveis, fun co ~es, etc. T_IDENTIFICADOR : [a-zA-Z_] [a-zA-Z0-9_]*

Palavras reservadas da linguagem fim-vari aveis, algoritmo, vari aveis, inteiro, real, caractere, literal, l ogico, in cio, verdadeiro, falso, fim, ou, e, n~ ao, se, sen~ ao, ent~ ao, fim-se, enquanto, fa ca, fim-enquanto, para, de, at e, fim-para, matriz, inteiros, reais, caracteres, literais, l ogicos, fun c~ ao, retorne, passo

Conjunto de s mbolos n ao-terminais


algoritmo, declaracao_algoritmo, var_decl_block, stm_block, func_decls, var_decl, tp_primitivo, tp_matriz, tp_prim_pl, stm_list, stm_ret, stm_attr, fcall, stm_ret, stm_se, stm_enquanto, stm_para, expr, passo, termo, fargs, literal, func_decls, fvar_decl, fparams, fparam

Conjunto de produ co es
algoritmo : declaracao_algoritmo (var_decl_block)? stm_block (func_decls)* EOF ; declaracao_algoritmo : "algoritmo" T_IDENTIFICADOR ";" ; var_decl_block : "vari aveis" (var_decl ";")+ "fim-vari aveis" ; var_decl : T_IDENTIFICADOR ("," T_IDENTIFICADOR)* ":" (tp_primitivo | tp_matriz) ; tp_primitivo : "inteiro"

52

| | | | ;

"real" "caractere" "literal" "l ogico"

tp_matriz : "matriz" ("[" T_INT_LIT ; tp_prim_pl : "inteiros" | "reais" | "caracteres" | "literais" | "l ogicos" ;

"]")+ "de" tp_prim_pl

stm_block : "in cio" (stm_list)* "fim" ; stm_list : stm_attr | fcall ";" | stm_ret | stm_se | stm_enquanto | stm_para ; stm_ret : "retorne" expr? ";" ; lvalue : T_IDENTIFICADOR ("[" expr "]")* ;

53

stm_attr : lvalue ":=" expr ";" ; stm_se : "se" expr "ent~ ao" stm_list ("sen~ ao" stm_list)? "fim-se" ; stm_enquanto : "enquanto" expr "fa ca" stm_list "fim-enquanto" ; stm_para : "para" lvalue "de" expr "at e" expr ; passo : "passo" ("+"|"-")? T_INT_LIT ; expr : expr ("ou"|"||") expr | expr ("e"|"&&") expr | expr "|" expr | expr "^" expr | expr "&" expr | expr ("="|"<>") expr | expr (">"|">="|"<"|"<=") expr | expr ("+" | "-") expr | expr ("/"|"*"|"%") expr | ("+"|"-"|"~"|"n~ ao")? termo ; termo : fcall | lvalue | literal | "(" expr ")"

passo? "fa ca" stm_list "fim-para"

54

; fcall : T_IDENTIFICADOR "(" fargs? ")" ; fargs : expr ("," expr)* ; literal : T_STRING_LIT | T_INT_LIT | T_REAL_LIT | T_CARAC_LIT | T_KW_VERDADEIRO | T_KW_FALSO ; func_decls : "fun ca ~o" T_IDENTIFICADOR "(" fparams? ")" (":" tp_primitivo)? fvar_decl stm_block ; fvar_decl : (var_decl ";")* ; fparams : fparam ("," fparam)* ; fparam : T_IDENTIFICADOR ":" (tp_primitivo | tp_matriz) ;

S mbolo de partida
algoritmo

Ap endice B
Imagens das telas da ferramenta

Figura B.1: Tela de cadastro de alunos

55

56

Figura B.2: Novo exerc cio sendo cadastrado

Figura B.3: Modicar dados do exerc cio

57

Figura B.4: Executa o programa GPT para o professor

Figura B.5: Tela de inser ca o de nota do aluno

58

Figura B.6: Exibe/Imprime o relat orio escolhido pelo professor

Figura B.7: Vis ao geral dos dados cadastrados do aluno

59

Figura B.8: Tela de altera c ao dos dados de um aluno

Figura B.9: Tela onde o aluno visualiza os exerc cios cadastrados pelo professor

60

Figura B.10: Tela mostrando os dados dos exerc cios detalhadamente

Figura B.11: Notepad++ aberto para o aluno elaborar seu algoritmo

61

Figura B.12: Tela de submiss ao de algoritmos

Figura B.13: Verica ca o da nota de acordo com os exerc cios submetidos

Ap endice C
Partes principais do c odigo-fonte

Conex ao e verica c ao de usu arios


<% //aqui estou carregango os drivers java (jdbc)..... //e depois fazendo a conex~ ao com o banco de dados try { // carregar o driver Class.forName ("org.postgresql.Driver"); //out.println("Conseguiu carregar o driver"); //fazer a conex~ ao do banco de dados Connection con = DriverManager.getConnection("jdbc:postgresql: //localhost/TCC_login", "postgres","paulo"); if (request.getParameter("usuario") != null ) { //caminho criado para levar as informa co ~es Statement st = con.createStatement( ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY); ResultSet rs = st.executeQuery("select nivelacesso from aluno where rgm ="+ request.getParameter("usuario") + " and senha = "+request.getParameter("senha")+""); if(rs.next()){ int nivelacesso = rs.getInt("nivelacesso"); 62

63

//aqui estou verificando se o nivel de //acesso corresponde com o n vel de um aluno if(nivelacesso == 2) response.sendRedirect("index_aluno.jsp"); //se for aluno, //redireciono para a parte do aluno else response.sendRedirect("login.jsp"); //se n~ ao, volta pra tela de login } } } //tratando caso de erro em carregar os drivers catch(ClassNotFoundException erroClass) { out.println("Classe Driver JDBC n~ ao foi localizado, erro = "+erroClass); } //tratando caso de erro na conex~ ao com o banco de dados catch(SQLException erroSQL) { out.println("Erro de conex~ ao //com o banco de dados, erro = "+erroSQL); } //aqui estou carrengo os drivers java..... //e depois fazendo a conex~ ao com o banco de dados try { // carregar o driver Class.forName ("org.postgresql.Driver"); //out.println("Conseguiu carregar o driver"); //fazer a conex~ ao do banco de dados Connection con1 = DriverManager.getConnection("jdbc:postgresql: //localhost/TCC_login", "postgres","paulo"); //out.println("Conex~ ao com sucesso"); if (request.getParameter("usuario") != null ) {

64

//caminho criado para levar as informa co ~es Statement st1 = con1.createStatement(ResultSet. TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY); ResultSet rs1 = st1.executeQuery ("select nivelacesso from professor where nome = "+ request.getParameter("usuario") + " and senha_prof = "+ request.getParameter("senha")+""); if(rs1.next()){ int nivelacesso1 = rs1.getInt("nivelacesso"); //aqui estou verificando se o nivel de acesso //corresponde com o n vel de um professor if(nivelacesso1 == 1) response.sendRedirect("index_prof.jsp"); //se for aluno, redireciono para a parte do professor else response.sendRedirect("login.jsp"); //se n~ ao, volta pra tela de login } } } //tratando caso de erro em carregar os drivers catch(ClassNotFoundException erroClass) { out.println("Classe Driver JDBC n~ ao foi localizado, erro = "+erroClass); } //tratando caso de erro na conex~ ao com o banco de dados catch(SQLException erroSQL) { out.println("Erro de conex~ ao com o banco de dados, erro = "+erroSQL); } //mando tbm o nome do usu ario q esta sendo logado, //para fazer um controle nas outras paginas String nome = request.getParameter("usuario"); session.setAttribute("usuario", nome); %>

65

Faz a chamada no Notepad++ para o aluno


//pacotes necess arios para essa classe import java.io.*; import java.applet.*; //applet para abrir o notepad++ no cliente, //essa fun c~ ao e usada na pagina do aluno. public class AbrirAplicativo extends Applet{ @Override public void init(){ try{ Runtime.getRuntime().exec("cmd.exe /c start notepad++.exe"); //fun ca ~o q inicia o processo do notepad++ }catch(IOException e){ e.printStackTrace(); } } //bloco principal da classe public static void main(String[] args){ AbrirAplicativo a = new AbrirAplicativo(); a.init(); } }

66

Faz a submiss ao do exerc cio do aluno


<% //vetor q vai receber os exerc cios submetidos e depois colocar no .zip Vector history = upBean.getHistory(); for (int i=0;i<history.size();i++) { UploadParameters up = (UploadParameters) history.elementAt(i); out.println("<li>Nome do arquivo: "+up.getFilename()+"<br>"); String aux = up.getFilename(); //fa co a conex~ ao com o banco, cada arquivo q o aluno submete, //salvo o rgm e o nome do exerc cio //arquivos iguais, sempre fica o mais novo no banco e na pasta try { //carregar o driver Class.forName ("org.postgresql.Driver"); //fazer a conex~ ao do banco de dados Connection con = DriverManager.getConnection("jdbc:postgresql: //localhost/TCC_login", "postgres", "paulo"); //caminho criado para levar as informa co ~es Statement st = con.createStatement(); String sqlinsertexercicio = "insert into solucao (rgm, nome_exercicio, nota) values ("+nome+","+aux+", 0)"; st.executeUpdate(sqlinsertexercicio); String sqlinsertsolucao = "delete from solucao t where t.id_solucao not in (select max(id_solucao) from solucao t_dup where t_dup.nome_exercicio = t.nome_exercicio and t_dup.rgm = t.rgm)"; st.executeUpdate(sqlinsertsolucao); }

67

//tratando caso de erro em carregar os drivers catch(ClassNotFoundException erroClass) { out.println("Classe Driver JDBC n~ ao foi localizado, erro = "+erroClass); } //tratando caso de erro na conex~ ao com o banco de dados catch(SQLException erroSQL) { out.println("Erro de conex~ ao com o banco de dados, erro = "+erroSQL); } } } else if ( (todo != null) && (todo.equalsIgnoreCase("cleanstore")) ) { upBean.resetStore(); out.println("<BR>Store cleaned"); } else out.println("<BR> todo="+todo); } %>

68

Chama o GPT para o professor


//pacotes necess arios para essa classe import java.io.*; import java.applet.*; //applet para abrir o notepad++ no cliente, //essa fun c~ ao e usada na pagina do aluno. public class Gpt extends Applet{ public void init() { try{ Runtime.getRuntime().exec("cmd /c start C:\\gpt\\teste.bat"); //fun ca ~o q inicia o processo do batch para o gpt } catch(IOException iOException){ iOException.printStackTrace(); } } //bloco principal da classe public static void main(String[] args){ Gpt a = new Gpt(); a.init(); } }