Você está na página 1de 66

UNIVERSIDADE DO VALE DO ITAJAÍ

CENTRO DE CIÊNCIAS TECNOLÓGICAS DA TERRA E DO MAR


CURSO DE CIÊNCIA DA COMPUTAÇÃO

DESENVOLVIMENTO DE AMBIENTE DE COMPETIÇÃO DE


PROGRAMAÇÃO INTEGRADO AO PORTUGOL STUDIO

por

Gleison de Souza Malheiros

Itajaí (SC), novembro de 2014


UNIVERSIDADE DO VALE DO ITAJAÍ
CENTRO DE CIÊNCIAS TECNOLÓGICAS DA TERRA E DO MAR
CURSO DE CIÊNCIA DA COMPUTAÇÃO

DESENVOLVIMENTO DE AMBIENTE DE COMPETIÇÃO DE


PROGRAMAÇÃO INTEGRADO AO PORTUGOL STUDIO

Área de Educação em Computação

por

Gleison de Souza Malheiros

Relatório apresentado à Banca Examinadora


do Trabalho Técnico-Científico de Conclusão
do Curso de Ciência da Computação para
análise e aprovação.
Orientador: André Luís Alice Raabe, Dr.

Itajaí (SC), novembro de 2014


AGRADECIMENTOS

Aos meus amigos Jailson Nicoletti, Gilson Malheiros e Elisangela Miranda, que
tiveram paciência de ler meu trabalho e sugerir melhorias.

Ao professor André Luís Alice Raabe, meu orientador, por partilhar comigo parte de
seu conhecimento e experiência para a criação deste trabalho.

A minha família, por me apoiar em tudo.


Só se pode alcançar um grande êxito quando nos mantemos fiéis a nós mesmos.
- Friedrich Wilhelm Nietzsche
RESUMO

MALHEIROS, Gleison de Souza. Desenvolvimento de ambiente de competição de


programação integrado ao Portugol Studio. Itajaí, 2014. 66 p. Trabalho Técnico-Científico
de Conclusão de Curso (Graduação em Ciência da Computação) – Centro de Ciências
Tecnológicas da Terra e do Mar, Universidade do Vale do Itajaí, Itajaí, 2014.

Engenheiros e cientistas de computação têm como necessidade em sua passagem pela vida
acadêmica, desenvolver lógica de programação e aprender a programar. Este é um ponto que
leva muitos alunos destes cursos a desistirem, pois é um conteúdo que exige o
desenvolvimento de um raciocínio lógico e que nem sempre todos conseguem atingi-lo.
Atualmente existem diversas linguagens e ferramentas de apoio ao ensino de programação,
dentre elas, a linguagem Portugol, que facilita o ensino de programação devido a sua
combinação de português e símbolos comuns em linguagens de programação de alto nível, e
também se pode destacar a IDE Portugol Studio, que é um ambiente de desenvolvimento para
programas escritos nesta linguagem. A criação do Ambiente de Competição de Programação
Online contribui com o ensino de programação, possibilitando aos alunos a participação em
torneios e dessa forma, fomentando o conhecimento e incentivando a melhora continua do
aprendizado através do estimulo que as competições têm. Um dos maiores diferenciais desse
trabalho está em juntar a linguagem Portugol com um ambiente de competição, o que não
existe atualmente, com isso sendo permitido o beneficio para alunos iniciantes na área
utilizarem este tipo de ambiente motivador e que geralmente não têm espaço em outros
sistemas de competição devido ao foco destes serem programadores com maior experiência.
Este trabalho também une a facilidade de se utilizar o Portugol Studio para construir
programas e integra-lo a este ambiente de competição, no qual o aluno tem um aparato de
exercícios e fácil acesso a torneios.

Palavras-chave: Portugol. Portugol Studio. Competição de programação.


ABSTRACT

Engineers and computer scientists have a duty during their academic life, to develop
programming logic and learn how to program. This is a point that makes many students to
give up these courses because there are certain difficulties in such tasks. Currently there are
several languages and programming tools that help to learn, among them the Portugol
language that facilitates the teaching of programming due to its combination of Portuguese
and common symbols of high level programming languages. Can be also highlighted the
Portugol Studio IDE, which is a development environment for programs written in this
language. This project contributes to the teaching of programming by an environment of
online programming competition that allows students to participate in tournaments, thus
fostering knowledge and encouraging continuous improvement of learning. One of the major
difference points of this project involves join the Portugol language with an environment of
competition, which does not currently exist, that way being possible to motivate beginners in
the area which usually had no space in other systems of competition due to the focus of these
systems is the most experienced programmers. This work also connects the ease of use
Portugol Studio to build programs and this competitive environment, where the student has
an exercise apparatus and easy access to tournaments.

Keywords: Portugol. Portugol Studio. Programming contest.


LISTA DE FIGURAS

Figura 1. Agrupamento de exercícios e menu geral do sistema UVa Online Judge ............. 21
Figura 2. Tela apresentada após a autenticação no sistema Mooshak ................................... 22
Figura 3. Ranking por universidade do sistema URI Online Judge ...................................... 23
Figura 4. Sistema WebPortugol e exemplo de código da linguagem Portugol 1.0 ............... 25
Figura 5. IDE Portugol Studio 2.0 e exemplo de código da linguagem Portugol 2.0 ........... 26
Figura 6. Tela do perfil de usuário do site Stackoverflow .................................................... 30
Figura 7. Telas do aplicativo Foursquare .............................................................................. 31
Figura 8. Caso de uso do jogador do sistema ........................................................................ 38
Figura 9. Caso de uso do juiz do sistema .............................................................................. 39
Figura 10. Caso de uso do administrador do sistema .............................................................. 39
Figura 11. Detalhamento do módulo ASTP-Core ................................................................... 40
Figura 12. Detalhamento do módulo ASTP-Portal ................................................................. 41
Figura 13. Detalhamento do módulo ASTP-WebService ....................................................... 42
Figura 14. Modelagem de entidade e relacionamento ............................................................. 44
Figura 15. Tela de autenticação do sistema ............................................................................. 45
Figura 16. Tela de novo cadastro no sistema .......................................................................... 46
Figura 17. Tela de cadastro de Instituição ............................................................................... 46
Figura 18. Tela de cadastro de torneios, informações gerais .................................................. 47
Figura 19. Tela de cadastro de torneios, vinculação dos problemas ....................................... 47
Figura 20. Tela de cadastro de torneios, vinculação das pessoas ............................................ 48
Figura 21. Tela de cadastro de problemas ............................................................................... 48
Figura 22. Tela de envio de respostas de problemas ............................................................... 49
Figura 23. Tela da lista de submissões de respostas ................................................................ 49
Figura 24. Tela de consulta dos rankings ................................................................................ 50
Figura 25. Tela de apresentação do cliente do AST-Prog ....................................................... 51
Figura 26. Tela de sugestão para o posicionamento do AST-Prog ......................................... 52
Figura 27. Tela de login, esqueci a senha e novo cadastro no plugin do Portugol Studio ...... 52
Figura 28. Tela de menu, alterar cadastro e vincular-se a instituição no plugin do
Portugol Studio ...................................................................................................... 53
Figura 29. Tela de cadastrar-se em torneios, submeter respostas a problemas e
minhas submissões no plugin do Portugol Studio ................................................. 53
Figura 30. Tela de perfil de pessoas, perfil de torneios e rankings no plugin do
Portugol Studio ...................................................................................................... 54
Figura 31. Tela de ranking final do torneio de teste ................................................................ 55
LISTA DE QUADROS

Quadro 1. Protocolo de busca .............................................................................................. 16


Quadro 2. Trabalhos similares selecionados ....................................................................... 17
Quadro 3. Comparativo dos trabalhos similares e o AST-Prog .......................................... 20
Quadro 4. Exemplo de XML de exercício. .......................................................................... 28
Quadro 5. Quadro de nivelamento geral de ranking ........................................................... 33
Quadro 6. UC01. Login ....................................................................................................... 61
Quadro 7. UC02. Cadastrar-se como jogador...................................................................... 61
Quadro 8. UC03. Cadastrar-se em torneios ......................................................................... 61
Quadro 9. UC04. Submeter respostas de problemas ........................................................... 61
Quadro 10. UC05. Cosulta de perfil de pessoa...................................................................... 62
Quadro 11. UC06. Consulta de perfil de torneio ................................................................... 62
Quadro 12. UC07. Consulta rankings ................................................................................... 62
Quadro 13. UC08. Login ....................................................................................................... 62
Quadro 14. UC09. Cadastro de torneios ................................................................................ 63
Quadro 15. UC10. Cadastro de problemas ............................................................................ 63
Quadro 16. UC11. Cadastro de instituições .......................................................................... 63
Quadro 17. UC12. Cadastro de pessoas ................................................................................ 63
Quadro 18. UC13. Cadastro de assuntos ............................................................................... 63
Quadro 19. Dicionário de dados do modelo ER .................................................................... 64
LISTA DE ABREVIATURAS E SIGLAS

AST-Prog Ambiente de Suporte a Torneios de Programação


ER Entidade e relacionamento
GIE Grupo de Informática na Educação
ICPC ACM International Collegiate Programming Contest
IDE Integrated Development Environment
IOI International Olympiad for Informatics
TTC Trabalho Técnico-Científico de Conclusão de Curso
UNIVALI Universidade do Vale do Itajaí
XML eXtensible Markup Language
SUMÁRIO

1 INTRODUÇÃO .................................................................................................................. 12
1.1 PROBLEMATIZAÇÃO..................................................................................................... 13
1.2 FORMULAÇÃO DO PROBLEMA .................................................................................. 13
1.2.1 Solução Proposta .......................................................................................................... 13
1.3 OBJETIVOS ..................................................................................................................... 13
1.3.1 Objetivo Geral .............................................................................................................. 14
1.3.2 Objetivos Específicos .................................................................................................... 14
1.4 METODOLOGIA ............................................................................................................. 14
1.5 ESTRUTURA DO TRABALHO ........................................................................................ 15

2 FUNDAMENTAÇÃO TEÓRICA ..................................................................................... 16


2.1 ANÁLISE DE TRABALHOS SIMILARES ........................................................................ 16
2.1.1 Trabalhos acadêmicos sobre ambientes de competição ............................................... 17
2.1.2 Ambientes de competição na visão de usuário ............................................................. 21
2.2 PORTUGOL E PORTUGOL STUDIO ............................................................................ 24
2.2.1 Correção dinâmica presente no Portugol Studio ......................................................... 27
2.3 GAMIFICAÇÃO............................................................................................................... 29

3 DESENVOLVIMENTO .................................................................................................... 32
3.1 DOCUMENTAÇÃO DO SISTEMA ................................................................................. 34
3.1.1 Papéis............................................................................................................................ 34
3.1.2 Definição dos requisitos e regras de negócio ............................................................... 35
3.1.3 Modelos de caso de uso ................................................................................................ 38
3.1.4 Tecnologias utilizadas e organização da implementação ............................................ 40
3.1.5 Modelagem de entidade e relacionamento ................................................................... 43
3.1.6 Interfaces de acesso ao sistema .................................................................................... 44
3.1.7 Integração com o corretor de problemas ..................................................................... 50
3.1.8 Integração com Portugol Studio ................................................................................... 51
3.2 TESTE PILOTO E RESULTADOS .................................................................................. 54

4 CONCLUSÕES .................................................................................................................. 56
4.1 TRABALHOS FUTUROS ................................................................................................. 57

APÊNDICE A. LISTAGEM DOS CASOS DE USO........................................................... 61

APÊNDICE B. DICIONÁRIO DE DADOS DO MODELO ER......................................... 64


12

1 INTRODUÇÃO

O aprendizado de linguagens de programação é uma parte importante da vida


acadêmica do estudante de computação, pois ele dá o embasamento para as posteriores
construções de sistemas que o mesmo venha a desenvolver. Segundo Mitchel (2003), as
linguagens de programação fornecem as abstrações, os princípios de organização e estruturas
de controle que os programadores usam para escrever bons programas, mas em paralelo com
essa ideia Pereira Júnior e Rapkiewicz (2004) relatam que a aprendizagem de programação de
computadores por alunos de graduação tem sido difícil e que é preciso realizar pesquisas para
sua melhoria.

Pode-se identificar que há uma disparidade entre esses valores: por um lado se tem
toda a importância do aprendizado da programação e, também se percebe a grande dificuldade
de aprendizagem desses conceitos. A linguagem Portugol nasceu para tentar suprir essas
necessidades, pois possui as estruturas de programação necessárias para o desenvolvimento
do raciocínio algorítmico e permite uma transição suave para as linguagens de alto nível
(MANSO; MARQUES; OLIVEIRA, 2009).

De acordo com Rodrigues (2004), um dos grandes problemas do modo tradicional de


ensino reside no fato do mesmo não gerar interesse do aluno pela disciplina. Sendo assim este
trabalho propôs a criação de um ambiente de competição de programação para que os alunos
possam ter mais um ponto de motivação para aprendizagem da matéria. Este trabalho
colabora com o desenvolvimento de novos recursos baseados no Portugol 2.0 e se integra com
ferramentas já desenvolvidas, como o corretor de exercícios de programação e o Portugol
Studio, sendo que ambas são ferramentas criadas e mantidas pela Universidade do Vale do
Itajaí (UNIVALI) e que são utilizadas para a programação com a linguagem Portugol 2.0.

Um dos pontos observados nas competições e sistemas de competição avaliados é que


o público alvo geralmente é formado por programadores experientes. Com o intuito de
agregar funcionalidades ao Portugol Studio, este trabalho também considerou em sua criação
ser um ambiente de competição para programadores com diferentes níveis de experiência, no
qual, por exemplo, um aluno com conhecimento básico possa ter desafios e rankings de
acordo com sua capacidade.
13

Atualmente o Portugol 2.0 possui um acervo de problemas algorítmicos para uso como
exercícios de programação, e também já possui suporte a correção automática desses
exercícios. Ambas as funcionalidades são utilizadas neste trabalho.

1.1 PROBLEMATIZAÇÃO
Uma boa habilidade de programação é esperada de engenheiros e cientistas da
computação, mas alunos e professores concordam que o aprendizado de programação é
difícil, especialmente nos primeiros anos (DE CASTRO et al., 2012). Dessa forma, cada vez
mais são úteis ferramentas que auxiliem o professor a motivar os estudantes a aprenderem.

1.2 FORMULAÇÃO DO PROBLEMA


Ambientes de competição de programação notoriamente auxiliam a motivar os
estudantes (ASTRACHAN; KHERA; KOTZ, 1993). No entanto, um ambiente de competição
com a linguagem Portugol, voltado a aprendizagem e que inclua usuários iniciantes não
existe, e essa é a questão a ser desenvolvida neste trabalho.

1.2.1 Solução Proposta


Competições geralmente trazem diversos retornos, por exemplo, servem como
incentivo para estudantes se inscreverem em uma disciplina ou praticar o que foi aprendido,
servem para construir uma comunidade de participantes, podem ser usadas como tarefas
extracurriculares, ilustram para estudantes, professores e o público em geral a natureza da
disciplina, dentre outras (CORMACK et al., 2006). Sendo assim, este trabalho criou um
ambiente online de competição de programação, focado na linguagem Portugol 2.0, visando
atingir alunos com diferentes níveis de conhecimento, através de categorização de problemas
e rankings de nivelamento. Como atualmente não existe um ambiente de competição que
possa ser integrado a linguagem Portugol 2.0 este trabalho busca também unir a facilidade de
aprendizagem do Portugol com a motivação que um ambiente de competição proporciona.

1.3 OBJETIVOS
Neste tópico cita-se o Objetivo Geral e os Objetivos Específicos propostos para este
Trabalho Técnico-Científico de Conclusão de Curso.
14

1.3.1 Objetivo Geral


Desenvolver um ambiente de suporte a competição para programas escritos em
Portugol 2.0.

1.3.2 Objetivos Específicos


• Analisar ambientes de competição de programação buscando identificar pontos
positivos que podem ser agregados a este trabalho;

• Especificar os papéis dos usuários e as regras de pontuação para a submissão de


respostas pelos estudantes;

• Definir as formas de comunicação entre o ambiente e os clientes;

• Implementar o servidor da competição;

• Especificar alterações necessárias no Portugol Studio para que ele se torne um


cliente do ambiente de competição;

• Realizar um teste piloto com um grupo de docentes e estudantes.

1.4 METODOLOGIA
A metodologia utilizada para formulação da Fundamentação Teórica deste Trabalho
Técnico-Científico foi composta por pesquisas em bibliografias e em ferramentas de busca
online realizadas em torno do tema competições de programação e gamificação, que
permitiram a aquisição do conhecimento de materiais relevantes, de modo a adquirir o
embasamento necessário sobre os assuntos. Também durante a etapa de pesquisa foi estudado
e testado a ferramenta Portugol Studio, assim como os ambientes de competição UVa Online
Judge, Mooshak e URI Online Judge.

No Capítulo Desenvolvimento, foram utilizados os conhecimentos adquiridos no


decorrer do curso de Ciência da Computação, em destaque para Engenharia de Software e
Programação que foram cruciais para as definições do ambiente proposto e o
desenvolvimento do sistema em geral. Também foi utilizado o conhecimento adquirido nos
testes de ambientes de competições e nas pesquisas de trabalhos similares, onde foram
abordadas as experiências de diversos autores sobre a criação de ambientes de competição e a
documentação destes. Por fim, foi documentada a integração do sistema com o Portugol
15

Studio e foram feitos testes no sistema desenvolvido com uma turma de alunos através do
auxilio uma professora que tinha um prévio conhecimento do projeto.

1.5 ESTRUTURA DO TRABALHO


Este documento está estruturado em quatro capítulos. O Capítulo 1 Introdução,
apresenta uma visão geral do trabalho. No Capítulo 2 , Fundamentação Teórica, é apresentada
a análise de trabalhos similares feita durante a etapa de pesquisa do projeto. A análise é
dividida em duas partes, a visão dos criadores de ambientes de computação e a visão dos
usuários destes sistemas. Neste Capítulo também é apresentada a linguagem Portugol, o
sistema Portugol Studio e é abordado o conceito de gamificação. O Capítulo 3 ,
Desenvolvimento, apresenta o projeto detalhado do sistema desenvolvido, sua documentação,
como foi implementado o sistema, apresentando a metodologia utilizada no desenvolvimento
e os testes do sistema. No Capítulo 4 , apresentam-se as Conclusões, onde são abordados os
resultados do trabalho, mudanças de algumas estratégias de desenvolvimento do trabalho,
dentre outros. O texto ainda inclui dois Apêndices que complementam as informações
apresentadas no trabalho.
16

2 FUNDAMENTAÇÃO TEÓRICA

A Fundamentação Teórica do trabalho está pautada em analisar ambientes de


competição voltados à programação. Esta análise adota dois enfoques: examinar trabalhos
acadêmicos que descrevem estes ambientes e averiguar os ambientes na perspectiva do
usuário que participa da competição. A infraestrutura existente para apoio a correção de
programas é apresentada e explicada na Seção 2.2 que se refere à linguagem Portugol e as
ferramentas associadas. Na Seção 2.3 é abordado o conceito de gamificação e sua
significância para o trabalho.

2.1 ANÁLISE DE TRABALHOS SIMILARES


A análise de trabalhos similares tem importância central neste projeto. Buscou-se
avaliar publicações e sistemas correlatos ao tema proposto com o objetivo de agregar
informações que possam ser úteis ao trabalho desenvolvido, e também aprender através dos
erros e dificuldades vivenciadas por outros pesquisadores.

Para realizar a seleção de trabalhos similares foram utilizados sites de buscas de


trabalhos científicos. Durante este processo foram sendo definidas estratégias e critérios para
a inclusão e exclusão de trabalhos, conforme descrito no Quadro 1.

Quadro 1. Protocolo de busca


• Google Scholar, um indexador de sites de conteúdo científico
(GOOGLE SCHOLAR, 2005).
• ScienceDirect, uma biblioteca digital de trabalhos científicos em
Fontes de pesquisa geral (ELSEVIER, 1997).
• ACM Digital Library, uma associação voltada para a
disseminação de conteúdo científico focado na área de computação
(ACM, 1996).
As buscas foram feitas conforme as palavras-chaves:
• Programming Contest
Estratégia de • Computing Competition
pesquisa • Online Judge
Foram analisados os documentos conforme critérios de seleção e
exclusão.
17

• Os termos de busca devem estar contidos no título ou abstract.


• Foram considerados apenas trabalhos de Conclusão de Curso
Critérios de
Superior e Pós-graduação, artigos científicos e também teses de
inclusão
Mestrados e Doutorados, focados no tema deste trabalho.
• Foram considerados trabalhos na língua portuguesa e inglesa.
Critérios de • Trabalhos com título ou abstract que não contemplam o contexto
exclusão da pesquisa.
• Leitura do abstract.
Estratégia para • Leitura dos objetivos gerais e específicos do estudo.
extração dos dados • Extrair informações referentes ao título do projeto, objetivo do
estudo, contribuição e descrição.

2.1.1 Trabalhos acadêmicos sobre ambientes de competição


Dentre quatorze documentos examinados foram selecionados quatro trabalhos para
serem analisados, os quais contribuíram significativamente para a pesquisa realizada e para o
projeto do sistema desenvolvido neste trabalho. Os trabalhos são listados no Quadro 2
juntamente com uma breve descrição e a contribuição que este proporcionou.

Quadro 2. Trabalhos similares selecionados


Structure, Scoring and Purpose of Computing Competitions.
Título
(CORMACK et al., 2006)
Este trabalho teve como intuito fazer um apanhado geral das principais
competições em computação e em cada uma descrever sua estrutura, formas
de pontuação e propósito. Os autores possuem uma visão de que as
competições precisam ser mais abrangentes quanto ao seu público, e
ressaltam que atualmente é dada maior ênfase nos resultados do que no
aprendizado do aluno.
Descrição
São comparadas as principais competições de computação existentes, tais
como o ACM International Collegiate Programming Contest (ICPC),
International Olympiad for Informatics (IOI), e TopCoder, e também são
abordadas outras competições tanto de computação como matemática, física,
etc.
O trabalho também descreve quais pontos devem ser levados em consideração
18

quando se é concebida uma nova competição, dessa forma criando um guia


informal sobre os assuntos que devem ser abordados durante esse processo. O
trabalho toma o cuidado de sempre levar em conta qual o impacto das regras
da competição tem sobre a motivação do competidor.
As contribuições deste trabalho foram fundamentais para o projeto, pois ele
evidencia quais pontos são importantes em uma competição de programação,
como por exemplo:
• A necessidade de identificar um vencedor.
• Elementos de pressão.
Contribuição
• Priorização do conhecimento vs. habilidade.
• Colaboração vs. competição.
• Níveis de dificuldade.
Além disso, a visão dos demais concursos oferece uma forma de contrastar
este projeto com grandes eventos da área.
Strategies for Encouraging Individual Achievement in Introductory
Título
Computer Science Courses. (ROBERTS, 2000)
Este trabalho descreve como e quais competições são usadas para motivar os
alunos da Universidade de Stanford. É abordada a utilização dessas
competições como uma tarefa extra para alunos que buscam um desafio além
Descrição
do que é visto em sala de aula. Este material também tem como objetivo
relatar a experiência obtida com a aplicação de competições e os resultados
dessa experiência.
Este trabalho contribuiu ao demonstrar como é possível motivar e
Contribuição proporcionar formas diferentes de ensino de programação, gerando
perspectivas de como as competições incentivam o aprendizado.

A Distributed System for Learning Programming On-line


Título
(DE CASTRO et al., 2012)
Este trabalho visa apresentar o sistema de aprendizagem de programação
EduJudge e os resultados obtidos com o seu uso. O EduJudge é um sistema
distribuído dividido em três partes: um servidor de avaliação, um repositório
Descrição
de objetos e uma interface de usuário. No trabalho é exibido como a estrutura
do EduJudge foi montada visando a modularidade do sistema e com isso
facilitando sua manutenção. Também é exposto o experimento feito para
19

avaliar a ferramenta e os resultados referentes à aceitação dos alunos.


Este trabalho contribui fornecendo uma visão geral de um sistema similar à
proposta deste projeto, dessa forma, possibilitando a avaliação de quais
Contribuição pontos os projetos podem ter em comum e quais são interessantes adaptar.
O experimento apresentado também deu uma base de conhecimento para o
teste piloto executado neste trabalho.
Mooshak: a Web-based multi-site programming contest system
Título
(LEAL; SILVA, 2003)
Este trabalho mostra como foi aplicado o sistema Mooshak como servidor de
competições de programação e é fornecida uma visão geral do ambiente assim
como a visão especifica de cada parte envolvida com o sistema, como por
Descrição
exemplo, o competidor, o juiz e o administrador do sistema. A experiência
obtida com essa aplicação é muito bem descrita e é dado um foco especial na
arquitetura do servidor do Mooshak.
Este trabalho contribuiu apresentando uma visão de um sistema muito bem
embasado e consolidado de competições de programação. O conteúdo deste
documento é complementar ao dos outros trabalhos estudados, visto este ter o
Contribuição foco maior na estrutura do servidor e não somente nas regras e dinâmica de
jogo. Dentre os pontos observados, o conceito de perfis de usuários é o que
melhor atendeu a proposta deste trabalho e serviu como inspiração para o
trabalho.

O Quadro 3 foi criado a partir da análise dos sistemas e competições referenciados nos
trabalhos similares e as características comparadas foram definidas com base nos objetivos
deste projeto. O sistema criado neste TTC é o Ambiente de Suporte a Torneios de
Programação (AST-Prog) e ele consta no quadro comparativo. A intenção dessa comparação é
prover alguns aspectos da perspectiva dos criadores de ambientes de competição.
20

Quadro 3. Comparativo dos trabalhos similares e o Ambiente de Suporte a Torneios de


Programação
Categ. de Categ. de Linguagens de Ano
Competição analisada OnLine Rank.
problemas usuários entrada Iníc.
ACM International
Collegiate Programming Não Sim Não Não C, C++ e JAVA 1970
Contest (ICPC)
International Olympiad
Não Sim Não Não C, C++ e Pascal 1989
for Informatics (IOI)
C++, Java, C#,
TopCoder algorithm
Sim Sim Sim Sim Visual Basic e 2001
competition
Python
UVa Online Judge & C, C++, Pascal e
Sim Sim Sim Não 1995
EduJudge Java
C, Pascal, C++ e
Mooshak Sim Sim Não Não 2002
Java
Ambiente de Suporte a
Torneios de Sim Sim Sim Sim Portugol 2.0 2015
Programação

O Quadro comparativo dos trabalhos similares traça um paralelo entre o Ambiente de


Suporte a Torneios de Programação e as principais competições examinadas (Quadro 3).
Pode-se observar que competições de programação existem a mais de quarenta anos e que
rankings e suporte a multilinguagens são pontos bastante comuns entre elas. Também é
possível perceber que sistemas que categorizem problemas e usuários não são tão
corriqueiros. Dessa forma, o Quadro destaca que o diferencial deste projeto é ser um ambiente
de competição de programação online com um foco inicial na linguagem Portugol 2.0, mas
principalmente ser um ambiente que categoriza problemas e usuários de forma que seja
possível adequar diferentes competidores e níveis de conhecimento.

Um ponto importante analisado nos trabalhos correlatos pesquisados é que existe uma
ampla aceitação da comunidade acadêmica, tanto docente quanto discente, sobre as
competições de programação e também é possível perceber que o número de participantes
sempre cresce em comparação com o evento anterior. Sendo assim estes trabalhos foram
escolhidos por terem uma proposta semelhante ao deste projeto e eles contribuíram de
maneira a fornecer informações que serviram de base para a Fundamentação Teórica e ao
Desenvolvimento do trabalho.
21

2.1.2 Ambientes de competição na visão de usuário

Os trabalhos científicos apresentados na Seção 2.1.1 têm como intuito dar uma
perspectiva dos criadores de ambientes de competição, desta forma este tópico pretende
agregar mais informações avaliando os ambientes de competição a partir da experiência como
usuário de alguns sistemas online desse gênero.

Com base nas pesquisas foram escolhidos três sistemas para serem analisados e a
seleção destes ocorreu de forma a dar foco aos que possuem mais pontos em comum com o
tema deste projeto. Os testes com estes sistemas ocorreram objetivando a utilização em três
pontos: visualização das listas de exercícios, como funciona a submissão das respostas de
questões e os rankings apresentados para o usuário. Segue nos próximos três subtópicos uma
descrição dos sistemas detalhando itens como: menu de problemas, treinamento, exercícios,
rankings, pontuação, tentativas e tratamento de erros.

2.1.2.1 UVa Online Judge

UVa Online Judge foi desenvolvido em 1995 na Universidade de Valladolid na


Espanha (REVILLA, 1995). É um sistema de interface simples e com o propósito básico de
disponibilizar problemas e permitir a submissão das respostas. Com mais de 4300 problemas,
o menu tem uma organização hierárquica e de acordo com competições desenvolvidas pelos
criadores das questões, conforme é possível ver na Figura 1.

Figura 1. Agrupamento de exercícios e menu geral do sistema UVa Online Judge


Fonte: Revilla (1995)
22

Não há limite de tentativas e os erros são exibidos nas listas de submissão dos
exercícios de cada usuário. O ranking do sistema se baseia unicamente no número de
problemas resolvidos e os filtros são feitos por período. Os principais pontos positivos do site
são a grande quantidade de problemas e as diferentes linguagens para a submissão (C, C++,
Pascal e Java). O sistema também possui uma tela de perfis de usuários onde é possível ver
todos os seus dados e são apresentados gráficos que demonstram o nível de experiência do
mesmo.

2.1.2.2 Mooshak

Mooshak é um sistema online judge1 que tem como seu principal atrativo a emulação
de ambientes de competições já existentes, como por exemplo, ICPC contest e IOI contest
(LEAL; SILVA, 2002). O propósito do sistema é focado em competições, ou seja, não há uma
área destinada à prática dos problemas. O usuário se autentica e já entra na competição
escolhida para participar, conforme se pode ver na Figura 2.

1
Online Judge são sistemas online para validação de programas em competições de programação.
23

Figura 2. Tela apresentada após a autenticação no sistema Mooshak


Fonte: Leal; Silva (2002)

O Mooshak apresenta os seus recursos na competição que o usuário está autenticado,


ou seja, o menu de problemas se restringe aos problemas da competição, assim como o
ranking e as pontuações. O sistema cumpre o que propõe, possui uma interface simples
facilitando a usabilidade, mas carece de uma boa apresentação visual.

2.1.2.3 URI Online Judge

O URI Online Judge é um sistema criado pela Universidade Regional Integrada (URI)
de Erechim no Rio Grande do Sul no ano de 2011 (BEZ; TONIN, 2011). O sistema apresenta
um layout limpo e bem organizado facilitando a navegabilidade. O menu de problemas é
categorizado em oito classes onde o fator de agrupamento dos exercícios é o tipo de problema
abordado na questão, como por exemplo, matemática, strings, grafos, etc. Não há uma opção
específica para treinamento, mas todos os problemas do site são disponíveis para submissão
de resposta e a pontuação conta para os rankings gerais do site. A pontuação e a classificação
nos rankings são feitas de acordo com a contabilização dos exercícios resolvidos, tentados e
submetidos. Dentre os rankings apresentados o que mais se destaca é o por universidade, onde
é possível comparar os alunos de determinada instituição, conforme evidenciado na Figura 3.
24

Figura 3. Ranking por universidade do sistema URI Online Judge


Fonte: Bez; Tonin (2011)

Os exercícios estão disponíveis em português e inglês, e são compostos pela descrição,


como será feita a entrada de dados, como deverá ser apresentada a saída de dados e exemplos
de entrada e saída. Não há mínimo de tentativas para a submissão de exercícios e o tratamento
de erros é uma simples apresentação do erro ao executar o exercício. O site possui um sistema
de envio de e-mails que avisa os usuários cadastrados sobre novos concursos e informações
gerais do site. Atualmente a ferramenta está em sua versão beta, mas as funcionalidades são
bem desenvolvidas e ele se mostrou um ambiente inspirador para o aprendizado de
programação.

2.1.2.4 Considerações a Respeito dos Sistemas Avaliados

A análise dos trabalhos feitos no papel de usuário permitiu observar aspectos


importantes em uma ferramenta online de competição de programação. Foi observado nos três
sistemas testados que o retorno da correção dos problemas não é dado em tempo real, pois as
submissões vão para uma fila de correções afim de não sobrecarregar o servidor. Este aspecto
não havia sido observado na análise dos trabalhos acadêmicos da Seção 2.1.1 . Os testes nos
ambientes também serviram como inspiração para diversos requisitos a serem incluídos neste
trabalho como possuir uma interface simples, enviar e-mails de divulgação de torneios,
possuir telas de consulta de perfis e gráficos dos jogadores.

2.2 PORTUGOL E PORTUGOL STUDIO

Um dos diferenciais deste projeto é a criação de um ambiente onde alunos de


diferentes níveis de conhecimento, em especial alunos iniciantes, possam interagir e usufruir
de uma competição de programação. Tendo como base esse preceito, foi escolhido o Portugol
como linguagem alvo para o ambiente criado. O Portugol foi criado para auxiliar no ensino de
lógica e na iniciação do aprendizado de linguagens de programação. Segundo Esmin (1998), o
aprendizado de lógica de programação é simplificado e facilitado através do uso do Portugol,
que é uma pseudo-linguagem algorítmica utilizada para descrição das tarefas a serem
executadas no computador tendo como finalidade a solução de problemas.

A linguagem Portugol tem como característica a simplicidade de seu código,


deixando-o enxuto de forma a focar na lógica do problema, mas sua sintaxe possui diversos
25

recursos, conforme relatado por Manso, Marques e Oliveira (2009). A linguagem possui cinco
tipos de dados: inteiro, real, caracter, lógico e cadeia (string). Apresenta suporte a constantes,
vetores e matrizes destes cinco tipos. Dispõe instruções para entrada e saída de dados via
console, operações relacionais, aritméticas e lógicas, desvios condicionais, três tipos de loops
(enquanto, para e faça-enquanto), suporte a funções com passagem de parâmetros por valor e
por referência, e suporte a recursividade. Detém suporte a bibliotecas que possibilitam
ampliar o potencial da linguagem. Estas são algumas das características que fazem o Portugol
ser uma boa linguagem introdutória.

O Grupo de Informática na Educação (GIE) da UNIVALI vem realizando pesquisas


no conceito de facilitação de aprendizado de programação ao longo dos últimos oito anos. O
foco principal do grupo tem sido criar ferramentas que busquem reduzir os obstáculos à
aprendizagem dos conceitos iniciais de programação. Nesta linha foram criados o ambiente
ALICE (GIRAFFA; RAABE, 2006), o WebPortugol (HOSTINS; RAABE, 2007), o BIPIDE
(RAABE; VIEIRA; ZEFERINO, 2010) e mais recentemente o Portugol Studio
(NOSCHANG, 2012; PELZ, 2011). Na Figura 4 é possível ver o sistema WebPortugol com
um exemplo de código da linguagem Portugol 1.0.

Figura 4. Sistema WebPortugol e exemplo de código da linguagem Portugol 1.0


26

Fonte: Hostins; Raabe (2007)

O Portugol Studio é um Integrated Development Environment (IDE), em tradução


livre, ambiente de desenvolvimento integrado, que utiliza a linguagem Portugol 2.0. Esta
ferramenta é desenvolvida e mantida pela UNIVALI e serve como apoio ao ensino de lógica
de programação.

O Portugol Studio é um software livre suscetível a receber colaborações e expansões


de suas funcionalidades. O núcleo do Portugol desenvolvido por Noschang (2012) formalizou
a sintaxe do Portugol 2.0 e seu analisador sintático gera uma representação dos programas em
formato de uma Árvore Sintática Abstrata. Esta notação vem desde então sendo adotada em
outras ferramentas desenvolvidas pelo GIE como o BIPIDE (MANNES, 2013) e o corretor de
questões criado por Pelz (2014).

Figura 5. IDE Portugol Studio 2.0 e exemplo de código da linguagem Portugol 2.0
Fonte: Pelz (2011)
27

2.2.1 Correção dinâmica presente no Portugol Studio

Atualmente o Portugol Studio possui um sistema de correção que usa as entradas e


saídas do sistema para a validação do algoritmo. Baseado em casos de teste, este sistema
funciona simulando a entrada de dados com valores pré-determinados e testando a saída de
dados esperada conforme o valor de entrada (PELZ, 2014). Ao final da correção é gerado um
escore relacionado à quantidade de testes que obtiveram êxito.

A correção está associada a um arquivo em formato eXtensible Markup Language


(XML) contendo exercícios, onde há a descrição do problema e os casos de teste. O Portugol
Studio interpreta o XML e faz a avaliação automática. No 0 é exibido um exemplo de XML
de exercício do Portugol Studio.
28

Quadro 4. Exemplo de XML de exercício

<?xml version="1.0" encoding="UTF-8"?>


<questao xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="schema.xsd">
<testes>
<caso>
<entradas>
<entrada tipodado="inteiro">29</entrada>
<entrada tipodado="inteiro">08</entrada>
<entrada tipodado="inteiro">1976</entrada>
<entrada tipodado="inteiro">14</entrada>
<entrada tipodado="inteiro">07</entrada>
<entrada tipodado="inteiro">2012</entrada>
</entradas>
<saidas>
<saida tipodado="inteiro">35</saida>
</saidas>
</caso>
<caso>
<entradas>
<entrada tipodado="inteiro">21</entrada>
<entrada tipodado="inteiro">03</entrada>
<entrada tipodado="inteiro">1992</entrada>
<entrada tipodado="inteiro">20</entrada>
<entrada tipodado="inteiro">03</entrada>
<entrada tipodado="inteiro">2012</entrada>
</entradas>
<saidas>
<saida tipodado="inteiro">19</saida>
</saidas>
</caso>
<caso>
<entradas>
<entrada tipodado="inteiro">12</entrada>
<entrada tipodado="inteiro">04</entrada>
<entrada tipodado="inteiro">1986</entrada>
<entrada tipodado="inteiro">14</entrada>
<entrada tipodado="inteiro">09</entrada>
<entrada tipodado="inteiro">2012</entrada>
</entradas>
<saidas>
<saida tipodado="inteiro">26</saida>
</saidas>
</caso>
</testes>
<enunciado>Faça um programa que solicita a data de nascimento de uma
pessoa e a data atual (pedindo respectivamente o dia,mês e ano) e exiba a
idade desta pessoa em anos (A data deve ser armazenada em 3 variáveis
inteiras para dia, mês e ano).</enunciado>
</questao>

Fonte: Pelz (2014)

Pode-se perceber no exemplo do 0 que o exemplo possui a tag “enunciado” que


descreve o problema que deve ser resolvido. Também é apresentado a tag “testes” onde são
definidos todos os casos de teste em que as entradas e saídas serão usadas para validar o
29

resultado do problema. O ambiente de competição de programação proposto irá utilizar esta


tecnologia, que está presente atualmente no Portugol Studio, para validar os problemas.

2.3 GAMIFICAÇÃO

Este trabalho se propôs a transformar o ensino convencional da lógica e linguagem de


programação adicionando um novo recurso as aulas do professor, um ambiente de competição
de programação que pretende motivar o aluno no exercício destes conhecimentos. Esta é a
premissa deste trabalho e também um exemplo prático de gamificação.

Gamificação é usar a mecânica de jogos em contextos que não tem ligação direta com
jogos (CUNNINGHAM; ZICHERMANN, 2011). Desde 2002 o termo gamificação (do
original Gamification) é difundido como o uso de mecanismos de jogos orientados ao objetivo
de resolver problemas práticos ou de despertar engajamento de um público. Conforme
Navarro (2013), suas utilizações podem ir desde a esfera profissional, escolar e social da vida
de pessoas com identidade, residência, classe social e faixas etárias diferentes. Para
transformar um conteúdo que não é lúdico em um sistema gamificado é necessário utilizar
elementos de jogos. Os principais elementos citados por Cunningham e Zichermann (2011)
são:

• Níveis, que são pontos que servem para medir a experiência dos usuários;

• Rankings, que são tabelas de classificação de usuários através da comparação de


algum tipo de pontuação;

• Sistema de recompensa através de medalhas/conquistas (badges, pins);

• Sistemas para premiar, recuperar, trocar ou presentear pontos;

• Competição entre usuários.

Diversos sistemas, por exemplo, o site Stackoverflow e o aplicativo Foursquare, estão


se gamificando com o intuito de buscar novos usuários e criar estímulos para que eles
continuem utilizando o sistema. Na Figura 6 pode-se ver a página de perfil de um usuário do
site Stackoverflow, que é um fórum online que permite que pessoas cadastrem dúvidas ou
respostas sobre assuntos referentes à tecnologia. Neste exemplo de sistema gamificado é
30

possível notar que o usuário possui diversos parâmetros que quantificam sua experiência e
participação no site, e uma área de badges conquistados pelo usuário.

Figura 6. Tela do perfil de usuário do site Stackoverflow.


Fonte: Alves (2012).

Na Figura 7 é apresentado o aplicativo de celular Foursquare que é utilizado para fazer


“checkin” em lugares do mundo real utilizando o GPS do telefone. Como recompensas, o
usuário é premiado com badges quando visita novos lugares e ele pode se tornar o “prefeito”
de um lugar que ele sempre visita. A pontuação do sistema é dada conforme o numero de
checkin feitos e o título de prefeito é dado ao usuário que mais frequentar determinado lugar.
Com isso é fomentada a competição entre os usuários para manter-se ou tornar-se o prefeito.
31

Figura 7. Telas do aplicativo Foursquare.


Fonte: Alves (2012).

Este trabalho adota algumas técnicas de gamificação no ambiente de competição


criado, sendo: competição entre usuários através de torneios e classificação e rankeamento de
usuários de acordo com sua pontuação no ambiente. Conforme mencionado por Brian Burke
em entrevista para Galisteu (2014), gamificação é uma tendência no setor de tecnologia da
informação e cada vez mais esse conceito está sendo incorporado em diversos sistemas.
32

3 DESENVOLVIMENTO

Neste Capítulo é apresentado o “Ambiente de Suporte a Torneios de Programação


(AST-Prog)”, que é o sistema proposto e criado neste trabalho. Também será abordado, junto
com uma descrição geral, a documentação do sistema e os resultados obtidos com os testes do
ambiente desenvolvido neste Trabalho Técnico-Científico de Conclusão de Curso.

O trabalho consiste em um ambiente de competição de programação que utiliza o


Portugol 2.0 como linguagem dos problemas a serem solucionados e integra ao ambiente de
competição a IDE Portugol Studio. Visando atingir alunos com diferentes graus de
conhecimento, o ambiente possui problemas com categorias de dificuldade e rankings que
classificam os usuários.

O ambiente funciona da seguinte forma: o usuário acessa o portal do AST-Prog (ou


alguma IDE que implemente a comunicação com o ambiente, como por exemplo o Portugol
Studio) e se cadastra. Todo usuário cadastrado automaticamente está inserido em um torneio
padrão que nunca expira e no qual o usuário pode pesquisar diferentes problemas para
resolver. Os problemas resolvidos com sucesso contarão pontos para o torneio padrão, dessa
forma criando os rankings gerais para o sistema.

Os problemas são organizados em níveis de dificuldade. O usuário pode ganhar ou


perder pontos ao resolver estes problemas. A resolução com sucesso adiciona pontos, mas ao
ultrapassar o número máximo de tentativas para a submissão o usuário perde pontos. Essa
regra não é um impeditivo para que aconteçam inúmeras submissões para o mesmo problema,
mas serve para que o usuário seja incentivado a testar várias vezes sua resposta antes de
submetê-la ao sistema. Além das questões resolvidas com sucesso, também existe questões
incompletas. São questões que não passaram em todos os casos de testes para sua validação,
pois o usuário chegou próximo de sua resposta final. No caso de problemas incompletos o
usuário também ganha uma pontuação determinada. As regras de pontuação foram
construídas de forma a incentivar o desenvolvimento do aluno com a diferença de pontuação
entre os níveis. Em outros ambientes não é feito, sendo levado em conta somente o número de
problemas resolvidos. Quanto aos valores das pontuações foram definidos visando pontuar
harmoniosamente os quatro níveis. A 0 exibe a valoração dos problemas resolvidos.
33

Tabela 1. Tabela de valoração de problemas


Pontuação Pontuação Punição por exceder
Níveis Max. Tentativas Acerto Incompleto máximo de tentativas
1 Iniciante ilimitado 2 1 0
2 Fácil 10 4 2 -1
3 Médio 6 7 4 -2
4 Difícil 3 10 5 -3

Os rankings são parte muito importante para o sistema, pois é a partir deles que o
usuário vai obter o feedback de seus resultados e de certa forma poder comparar seu
desempenho com o resto dos participantes. O sistema possui três tipos de rankings que irão
exibir os dados referentes ao torneio padrão do sistema, eles são:

• Ranking geral, que exibe a listagem simples de usuários com sua colocação no
ranking conforme os exercícios resolvidos, tentados e submetidos;

• Ranking por instituição, que funciona da mesma forma que o ranking geral,
mas exibe apenas usuários de determinada instituição;

• Ranking por nível, que permite visualizar de forma geral ou por instituição
qual o nível que o usuário se encontra, criando um atrativo a mais para a
competição entre usuários. No Quadro 5 é possível observar os níveis de
usuários e a pontuação exigida para mudança de nível.

Quadro 5. Quadro de nivelamento geral de ranking.

Níveis Pontuação Mínima


1 Zombie 0
2 Hobbit 30
3 Chapolin 90
4 Ninja 180
5 Goku 300
6 Batman 400
7 Jedi 500
8 Chuck Norris 600

Até este momento foi apresentado que o sistema se comporta como um grande torneio
que todos os usuários fazem parte, mas este trabalho oferece ainda a possibilidade de criar
torneios dinâmicos. Os torneios dinâmicos são competições criadas e configuradas pelo juiz,
que possuem data de inicio e término, uma lista de exercícios selecionados e quanto aos
participantes existem três modalidades de participação:
34

• Público, onde qualquer usuário cadastrado pode participar;

• Por instituição, onde qualquer usuário vinculado à instituição do torneio pode


participar;

• Específico, onde somente os usuários selecionados para o torneio podem


participar, sendo estes escolhidos pelo juiz do torneio.

Na Seção 3.1 é detalhado o funcionamento do ambiente e suas regras.

3.1 DOCUMENTAÇÃO DO SISTEMA


Esta Seção apresenta a especificação do sistema de competição criado e é dividida em
oito partes: (i) Papéis; (ii) Definição dos requisitos e regras de negócio; (iii) Modelos de caso
de uso; (iv) Tecnologias utilizadas; (v) Modelagem de entidade e relacionamento; (vi)
Interfaces do sistema; (vii) Integração com o corretor de problemas; (viii) Integração com
Portugol Studio.

3.1.1 Papéis
O sistema possui três tipos de usuários:

• Administrador: que cadastrará os juízes, as instituições e deverá manter o


sistema;

• Juiz: que irá cadastrar os problemas a serem resolvidos e os torneios;

• Jogador: é quem irá utilizar o ambiente com o intuito competitivo e de estudo.

Em um exemplo de ambiente universitário, o jogador seria o aluno e o juiz seria o


professor. O administrador é quem irá manter o sistema e cadastrar os professores, neste
projeto o Laboratório de Soluções de Software da UNIVALI deverá se encarregar deste papel.
35

3.1.2 Definição dos requisitos e regras de negócio


Nesta seção são definidos os requisitos funcionais, não funcionais e as regras de
negócio do sistema desenvolvido.

Os seguintes requisitos funcionais são identificados para o sistema:

RF01 - O sistema permite o Jogador se cadastrar no ambiente.

RF02 - O sistema permite o Jogador se cadastrar em torneios.

RF03 - O sistema permite o Jogador submeter respostas de problemas.

RF04 - O sistema permite o Jogador, Juiz e Administrador consultarem perfis


de jogadores.

RF05 - O sistema permite o Jogador, Juiz e Administrador consultarem perfis


de um torneio.

RF06 - O sistema permite o Jogador, Juiz e Administrador consultarem


rankings.

RF07 - O sistema permite o Juiz cadastrar torneios.

RF08 - O sistema permite o Juiz cadastrar problemas.

RF09 - O sistema permite o Administrador cadastrar de instituições.

RF10 - O sistema permite o Administrador cadastrar Administradores e Juízes.

RF11 - O sistema permite o Administrador cadastrar assuntos para


classificação de problemas.

Os seguintes requisitos não funcionais foram identificados para o sistema:

RNF01 - O sistema possui dois tipos de interface:

− Página Web: contempla a administração do ambiente pelo


administrador e o juiz, e também onde jogadores utilizam o sistema.
36

− WebService: onde o sistema é de uso exclusivo para participação em


torneios, sem a parte administrativa do sistema.

RNF02 - O sistema utiliza a correção dinâmica do Portugol Studio para a


correção dos problemas escritos na linguagem Portugol 2.0.

RNF03 - O sistema utiliza banco de dados MySQL e ser programado na


linguagem Java.

RNF04 - O sistema é compatível com o browser Google Chrome versão 35.0 e


Mozilla Firefox versão 33.0.

RNF05 – O sistema contém três perfis com acessos restritos:

− Administrador: Administrador geral do ambiente.

− Juiz: Planejador e coordenador de torneios.

− Jogador: Participante de torneios.

As seguintes regras de negócio foram identificadas para o sistema:

RN01 - Os problemas são qualificados em um de quatro níveis de dificuldade.

RN02 - Cada nível de dificuldade tem uma pontuação para o acerto, questão
incompleta e punição ao exceder o máximo de submissões da dificuldade.

RN03 - Conforme o nível de dificuldade há um número de tentativas de


submissões de resposta para que o jogador não perca pontos no ranking.

RN04 - O jogador pode submeter quantas vezes quiser a resposta do problema,


mas só pontua na primeira vez para cada torneio.

RN05 - As posições dos jogadores nos rankings são definidas conforme a


pontuação adquirida resolvendo problemas.

RN06 - O cadastro de problemas e torneios é feito exclusivamente por juízes e


administradores.

RN07 - Há rankings gerais, por instituição, pelo torneio e por nível do jogador.
37

RN08 - O nível do jogador é uma classificação dos jogadores através da


pontuação deles no ambiente, conforme a pontuação apresentada na 0 e nivelamento
apresentado no Quadro 5, ambos na Seção 3 .

RN09 - Em um torneio o jogador pode escolher a questão, lê-la e decidir se


pretende resolve-la ou não.

RN10 - A questão só é dada como certa quando passar em todos os casos de


teste do corretor.

RN11 - Se a questão não for respondida corretamente o sistema mostra o


motivo do erro.

RN12 - O juiz pode criar agrupamento de jogadores para um torneio.

RN13 - O juiz pode adicionar problemas e jogadores, se o torneio ainda estiver


sem vencedor.

RN14 - O vencedor do torneio é quem obtiver maior pontuação no fechamento


do torneio. Em caso de empate será definido as colocações conforme os valores dos
respectivos atributos: menor número de tentativas, maior número de exercícios
completos, maior numero de exercícios incompletos e data da última submissão de
resposta.
38

3.1.3 Modelos de caso de uso


Nesta seção são apresentados os diagramas de casos de uso do ambiente. Os diagramas
foram divididos a partir dos três atores do sistema: administrador, juiz e jogador. Os papéis de
cada ator são definidos conforme sua utilização do sistema. No Apêndice A está o a listagem
dos casos de uso apresentados nesta Seção. Na Figura 8 é apresentado o papel do jogador,
onde é possível notar que o juiz herda os casos de uso do jogador.

Figura 8. Caso de uso do jogador do sistema


39

Na Figura 9 é apresentado o papel do juiz, onde é possível notar que o administrador


herda os casos de uso do juiz. Também é explícito que as funções deste ator estão somente
disponíveis através das páginas web, assim como na Figura 10, que apresenta os casos de uso
de responsabilidade do administrador do sistema.

Figura 9. Caso de uso do juiz do sistema

Figura 10. Caso de uso do administrador do sistema


40

3.1.4 Tecnologias utilizadas e organização da implementação


O sistema se utiliza de diversas tecnologias e foi desenvolvido modularizado para uma
melhor organização e facilidade de manutenções. Programado em Java, o sistema se conecta
em um banco MySQL para persistir seus dados e os dois módulos de interface estão em um
servidor Apache Tomcat. Os três módulos do sistema são: ASTP-Core, ASTP-Portal e o
ASTP-WebService.

3.1.4.1 ASTP-Core

O módulo ASTP-Core é o núcleo da aplicação. Este módulo tem como intuito agregar
as regras de negócio e manter os dados do sistema para que os outros dois módulos possam
trabalhar da mesma forma e a partir das mesmas regras. O controle de acesso as informações,
de acordo com os perfis é feito nos outros dois módulos que tratam das interfaces do sistema.
Dentro deste módulo ainda existe as subdivisões de pacotes, conforme possível ver na Figura
11.

Figura 11. Detalhamento do módulo ASTP-Core

Este módulo do sistema possui uma arquitetura simples e voltada para atender as
chamadas feitas pelos outros dois módulos. Para que haja a integração, este é módulo é uma
biblioteca “jar” que os outros incorporam.
41

3.1.4.2 ASTP-Portal

O módulo ASTP-Portal é a interface web do sistema que fornece acesso ao módulo


administrativo, para administradores e juízes, e também é possível utilizar o ambiente pelos
jogadores para a participação de torneios. As páginas foram desenvolvidas em JSP e utilizam
JSTL e a biblioteca de estilos Bootstrap SB Admin 2 (START BOOTSTRAP, 2014). Visando
segurança de acesso, as páginas restritas da administração foram dividas em pastas para que
os filtros do sistema façam o controle de acesso. A Figura 12 detalha a organização da
implementação.

Figura 12. Detalhamento do módulo ASTP-Portal

Conforme é possível ver na Figura 12 o portal recebe as requisições e valida com os


filtros o que o usuário pode acessar. A partir desse ponto o servlet de controle interpreta qual
página/ação que o usuário deseja e encaminha para uma classe de controle específico. O
módulo ASTP-Core está incorporado no portal e trabalha em conjunto com as classes
específicas. Na Seção 3.1.6 são apresentadas as telas de interfaces do portal de acesso ao
sistema.
42

3.1.4.3 ASTP-WebService

O módulo ASTP-WebService foi criado para permitir que as IDE da linguagem


Portugol 2.0, em especial o Portugol Studio, possam integrar-se no AST-Prog. Este módulo
implementa todo o sistema de torneios que o Portal possui e funciona da mesma forma, mas a
interface gráfica fica por conta da IDE específica. Ele é um WebService do tipo SOAP que
recebe um XML com as requisições. Assim para ter acesso as informações é necessário o
usuário se autenticar no sistema primeiro.

Toda requisição precisa ser feita de forma que o WebService saiba o que a aplicação
cliente está solicitando e ao obter a resposta a aplicação cliente deve entender o resultado do
WebService. A fim de definir um protocolo de comunicação foi criado uma biblioteca que
facilita a criação do XML que é trocado entre as duas partes. O ASTP-Utils é a biblioteca
criada com a definição do protocolo de comunicação do WebService, com ela é possível gerar
a requisição desejada a partir de objetos do Java e obter a resposta do servidor em objetos
também. A comunicação continua sendo por XML, mas antes do envio da requisição e logo
após obter a resposta há uma função que transforma os XML em objetos e vice-e-versa, dessa
forma facilitando a manipulação da informação nos clientes. Todo cliente que quiser
implementar o AST-Prog poderá se utilizar dessa biblioteca. A Figura 13 esclarece como
funciona a dinâmica de conexão com o WebService.

Figura 13. Detalhamento do módulo ASTP-WebService


43

O módulo ASTP-Core está incorporado no WebService e trabalha em conjunto com a


classe de controle. Na Seção 3.1.8 são apresentadas às interfaces propostas para o
WebService.

3.1.5 Modelagem de entidade e relacionamento


Para modelar a entidade e relacionamento (ER) do banco de dados MySQL, foi
utilizado a ferramenta MySQL Workbench 6.2 CE. A modelagem pode ser visualizada na
Figura 14. Uma visão mais detalhada dos campos de cada tabela pode ser visualizada no
Apêndice B. Segue descrição das principais tabelas do sistema:

• PESSOA – Armazena os dados dos usuários do sistema.

• INSTITUICAO – Armazena os dados das instituições do sistema


(universidades, escolas, empresas, etc.).

• PROBLEMA – Armazena os dados dos problemas que são usados no ambiente


de competição.

• ASSUNTO – Armazena os assuntos em que são classificados os problemas.

• TORNEIO – Armazena os dados dos torneios do sistema.

• SUBMISSAO – Armazena as respostas dos problemas dos torneios.


44

Figura 14. Modelagem de entidade e relacionamento

3.1.6 Interfaces de acesso ao sistema


Como pôde
de ser visto nas Seções 0e 3.1.4.3 existem duas interfaces de acesso ao
sistema, uma através de páginas de web (portal) e outra através de um WebService. Ambas
estão localizadas em um servidor mantido pela UNIVALI.

O WebService implementa apenas os casos de uso do jogador do sistema e possui uma


operação chamada “requisicao” que é por onde deve ser enviada os XML de requisição do
cliente. O WebService pode ser acessado através do link2 e o seu WSDL pode ser visto no
link3. Não existem telas de sistema definidas na integração com o WebService, mas este
trabalho tem na Seção 3.1.8 protótipos
os de como podem ser criadas as telas para a integração
com o Portugol Studio.

2
http://siaiacad17.univali.br:8080/ASTP-WebService/ASTProgWS
http://siaiacad17.univali.br:8080/ASTP
3
http://siaiacad17.univali.br:8080/ASTP
http://siaiacad17.univali.br:8080/ASTP-WebService/ASTProgWS?wsdl
45

O portal possui interface de acesso através de páginas da web e pode ser acessado no
link4. A seguir serão exibidas as principais telas do sistema junto com uma breve descrição de
sua funcionalidade. Na Figura 15 é exibida a tela de autenticação do sistema.

Figura 15. Tela de autenticação do sistema

4
http://siaiacad17.univali.br:8080/ASTP-Portal/astp
46

Todo usuário ainda não cadastrado pode se cadastrar a partir do link “Novo cadastro”.
Na Figura 16 é exibida a tela de primeiro cadastro.

Figura 16. Tela de novo cadastro no sistema

Após o login, o usuário entra no sistema e tem os menus liberados para acesso
conforme o cadastro de usuário dele. A Figura 17 mostra o acesso a listagem de cadastro de
instituições feitas pelo administrador. Este cadastro é simples e serve para registrar as
instituições que são vinculadas a usuários do sistema.

Figura 17. Tela de cadastro de Instituição


47

A Figura 18 exibe o cadastro de torneios, esta que os administradores e juízes do


sistema têm acesso para utilizar. O cadastro de torneios é dividido em três partes: informações
gerais, vinculação de problemas e escolha de participantes.

Figura 18. Tela de cadastro de torneios, informações gerais

Após o cadastro de informações gerais é necessário escolher quais os problemas que


farão parte do torneio a ser cadastrado, e é isto que a Figura 19 apresenta.

Figura 19. Tela de cadastro de torneios, vinculação dos problemas


48

A última etapa do cadastro de torneio é a vinculação dos participantes, conforme visto


na Figura 20.

Figura 20. Tela de cadastro de torneios, vinculação das pessoas

Na tela representada na Figura 21 é possível ver como é o cadastro de problemas que


pode ser feito pelo administrador ou o juiz. Note que há um campo onde é carregado o XML
do problema a ser cadastrado.

Figura 21. Tela de cadastro de problemas


49

O jogador pode se cadastrar em um torneio e submeter respostas para os problemas


vinculados ao torneio. Na Figura 22 pode-se ver a tela de envio das respostas de problemas.

Figura 22. Tela de envio de respostas de problemas

Após o envio de repostas o jogador pode consultar o status de sua resposta na tela de
listagem das submissões, conforme Figura 23.

Figura 23. Tela da lista de submissões de respostas


50

É possível acompanhar em tempo real os rankings do sistema e de torneios


específicos. Na Figura 24 é apresentada a tela de consulta de rankings do torneio.

Figura 24. Tela de consulta dos rankings

3.1.7 Integração com o corretor de problemas


A correção automática dos algoritmos é uma parte importante do sistema e essa
tecnologia foi criada, para a linguagem Portugol 2.0, por Pelz (2011). A integração entre este
trabalho e o corretor automático se dá através das bibliotecas do corretor que são três: o
Portugol-Nucleo, Portugol-Corretor e o Portugol-Relator-Erros. A partir dessas bibliotecas o
AST-Prog cria uma thread que carrega o XML de um problema para os objetos das
bibliotecas, carregar a resposta do usuário do sistema e solicita a correção do problema. A
correção em média leva em torno de um a dois segundos e assim que é corrigido o usuário já
pode consultar no sistema. Além de definir se a resposta está correta, as bibliotecas também
apresentam retornos quando a resposta está incorreta ou incompleta, por exemplo:

• Não foi possível compilar o programa, o código contém erros.

• A sua resposta está demorando muito para executar, verifique se não há algum laço
de repetição infinito.

• Houve uma incompatibilidade de tipos na entrada de dados, verifique se os tipos


das variáveis utilizadas nas chamadas ao comando leia condizem com o enunciado.
51

• Nenhuma saída foi contabilizada. Verifique se foi utilizado o comando escreva e se


os tipos das variáveis utilizadas nas chamadas ao comando escreva condizem com
o enunciado.

3.1.8 Integração com Portugol Studio


A proposta deste trabalho não foi realizar a integração entre o ambiente de competição
e o Portugol Studio, mas deixar preparado a documentação necessária para que a IDE possa
ser integrada. A intenção é que a documentação de integração sirva também para outras IDE’s
que queiram participar do ambiente. A documentação definida para auxiliar no
desenvolvimento da integração entre o AST-Prog e o Portugol Studio é um cliente para o
WebService e protótipos de telas das funcionalidades do ambiente na IDE.

Com o cliente é possível ter o embasamento de como é feita a conexão com o


ambiente e os resultados das requisições ao WebService. Implementado em Java, assim como
o Portugol Studio, o cliente está disponível junto com os códigos fontes do sistema para ser
utilizado como consulta ao criar-se a integração. Na Figura 25 pode-se ver a tela inicial do
cliente do AST-Prog.

Figura 25. Tela de apresentação do cliente do AST-Prog


52

Os protótipos de telas para o Portugol Studio são sugestões para a interface do


WebService na IDE. Planejou-se fazer essa integração na forma de “plugin”, onde o ambiente
atuaria como coadjuvante do sistema visto o exercício da programação na IDE ainda ser o
foco, mas o AST-Prog estaria presente e opcional ao uso. Na Figura 26 é exemplificado onde
poderia ficar o plugin para o AST-Prog.

Figura 26. Tela de sugestão para o posicionamento do AST-Prog

As telas implementadas no plugin seguem o mesmo padrão das telas vistas na Seção
3.1.6 e são sugestões de interfaces para o Portugol Studio. Na Figura 27 pode-se observar os
protótipos das telas de login, esqueci a senha e novo cadastro.

Figura 27. Tela de login, esqueci a senha e novo cadastro no plugin do Portugol Studio
53

As telas de menu, alterar cadastro e vincular-se a instituição podem ser vistas na


Figura 28, que se tratam de funções disponíveis após a autenticação no sistema.

Figura 28. Tela de menu, alterar cadastro e vincular-se a instituição no plugin do Portugol
Studio

A Figura 29 apresenta a tela para “cadastrar-se em torneios”, onde é exibido somente


torneios que o usuário não participa ainda, mas que está apto participar. A tela de submeter
respostas de problemas, em que o usuário poderá selecionar o torneio e o problema que deseja
submeter e enviar o código fonte em que está trabalhando em sua tela. Também é apresentada
a tela das minhas submissões, onde o usuário pode conferir as respostas de suas últimas
submissões.

Figura 29. Tela de cadastrar-se em torneios, submeter respostas a problemas e minhas


submissões no plugin do Portugol Studio
54

As telas de visualização de perfis e rankings são exibidas na Figura 30 e tem como


principio dar o feedback do aluno perante seu desenvolvimento no ambiente.

Figura 30. Tela de perfil de pessoas, perfil de torneios e rankings no plugin do Portugol
Studio

3.2 TESTE PILOTO E RESULTADOS


O teste piloto é realizado para que o sistema tenha suas funções avaliadas, sendo
julgada quanto ao seu funcionamento e o retorno esperado para cada função e regra de
negócio. Visando validar o ambiente AST-Prog, após a conclusão do desenvolvimento foram
definidos pontos a serem avaliados em um teste piloto, sendo eles:

• Um usuário precisa se cadastrar no ambiente e ter o perfil de juiz;

• Este usuário precisa criar um torneio e vincular problemas nele;

• Pelo menos cinco usuários precisam se cadastrar no ambiente e ter o perfil de


jogador;

• Esses jogadores precisam participar de um torneio e submeter respostas a


problemas deste torneio;

• Quanto ao sistema, ele deve se comportar conforme o que foi definido em suas
regras. Os principais pontos a serem avaliados são:

o Rankings, que devem estar de acordo com os totais de cada aluno;


55

o Após a data de término do torneio este se encerra e não pode mais


receber submissões.

Tendo-se pontos de teste definidos entrou-se em contato com uma professora da


UNIVALI para que ela auxiliasse nos testes. Foi instalado o sistema no servidor da UNIVALI
e cadastrados 25 problemas para serem usados em torneios, a professora acessou o sistema e
se cadastrou com sucesso, após autenticar-se no sistema ela trocou sua senha e através do
menu de torneios cadastrou o torneio para o teste dos jogadores. O torneio de teste conteve 15
problemas e o sistema se comportou conforme o esperado no momento da criação. A fim de
completar a segunda parte dos testes a professora solicitou a turma do curso de Engenharia
Mecânica do 1º período da UNIVALI para que testassem o ambiente. Os alunos se
autenticaram no sistema, se vincularam ao torneio criado e submeteram diversas repostas de
problemas.

O teste foi bem sucedido, o sistema se comportou conforme o esperado, o ranking e o


fechamento do torneio funcionaram devidamente. Resumindo o teste em números,
participaram 2 professores e 8 alunos, houveram 86 tentativas de submissão de respostas,
dessas foram respondidos 47 problemas completos e 4 problemas foram deixados
incompletos, ao total foram somados 144 pontos, sendo que o jogador que ficou em primeira
colocação passou de nível. Na Figura 31 é apresentado o ranking final do torneio de teste
piloto.

Figura 31. Tela de ranking final do torneio de teste


56

4 CONCLUSÕES

Este trabalho apresentou o desenvolvimento de um ambiente para auxiliar a


aprendizagem de algoritmos e programação com base em uma abordagem de competição. É
discorrido sobre como a linguagem Portugol e o Portugol Studio são ferramentas de apoio ao
ensino e como são utilizadas neste trabalho para auxiliar nesta etapa primordial dos cursos de
engenharia e ciência da computação.

Os objetivos deste trabalho estão divididos em duas partes: foram levantadas


informações necessárias para a criação do ambiente de programação e definidas as regras do
sistema. A segunda parte tratou do desenvolvimento do ambiente de competição de
programação e teste do sistema. O objetivo geral, desenvolver um ambiente de suporte a
competição para programas escritos em Portugol 2.0 está cumprido conforme evidencia todo
o documento do TTC. Quanto aos objetivos específicos, também estão cumpridos. Na Seção
2.1 do Capítulo 2 consta a análise dos ambientes de competição de programação. Na Seção
3.1 do Capítulo 3 estão especificadas as regras de pontuação e papéis dos usuários. Nas
Seções 3.1.4.2 e 3.1.4.3 do Capítulo 3 estão definidas as formas de comunicação entre o
ambiente e seus clientes. O servidor de competição foi implementado conforme consta na
Seção 3.2 do Capítulo 3. A documentação para a integração com o Portugol Studio está
especificada conforme consta na Seção 3.1.8 do Capítulo 3. E o teste piloto foi executado com
um grupo de estudantes e docentes conforme consta na Seção 3.2 do Capítulo 3.

As contribuições deste trabalho podem se estender as esferas do aluno e professor no


contexto acadêmico. O ambiente de competição pode auxiliar diretamente alunos que estão
aprendendo a programar com a linguagem Portugol 2.0 e professores, que podem utilizar o
sistema para incentivar o aprendizado dos alunos e disponibilizar torneios como forma de
tarefas extracurriculares.

Concluindo, este Trabalho Técnico-Científico de Conclusão de Curso fundamentou-se


em contribuir para o ensino de programação, construir uma base de conhecimento sobre
ambientes de competição de programação, definir as bases do sistema proposto e desenvolver
o ambiente. Roberts (2000) descreve que teve o prazer de ver alunos talentosos ficarem tão
animados com os desafios e competições que ele os viu aprenderem em uma semana mais do
que muitos estudantes aprenderam durante todo o semestre, o objetivo deste trabalho é que o
ambiente criado inspire dessa mesma forma os seus usuários.
57

4.1 TRABALHOS FUTUROS


Este trabalho deixa em aberto algumas ideias que podem ser utilizadas para possíveis
trabalhos futuros, tais como:

• Alterar o sistema AST-Prog para ser compatível com exercícios resolvidos na


linguagem C, que também é usada para o ensino de conceitos iniciais de
programação;

• Criar um plugin no Portugol Studio para integração com o ambiente de competição


AST-Prog;

• Integrar as respostas de exercícios com o sistema de dicas para guiar novatos,


criado por Pelz (2014).

• Na área de pedagogia da computação, avaliar a gamificação de uma disciplina


introdutória de programação.
58

REFERÊNCIAS

ACM. ACM Digital Library. Association for Computing Machinery. 1996. Disponível em:
<http://dl.acm.org/> Acesso em: 12 jun. 2014.

ALVES, Guga. WordPress gamification: técnicas, exemplos e plugins. 2012. Disponível


em: <http://www.tudoparawordpress.com.br/dicas-wordpress/wordpress-gamification-
tecnicas-exemplos-plugins/> Acesso em: 09 jul. 2014.

ASTRACHAN, Owen; KHERA, Vivek; KOTZ, David. The internet programming contest:
a report and philosophy. ACM SIGCSE Bulletin, Duke University e Dartmouth College, vol.
25(1), p. 48-52, 1993.

BEZ, Jean; TONIN, Neilor. URI Online Judge. 2011. Disponível em:
<https://www.urionlinejudge.com.br/> Acesso em: 07 maio 2014.

CORMACK, Gordon; KEMKES, Graeme; MUNRO, Ian; VASIGA, Troy. Structure, scoring
and purpose of computing competitions. Informatics in Education, VU Institute of
Mathematics and Informatics, Vilnius, vol. 5(1), p. 15-36, 2006.

CUNNINGHAM, Christopher; ZICHERMANN, Gabe. Gamification by design:


implementing game mechanics in web and mobile apps. Sebastopol, California: O'Reilly
Media. 2011.

DE CASTRO, Juan P.; LEAL, José P.; REGUERAS, Luisa M.; QUEIROS, Ricardo Queirós;
VERDU, Elena; VERDU, María J.. A distributed system for learning programming on-line.
Computers & Education, vol. 58(1), p. 1-10, 2012.

ELSEVIER. Sobre o ScienceDirect. 1997. Disponível em: <http://www.sciencedirect.com/>


Acesso em: 12 jun. 2014.

ESMIN, Ahmed. PORTUGOL/PLUS: uma ferramenta de apoio ao ensino de lógica de


programação baseado no Portugol, In: IV Congresso Ibero-americano de Informática
Educativa. Brasília, 1998, Brasilia/DF. Anais do IV Congresso Ibero-americano de
Informática Educativa. Brasília, 1998.

GALISTEU, Renato. 5 perguntas sobre gamificação para Brian Burke, VP do Gartner.


2014. Disponível em: <http://www.itforum365.com.br/noticias/detalhe/89/5-perguntas-sobre-
gamificacao-para-brian-burke-vp-do-gartner> Acesso em: 09 jul. 2014.

GIRAFFA, Lúcia Maria Martins; RAABE, André Luís Alice. Uma arquitetura de tutor para
promover experiências de aprendizagem mediadas. XVII Simpósio Brasileiro de Informática
na Educação - SBIE2006, 2006, Brasília - DF. Anais do XVII Simpósio Brasileiro de
Informática na Educação, 2006. v. 1. p. 589-598.

GOOGLE SCHOLAR. Sobre o Google Scholar. 2005. Disponível em:


<http://scholar.google.com.br/intl/pt-BR/scholar/about.html> Acesso em: 12 jun. 2014.
59

HOSTINS, Higor; RAABE, André Luís Alice. Auxiliando a aprendizagem de algoritmos com
a ferramenta WebPortugol. XIV Workshop de Educação em Computação - XXVII Congresso
da SBC, 2007, Rio de Janeiro. Anais do XXVII Congresso da SBC, 2007. v. 1. p. 96-105.

LEAL, José Paulo; SILVA, Fernando. Mooshak. 2002. Disponível em:


<https://mooshak.dcc.fc.up.pt/>. Acesso em: 07 maio 2014.

LEAL, José Paulo; SILVA, Fernando. Mooshak: a web-based multi-site programming


contest system. Software-practice & Experience, vol. 33(6), p. 567-581, 2003.

MANNES, Paula. Integração do portugol core com o BIPIDE. 2013. Trabalho técnico-
científico de conclusão (Graduação em Ciência da Computação) – Centro de Ciências
Tecnológicas da Terra e do Mar, Universidade do Vale do Itajaí, Itajaí, 2013.

MANSO, António; MARQUES, Célio Gonçalo; OLIVEIRA, Luís. Portugol IDE – uma
ferramenta para o ensino de programação. 2009. 8 f. Artigo – Escola Superior de
Tecnologia de Tomar; Tomar, Portugal, 2009.

MITCHELL, John C. Concepts in programming languages. 2003. Cidade: Cambridge.


Cambridge University Press, 2003.

MURPHY, Robin R. “Competing” for a robotics education, IEEE Robotics & Automation
Magazine, v. 8, n. 2, p. 44-55, 2001.

NAVARRO, Gabrielle. Gamificação: a transformação do conceito do termo jogo no contexto


da pós-modernidade. 2013 Trabalho de conclusão do Curso de Especialização em Mídia,
Informação e Cultura - Universidade de São Paulo. São Paulo. 2013.

NOSCHANG, Luiz Fernando. Adaptação do portugol core para permitir a integração


com outras ferramentas. 2012. Trabalho Técnico-Científico de Conclusão de Curso
(Graduação em Ciência da Computação) – Centro de Ciências Tecnológicas da Terra e do
Mar, Universidade do Vale do Itajaí, Itajaí, 2012

PELZ, Fillipi. Correção automática de algoritmos no ensino introdutório de


Programação. 2011. Trabalho técnico-científico de conclusão (Graduação em Ciência da
Computação) – Centro de Ciências Tecnológicas da Terra e do Mar, Universidade do Vale do
Itajaí, Itajaí, 2011.

PELZ, Fillipi. Um gerador de dicas para guiar novatos na aprendizagem de


programação. 2014. Dissertação (Mestrado em Computação Aplicada) – Universidade do
Vale do Itajaí, Itajaí, 2014.

PEREIRA JÚNIOR, José C. R.; RAPKIEWICZ, Clevi E.. O processo de ensino-


aprendizagem de fundamentos de programação: uma visão crítica da pesquisa no Brasil. In:
Workshop de Educação em Computação RJ/ES, 2004, Anais...Vitória. v. 1. 2004.

RAABE, André Luís Alice; VIEIRA, Paulo V.; ZEFERINO, Cesar Albenes. Bipide
ambiente de desenvolvimento integrado para a arquitetura dos processadores BIP.
Revista Brasileira de Informática na Educação, v. 18, p. 32-43, 2010.

REVILLA, Miguel Ángel. UVa Online Judge. 1995. Disponível em:


<http://uva.onlinejudge.org/> Acesso em: 07 maio 2014.
60

ROBERTS, Eric. Strategies for Encouraging Individual Achievement in Introductory


Computer Science Courses. ACM SIGCSE Bulletin, Stanford University, Stanford, Vol.
32, número 1, p. 295-299, 2000.

RODRIGUES, Methanias Colaço. Experiências positivas para o ensino de algoritmos. In:


IV Escola Regional de Computação Bahia-Sergipe. Feira de Santana, 2004. Anais
eletrônicos... Disponível em:
<http://www.uefs.br/erbase2004/documentos/weibase/Weibase2004Artigo001.pdf> Acesso
em: 03/03/2014

START BOOTSTRAP. Bootstrap SB Admin 2. 2014. Disponível em:


<http://startbootstrap.com/template-overviews/sb-admin-2/> Acesso em: 02 novembro 2014.
61

APÊNDICE A. LISTAGEM DOS CASOS DE USO

Do Quadro 6 ao Quadro 18são detalhados os casos de uso, visando um melhor


entendimento das funcionalidades previstas.

Quadro 6. UC01. Login


Descrição UC01. Login
Objetivo Autenticar o acesso de pessoas ao WebService do ambiente de competição.
Relações RNF05
Pré-condição Possuir cadastro no sistema com status "Liberado".
Pós-condição Usuário autenticado no sistema.

Quadro 7. UC02. Cadastrar-se como jogador


Descrição UC02. Cadastrar-se como jogador
Objetivo Permitir que um jogador se auto cadastre no sistema.
Relações RF01
Pré-condição Não possuir cadastro no sistema.
Pós-condição Cadastrado no sistema.

Quadro 8. UC03. Cadastrar-se em torneios


Descrição UC03. Cadastrar-se em torneios
Objetivo Permitir que um jogador se auto cadastre em torneios.
Relações RF02, RN12, RN13
Pré-condição Ser um torneio público ou de uma instituição ligada ao jogador.
Pós-condição Estar cadastrado no torneio.

Quadro 9. UC04. Submeter respostas de problemas


Descrição UC04. Submeter respostas de problemas
Objetivo Submeter respostas de problemas ao sistema.
Relações RF03, RN04, RN11
Pré-condição Estar cadastrado em um torneio para submeter a resposta.
Pós-condição Resposta submetida e aguardando retorno do resultado.
62

Quadro 10. UC05. Cosulta de perfil de pessoa


Descrição UC05. Cosulta de perfil de pessoa
Objetivo Consultar o perfil de uma pessoa cadastrada no sistema.
Relações RF04
Pré-condição Pesquisar uma pessoa cadastrada no sistema.
Pós-condição Visualização do perfil.

Quadro 11. UC06. Consulta de perfil de torneio


Descrição UC06. Consulta de perfil de torneio
Objetivo Consultar o perfil de um torneio cadastrado no sistema.
Relações RF05
Pré-condição Pesquisar um perfil cadastrado no sistema.
Pós-condição Visualização do perfil.

Quadro 12. UC07. Consulta rankings


Descrição UC07. Consulta rankings
Objetivo Consultar um ranking no sistema.
Relações RF06, RN05, RN07, RN08
Pré-condição Pesquisar um ranking do sistema.
Pós-condição Visualização do ranking.

Quadro 13. UC08. Login


Descrição UC08. Login
Objetivo Autenticar o acesso de pessoas as Páginas da Web do ambiente de competição.
Relações RF12, RNF05
Possuir cadastro no sistema com status "Liberado" e ser um juiz ou
Pré-condição administrador.
Pós-condição Usuário autenticado no sistema.
63

Quadro 14. UC09. Cadastro de torneios


Descrição UC09. Cadastro de torneios
Objetivo Cadastrar torneios para competição.
Relações RF07, RF12, RN06
Pré-condição Ser juiz ou administrador do sistema.
Pós-condição Torneio cadastrado.

Quadro 15. UC10. Cadastro de problemas


Descrição UC10. Cadastro de problemas
Objetivo Cadastrar problemas para torneios.
Relações RF08, RF12, RN01, RN06
Pré-condição Ser juiz ou administrador do sistema.
Pós-condição Problema cadastrado.

Quadro 16. UC11. Cadastro de instituições


Descrição UC11. Cadastro de instituições
Objetivo Cadastrar instituições.
Relações RF10
Pré-condição Ser administrador do sistema.
Pós-condição Instituição cadastrada.

Quadro 17. UC12. Cadastro de pessoas


Descrição UC12. Cadastro de pessoas
Objetivo Cadastrar administradores ou juizes.
Relações RF11
Pré-condição Ser administrador do sistema.
Pós-condição Pessoa cadastrada.

Quadro 18. UC13. Cadastro de assuntos


Descrição UC13. Cadastro de assuntos
Objetivo Cadastrar assuntos de problemas.
Relações RF11
Pré-condição Ser administrador do sistema.
Pós-condição Assunto cadastrado.
64

APÊNDICE B. DICIONÁRIO DE DADOS DO MODELO ER

Para melhor entendimento de como é a estrutura do banco de dados, o Quadro 19


apresenta o dicionário de dados do modelo entidade e relacionamento do banco de dados.

Quadro 19. Dicionário de dados do modelo ER


assunto
Campo Tipo Null Chave Comentário
assuntoId int(11) NO PRI Chave primária
nome varchar(255) NO UNI Nome do assunto
instituicao
Campo Tipo Null Chave Comentário
instituicaoId int(11) NO PRI Chave primária
nome varchar(255) NO UNI Nome da instituição
nomeReduzido varchar(255) YES Nome reduzido da instituição
pessoa
Campo Tipo Null Chave Comentário
pessoaId int(11) NO PRI Chave primária
dataNascimento date NO Data de nascimento
email varchar(255) NO UNI Email
nome varchar(255) NO Nome completo da pessoa
obsAdmin text YES Observações do administrador
receberEmail int(11) NO Se quer receber email(1) ou não(0)
senha varchar(255) YES Senha
sexo varchar(255) NO Sexo (gênero)
Se está liberado para acessar o
statusLiberado int(11) NO
sistema
tipoPessoa varchar(255) NO Tipo de acesso/permissões da pessoa
validaEmail varchar(255) YES Valida email/senha
pessoainstituicao
Campo Tipo Null Chave Comentário
instituicaoId int(11) NO PRI Id da instituição
pessoaId int(11) NO PRI Id da pessoa
65

problema
Campo Tipo Null Chave Comentário
problemaId int(11) NO PRI Chave primária
descricao text YES Descrição detalhada do problema
titulo varchar(255) NO UNI Título do problema
visibilidade varchar(255) NO Visibilidade
xmlProblema longtext YES XML do problema
pessoaId int(11) NO MUL Id da pessoa que criou o problema
problemaNivelId int(11) NO MUL Id do nivel de dificuldade
problemaassunto
Campo Tipo Null Chave Comentário
assuntoId int(11) NO PRI Id do assunto
problemaId int(11) NO PRI Id do problema
problemanivel
Campo Tipo Null Chave Comentário
problemaNivelId int(11) NO PRI Chave primária
nome varchar(255) NO UNI Nome do nivel
pontoAcerto int(11) NO Pontos ao acertar
pontoIncompleto int(11) NO Pontos ao deixar incompleto
Pontos se exceder número de
pontoPunicao int(11) NO
tentativas
Números de tentativas sem perder
tentativaSubmissao int(11) NO
pontos
rankingnivel
Campo Tipo Null Chave Comentário
rankingNivelId int(11) NO PRI Chave primária
nome varchar(255) NO UNI Nome do nivel
pontuacaoMinima int(11) NO Pontuação mínima para atingir nível
submissao
Campo Tipo Null Chave Comentário
submissaoId int(11) NO PRI Chave primária
dataSubmissao datetime NO Data da submissão
retornoCorrecao text YES Retorno da correção
66

status varchar(255) NO Status da correção


tentativa int(11) NO Número da tentativa
pessoaId int(11) NO MUL Id da pessoa que submeteu
torneioId int(11) NO MUL Id do torneio referente da submissão
resposta longtext NO Reposta do problema
problemaId int(11) NO MUL Id do problema respondido
submissaoponto
Campo Tipo Null Chave Comentário
submissaoPontoId int(11) NO PRI Chave primária
submissaoId int(11) NO MUL Id da submissão
pessoaId int(11) NO MUL Id da pessoa que submeteu
torneioGrupoId int(11) YES MUL Id do grupo da pessoa que submeteu
resolvidoCompleto int(11) NO Se foi resovido completo
resolvidoIncompleto int(11) NO Se foi resovido incompleto
tentativa int(11) NO Número da tentativa
pontuacao int(11) NO Pontuação ganha
torneio
Campo Tipo Null Chave Comentário
torneioId int(11) NO PRI Chave primária
dataFim datetime NO Data de término do torneio
dataInicio datetime NO Data de início do torneio
descricao varchar(255) NO MUL Descrição do torneio
obs text YES Observações em geral
visibilidade varchar(255) NO Visibilidade
instituicaoId int(11) YES MUL Id da instituição dona do torneio
pessoaId int(11) NO MUL Id da pessoa que criou o torneio
torneiogrupo
Campo Tipo Null Chave Comentário
torneioGrupoId int(11) NO PRI Chave primária
nome varchar(255) NO MUL Nome do grupo
tipo varchar(255) NO Tipo do grupo
donoGrupoId int(11) NO MUL Id da pessoa dona do grupo
torneioId int(11) NO MUL Id do torneio do grupo
67

torneiogrupopessoa
Campo Tipo Null Chave Comentário
torneioGrupoId int(11) NO PRI Id do grupo
pessoaId int(11) NO PRI Id da pessoa
torneiopessoa
Campo Tipo Null Chave Comentário
pessoaId int(11) NO PRI Id da pessoa
torneioId int(11) NO PRI Id do torneio
torneioproblema
Campo Tipo Null Chave Comentário
torneioId int(11) NO PRI Id do torneio
problemaId int(11) NO PRI Id do problema

Você também pode gostar