Escolar Documentos
Profissional Documentos
Cultura Documentos
por
por
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.
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.
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.
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
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
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
1 INTRODUÇÃO
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).
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.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.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.
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.
2 FUNDAMENTAÇÃO TEÓRICA
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
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
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.
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
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
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.
Figura 5. IDE Portugol Studio 2.0 e exemplo de código da linguagem Portugol 2.0
Fonte: Pelz (2011)
27
2.3 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;
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.
3 DESENVOLVIMENTO
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.
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
3.1.1 Papéis
O sistema possui três tipos de usuários:
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.
RN07 - Há rankings gerais, por instituição, pelo torneio e por nível do jogador.
37
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.
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
3.1.4.3 ASTP-WebService
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.
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.
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.
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.
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.
• A sua resposta está demorando muito para executar, verifique se não há algum laço
de repetição infinito.
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
Figura 28. Tela de menu, alterar cadastro e vincular-se a instituição no plugin do Portugol
Studio
Figura 30. Tela de perfil de pessoas, perfil de torneios e rankings no plugin do Portugol
Studio
• Quanto ao sistema, ele deve se comportar conforme o que foi definido em suas
regras. Os principais pontos a serem avaliados são:
4 CONCLUSÕES
REFERÊNCIAS
ACM. ACM Digital Library. Association for Computing Machinery. 1996. Disponível em:
<http://dl.acm.org/> Acesso em: 12 jun. 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.
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.
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.
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.
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.
MURPHY, Robin R. “Competing” for a robotics education, IEEE Robotics & Automation
Magazine, v. 8, n. 2, p. 44-55, 2001.
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.
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
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