SlideShare una empresa de Scribd logo
1 de 56
Descargar para leer sin conexión
INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA
DO RIO GRANDE DO NORTE
ALLYSON BRUNO CAMPOS BARROS VILELA
POTIGOLCODE: AMBIENTE DE APOIO AO ENSINO DE LÓGICA DE
PROGRAMAÇÃO ATRAVÉS DA LINGUAGEM DE PROGRAMAÇÃO
POTIGOL
NATAL-RN
2012
ALLYSON BRUNO CAMPOS BARROS VILELA
POTIGOLCODE: AMBIENTE DE APOIO AO ENSINO DE LÓGICA DE
PROGRAMAÇÃO ATRAVÉS DA LINGUAGEM DE PROGRAMAÇÃO
POTIGOL
Trabalho de Conclusão de Curso apresentado ao
Curso Superior de Análise de Sistemas do
Instituto Federal de Educação, Ciência e
Tecnologia do Rio Grande do Norte, em
cumprimento às exigências legais como
requisito parcial à obtenção do título de
Tecnólogo em Análise e Desenvolvimento de
Sistemas.
Orientador: Leonardo Reis Lucena.
Co-Orientador: Jailton Carlos Paiva.
NATAL/RN
2012
!
ALLYSON BRUNO CAMPOS BARROS VILELA
POTIGOLCODE: AMBIENTE DE APOIO AO ENSINO DE LÓGICA DE
PROGRAMAÇÃO ATRAVÉS DA LINGUAGEM DE PROGRAMAÇÃO
POTIGOL
Trabalho de Conclusão de Curso apresentado ao
Curso Superior de Análise de Sistemas do
Instituto Federal de Educação, Ciência e
Tecnologia do Rio Grande do Norte, em
cumprimento às exigências legais como
requisito parcial à obtenção do título de
Tecnólogo em Análise e Desenvolvimento de
Sistemas.
Trabalho de Conclusão de Curso apresentado e aprovado em ___/___/____, pela
seguinte Banca Examinadora:
BANCA EXAMINADORA
Prof. Msc. Leonardo Reis Lucena – Presidente
Instituto Federal de Educação, Ciência e Tecnologia do Rio Grande do Norte
Prof. Msc. Alexandre Gomes de Lima - Examinador
Instituto Federal de Educação, Ciência e Tecnologia do Rio Grande do Norte
Prof. Msc. Plácido Antonio de Souza Neto - Examinadora
Instituto Federal de Educação, Ciência e Tecnologia do Rio Grande do Norte
!
AGRADECIMENTOS
Agradeço primeiramente a Deus, por sempre ter me guiado, me abençoado e por
ter iluminado minha mente durante os inúmeros desafios enfrentados ao longo do curso.
À meus pais, Marcos e Conceição, por terem se esforçado para me proporcionar
e me dar condições necessárias para os meus estudos, pelas orientações nos momentos
importantes e por sempre terem me apoiado e confiado no meu potencial.
À meus familiares por sempre estarem orando pela minha vida pessoal,
profissional e espiritual e pelos momentos alegres e descontraídos com a família
reunida.
À minha noiva Railma Almeida e sua família, por estarem sempre ao meu lado e
com muito amor e compreensão terem me apoiado e me auxiliado a enfrentar e superar
todos os desafios que surgiram durante esta etapa tão importante na minha vida.
Ao meu orientador Leonardo Lucena, pela confiança, paciência e pelos
ensinamentos que tornaram possível o desenvolvimento deste trabalho e de inúmeros
outros ao longo do curso. E ao meu co-orientador Jailton Paiva, pelo apoio,
colaboração, atenção e ensinamentos durante os momentos finais deste trabalho.
Aos membros da banca, por dedicarem o seu tempo a ler este trabalho e por
contribuírem com seu conhecimento para a minha formação.
A todos os meus professores do IFRN por compartilharem seus conhecimentos
que foram muito importantes no desenvolvimento deste trabalho e para minha formação
profissional.
Aos professores e alunos do Laboratório de Inovação Tecnológica em Saúde –
LAIS por terem compartilhado o seu conhecimento, por acreditarem em meu trabalho e
terem me dado a oportunidade de fazer parte desta equipe.
Aos meus amigos e companheiros do Grupo WebLovers: Sedir Morais, Elionai
Moura, Daniele Montegro e Giancarlo Silva pela parceria, apoio, amizade e confiança
durante esses anos de projetos.
Aos meus amigos e meus colegas de curso, pelo incentivo e pelo apoio e por
torcerem por mim. DESEJO SUCESSO A TODOS E QUE DEUS OS ABENÇOE
ABUNDANTEMENTE!
!
RESUMO
Uma das disciplinas mais importantes para os cursos de tecnologia da
informação é a disciplina introdutória à programação, pois é por meio dela que os
alunos são capacitados para utilizar a lógica de programação na resolução de problemas.
O presente trabalho tem por finalidade descrever o desenvolvimento de uma ferramenta
de apoio ao ensino e aprendizado de programação permitindo o desenvolvimento dos
algoritmos na linguagem Potigol, linguagem de programação multiparadigma e
totalmente em português.
Palavras-chave: Algoritmos. Ensino-aprendizagem. Ferramenta de apoio. Introdução à
programação. Lógica de programação.
!
ABSTRACT
One of the most important disciplines for the information technology courses is
the discipline Introductory Programming, because is through it that the students are
trained to use the programming logic in the troubleshooting. The purpose of the present
study is describes the developing of a teaching/learning support tool allowing the
developing of algorithms in the potigol language, multi paradigm programming
language and entirely in Portuguese.
Keywords: Algorithm. Teaching/learning. Support tool. Introductory programming.
Programming logic.
!
LISTA DE ILUSTRAÇÕES
Figura 1- Exemplo de código escrito em Potigol 20
Figura 2- Estrutura da linguagem Potigol 21
Figura 3- A arquitetura geral do Play Framework 23
Figura 4- A arquitetura MVC no Play Framework 25
Figura 5- Exemplo de erro de compilação no Play Framework 2.0 25
Figura 6- Console do Play Framework 26
Figura 7- Exemplo de um script de evolução do banco de dados gerado pelo Play
Framework 2.0
27
Figura 8- Diagrama da arquitetura proposta do sistema 30
Quadro 1- Lista de Requisitos Funcionais do PotigolCode referentes ao ator
Professor
30
Quadro 2- Lista de Requisitos Funcionais do PotigolCode referentes ao ator
Aluno
30
Quadro 3- Lista de Requisitos Funcionais do PotigolCode referentes ao ator
Sistema
31
Quadro 4- Lista de Requisitos Não Funcionais do PotigolCode referentes ao ator
Sistema
31
Figura 9- Diagrama dos casos de uso referentes ao ator Professor 33
Figura 10- Diagrama dos casos de uso referentes ao ator Aluno 34
Figura 11- Diagrama dos casos de uso referentes ao ator Sistema 34
Figura 12- Telas referentes ao caso de uso Gerenciar Cursos 35
Figura 13- Telas referentes ao caso de uso Gerenciar Exercícios 36
Figura 14- Telas referentes ao caso de uso Gerenciar Download 37
Figura 15- Telas referentes ao caso de uso Gerenciar Glossários 38
Figura 16- Telas referentes ao caso de uso Gerenciar Alunos 39
Figura 17- Telas referentes ao caso de uso Gerenciar Professores 40
Figura 18- Telas referentes ao caso de uso Registrar-se 41
Figura 19- Telas referentes ao caso de uso Visualizar Cursos 42
Figura 20- Telas referentes ao caso de uso Visualizar Exercícios 43
Figura 21- Tela referente ao caso de uso Resolver Exercícios 44
Figura 22- Telas referentes ao caso de uso Enviar Dúvida sobre um Exercício 45
!
Figura 23- Tela referente ao caso de uso Enviar Dúvida sobre um Exercício 46
Figura 24- Tela referente ao caso de uso Visualizar Downloads 47
Figura 25- Telas referentes ao caso de uso Visualizar Glossário 48
Figura 26- Visão geral do funcionamento do caso de uso Avaliar Resposta 49
Figura 27- Exemplo de feedback apresentado ao aluno após a avaliação da
resposta
50
Figura 28- Organização do pacote Controllers que contêm todos os controladores
da aplicação
50
Figura 29- Organização do pacote models que contêm todos as entidades da
aplicação
51
Figura 30- Organização do pacote helpers que contêm as classes utilitárias da
aplicação
52
!
LISTA DE E SIGLAS
API Application Programming Interface
AVA Ambiente Virtual de Aprendizagem
BIP Basic Instruction-set Processor
DSL Domain-Specific Language
HTML5 Hypertext Markup Language, versão 5
HTTP Hypertext Transfer Protocol
IFRN Instituto Federal de Educação, Ciência e Tecnologia do Rio Grande do
Norte
MVC Model, View, Controller
Play Play Framework
SBT Simple Build Tool
SGDB Sistema de Gerenciamento de Banco de Dados
SQL Structured Query Language
TI Tecnologia da Informação
!
!
SUMÁRIO
1 INTRODUÇÃO 12
1.1 OBJETIVOS 13
1.1.1 Objetivo geral 13
1.1.2 Objetivos específicos 13
1.2 METODOLOGIA 14
1.3 ESTRUTURA DO TRABALHO 14
2 FUNDAMENTAÇÃO TEÓRICA 15
2.1 ESTADO DA ARTE 15
2.2 PROCESSO ENSINO-APRENDIZAGEM DE PROGRAMAÇÃO 16
2.2.1 Problemas de aprendizagem de algoritmos 16
2.2.2 Ferramentas de apoio ao aprendizado de algoritmos 17
2.3 A LINGUAGEM POTIGOL 18
2.3.1 Processo de compilação 19
2.4 PLAY FRAMEWORK 20
2.4.1 Arquitetura do play framework 21
2.4.1.1 MVC (Model, View, Controller) 22
2.4.1.2 Programação assíncrona e agendamento de tarefas 23
2.4.1.3 Foco na segurança de tipos 24
2.4.1.4 Poderoso sistema de construção 25
2.4.1.5 Evoluções dos Bancos de Dados 25
3 POTIGOLCODE: AMBIENTE DE APOIO AO ENSINO DE
LÓGICA DE PROGRAMAÇÃO ATRAVÉS DA LINGUAGEM DE
PROGRAMAÇÃO POTIGOL
27
3.1 ARQUITETURA DO SISTEMA 27
3.2 REQUISITOS 28
3.2.1 Requisitos funcionais 29
3.2.2 Requisitos não-funcionais 30
3.3 CASOS DE USO 31
3.3.1 Casos de uso do ator professor 33
3.3.1.1 Gerenciar cursos 34
3.3.1.2 Gerenciar exercícios 34
!
!
3.3.1.3 Gerenciar downloads 35
3.3.1.4 Gerenciar glossários 36
3.3.1.5 Gerenciar alunos 37
3.3.1.6 Gerenciar professores 38
3.3.2 Casos de uso do ator aluno 39
3.3.2.1 Registrar-se 39
3.3.2.2 Visualizar cursos 40
3.3.2.3 Visualizar exercícios 41
3.3.2.4 Resolver exercícios 42
3.3.2.5 Enviar dúvida sobre um exercício 43
3.3.2.6 Acompanhar ranking dos alunos 44
3.3.2.7 Visualizar downloads 45
3.3.2.8 Consultar glossários 46
3.3.3 Casos de uso do ator sistema 47
3.3.3.1 Avaliar resposta submetida pelo aluno 47
3.3.3.2 Pontuar aluno 49
3.4 DIAGRAMA DE CLASSES 49
4 CONSIDERAÇÕES FINAIS 54
4.1 TRABALHOS FUTUROS 54
REFERÊNCIAS 56
!
!
12!
1 INTRODUÇÃO
Uma das disciplinas mais importantes para os cursos de Tecnologia da
Informação (TI) é a Introdução à Programação. É por meio dela que os alunos
desenvolvem a lógica de programação e a habilidade de análise e resolução de
problemas. Estas habilidades são necessárias em outras disciplinas mais avançadas do
curso.
Para a maioria dos alunos que acabaram de ingressar nos cursos de TI, o
processo de aprendizado de algoritmos é difícil e exigente já que muitos deles
ingressaram no curso sem nenhum conhecimento prévio sobre programação. Segundo
Borges (2000 apud MOREIRA; FAVERO, 2008), muitos dos alunos que concluíram a
disciplina não possuem um conhecimento adequado e muitos dos alunos acabam
abandonando o curso nos semestres iniciais.
As dificuldades encontradas pelos alunos durante o processo de aprendizagem
de algoritmos são causadas, geralmente, devido a ausência ou ineficácia de estratégias
de resolução lógica dos problemas propostos pelos professores durante o curso, o
grande número de alunos por turma, falta de motivação, insegurança e baixa autoestima
e a demora na correção e feedback dos exercícios.
Com a finalidade de reduzir os problemas no processo de ensino-aprendizagem
de algoritmos são utilizadas ferramentas de apoio que auxiliem professores e alunos
durante a disciplina. Essas ferramentas são chamadas de Ambientes Virtuais de
Aprendizagem (AVAs) e são utilizadas, geralmente, em cursos ministrados à distância.
Os AVAs permitem que os alunos tenham acesso ao ambiente de qualquer lugar, sem a
necessidade de instalação de aplicativos e de um computador com muitos recursos para
exercitarem seus conhecimentos. Nestas ferramentas, os professores são capazes de
gerenciar cursos, exercícios, atividades avaliativas, fóruns de discussão e outros
recursos, facilitando a administração da turma. Existem diversas ferramentas que
auxiliam os alunos no aprendizado de algoritmos e lógica de programação utilizando
linguagens de programação populares como Java, Ruby e Python, como exemplo temos
o CodingBat, CodeCademy e TryRuby.com. Outras utilizam fluxogramas ou
pseudocódigos, como o Portugol, para geração da resolução dos problemas.
Neste trabalho é proposta a criação de um ambiente de apoio ao aprendizado de
algoritmos utilizando o Potigol, uma Linguagem de Domínio Específico (DSL)
!
!
13!
multiplataforma, multiparadigma e de sintaxe fácil e intuitiva que utiliza recursos dos
paradigmas de programação estruturados, orientado a objetos e funcional (DANTAS;
MORAIS, 2011). A linguagem foi desenvolvida por alunos do IFRN com o propósito
de facilitar o aprendizado de algoritmos e técnicas de programação através de códigos
escritos totalmente em português.
Esta ferramenta, chamada de PotigolCode, tem o objetivo de apoiar os alunos no
aprendizado de programação através de desafios práticos propostos pelos professores.
Para minimizar os problemas relacionados às dificuldades e demora na avaliação dos
exercícios, o PotigolCode utiliza recursos de avaliação e geração de feedback através de
testes automatizados. A ferramenta conta com recursos de gerenciamento de cursos,
exercícios, downloads, glossários e usuários permitindo uma melhor administração dos
alunos e dos conteúdos da turma.
1.1 OBJETIVOS
O objetivo principal deste trabalho é desenvolver uma ferramenta de apoio para
o ensino e aprendizado de algoritmos, através da linguagem de programação Potigol,
nas disciplinas de Introdução à programação, programação orientada à objetos e
paradigmas de linguagem de programação do curso de Análise e Desenvolvimento de
Sistemas do IFRN.
1.1.1 Objetivos específicos
Os objetivos específicos do presente trabalho consistem em:
a) estudar as tecnologias necessárias para a implementação e
implantação do sistema;
b) elicitar os requisitos do sistema que será desenvolvido;
c) modelar o Sistema;
d) realizar implementação da aplicação;
e) testar e validar o sistema desenvolvido;
!
!
14!
f) documentar o desenvolvimento.
1.2 METODOLOGIA
A metodologia adotada por este trabalho consiste das fases teórica e
experimental. A primeira baseia-se em pesquisar e adquirir o conhecimento necessário
para a realização do objetivo deste trabalho. Nesta fase, é formada toda a base de
conhecimento necessária para o desenvolvimento da ferramenta proposta. A fase
experimental consiste em descrever os requisitos, modelar e desenvolver o sistema
PotigolCode.
1.3 ESTRUTURA DO TRABALHO
O restante do trabalho encontra-se divido da seguinte forma: A Seção 2 descreve
os principais temas relacionados ao trabalho desenvolvido. Inicia com uma revisão
bibliográfica dos trabalhos correlatos apresentados dentro da área de pesquisa deste
trabalho. Em seguida é feita uma abordagem sobre o processo ensino-aprendizagem de
programação, os problemas de aprendizagem de algoritmos, ferramentas de apoio ao
aprendizado de algoritmos, a linguagem potigol e o play framework.
A seção 3 traz a especificação e implementação da ferramenta. É feita,
descrevendo a arquitetura do sistema, os requisitos funcionais e não funcionais, os
diagramas de casos de uso e os diagramas de classes.
A Seção 4 apresenta as conclusões e os possíveis trabalhos futuros relacionados
ao tema abordado neste trabalho.
!
!
15!
2 FUNDAMENTAÇÃO TEÓRICA
Nesta seção são apresentados alguns aspectos teóricos relacionados ao trabalho,
tais como: processo de ensino-aprendizagem de programação, problemas de
aprendizagem de algoritmos, ferramentas de apoio ao aprendizado de algoritmos, a
linguagem de programação Potigol e o Play Framework. Na seção estado da arte são
apresentados alguns trabalhos correlatos.
2.1 ESTADO DA ARTE
Moreira e Favero (2008) propuseram a criação de um ambiente de aprendizado
virtual para o ensino e aprendizado de algoritmos integrado ao Moodle, sistema de
gerenciamento de cursos para aprendizagem online. No ambiente foi utilizado o modelo
de regressão linear múltipla e métricas de engenharia de software para avaliação
automática, pontuação e para a geração dos feedbacks dos algoritmos submetidos.
Rebelo e seus colegas (2005) propuseram a criação de um modelo de
ferramentas colaborativas voltadas para o ensino e aprendizado de algoritmos, que
permitam a realização de atividades práticas e problemas do contexto real dos alunos.
Estas ferramentas permitem o planejamento, construção e simulação de algoritmos
utilizando a colaboração entre os alunos, por meio de grupos de discussão e
argumentação, mesmo fora de sala de aula.
Manso (2010) propôs o PortugolIDE, ambiente de ensino e aprendizado de
algoritmos que utiliza os recursos da linguagem de programação Portugol e de
fluxogramas para geração dos algoritmos. O ambiente permite que os alunos construam,
executem e chequem o funcionamento dos algoritmos.
Vieira (2010) propôs o Bipide, ambiente de desenvolvimento integrado voltado
para o desenvolvimento, conversão e simulação de programas voltados para a família de
processadores BIP através da linguagem de programação Portugol com o objetivo de
facilitar o ensino e aprendizado da disciplina de arquitetura e organização de
computadores. O ambiente é composto por um editor de texto, um compilador que
!
!
16!
converte o código para a linguagem de montagem dos processadores BIP e um
simulador dos processadores BIP.
Hontins (2000) propôs o desenvolvimento e a utilização de um ambiente de
auxílio na construção de lógica de programação através de pseudolinguagem nas
disciplinas iniciais dos cursos de TI que permitisse que os alunos pudessem acessar de
qualquer lugar e construir e executar o passo a passo de seus algoritmos ilustrando as
variáveis utilizadas e mostrar mensagens de feedback quanto à execução dos códigos.
2.2 PROCESSO ENSINO-APRENDIZAGEM DE PROGRAMAÇÃO
Segundo Moreira e Favero (2008), as disciplinas introdutórias de programação
são essenciais para os estudantes de TI, principalmente para os cursos que envolvem o
desenvolvimento de software, pois é por meio delas que os alunos são capacitados para
utilizar a lógica de programação na resolução de problemas. Diversas disciplinas mais
avançadas necessitam que os alunos possuam esse conhecimento prévio para obterem
êxito.
O processo de aprendizado de programação é difícil e exigente para a maioria
dos alunos, pois estes, geralmente, ingressaram no curso sem conhecimento prévio
sobre o assunto. Borges (2000 apud MOREIRA; FAVERO, 2008) afirma que o número
de alunos que concluem essas disciplinas sem ter um conhecimento mínimo adequado
em programação é alto, ou ainda, muitos abandonam o curso nos primeiros semestre
devido às dificuldades.
Gomes e Mendes (2000 apud PIMENTEL et al, 2003) afirmam que, os
principais erros apresentados pelos alunos são: erros de sintaxe e semântica,
dificuldades na compreensão do enunciado dos problemas e concepção dos algoritmos e
a incapacidade de detectar erros de lógica de programação.
2.2.1 Problemas de aprendizagem de algoritmos
Segundo Raabe e Silva (2005), a maioria dos problemas relacionados à
dificuldade na aprendizagem de algoritmos se dá devido à ausência ou ineficácia de
!
!
17!
estratégias de resolução lógica por parte dos alunos. Petry e Rosatelli (2006) citam que
um dos principais problemas do modo tradicional do processo de ensino e
aprendizagem de algoritmos é a dificuldade para motivar os alunos e os manter
interessados pela disciplina já que a esta é essencial para outras disciplinas do curso.
Raabe e Silva (2005) ao pesquisar os problemas relacionados ao processo ensino
aprendizagem de algoritmos durante nove semestres identificaram três grupos de
problemas distintos: problemas de natureza didática, cognitiva e afetiva. Dentre os
problemas citados em sua pesquisa é possível destacar que os problemas mais comuns
são:
a) grande número de alunos: Geralmente as turmas iniciais dos cursos de TI
contam com cerca de 50 alunos. Esse alto número de alunos dificulta a
avaliação individual e acaba reduzindo a quantidade de avaliações realizadas
no semestre.
b) outro problema relacionado ao grande número de alunos é a dificuldade
encontrada pelos professores na avaliação e feedback de todos os exercícios
dos alunos em um curto prazo (MOREIRA; FAVERO, 2008).
c) diferença de experiência e ritmo de aprendizagem entre os alunos: Alguns
alunos possuem conhecimento ou alguma experiência em programação
enquanto boa parte dos alunos não possui nenhuma experiência prévia.
d) alunos sem perfil para solução de problemas: Muitos alunos apresentam
problemas em solucionar os algoritmos propostos, pois não conseguiram
desenvolver, previamente, as estratégias necessárias para compreensão e
solução dos problemas.
e) outros problemas de ordem pessoal e/ou emocional, tais como baixa
autoestima, pouca motivação, insegurança, aversão ao conteúdo ou ao
professor, impedem que os alunos se concentrem e desenvolva seu raciocínio
lógico.
2.2.2 Ferramentas de apoio ao aprendizado de algoritmos
Atualmente, várias ferramentas são amplamente utilizadas para apoiar o ensino e
aprendizado nos cursos ministrados à distância. Essas ferramentas chamadas de
!
!
18!
Ambientes Virtuais de Aprendizagem (AVAs), são importantes, pois permitem que os
alunos tenham acesso ao ambiente de qualquer lugar, sem a necessidade de instalação
de aplicativos e de um computador com muitos recursos para exercitarem seus
conhecimentos. Os ambientes virtuais servem de mediador das atividades propostas
pelo professor, auxiliando no gerenciamento dos cursos, atividades e fóruns de
discussão e outros recursos (MOREIRA; FAVERO, 2008).
No contexto do ensino e aprendizado de algoritmos, estes ambientes
possibilitam aos professores uma melhor gestão dos alunos e dos exercícios além de
permitir que os alunos interajam com a disciplina fora da sala de aula através da
resolução dos exercícios propostos, envio de dúvidas e sugestões. Segundo Kjollerstrom
e Martensson (1999 apud MOREIRA; FAVERO, 2008), os principais benefícios do uso
das ferramentas de apoio para os professores são:
a) melhoria na qualidade do ensino;
b) melhor administração dos alunos e exercícios;
c) melhor acompanhamento dos alunos, individualmente;
d) redução do tempo de correção dos algoritmos através de mecanismos de
avaliação automática.
2.3 A LINGUAGEM POTIGOL
O Potigol é uma Linguagem de Domínio Específico (DSL) multiplataforma,
multiparadigma e de sintaxe fácil e intuitiva, voltada para o ensino e aprendizado
(DANTAS; MORAIS, 2011). A linguagem utiliza recursos dos paradigmas
estruturados, orientado a objetos e funcional presentes em outras linguagens como Java,
Scala, Python e Ruby.
Segundo Dantas e Morais (2011), a linguagem de programação Potigol foi
desenvolvida com o propósito de facilitar o aprendizado de Algoritmos e Técnicas de
Programação, pois facilita a escrita de código através do uso da língua portuguesa já que
todas as palavras-chaves da linguagem são em português.
!
!
19!
Figura 1- Exemplo de código escrito em Potigol
Fonte: Elaborado pelo autor (2012)
2.3.1 Processo de compilação
As linguagens de programação geralmente são estruturadas em quatro partes que
funcionam de forma sequencial que compõe o processo de compilação do código:
Análise léxica, análise sintática, interpretação e execução. Cada uma dessas partes é
responsável por gerar uma saída, a partir de uma entrada de dados, para o seu sucessor,
até que o processo seja finalizado na execução do código.
!
!
20!
Figura 2- Estrutura da linguagem Potigol
Fonte: Dantas e Morais (2012)
O analisador léxico é responsável pela análise de todo o código fonte a fim de
produzir os símbolos, também conhecidos como tokens, que serão manipulados pela
próxima etapa. É na análise léxica que são eliminados todos os espaços em branco e
comentários do código fonte. Dantas e Morais (2011) definem a análise léxica como
sendo uma forma de verificar se as palavras existem ou não no alfabeto especificado na
linguagem. O analisador sintático é responsável pela análise da sequência de entrada
para determinar sua estrutura gramatical de acordo com a gramática da linguagem e por
gerar a árvore de nós, conhecida como Abstract Syntax Tree. O interpretador é
responsável pela avaliação do código a partir da árvore de nós e executar cada nó.
2.4 PLAY FRAMEWORK
O Play é um framework multiplataforma, livre e de código aberto, para
desenvolvimento ágil de aplicações web. Desenvolvido por Guillaume Bort em 2007,
teve sua primeira versão oficial lançada em outubro de 2009. Originalmente foi escrito
em Java e inspirado em outros frameworks para o desenvolvimento ágil como o Ruby
on Rails e Django. O Play foi criado com o intuito de fazer com que o desenvolvimento
!
!
21!
de aplicações web com Java ou Scala se torne uma tarefa fácil, divertida e produtiva,
mesmo para os programadores iniciantes no framework.
Atualmente o Play Framework se encontra na versão 2.0.4 e a partir da versão
2.0 foi totalmente reescrito na linguagem de programação Scala tornando o framework
mais rápido, produtivo e robusto.
O Play permite que os desenvolvedores utilizem a API em Java ou Scala para
construírem suas aplicações, sendo o mais aconselhável para os iniciantes no framework
o uso da linguagem Java devido a o sucesso e a comunidade da linguagem porém se
você quiser tornar o desenvolvimento ainda mais rápido e produtivo é recomendado
utilizar a linguagem Scala devido ao seu código conciso, escalabilidade e o suporte à
programação funcional (LEROUX et al, 2012).
2.4.1 Arquitetura do play framework
Segundo Leroux et al (2012), algumas caraterísticas e qualidades tornam o Play
Framework produtivo e divertido de usar:
a) Sistema de configuração e declaração das URLs da aplicação baseados no
protocolo HTTP.
b) Sintaxe de template poderosa e fácil de utilizar e aprender.
c) Integração com os ambientes integrados de desenvolvimento e editores de
textos: Eclipse, NetBeans, IntelliJ, TextMate e SublimeText.
d) Possui um servidor web leve e rápido integrado nativamente em sua
arquitetura.
e) Não necessidade de recarregar o servidor da aplicação à cada alteração no
código.
f) Recursos de segurança, persistência, validação e internacionalização já
implementados na estrutura do framework.
g) Arquitetura projetada para utilizar os recursos do HTML5 como WebSockets
e validações.
h) Boa documentação e número expressivo de participantes da comunidade de
desenvolvimento.
!
!
22!
Figura 3- A arquitetura geral do Play Framework
Fonte: Leroux et al (2012)
2.4.1.1 MVC (Model, View, Controller)
O Play é baseado na arquitetura MVC, considerada o padrão de arquitetura de
aplicações web. O padrão MVC separa as camadas de Controle, Modelo e Visualização,
permitindo uma maior flexibilidade e organização do código fonte, escalabilidade da
aplicação, independência das camadas.
O funcionamento da arquitetura MVC no Play se dá conforme a Figura 4:
!
!
23!
Figura 4- A arquitetura MVC no Play Framework
Fonte: Play Framework (2012)
De acordo com a Figura 4, todas as requisições feitas pelos usuários são
enviadas para o Controlador através das Rotas, que mapeiam qual controlador é
responsável pela requisição. O Controlador é responsável pela manipulação e validação
dos dados através dos Modelos e por repassar esses dados para a camada de
Visualização que é responsável pela exibição dos dados.
2.4.1.2 Programação assíncrona e agendamento de tarefas
O Play foi projetado e desenvolvido para utilizar os recursos de programação
assíncrona. Com ele é possível utilizar conexões HTTP persistentes de longa duração
!
!
24!
através de tecnologias como Comet, Long Polling e WebSockets, que permitem a troca
simultânea de dados em tempo real.
No Play é possível fazer o agendamento e execução de tarefas de longa duração
sem a intervenção direta do usuário, como por exemplo o envio massivo de e-mails
durante um determinado horário do dia ou atualizar sempre que a aplicação é iniciada
ou parada.
2.4.1.3 Foco na segurança de tipos
Uma das vantagens do uso de uma linguagem de programação estaticamente
(fortemente) tipada, como Java, no desenvolvimento de aplicações web com o Play 2.0
é que o compilador do framework verifica as partes do código e consegue facilmente
identificar a existência de erros de sintaxe tanto nos Controladores, Rotas e Modelos
quanto na camada de Visualização.
A Figura 5 mostra um exemplo de erro de compilação de um arquivo de
Controlador da aplicação. Os erros de compilação são mostrados no navegador e são
destacados com as letras vermelhas.
Figura 5- Exemplo de erro de compilação no Play Framework 2.0
Fonte: Leroux et al (2012)
!
!
25!
2.4.1.4 Poderoso sistema de construção
Os desenvolvedores que utilizam o Play para o desenvolvimento de aplicações
web empresariais escaláveis necessitam de um mecanismo moderno e flexível para a
construção de aplicações em Java e Scala. Por esse motivo o Play Framework 2.0 é
integrado com os recursos do SBT (Simple Build Tool), sistema de construção de
aplicações em Java e Scala que permite uma maior facilidade na criação, execução,
compilação, construção, distribuição e gerenciamento de dependências da aplicação.
Figura 6- Console do Play Framework
Fonte: Elaborado pelo autor (2012)
2.4.1.5 Evoluções dos Bancos de Dados
As aplicações web geralmente necessitam de banco de dados relacional com
muitas tabelas e é preciso que os desenvolvedores criem documentações sobre a
modelagem de uma das tabelas, principalmente quando muitos desenvolvedores são
responsáveis pelo desenvolvimento e manutenção da aplicação ou quando é necessário
fazer alguma alteração no banco de dados.
O Play Framework 2.0 utiliza os scripts de evoluções para manter documentadas
todas as mudanças que ocorreram no banco de dados. Estes arquivos de evoluções são
arquivos escritos em SQL e são gerados automaticamente pelo Play a cada vez que os
!
!
26!
modelos são alterados. Cada script de evolução é composto de duas partes: Uma parte
de atualização da estrutura do banco de dados, e a outra parte com a regressão da
estrutura do banco de dados.
Figura 7- Exemplo de um script de evolução do banco de dados gerado pelo Play Framework
2.0
Fonte: Play Framework (2012)
!
!
27!
3 POTIGOLCODE: AMBIENTE DE APOIO AO ENSINO DE LÓGICA DE
PROGRAMAÇÃO ATRAVÉS DA LINGUAGEM DE PROGRAMAÇÃO
POTIGOL
O PotigolCode é um ambiente web desenvolvido para auxiliar os professores no ensino
de disciplinas como Introdução à Programação, Orientação a Objetos e Paradigmas de
Linguagens de Programação. O ambiente foi desenvolvido utilizando as linguagens de
programação Java e Scala através do Play Framework 2.0 e o banco de dados relacional
MySQL.
O sistema permite que os professores cadastrem os cursos e exercícios
propostos, arquivos e ferramentas de auxílio ao desenvolvimento utilizando a linguagem
de programação Potigol e o glossário da linguagem Potigol. Também permite que os
alunos sejam capazes de resolver esses exercícios, recebam feedback automático da
resposta submetida e ganhem uma pontuação, caso a resposta submetida esteja correta.
Para a geração dos feedbacks automáticos são utilizados casos de testes unitários
definidos previamente pelo professor no cadastro do exercício. Os códigos submetidos
pelos alunos são submetidos a estes casos de testes e caso os testes sejam satisfeitos o
aluno receberá a pontuação total, definida pelo professor, ou parte dela, caso o aluno
tenha visualizado a solução do exercício.
3.1 ARQUITETURA DO SISTEMA
O PotigolCode é um sistema web baseado na arquitetura MVC e utiliza o Play
Framework 2.0. A Figura 8 ilustra a arquitetura utilizada no PotigolCode.
!
!
28!
Figura 8- Diagrama da arquitetura proposta do sistema
Fonte: Elaborado pelo autor (2012)
O sistema utiliza uma infraestrutura privada de computação na nuvem com
sistema operacional Linux que conta com alta disponibilidade, escalabilidade horizontal
e vertical e alta capacidade de armazenamento e processamento. Esses recursos são
essenciais para garantir que alunos e professores possam acessar o sistema de qualquer
lugar do mundo e que o sistema execute os testes automatizados dos algoritmos
rapidamente. Como sistema gerenciador de banco de dados (SGDB) foi utilizado o
MySQL por ser livre, de código aberto e multiplataforma. No servidor foi utilizada a
versão inicial e de testes da linguagem Potigol que é responsável pela execução dos
algoritmos submetidos ao sistema.
3.2 REQUISITOS
Os requisitos do PotigolCode foram inspirados em aplicações web voltadas para
o ensino das linguagens de programação Java, Python e Ruby como CodingBat.com,
CodeCademy.com e TryRuby.org e nas necessidades apresentadas pelo professor
Leonardo Lucena, orientador deste trabalho e da linguagem de programação Potigol.
!
!
29!
3.2.1 Requisitos funcionais
Os requisitos funcionais representam as principais funcionalidades que o sistema
deve ser capaz de realizar. Eles são representados pelas tabelas 5, 6 e 7.
Quadro 1- Lista de Requisitos Funcionais do PotigolCode referentes ao ator Professor
Código Ator Nome Descrição
F01 Professor
Gerenciar
Cursos
Permite que o professor gerencie os
cursos.
F02 Professor
Gerenciar
Exercícios
Permite que o professor gerencie os
exercícios pertencentes aos cursos.
F03 Professor
Gerenciar
Downloads
Permite que o professor gerencie os
downloads.
F04 Professor
Gerenciar
Glossários
Permite que o professor gerencie os
glossários da linguagem Potigol.
F05 Professor
Gerenciar
Alunos
Permite que o professor gerencie os
alunos cadastrados no sistema.
F06 Professor
Gerenciar
Alunos
Permite que o professor gerencie os
alunos cadastrados no sistema.
Fonte: Elaborado pelo autor (2012)
Quadro 2- Lista de Requisitos Funcionais do PotigolCode referentes ao ator Aluno
Código Ator Nome Descrição
F08 Aluno
Visualizar os
Downloads
Permite que os alunos visualizem os
downloads cadastrados no sistema.
F09 Aluno
Realizar o
Download do
Arquivo
Permite que os alunos façam o download
dos arquivos cadastrados no sistema.
F10 Aluno Consultar Permite que os alunos consultem os
!
!
30!
Glossários glossários cadastrados no sistema.
F11 Aluno
Visualizar
Cursos
Permite que os alunos visualizem os
cursos cadastrados no sistema.
F12 Aluno
Visualizar
Exercícios
Permite que os alunos visualizem os
exercícios cadastrados no sistema.
F13 Aluno
Resolver
Exercícios
Permite que os alunos resolvam os
exercícios cadastrados no sistema
F14 Aluno
Enviar
Dúvida sobre
o Exercício
Permite que o aluno envie uma dúvida
sobre o exercício para os professores
cadastrados no sistema.
F15 Aluno
Acompanhar
Ranking
Permite que os alunos acompanhem o
ranking dos alunos.
Fonte: Elaborado pelo autor (2012)
Quadro 3- Lista de Requisitos Funcionais do PotigolCode referentes ao ator Sistema
Código Ator Nome Descrição
F16 Sistema
Avaliar a
resposta
submetida pelo
aluno
Responsável por submeter os casos de
testes, definidos pelo professor, à
resposta submetida pelo aluno.
F17 Sistema Pontuar o aluno
Responsável pelo cálculo da pontuação
obtida pelo aluno.
Fonte: Elaborado pelo autor (2012)
3.2.2 Requisitos não-funcionais
Os requisitos não funcionais são relacionados às restrições do sistema quanto à
disponibilidade, desempenho e segurança. Eles são representados pelas tabelas a seguir.
!
!
31!
Quadro 4- Lista de Requisitos Não Funcionais do PotigolCode referentes ao ator Sistema
Código Nome Descrição Categoria
NF01
Autenticação dos
Usuários
Os usuários do sistema deverão ser
autenticados através de diferentes
níveis de acesso.
Obrigatório
NF02 Disponibilidade
O sistema deve ser acessível de
qualquer lugar e em qualquer hora
através de um ambiente web.
Obrigatório
NF03 Desempenho
O sistema deve possuir um bom
desempenho para executar os testes
automatizados.
Desejável
Fonte: Elaborado pelo autor (2012)
3.3 CASOS DE USO
De acordo com as Figuras 9, 10 e 11, o PotigolCode possui dezessete casos de
uso e três atores. O ator Professor interage com os casos de uso gerenciar cursos,
gerenciar exercícios, gerenciar downloads, gerenciar glossários, gerenciar alunos e
gerenciar professores. O ator Aluno interage com os casos de uso registrar-se, visualizar
exercícios, resolver exercícios, visualizar downloads, fazer download dos arquivos,
visualizar glossários e acompanhar o ranking dos alunos. O ator Sistema interage com o
caso de uso avaliar resposta e pontuar resposta.
!
!
32!
Figura 9- Diagrama dos casos de uso referentes ao ator Professor
Fonte: Elaborado pelo autor (2012)
!
!
33!
Figura 80- Diagrama dos casos de uso referentes ao ator Aluno
Fonte: Elaborado pelo autor (2012)
Figura 11- Diagrama dos casos de uso referentes ao ator Sistema
Fonte: Elaborado pelo autor (2012)
3.3.1 Casos de uso do ator professor
A seguir são apresentados os casos de uso executados pelo ator Professor e que
compõem o módulo de gerenciamento do PotigolCode.
!
!
34!
3.3.1.1 Gerenciar cursos
O caso de uso Gerenciar Cursos é responsável pelo cadastro, edição, exclusão e
visualização dos cursos oferecidos no sistema. A Figura 12 representa as telas referentes
ao caso de uso. Nela estão representadas a listagem, o formulário de cadastro e edição e
a visualização dos cursos respectivamente.
Figura 12- Telas referentes ao caso de uso Gerenciar Cursos
Fonte: Elaborado pelo autor (2012)
3.3.1.2 Gerenciar exercícios
O caso de uso Gerenciar Exercícios é responsável pelo cadastro, edição,
exclusão e visualização dos exercícios pertencentes aos cursos oferecidos no sistema. A
Figura 13 representa as telas referentes ao caso de uso. Nela estão representadas a
listagem, o formulário de cadastro e edição e a visualização dos exercícios
respectivamente.
!
!
35!
Figura 13- Telas referentes ao caso de uso Gerenciar Exercícios
Fonte: Elaborado pelo autor (2012)
3.3.1.3 Gerenciar downloads
O caso de uso Gerenciar Downloads é responsável pelo cadastro, edição,
exclusão e visualização dos downloads e de suas categorias de download. A Figura 14
representa as telas referentes ao caso de uso. Nela estão representadas a listagem, o
formulário de cadastro e edição dos downloads e suas categorias respectivamente.
!
!
36!
Figura 14- Telas referentes ao caso de uso Gerenciar Download
Fonte: Elaborado pelo autor (2012)
3.3.1.4 Gerenciar glossários
O caso de uso Gerenciar Glossários é responsável pelo cadastro, edição,
exclusão e visualização dos glossários e seus capítulos da linguagem Potigol. A Figura
15 representa as telas referentes ao caso de uso. Nela estão representadas a listagem, o
formulário de cadastro e edição e a visualização dos glossários e seus capítulos
respectivamente.
!
!
37!
Figura 15- Telas referentes ao caso de uso Gerenciar Glossários
Fonte: Elaborado pelo autor (2012)
3.3.1.5 Gerenciar alunos
O caso de uso Gerenciar Alunos é responsável pelo cadastro, edição e exclusão
dos alunos cadastrados no sistema. A Figura 16 representa as telas referentes ao caso de
uso. Nela estão representadas a listagem, o formulário de cadastro e edição e a
visualização dos alunos respectivamente.
!
!
38!
Figura 16- Telas referentes ao caso de uso Gerenciar Alunos
Fonte: Elaborado pelo autor (2012)
3.3.1.6 Gerenciar professores
O caso de uso Gerenciar Professores é responsável pelo cadastro, edição,
exclusão e visualização dos professores cadastrados no sistema. A Figura 17 representa
as telas referentes ao caso de uso. Nela está representado o formulário de cadastro e
edição dos professores.
!
!
39!
Figura 17- Telas referentes ao caso de uso Gerenciar Professores
Fonte: Elaborado pelo autor (2012)
3.3.2 Casos de uso do ator aluno
A seguir são apresentados os casos de uso executados pelo ator Aluno e que
compõem o módulo de aprendizagem do PotigolCode.
3.3.2.1 Registrar-se
O caso de uso Registrar-se é responsável pelo cadastro do aluno no sistema. A
Figura 18 representa as telas referentes ao caso de uso. Nela estão representadas o
formulário de cadastro, email de confirmação do cadastro e acesso ao sistema.
!
!
40!
Figura 18- Telas referentes ao caso de uso Registrar-se
Fonte: Elaborado pelo autor (2012)
3.3.2.2 Visualizar cursos
O caso de uso Registrar-se é responsável pela listagem dos cursos e seus
exercícios. A Figura 19 representa as telas referentes ao caso de uso. Nela está
representada a listagem dos cursos.
!
!
41!
Figura 19- Telas referentes ao caso de uso Visualizar Cursos
Fonte: Elaborado pelo autor (2012)
3.3.2.3 Visualizar exercícios
O caso de uso Registrar-se é responsável pela listagem dos cursos e seus
exercícios. A Figura 20 representa as telas referentes ao caso de uso. Nela está
representada a listagem dos exercícios.
Figura 20- Telas referentes ao caso de uso Visualizar Exercícios
Fonte: Elaborado pelo autor (2012)
!
!
42!
3.3.2.4 Resolver exercícios
O caso de uso Resolver Exercícios é responsável por exibir a descrição do
exercício e é por meio dele que o aluno submete sua resposta para os testes
automatizados. A Figura 21 representa a tela referente ao caso de uso. Nela está
representada a resolução de um exercício cadastrado no sistema.
Figura 21- Tela referente ao caso de uso Resolver Exercícios
Fonte: Elaborado pelo autor (2012)
3.3.2.5 Enviar dúvida sobre um exercício
O caso de uso Enviar Dúvida sobre um Exercício permite que os alunos
submetam dúvidas aos professores cadastrados no sistema. A Figura 22 representa as
tela referente ao caso de uso. Nela está representado o formulário de envio da dúvida.
!
!
43!
Figura 22- Tela referente ao caso de uso Enviar Dúvida sobre um Exercício
Fonte: Elaborado pelo autor (2012)
3.3.2.6 Acompanhar ranking dos alunos
O caso de uso Acompanhar Ranking dos Alunos permite que os alunos
acompanhem a pontuação obtida dos alunos. A Figura 23 representa as telas referentes
ao caso de uso. Nela está representada a listagem do ranking dos alunos cadastrados no
sistema.
!
!
44!
Figura 23- Tela referente ao caso de uso Acompanhar Ranking dos Alunos
Fonte: Elaborado pelo autor (2012)
3.3.2.7 Visualizar downloads
O caso de uso Visualizar Downloads permite que os alunos consultem os
downloads cadastrados no sistema. A Figura 24 representa as telas referentes ao caso de
uso. Nela está representada a listagem dos downloads disponíveis ordenados por
categorias.
!
!
45!
Figura 24- Tela referente ao caso de uso Visualizar Downloads
Fonte: Elaborado pelo autor (2012)
3.3.2.8 Consultar glossários
O caso de uso Consultar Glossários permite que os alunos consultem os
glossários da linguagem Potigol. A Figura 25 representa a tela referente ao caso de uso.
Nela está representada a visualização de um glossário cadastrado no sistema.
!
!
46!
Figura 25- Tela referentes ao caso de uso Visualizar Glossário
Fonte: Elaborado pelo autor (2012)
3.3.3 Casos de uso do ator sistema
Abaixo são apresentados os casos de uso executados pelo ator Sistema e que
compõem o módulo de avaliação das respostas submetidas pelos alunos no
PotigolCode.
3.3.3.1 Avaliar resposta submetida pelo aluno
O caso de uso Avaliar Resposta é o caso de uso mais crítico do sistema. Ele é o
responsável pela avaliação da resposta submetida pelo usuário através de testes unitários
automatizados baseado nos casos de testes cadastrados previamente pelo professor. A
Figura 26 apresenta uma visão geral do funcionamento do caso de uso.
!
!
47!
Figura 26- Visão geral do funcionamento do caso de uso Avaliar Resposta
Fonte: Elaborado pelo autor (2012)
De acordo com a Figura 26, o código submetido pelo aluno e os casos de teste
do exercício são gravados em um arquivo temporário com a extensão .poti. A classe
utilitária PotigolTestsHelper é responsável por executar o arquivo, capturar o retorno do
código executado e comparar com os casos de testes. Uma vez os resultados
comparados, o feedback da execução é mostrada para o usuário. A figura 27 representa
as telas referentes ao caso de uso. Nela está representada o feedback que o aluno recebe
após a avaliação automática da resposta submetida.
!
!
48!
Figura 27- Exemplo de feedback apresentado ao aluno após a avaliação da resposta
Fonte: Elaborado pelo autor (2012)
3.3.3.2 Pontuar aluno
O caso de uso Pontuar Aluno é responsável pela contabilização dos pontos
obtidos pelo aluno no exercício. Caso o aluno submeta uma resposta correta para o
exercício sem ter consultado a solução proposta para o professor, a pontuação obtida é a
quantidade total de pontos do exercício. Se o aluno submeter uma resposta correta,
porém tenha consultado a solução proposta, a pontuação obtida corresponde à 75% do
valor do total de pontos do exercício.
3.4 DIAGRAMA DE CLASSES
O diagrama de classes do PotigolCode apresenta três pacotes principais onde são
armazenadas as classes de controladores, modelos, formulários e utilitários do sistema.
As Figuras 28 a 30 ilustram a organização das classes do sistema.
!
!
49!
Figura 28- Organização do pacote Controllers que contêm todos os controladores da aplicação
Fonte: Elaborado pelo autor (2012)
!
!
50!
Figura 29- Organização do pacote models que contêm todos as entidades da aplicação
Fonte: Elaborado pelo autor (2012)
!
!
51!
Figura 30- Organização do pacote helpers que contêm as classes utilitárias da aplicação
Fonte: Elaborado pelo autor (2012)
!
!
52!
No pacote controllers estão as classes controladoras da aplicação que são
responsáveis por gerenciar o acesso aos modelos, definir as regras de negócio e repassar
os dados para a camada de visualização. No pacote models estão as entidades da
aplicação que são uma representação das tabelas do banco de dados do sistema e são
responsáveis pela manipulação e persistência dos dados. No pacote helpers estão as
classes auxiliares do sistema como as de controle de acesso e permissão dos usuários,
execução dos testes automatizados, ordenadores e comparadores.
!
!
53!
4 CONSIDERAÇÕES FINAIS
O projeto desenvolvido neste trabalho permite que professores das disciplinas
iniciais dos cursos de TI tenham uma ferramenta de apoio no processo ensino
aprendizagem capaz de auxilia-los na ministração da disciplina e organização dos
cursos e exercícios propostos. Como vantagem, o sistema demonstrou ser capaz de
auxiliar os professores no gerenciamento dos materiais e glossários utilizados nos
cursos e exercícios propostos. Outra vantagem é que o aluno recebe o feedback
imediato da resposta submetida.
Acredita-se que o sistema seja uma boa ferramenta de apoio para o ensino e
aprendizado da linguagem Potigol, pois permite que os alunos acessem o sistema de
qualquer lugar, por computador ou dispositivo móvel, não havendo a necessidade de
instalação de nenhum aplicativo.
A utilização das tecnologias adotadas foi bastante importante para o
desenvolvimento deste trabalho, atendendo todos os requisitos funcionais e não
funcionais.
4.1 TRABALHOS FUTUROS
Como trabalho futuro, sugere-se o aprimoramento da avaliação automática das
respostas dos exercícios a fim de aumentar o desempenho dos testes automatizados.
Outra proposta é o aprimoramento dos critérios de pontuação do sistema para
calcular a pontuação obtida através de critérios de desempenho, verificação de estilos de
codificação, execução dos testes automatizados e qualidade do código.
Também como proposta, sugere-se a adição da funcionalidade de
acompanhamento das respostas enviadas pelo aluno, afim de avaliar o progresso e erro
mais comuns dos alunos durante os cursos.
Outra funcionalidade proposta é a possiblidade do professor adicionar uma
restrição temporal para o aluno submeter a resposta do exercício. Esta funcionalidade
poderá ser utilizada em sala de aula a fim de testar o nível conhecimento e habilidade de
resolução de problemas em um curto prazo.
!
!
54!
Também é proposta a criação de mecanismos de conquistas e selos baseado na
pontuação obtida pelo aluno e a possibilidade de compartilhamento de tais conquistas e
selos nas redes sociais como Twitter e Facebook.
Propõe-se também a implementação do suporte à outras linguagens de
programação como Java, Scala, Python e Ruby, permitindo que o PotigolCode possa ser
utilizado em outras instituições de ensino que utilizem tais linguagens de programação.
!
!
55!
REFERÊNCIAS
CODE SCHOOL. TryRuby Disponível em: <http://www.tryruby.org/>. Acesso em: 05 out.
2012.
CODECADEMY: Aprenda a Programar. Disponível em: <http://www.codecademy.com/pt/>.
Acesso em: 05 out. 2012.
DANTAS, Lucas Hiago A.; MORAIS, Clemilson de Lima. A LINGUAGEM DE
PROGRAMAÇÃO POTIGOL. In: VIII CONGRESSO DE INICIAÇÃO CIENTÍFICA DO
IFRN, 2011, Natal.
HOSTINS, Higor; RAABE, André. AUXILIANDO A APRENDIZAGEM DE ALGORITMOS
COM A FERRAMENTA WEBPORTUGOL. Disponível em:
<http://www.de9.ime.eb.br/~sousamaf/cd/pdf/arq0011.pdf>. Acesso em: 30 out. 2012.
LEROUX, Nicolas; KAPER, Sietse de. Play for Java: Covers Play 2. New York: Manning,
2012.
MANSO, António; MARQUES, Célio Gonçalo; MARQUES, Célio Gonçalo. Portugol IDE
v3.x: A new environment to teach and learn computer programming. Disponível em:
<http://www.ieec.uned.es/Investigacion/Educon2010/SearchTool/EDUCON2010/papers/2010S
05D04.pdf>. Acesso em: 30 out. 2012.
MOREIRA, Mireille Pinheiro; FAVERO, Eloi Luiz. Um Ambiente para Ensino de
Programação.Disponível em:
<http://www.ufpa.br/ppgcc/ppgcc/files/File/Seminario_Andamento/2008/EAD/artigo_1.1.pdf>.
Acesso em: 22 out. 2012.
PARLANT, Nick, CodingBat: Code Practice. Disponível em: <http://codingbat.com/>. Acesso
em: 05 out. 2012.
PETRY, Patrícia Gerent; ROSATELLI, Marta Costa. Ensino e Aprendizagem de Algoritmos
com o AlgoLC. Disponível em: <http://www.lbd.dcc.ufmg.br/colecoes/sbie/2006/040.pdf>.
Acesso em: 5 nov. 2012.
PIMENTEL, Edson P. et al. Avaliação Contínua da Aprendizagem, das Competências e
Habilidades em Programação de Computadores. Disponível em: <http://www.br-
ie.org/pub/index.php/wie/article/view/819/805>. Acesso em: 30 out. 2012.
RAABE, André Luís Alice; SILVA, Júlia Marques Carvalho da. Um Ambiente para
Atendimento as Dificuldades de Aprendizagem de Algoritmos. Disponível em:
!
!
56!
<http://200.169.53.89/download/CD%20congressos/2005/SBC%202005/pdf/arq0027.pdf>.
Acesso em: 30 out. 2012.
REBELO, Beatriz Jesus et al. Sistema Colaborativo de Suporte à Aprendizagem em Grupo
da Programação – SICAS-COL. Disponível em:
<http://www.niee.ufrgs.br/eventos/SIIE/2005/PDFs/Comunica%E7%F5es/c113-Rebelo.pdf>.
Acesso em: 30 out. 2012.
VIEIRA, Paulo Viníccius; RAABE, André Luis Alice; ZEFERINO, Cesar Albenes. Bipide –
Ambiente de Desenvolvimento Integrado para a Arquitetura dos Processadores
BIP. Disponível em: <http://www.br-ie.org/pub/index.php/rbie/article/view/1215/1111>.
Acesso em: 30 out. 2012.
ZENEXTY; TYPESAFE; Play 2.0 Documentation Disponível em:
<http://www.playframework.org/documentation/2.0.4/Home>. Acesso em: 05 out. 2012.

Más contenido relacionado

La actualidad más candente

Programa referencial de comunicação e tecnologias da informação
Programa  referencial de comunicação e tecnologias da informaçãoPrograma  referencial de comunicação e tecnologias da informação
Programa referencial de comunicação e tecnologias da informaçãosandra alfaiate
 
SimProgramming: Uma Abordagem Motivacional para a Aprendizagem de Alunos Inte...
SimProgramming: Uma Abordagem Motivacional para a Aprendizagem de Alunos Inte...SimProgramming: Uma Abordagem Motivacional para a Aprendizagem de Alunos Inte...
SimProgramming: Uma Abordagem Motivacional para a Aprendizagem de Alunos Inte...Ricardo Rodrigues Nunes
 
Arquitectura de computadores
Arquitectura de computadoresArquitectura de computadores
Arquitectura de computadoresRui Raposo
 
Tecnologias no Ensino- Aprendizagem através da Gamificação e ou através de Vídeo
Tecnologias no Ensino- Aprendizagem através da Gamificação e ou através de VídeoTecnologias no Ensino- Aprendizagem através da Gamificação e ou através de Vídeo
Tecnologias no Ensino- Aprendizagem através da Gamificação e ou através de VídeoMarta Saraiva
 
O uso do Moodle como ferramenta de apoio à aprendizagem no contexto da tecnol...
O uso do Moodle como ferramenta de apoio à aprendizagem no contexto da tecnol...O uso do Moodle como ferramenta de apoio à aprendizagem no contexto da tecnol...
O uso do Moodle como ferramenta de apoio à aprendizagem no contexto da tecnol...Renata Passos
 
Seminário de projecto 2º trimestre susana alentejano
Seminário de projecto 2º trimestre   susana alentejanoSeminário de projecto 2º trimestre   susana alentejano
Seminário de projecto 2º trimestre susana alentejanoSusana Alentejano
 
Relatório ava_2015martasaraiva
Relatório ava_2015martasaraivaRelatório ava_2015martasaraiva
Relatório ava_2015martasaraivaMarta Saraiva
 
Tic 10º Ano - Apresentação
Tic 10º Ano - ApresentaçãoTic 10º Ano - Apresentação
Tic 10º Ano - ApresentaçãoJoão Torres
 
POTIGOLCODE: AMBIENTE DE APOIO AO ENSINO DE LÓGICA DE PROGRAMAÇÃO ATRAVÉS DA...
 POTIGOLCODE: AMBIENTE DE APOIO AO ENSINO DE LÓGICA DE PROGRAMAÇÃO ATRAVÉS DA... POTIGOLCODE: AMBIENTE DE APOIO AO ENSINO DE LÓGICA DE PROGRAMAÇÃO ATRAVÉS DA...
POTIGOLCODE: AMBIENTE DE APOIO AO ENSINO DE LÓGICA DE PROGRAMAÇÃO ATRAVÉS DA...Allyson Barros
 
Proposta de plano de ensino
Proposta de plano de ensinoProposta de plano de ensino
Proposta de plano de ensinodkem
 
O Processo De Bolonha Na Web Semântica
O Processo De Bolonha Na Web SemânticaO Processo De Bolonha Na Web Semântica
O Processo De Bolonha Na Web SemânticaEduardo Covelinhas
 
Projeto Quero Aprender: Momiji
Projeto Quero Aprender: MomijiProjeto Quero Aprender: Momiji
Projeto Quero Aprender: MomijiElen Arantza
 

La actualidad más candente (17)

Programa referencial de comunicação e tecnologias da informação
Programa  referencial de comunicação e tecnologias da informaçãoPrograma  referencial de comunicação e tecnologias da informação
Programa referencial de comunicação e tecnologias da informação
 
Modelo paraprojeto
Modelo paraprojetoModelo paraprojeto
Modelo paraprojeto
 
SimProgramming: Uma Abordagem Motivacional para a Aprendizagem de Alunos Inte...
SimProgramming: Uma Abordagem Motivacional para a Aprendizagem de Alunos Inte...SimProgramming: Uma Abordagem Motivacional para a Aprendizagem de Alunos Inte...
SimProgramming: Uma Abordagem Motivacional para a Aprendizagem de Alunos Inte...
 
Arquitectura de computadores
Arquitectura de computadoresArquitectura de computadores
Arquitectura de computadores
 
Tecnologias no Ensino- Aprendizagem através da Gamificação e ou através de Vídeo
Tecnologias no Ensino- Aprendizagem através da Gamificação e ou através de VídeoTecnologias no Ensino- Aprendizagem através da Gamificação e ou através de Vídeo
Tecnologias no Ensino- Aprendizagem através da Gamificação e ou através de Vídeo
 
O uso do Moodle como ferramenta de apoio à aprendizagem no contexto da tecnol...
O uso do Moodle como ferramenta de apoio à aprendizagem no contexto da tecnol...O uso do Moodle como ferramenta de apoio à aprendizagem no contexto da tecnol...
O uso do Moodle como ferramenta de apoio à aprendizagem no contexto da tecnol...
 
Seminário de projecto 2º trimestre susana alentejano
Seminário de projecto 2º trimestre   susana alentejanoSeminário de projecto 2º trimestre   susana alentejano
Seminário de projecto 2º trimestre susana alentejano
 
Relatório ava_2015martasaraiva
Relatório ava_2015martasaraivaRelatório ava_2015martasaraiva
Relatório ava_2015martasaraiva
 
Elearning
ElearningElearning
Elearning
 
Tic
TicTic
Tic
 
Tic 10º Ano - Apresentação
Tic 10º Ano - ApresentaçãoTic 10º Ano - Apresentação
Tic 10º Ano - Apresentação
 
A ecologia do curso MPeL
A ecologia do curso MPeLA ecologia do curso MPeL
A ecologia do curso MPeL
 
POTIGOLCODE: AMBIENTE DE APOIO AO ENSINO DE LÓGICA DE PROGRAMAÇÃO ATRAVÉS DA...
 POTIGOLCODE: AMBIENTE DE APOIO AO ENSINO DE LÓGICA DE PROGRAMAÇÃO ATRAVÉS DA... POTIGOLCODE: AMBIENTE DE APOIO AO ENSINO DE LÓGICA DE PROGRAMAÇÃO ATRAVÉS DA...
POTIGOLCODE: AMBIENTE DE APOIO AO ENSINO DE LÓGICA DE PROGRAMAÇÃO ATRAVÉS DA...
 
Guião 02.03.2012
Guião 02.03.2012Guião 02.03.2012
Guião 02.03.2012
 
Proposta de plano de ensino
Proposta de plano de ensinoProposta de plano de ensino
Proposta de plano de ensino
 
O Processo De Bolonha Na Web Semântica
O Processo De Bolonha Na Web SemânticaO Processo De Bolonha Na Web Semântica
O Processo De Bolonha Na Web Semântica
 
Projeto Quero Aprender: Momiji
Projeto Quero Aprender: MomijiProjeto Quero Aprender: Momiji
Projeto Quero Aprender: Momiji
 

Destacado

Apresentação - SUAP - CNAT 13/05/2016
Apresentação - SUAP - CNAT 13/05/2016Apresentação - SUAP - CNAT 13/05/2016
Apresentação - SUAP - CNAT 13/05/2016Allyson Barros
 
Apresentação - Cache / Snippets - Ratts Comunicação
Apresentação - Cache / Snippets - Ratts ComunicaçãoApresentação - Cache / Snippets - Ratts Comunicação
Apresentação - Cache / Snippets - Ratts ComunicaçãoAllyson Barros
 
Material - Play! Framework - UERN - Aula 01
Material - Play! Framework - UERN - Aula 01Material - Play! Framework - UERN - Aula 01
Material - Play! Framework - UERN - Aula 01Allyson Barros
 
SUAP: Caso de Sucesso utilizando Python e Django no Serviço Público Federal
SUAP: Caso de Sucesso utilizando Python e Django no Serviço Público FederalSUAP: Caso de Sucesso utilizando Python e Django no Serviço Público Federal
SUAP: Caso de Sucesso utilizando Python e Django no Serviço Público FederalAllyson Barros
 
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorPlay Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorAllyson Barros
 

Destacado (7)

Apresentação - SUAP - CNAT 13/05/2016
Apresentação - SUAP - CNAT 13/05/2016Apresentação - SUAP - CNAT 13/05/2016
Apresentação - SUAP - CNAT 13/05/2016
 
Potigolcode
PotigolcodePotigolcode
Potigolcode
 
Desenvolvendo Interfaces de Usuário Multiplataformas utilizando MDA
Desenvolvendo Interfaces de Usuário Multiplataformas utilizando MDADesenvolvendo Interfaces de Usuário Multiplataformas utilizando MDA
Desenvolvendo Interfaces de Usuário Multiplataformas utilizando MDA
 
Apresentação - Cache / Snippets - Ratts Comunicação
Apresentação - Cache / Snippets - Ratts ComunicaçãoApresentação - Cache / Snippets - Ratts Comunicação
Apresentação - Cache / Snippets - Ratts Comunicação
 
Material - Play! Framework - UERN - Aula 01
Material - Play! Framework - UERN - Aula 01Material - Play! Framework - UERN - Aula 01
Material - Play! Framework - UERN - Aula 01
 
SUAP: Caso de Sucesso utilizando Python e Django no Serviço Público Federal
SUAP: Caso de Sucesso utilizando Python e Django no Serviço Público FederalSUAP: Caso de Sucesso utilizando Python e Django no Serviço Público Federal
SUAP: Caso de Sucesso utilizando Python e Django no Serviço Público Federal
 
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorPlay Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
 

Similar a POTIGOLCODE: AMBIENTE DE APOIO AO ENSINO DE LÓGICA DE PROGRAMAÇÃO ATRAVÉS DA LINGUAGEM DE PROGRAMAÇÃO POTIGOL

387555062-analise-sistemas-pdf.pdf
387555062-analise-sistemas-pdf.pdf387555062-analise-sistemas-pdf.pdf
387555062-analise-sistemas-pdf.pdfNickMartinsgaspar
 
Apasistemaoperacionalcorcapaficha20110204 130824181441-phpapp02
Apasistemaoperacionalcorcapaficha20110204 130824181441-phpapp02Apasistemaoperacionalcorcapaficha20110204 130824181441-phpapp02
Apasistemaoperacionalcorcapaficha20110204 130824181441-phpapp02Ernane Martins
 
Apostila lógica de programação
Apostila lógica de programaçãoApostila lógica de programação
Apostila lógica de programaçãoMarcos Nori
 
TCC - Utilização de Metodologias Ágeis para Adaptação de um Processo de Desen...
TCC - Utilização de Metodologias Ágeis para Adaptação de um Processo de Desen...TCC - Utilização de Metodologias Ágeis para Adaptação de um Processo de Desen...
TCC - Utilização de Metodologias Ágeis para Adaptação de um Processo de Desen...Felipe Nascimento
 
A Iniciativa JEDI, O ensino de Java livre e gratuito
A Iniciativa JEDI, O ensino de Java livre e gratuitoA Iniciativa JEDI, O ensino de Java livre e gratuito
A Iniciativa JEDI, O ensino de Java livre e gratuitocejug
 
Programas aplicativos
Programas aplicativosProgramas aplicativos
Programas aplicativosMatheusRpz
 
RECOMENDAÇÃO DE DOCUMENTOS PARA OS USUÁRIOS DO AVA MOODLE A PARTIR DAS HASHTA...
RECOMENDAÇÃO DE DOCUMENTOS PARA OS USUÁRIOS DO AVA MOODLE A PARTIR DAS HASHTA...RECOMENDAÇÃO DE DOCUMENTOS PARA OS USUÁRIOS DO AVA MOODLE A PARTIR DAS HASHTA...
RECOMENDAÇÃO DE DOCUMENTOS PARA OS USUÁRIOS DO AVA MOODLE A PARTIR DAS HASHTA...Adelton Ribeiro
 
Apostila adm produção
Apostila adm produçãoApostila adm produção
Apostila adm produçãoSibele Silva
 
Um estudo sobre o gerenciamento de variabilidade em LInha de produto de software
Um estudo sobre o gerenciamento de variabilidade em LInha de produto de softwareUm estudo sobre o gerenciamento de variabilidade em LInha de produto de software
Um estudo sobre o gerenciamento de variabilidade em LInha de produto de softwareDiogenes Freitas
 
TCC Virgilio Rocha Ximenes
TCC Virgilio Rocha XimenesTCC Virgilio Rocha Ximenes
TCC Virgilio Rocha XimenesVirgilio Ximenes
 
Apostila elementos de projeto de informática
Apostila elementos de projeto de informáticaApostila elementos de projeto de informática
Apostila elementos de projeto de informáticaFabricio Tecinfo
 
Elerning em contexto de Realidade Aumentada
Elerning em contexto de Realidade AumentadaElerning em contexto de Realidade Aumentada
Elerning em contexto de Realidade AumentadaCarlos Amorim
 
Estudo da qualidade do ambiente virtual de aprendizagem moodle
Estudo da qualidade do ambiente virtual de aprendizagem moodleEstudo da qualidade do ambiente virtual de aprendizagem moodle
Estudo da qualidade do ambiente virtual de aprendizagem moodlecamilaflorentinofrancisco
 
Programa Redes de Comunicação - Ens. Profissional
Programa Redes de Comunicação - Ens. ProfissionalPrograma Redes de Comunicação - Ens. Profissional
Programa Redes de Comunicação - Ens. ProfissionalFilipe Mendonça
 
Redes de comunicaçao
Redes de comunicaçaoRedes de comunicaçao
Redes de comunicaçaoRui Raposo
 
VISUALIZAÇÃO DE MODELOS VTK UTILIZANDO WEBGL:UM ESTUDO EXPERIMENTAL
VISUALIZAÇÃO DE MODELOS VTK UTILIZANDO WEBGL:UM ESTUDO EXPERIMENTALVISUALIZAÇÃO DE MODELOS VTK UTILIZANDO WEBGL:UM ESTUDO EXPERIMENTAL
VISUALIZAÇÃO DE MODELOS VTK UTILIZANDO WEBGL:UM ESTUDO EXPERIMENTALJan Palach
 
Visualizaçãi de Modelos VTK Utilizando WebGL: Um estudo experimental.
Visualizaçãi de Modelos VTK Utilizando WebGL: Um estudo experimental.Visualizaçãi de Modelos VTK Utilizando WebGL: Um estudo experimental.
Visualizaçãi de Modelos VTK Utilizando WebGL: Um estudo experimental.Jan Palach
 

Similar a POTIGOLCODE: AMBIENTE DE APOIO AO ENSINO DE LÓGICA DE PROGRAMAÇÃO ATRAVÉS DA LINGUAGEM DE PROGRAMAÇÃO POTIGOL (20)

387555062-analise-sistemas-pdf.pdf
387555062-analise-sistemas-pdf.pdf387555062-analise-sistemas-pdf.pdf
387555062-analise-sistemas-pdf.pdf
 
Apasistemaoperacionalcorcapaficha20110204 130824181441-phpapp02
Apasistemaoperacionalcorcapaficha20110204 130824181441-phpapp02Apasistemaoperacionalcorcapaficha20110204 130824181441-phpapp02
Apasistemaoperacionalcorcapaficha20110204 130824181441-phpapp02
 
Apostila lógica de programação
Apostila lógica de programaçãoApostila lógica de programação
Apostila lógica de programação
 
TCC - Utilização de Metodologias Ágeis para Adaptação de um Processo de Desen...
TCC - Utilização de Metodologias Ágeis para Adaptação de um Processo de Desen...TCC - Utilização de Metodologias Ágeis para Adaptação de um Processo de Desen...
TCC - Utilização de Metodologias Ágeis para Adaptação de um Processo de Desen...
 
gestão da qualidade.pdf
gestão da qualidade.pdfgestão da qualidade.pdf
gestão da qualidade.pdf
 
A Iniciativa JEDI, O ensino de Java livre e gratuito
A Iniciativa JEDI, O ensino de Java livre e gratuitoA Iniciativa JEDI, O ensino de Java livre e gratuito
A Iniciativa JEDI, O ensino de Java livre e gratuito
 
Programas aplicativos
Programas aplicativosProgramas aplicativos
Programas aplicativos
 
RECOMENDAÇÃO DE DOCUMENTOS PARA OS USUÁRIOS DO AVA MOODLE A PARTIR DAS HASHTA...
RECOMENDAÇÃO DE DOCUMENTOS PARA OS USUÁRIOS DO AVA MOODLE A PARTIR DAS HASHTA...RECOMENDAÇÃO DE DOCUMENTOS PARA OS USUÁRIOS DO AVA MOODLE A PARTIR DAS HASHTA...
RECOMENDAÇÃO DE DOCUMENTOS PARA OS USUÁRIOS DO AVA MOODLE A PARTIR DAS HASHTA...
 
At1
At1At1
At1
 
Apostila adm produção
Apostila adm produçãoApostila adm produção
Apostila adm produção
 
Um estudo sobre o gerenciamento de variabilidade em LInha de produto de software
Um estudo sobre o gerenciamento de variabilidade em LInha de produto de softwareUm estudo sobre o gerenciamento de variabilidade em LInha de produto de software
Um estudo sobre o gerenciamento de variabilidade em LInha de produto de software
 
TCC Virgilio Rocha Ximenes
TCC Virgilio Rocha XimenesTCC Virgilio Rocha Ximenes
TCC Virgilio Rocha Ximenes
 
Prog web
Prog webProg web
Prog web
 
Apostila elementos de projeto de informática
Apostila elementos de projeto de informáticaApostila elementos de projeto de informática
Apostila elementos de projeto de informática
 
Elerning em contexto de Realidade Aumentada
Elerning em contexto de Realidade AumentadaElerning em contexto de Realidade Aumentada
Elerning em contexto de Realidade Aumentada
 
Estudo da qualidade do ambiente virtual de aprendizagem moodle
Estudo da qualidade do ambiente virtual de aprendizagem moodleEstudo da qualidade do ambiente virtual de aprendizagem moodle
Estudo da qualidade do ambiente virtual de aprendizagem moodle
 
Programa Redes de Comunicação - Ens. Profissional
Programa Redes de Comunicação - Ens. ProfissionalPrograma Redes de Comunicação - Ens. Profissional
Programa Redes de Comunicação - Ens. Profissional
 
Redes de comunicaçao
Redes de comunicaçaoRedes de comunicaçao
Redes de comunicaçao
 
VISUALIZAÇÃO DE MODELOS VTK UTILIZANDO WEBGL:UM ESTUDO EXPERIMENTAL
VISUALIZAÇÃO DE MODELOS VTK UTILIZANDO WEBGL:UM ESTUDO EXPERIMENTALVISUALIZAÇÃO DE MODELOS VTK UTILIZANDO WEBGL:UM ESTUDO EXPERIMENTAL
VISUALIZAÇÃO DE MODELOS VTK UTILIZANDO WEBGL:UM ESTUDO EXPERIMENTAL
 
Visualizaçãi de Modelos VTK Utilizando WebGL: Um estudo experimental.
Visualizaçãi de Modelos VTK Utilizando WebGL: Um estudo experimental.Visualizaçãi de Modelos VTK Utilizando WebGL: Um estudo experimental.
Visualizaçãi de Modelos VTK Utilizando WebGL: Um estudo experimental.
 

POTIGOLCODE: AMBIENTE DE APOIO AO ENSINO DE LÓGICA DE PROGRAMAÇÃO ATRAVÉS DA LINGUAGEM DE PROGRAMAÇÃO POTIGOL

  • 1. INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE ALLYSON BRUNO CAMPOS BARROS VILELA POTIGOLCODE: AMBIENTE DE APOIO AO ENSINO DE LÓGICA DE PROGRAMAÇÃO ATRAVÉS DA LINGUAGEM DE PROGRAMAÇÃO POTIGOL NATAL-RN 2012
  • 2. ALLYSON BRUNO CAMPOS BARROS VILELA POTIGOLCODE: AMBIENTE DE APOIO AO ENSINO DE LÓGICA DE PROGRAMAÇÃO ATRAVÉS DA LINGUAGEM DE PROGRAMAÇÃO POTIGOL Trabalho de Conclusão de Curso apresentado ao Curso Superior de Análise de Sistemas do Instituto Federal de Educação, Ciência e Tecnologia do Rio Grande do Norte, em cumprimento às exigências legais como requisito parcial à obtenção do título de Tecnólogo em Análise e Desenvolvimento de Sistemas. Orientador: Leonardo Reis Lucena. Co-Orientador: Jailton Carlos Paiva. NATAL/RN 2012
  • 3. ! ALLYSON BRUNO CAMPOS BARROS VILELA POTIGOLCODE: AMBIENTE DE APOIO AO ENSINO DE LÓGICA DE PROGRAMAÇÃO ATRAVÉS DA LINGUAGEM DE PROGRAMAÇÃO POTIGOL Trabalho de Conclusão de Curso apresentado ao Curso Superior de Análise de Sistemas do Instituto Federal de Educação, Ciência e Tecnologia do Rio Grande do Norte, em cumprimento às exigências legais como requisito parcial à obtenção do título de Tecnólogo em Análise e Desenvolvimento de Sistemas. Trabalho de Conclusão de Curso apresentado e aprovado em ___/___/____, pela seguinte Banca Examinadora: BANCA EXAMINADORA Prof. Msc. Leonardo Reis Lucena – Presidente Instituto Federal de Educação, Ciência e Tecnologia do Rio Grande do Norte Prof. Msc. Alexandre Gomes de Lima - Examinador Instituto Federal de Educação, Ciência e Tecnologia do Rio Grande do Norte Prof. Msc. Plácido Antonio de Souza Neto - Examinadora Instituto Federal de Educação, Ciência e Tecnologia do Rio Grande do Norte
  • 4. ! AGRADECIMENTOS Agradeço primeiramente a Deus, por sempre ter me guiado, me abençoado e por ter iluminado minha mente durante os inúmeros desafios enfrentados ao longo do curso. À meus pais, Marcos e Conceição, por terem se esforçado para me proporcionar e me dar condições necessárias para os meus estudos, pelas orientações nos momentos importantes e por sempre terem me apoiado e confiado no meu potencial. À meus familiares por sempre estarem orando pela minha vida pessoal, profissional e espiritual e pelos momentos alegres e descontraídos com a família reunida. À minha noiva Railma Almeida e sua família, por estarem sempre ao meu lado e com muito amor e compreensão terem me apoiado e me auxiliado a enfrentar e superar todos os desafios que surgiram durante esta etapa tão importante na minha vida. Ao meu orientador Leonardo Lucena, pela confiança, paciência e pelos ensinamentos que tornaram possível o desenvolvimento deste trabalho e de inúmeros outros ao longo do curso. E ao meu co-orientador Jailton Paiva, pelo apoio, colaboração, atenção e ensinamentos durante os momentos finais deste trabalho. Aos membros da banca, por dedicarem o seu tempo a ler este trabalho e por contribuírem com seu conhecimento para a minha formação. A todos os meus professores do IFRN por compartilharem seus conhecimentos que foram muito importantes no desenvolvimento deste trabalho e para minha formação profissional. Aos professores e alunos do Laboratório de Inovação Tecnológica em Saúde – LAIS por terem compartilhado o seu conhecimento, por acreditarem em meu trabalho e terem me dado a oportunidade de fazer parte desta equipe. Aos meus amigos e companheiros do Grupo WebLovers: Sedir Morais, Elionai Moura, Daniele Montegro e Giancarlo Silva pela parceria, apoio, amizade e confiança durante esses anos de projetos. Aos meus amigos e meus colegas de curso, pelo incentivo e pelo apoio e por torcerem por mim. DESEJO SUCESSO A TODOS E QUE DEUS OS ABENÇOE ABUNDANTEMENTE!
  • 5. ! RESUMO Uma das disciplinas mais importantes para os cursos de tecnologia da informação é a disciplina introdutória à programação, pois é por meio dela que os alunos são capacitados para utilizar a lógica de programação na resolução de problemas. O presente trabalho tem por finalidade descrever o desenvolvimento de uma ferramenta de apoio ao ensino e aprendizado de programação permitindo o desenvolvimento dos algoritmos na linguagem Potigol, linguagem de programação multiparadigma e totalmente em português. Palavras-chave: Algoritmos. Ensino-aprendizagem. Ferramenta de apoio. Introdução à programação. Lógica de programação.
  • 6. ! ABSTRACT One of the most important disciplines for the information technology courses is the discipline Introductory Programming, because is through it that the students are trained to use the programming logic in the troubleshooting. The purpose of the present study is describes the developing of a teaching/learning support tool allowing the developing of algorithms in the potigol language, multi paradigm programming language and entirely in Portuguese. Keywords: Algorithm. Teaching/learning. Support tool. Introductory programming. Programming logic.
  • 7. ! LISTA DE ILUSTRAÇÕES Figura 1- Exemplo de código escrito em Potigol 20 Figura 2- Estrutura da linguagem Potigol 21 Figura 3- A arquitetura geral do Play Framework 23 Figura 4- A arquitetura MVC no Play Framework 25 Figura 5- Exemplo de erro de compilação no Play Framework 2.0 25 Figura 6- Console do Play Framework 26 Figura 7- Exemplo de um script de evolução do banco de dados gerado pelo Play Framework 2.0 27 Figura 8- Diagrama da arquitetura proposta do sistema 30 Quadro 1- Lista de Requisitos Funcionais do PotigolCode referentes ao ator Professor 30 Quadro 2- Lista de Requisitos Funcionais do PotigolCode referentes ao ator Aluno 30 Quadro 3- Lista de Requisitos Funcionais do PotigolCode referentes ao ator Sistema 31 Quadro 4- Lista de Requisitos Não Funcionais do PotigolCode referentes ao ator Sistema 31 Figura 9- Diagrama dos casos de uso referentes ao ator Professor 33 Figura 10- Diagrama dos casos de uso referentes ao ator Aluno 34 Figura 11- Diagrama dos casos de uso referentes ao ator Sistema 34 Figura 12- Telas referentes ao caso de uso Gerenciar Cursos 35 Figura 13- Telas referentes ao caso de uso Gerenciar Exercícios 36 Figura 14- Telas referentes ao caso de uso Gerenciar Download 37 Figura 15- Telas referentes ao caso de uso Gerenciar Glossários 38 Figura 16- Telas referentes ao caso de uso Gerenciar Alunos 39 Figura 17- Telas referentes ao caso de uso Gerenciar Professores 40 Figura 18- Telas referentes ao caso de uso Registrar-se 41 Figura 19- Telas referentes ao caso de uso Visualizar Cursos 42 Figura 20- Telas referentes ao caso de uso Visualizar Exercícios 43 Figura 21- Tela referente ao caso de uso Resolver Exercícios 44 Figura 22- Telas referentes ao caso de uso Enviar Dúvida sobre um Exercício 45
  • 8. ! Figura 23- Tela referente ao caso de uso Enviar Dúvida sobre um Exercício 46 Figura 24- Tela referente ao caso de uso Visualizar Downloads 47 Figura 25- Telas referentes ao caso de uso Visualizar Glossário 48 Figura 26- Visão geral do funcionamento do caso de uso Avaliar Resposta 49 Figura 27- Exemplo de feedback apresentado ao aluno após a avaliação da resposta 50 Figura 28- Organização do pacote Controllers que contêm todos os controladores da aplicação 50 Figura 29- Organização do pacote models que contêm todos as entidades da aplicação 51 Figura 30- Organização do pacote helpers que contêm as classes utilitárias da aplicação 52
  • 9. ! LISTA DE E SIGLAS API Application Programming Interface AVA Ambiente Virtual de Aprendizagem BIP Basic Instruction-set Processor DSL Domain-Specific Language HTML5 Hypertext Markup Language, versão 5 HTTP Hypertext Transfer Protocol IFRN Instituto Federal de Educação, Ciência e Tecnologia do Rio Grande do Norte MVC Model, View, Controller Play Play Framework SBT Simple Build Tool SGDB Sistema de Gerenciamento de Banco de Dados SQL Structured Query Language TI Tecnologia da Informação
  • 10. ! ! SUMÁRIO 1 INTRODUÇÃO 12 1.1 OBJETIVOS 13 1.1.1 Objetivo geral 13 1.1.2 Objetivos específicos 13 1.2 METODOLOGIA 14 1.3 ESTRUTURA DO TRABALHO 14 2 FUNDAMENTAÇÃO TEÓRICA 15 2.1 ESTADO DA ARTE 15 2.2 PROCESSO ENSINO-APRENDIZAGEM DE PROGRAMAÇÃO 16 2.2.1 Problemas de aprendizagem de algoritmos 16 2.2.2 Ferramentas de apoio ao aprendizado de algoritmos 17 2.3 A LINGUAGEM POTIGOL 18 2.3.1 Processo de compilação 19 2.4 PLAY FRAMEWORK 20 2.4.1 Arquitetura do play framework 21 2.4.1.1 MVC (Model, View, Controller) 22 2.4.1.2 Programação assíncrona e agendamento de tarefas 23 2.4.1.3 Foco na segurança de tipos 24 2.4.1.4 Poderoso sistema de construção 25 2.4.1.5 Evoluções dos Bancos de Dados 25 3 POTIGOLCODE: AMBIENTE DE APOIO AO ENSINO DE LÓGICA DE PROGRAMAÇÃO ATRAVÉS DA LINGUAGEM DE PROGRAMAÇÃO POTIGOL 27 3.1 ARQUITETURA DO SISTEMA 27 3.2 REQUISITOS 28 3.2.1 Requisitos funcionais 29 3.2.2 Requisitos não-funcionais 30 3.3 CASOS DE USO 31 3.3.1 Casos de uso do ator professor 33 3.3.1.1 Gerenciar cursos 34 3.3.1.2 Gerenciar exercícios 34
  • 11. ! ! 3.3.1.3 Gerenciar downloads 35 3.3.1.4 Gerenciar glossários 36 3.3.1.5 Gerenciar alunos 37 3.3.1.6 Gerenciar professores 38 3.3.2 Casos de uso do ator aluno 39 3.3.2.1 Registrar-se 39 3.3.2.2 Visualizar cursos 40 3.3.2.3 Visualizar exercícios 41 3.3.2.4 Resolver exercícios 42 3.3.2.5 Enviar dúvida sobre um exercício 43 3.3.2.6 Acompanhar ranking dos alunos 44 3.3.2.7 Visualizar downloads 45 3.3.2.8 Consultar glossários 46 3.3.3 Casos de uso do ator sistema 47 3.3.3.1 Avaliar resposta submetida pelo aluno 47 3.3.3.2 Pontuar aluno 49 3.4 DIAGRAMA DE CLASSES 49 4 CONSIDERAÇÕES FINAIS 54 4.1 TRABALHOS FUTUROS 54 REFERÊNCIAS 56
  • 12. ! ! 12! 1 INTRODUÇÃO Uma das disciplinas mais importantes para os cursos de Tecnologia da Informação (TI) é a Introdução à Programação. É por meio dela que os alunos desenvolvem a lógica de programação e a habilidade de análise e resolução de problemas. Estas habilidades são necessárias em outras disciplinas mais avançadas do curso. Para a maioria dos alunos que acabaram de ingressar nos cursos de TI, o processo de aprendizado de algoritmos é difícil e exigente já que muitos deles ingressaram no curso sem nenhum conhecimento prévio sobre programação. Segundo Borges (2000 apud MOREIRA; FAVERO, 2008), muitos dos alunos que concluíram a disciplina não possuem um conhecimento adequado e muitos dos alunos acabam abandonando o curso nos semestres iniciais. As dificuldades encontradas pelos alunos durante o processo de aprendizagem de algoritmos são causadas, geralmente, devido a ausência ou ineficácia de estratégias de resolução lógica dos problemas propostos pelos professores durante o curso, o grande número de alunos por turma, falta de motivação, insegurança e baixa autoestima e a demora na correção e feedback dos exercícios. Com a finalidade de reduzir os problemas no processo de ensino-aprendizagem de algoritmos são utilizadas ferramentas de apoio que auxiliem professores e alunos durante a disciplina. Essas ferramentas são chamadas de Ambientes Virtuais de Aprendizagem (AVAs) e são utilizadas, geralmente, em cursos ministrados à distância. Os AVAs permitem que os alunos tenham acesso ao ambiente de qualquer lugar, sem a necessidade de instalação de aplicativos e de um computador com muitos recursos para exercitarem seus conhecimentos. Nestas ferramentas, os professores são capazes de gerenciar cursos, exercícios, atividades avaliativas, fóruns de discussão e outros recursos, facilitando a administração da turma. Existem diversas ferramentas que auxiliam os alunos no aprendizado de algoritmos e lógica de programação utilizando linguagens de programação populares como Java, Ruby e Python, como exemplo temos o CodingBat, CodeCademy e TryRuby.com. Outras utilizam fluxogramas ou pseudocódigos, como o Portugol, para geração da resolução dos problemas. Neste trabalho é proposta a criação de um ambiente de apoio ao aprendizado de algoritmos utilizando o Potigol, uma Linguagem de Domínio Específico (DSL)
  • 13. ! ! 13! multiplataforma, multiparadigma e de sintaxe fácil e intuitiva que utiliza recursos dos paradigmas de programação estruturados, orientado a objetos e funcional (DANTAS; MORAIS, 2011). A linguagem foi desenvolvida por alunos do IFRN com o propósito de facilitar o aprendizado de algoritmos e técnicas de programação através de códigos escritos totalmente em português. Esta ferramenta, chamada de PotigolCode, tem o objetivo de apoiar os alunos no aprendizado de programação através de desafios práticos propostos pelos professores. Para minimizar os problemas relacionados às dificuldades e demora na avaliação dos exercícios, o PotigolCode utiliza recursos de avaliação e geração de feedback através de testes automatizados. A ferramenta conta com recursos de gerenciamento de cursos, exercícios, downloads, glossários e usuários permitindo uma melhor administração dos alunos e dos conteúdos da turma. 1.1 OBJETIVOS O objetivo principal deste trabalho é desenvolver uma ferramenta de apoio para o ensino e aprendizado de algoritmos, através da linguagem de programação Potigol, nas disciplinas de Introdução à programação, programação orientada à objetos e paradigmas de linguagem de programação do curso de Análise e Desenvolvimento de Sistemas do IFRN. 1.1.1 Objetivos específicos Os objetivos específicos do presente trabalho consistem em: a) estudar as tecnologias necessárias para a implementação e implantação do sistema; b) elicitar os requisitos do sistema que será desenvolvido; c) modelar o Sistema; d) realizar implementação da aplicação; e) testar e validar o sistema desenvolvido;
  • 14. ! ! 14! f) documentar o desenvolvimento. 1.2 METODOLOGIA A metodologia adotada por este trabalho consiste das fases teórica e experimental. A primeira baseia-se em pesquisar e adquirir o conhecimento necessário para a realização do objetivo deste trabalho. Nesta fase, é formada toda a base de conhecimento necessária para o desenvolvimento da ferramenta proposta. A fase experimental consiste em descrever os requisitos, modelar e desenvolver o sistema PotigolCode. 1.3 ESTRUTURA DO TRABALHO O restante do trabalho encontra-se divido da seguinte forma: A Seção 2 descreve os principais temas relacionados ao trabalho desenvolvido. Inicia com uma revisão bibliográfica dos trabalhos correlatos apresentados dentro da área de pesquisa deste trabalho. Em seguida é feita uma abordagem sobre o processo ensino-aprendizagem de programação, os problemas de aprendizagem de algoritmos, ferramentas de apoio ao aprendizado de algoritmos, a linguagem potigol e o play framework. A seção 3 traz a especificação e implementação da ferramenta. É feita, descrevendo a arquitetura do sistema, os requisitos funcionais e não funcionais, os diagramas de casos de uso e os diagramas de classes. A Seção 4 apresenta as conclusões e os possíveis trabalhos futuros relacionados ao tema abordado neste trabalho.
  • 15. ! ! 15! 2 FUNDAMENTAÇÃO TEÓRICA Nesta seção são apresentados alguns aspectos teóricos relacionados ao trabalho, tais como: processo de ensino-aprendizagem de programação, problemas de aprendizagem de algoritmos, ferramentas de apoio ao aprendizado de algoritmos, a linguagem de programação Potigol e o Play Framework. Na seção estado da arte são apresentados alguns trabalhos correlatos. 2.1 ESTADO DA ARTE Moreira e Favero (2008) propuseram a criação de um ambiente de aprendizado virtual para o ensino e aprendizado de algoritmos integrado ao Moodle, sistema de gerenciamento de cursos para aprendizagem online. No ambiente foi utilizado o modelo de regressão linear múltipla e métricas de engenharia de software para avaliação automática, pontuação e para a geração dos feedbacks dos algoritmos submetidos. Rebelo e seus colegas (2005) propuseram a criação de um modelo de ferramentas colaborativas voltadas para o ensino e aprendizado de algoritmos, que permitam a realização de atividades práticas e problemas do contexto real dos alunos. Estas ferramentas permitem o planejamento, construção e simulação de algoritmos utilizando a colaboração entre os alunos, por meio de grupos de discussão e argumentação, mesmo fora de sala de aula. Manso (2010) propôs o PortugolIDE, ambiente de ensino e aprendizado de algoritmos que utiliza os recursos da linguagem de programação Portugol e de fluxogramas para geração dos algoritmos. O ambiente permite que os alunos construam, executem e chequem o funcionamento dos algoritmos. Vieira (2010) propôs o Bipide, ambiente de desenvolvimento integrado voltado para o desenvolvimento, conversão e simulação de programas voltados para a família de processadores BIP através da linguagem de programação Portugol com o objetivo de facilitar o ensino e aprendizado da disciplina de arquitetura e organização de computadores. O ambiente é composto por um editor de texto, um compilador que
  • 16. ! ! 16! converte o código para a linguagem de montagem dos processadores BIP e um simulador dos processadores BIP. Hontins (2000) propôs o desenvolvimento e a utilização de um ambiente de auxílio na construção de lógica de programação através de pseudolinguagem nas disciplinas iniciais dos cursos de TI que permitisse que os alunos pudessem acessar de qualquer lugar e construir e executar o passo a passo de seus algoritmos ilustrando as variáveis utilizadas e mostrar mensagens de feedback quanto à execução dos códigos. 2.2 PROCESSO ENSINO-APRENDIZAGEM DE PROGRAMAÇÃO Segundo Moreira e Favero (2008), as disciplinas introdutórias de programação são essenciais para os estudantes de TI, principalmente para os cursos que envolvem o desenvolvimento de software, pois é por meio delas que os alunos são capacitados para utilizar a lógica de programação na resolução de problemas. Diversas disciplinas mais avançadas necessitam que os alunos possuam esse conhecimento prévio para obterem êxito. O processo de aprendizado de programação é difícil e exigente para a maioria dos alunos, pois estes, geralmente, ingressaram no curso sem conhecimento prévio sobre o assunto. Borges (2000 apud MOREIRA; FAVERO, 2008) afirma que o número de alunos que concluem essas disciplinas sem ter um conhecimento mínimo adequado em programação é alto, ou ainda, muitos abandonam o curso nos primeiros semestre devido às dificuldades. Gomes e Mendes (2000 apud PIMENTEL et al, 2003) afirmam que, os principais erros apresentados pelos alunos são: erros de sintaxe e semântica, dificuldades na compreensão do enunciado dos problemas e concepção dos algoritmos e a incapacidade de detectar erros de lógica de programação. 2.2.1 Problemas de aprendizagem de algoritmos Segundo Raabe e Silva (2005), a maioria dos problemas relacionados à dificuldade na aprendizagem de algoritmos se dá devido à ausência ou ineficácia de
  • 17. ! ! 17! estratégias de resolução lógica por parte dos alunos. Petry e Rosatelli (2006) citam que um dos principais problemas do modo tradicional do processo de ensino e aprendizagem de algoritmos é a dificuldade para motivar os alunos e os manter interessados pela disciplina já que a esta é essencial para outras disciplinas do curso. Raabe e Silva (2005) ao pesquisar os problemas relacionados ao processo ensino aprendizagem de algoritmos durante nove semestres identificaram três grupos de problemas distintos: problemas de natureza didática, cognitiva e afetiva. Dentre os problemas citados em sua pesquisa é possível destacar que os problemas mais comuns são: a) grande número de alunos: Geralmente as turmas iniciais dos cursos de TI contam com cerca de 50 alunos. Esse alto número de alunos dificulta a avaliação individual e acaba reduzindo a quantidade de avaliações realizadas no semestre. b) outro problema relacionado ao grande número de alunos é a dificuldade encontrada pelos professores na avaliação e feedback de todos os exercícios dos alunos em um curto prazo (MOREIRA; FAVERO, 2008). c) diferença de experiência e ritmo de aprendizagem entre os alunos: Alguns alunos possuem conhecimento ou alguma experiência em programação enquanto boa parte dos alunos não possui nenhuma experiência prévia. d) alunos sem perfil para solução de problemas: Muitos alunos apresentam problemas em solucionar os algoritmos propostos, pois não conseguiram desenvolver, previamente, as estratégias necessárias para compreensão e solução dos problemas. e) outros problemas de ordem pessoal e/ou emocional, tais como baixa autoestima, pouca motivação, insegurança, aversão ao conteúdo ou ao professor, impedem que os alunos se concentrem e desenvolva seu raciocínio lógico. 2.2.2 Ferramentas de apoio ao aprendizado de algoritmos Atualmente, várias ferramentas são amplamente utilizadas para apoiar o ensino e aprendizado nos cursos ministrados à distância. Essas ferramentas chamadas de
  • 18. ! ! 18! Ambientes Virtuais de Aprendizagem (AVAs), são importantes, pois permitem que os alunos tenham acesso ao ambiente de qualquer lugar, sem a necessidade de instalação de aplicativos e de um computador com muitos recursos para exercitarem seus conhecimentos. Os ambientes virtuais servem de mediador das atividades propostas pelo professor, auxiliando no gerenciamento dos cursos, atividades e fóruns de discussão e outros recursos (MOREIRA; FAVERO, 2008). No contexto do ensino e aprendizado de algoritmos, estes ambientes possibilitam aos professores uma melhor gestão dos alunos e dos exercícios além de permitir que os alunos interajam com a disciplina fora da sala de aula através da resolução dos exercícios propostos, envio de dúvidas e sugestões. Segundo Kjollerstrom e Martensson (1999 apud MOREIRA; FAVERO, 2008), os principais benefícios do uso das ferramentas de apoio para os professores são: a) melhoria na qualidade do ensino; b) melhor administração dos alunos e exercícios; c) melhor acompanhamento dos alunos, individualmente; d) redução do tempo de correção dos algoritmos através de mecanismos de avaliação automática. 2.3 A LINGUAGEM POTIGOL O Potigol é uma Linguagem de Domínio Específico (DSL) multiplataforma, multiparadigma e de sintaxe fácil e intuitiva, voltada para o ensino e aprendizado (DANTAS; MORAIS, 2011). A linguagem utiliza recursos dos paradigmas estruturados, orientado a objetos e funcional presentes em outras linguagens como Java, Scala, Python e Ruby. Segundo Dantas e Morais (2011), a linguagem de programação Potigol foi desenvolvida com o propósito de facilitar o aprendizado de Algoritmos e Técnicas de Programação, pois facilita a escrita de código através do uso da língua portuguesa já que todas as palavras-chaves da linguagem são em português.
  • 19. ! ! 19! Figura 1- Exemplo de código escrito em Potigol Fonte: Elaborado pelo autor (2012) 2.3.1 Processo de compilação As linguagens de programação geralmente são estruturadas em quatro partes que funcionam de forma sequencial que compõe o processo de compilação do código: Análise léxica, análise sintática, interpretação e execução. Cada uma dessas partes é responsável por gerar uma saída, a partir de uma entrada de dados, para o seu sucessor, até que o processo seja finalizado na execução do código.
  • 20. ! ! 20! Figura 2- Estrutura da linguagem Potigol Fonte: Dantas e Morais (2012) O analisador léxico é responsável pela análise de todo o código fonte a fim de produzir os símbolos, também conhecidos como tokens, que serão manipulados pela próxima etapa. É na análise léxica que são eliminados todos os espaços em branco e comentários do código fonte. Dantas e Morais (2011) definem a análise léxica como sendo uma forma de verificar se as palavras existem ou não no alfabeto especificado na linguagem. O analisador sintático é responsável pela análise da sequência de entrada para determinar sua estrutura gramatical de acordo com a gramática da linguagem e por gerar a árvore de nós, conhecida como Abstract Syntax Tree. O interpretador é responsável pela avaliação do código a partir da árvore de nós e executar cada nó. 2.4 PLAY FRAMEWORK O Play é um framework multiplataforma, livre e de código aberto, para desenvolvimento ágil de aplicações web. Desenvolvido por Guillaume Bort em 2007, teve sua primeira versão oficial lançada em outubro de 2009. Originalmente foi escrito em Java e inspirado em outros frameworks para o desenvolvimento ágil como o Ruby on Rails e Django. O Play foi criado com o intuito de fazer com que o desenvolvimento
  • 21. ! ! 21! de aplicações web com Java ou Scala se torne uma tarefa fácil, divertida e produtiva, mesmo para os programadores iniciantes no framework. Atualmente o Play Framework se encontra na versão 2.0.4 e a partir da versão 2.0 foi totalmente reescrito na linguagem de programação Scala tornando o framework mais rápido, produtivo e robusto. O Play permite que os desenvolvedores utilizem a API em Java ou Scala para construírem suas aplicações, sendo o mais aconselhável para os iniciantes no framework o uso da linguagem Java devido a o sucesso e a comunidade da linguagem porém se você quiser tornar o desenvolvimento ainda mais rápido e produtivo é recomendado utilizar a linguagem Scala devido ao seu código conciso, escalabilidade e o suporte à programação funcional (LEROUX et al, 2012). 2.4.1 Arquitetura do play framework Segundo Leroux et al (2012), algumas caraterísticas e qualidades tornam o Play Framework produtivo e divertido de usar: a) Sistema de configuração e declaração das URLs da aplicação baseados no protocolo HTTP. b) Sintaxe de template poderosa e fácil de utilizar e aprender. c) Integração com os ambientes integrados de desenvolvimento e editores de textos: Eclipse, NetBeans, IntelliJ, TextMate e SublimeText. d) Possui um servidor web leve e rápido integrado nativamente em sua arquitetura. e) Não necessidade de recarregar o servidor da aplicação à cada alteração no código. f) Recursos de segurança, persistência, validação e internacionalização já implementados na estrutura do framework. g) Arquitetura projetada para utilizar os recursos do HTML5 como WebSockets e validações. h) Boa documentação e número expressivo de participantes da comunidade de desenvolvimento.
  • 22. ! ! 22! Figura 3- A arquitetura geral do Play Framework Fonte: Leroux et al (2012) 2.4.1.1 MVC (Model, View, Controller) O Play é baseado na arquitetura MVC, considerada o padrão de arquitetura de aplicações web. O padrão MVC separa as camadas de Controle, Modelo e Visualização, permitindo uma maior flexibilidade e organização do código fonte, escalabilidade da aplicação, independência das camadas. O funcionamento da arquitetura MVC no Play se dá conforme a Figura 4:
  • 23. ! ! 23! Figura 4- A arquitetura MVC no Play Framework Fonte: Play Framework (2012) De acordo com a Figura 4, todas as requisições feitas pelos usuários são enviadas para o Controlador através das Rotas, que mapeiam qual controlador é responsável pela requisição. O Controlador é responsável pela manipulação e validação dos dados através dos Modelos e por repassar esses dados para a camada de Visualização que é responsável pela exibição dos dados. 2.4.1.2 Programação assíncrona e agendamento de tarefas O Play foi projetado e desenvolvido para utilizar os recursos de programação assíncrona. Com ele é possível utilizar conexões HTTP persistentes de longa duração
  • 24. ! ! 24! através de tecnologias como Comet, Long Polling e WebSockets, que permitem a troca simultânea de dados em tempo real. No Play é possível fazer o agendamento e execução de tarefas de longa duração sem a intervenção direta do usuário, como por exemplo o envio massivo de e-mails durante um determinado horário do dia ou atualizar sempre que a aplicação é iniciada ou parada. 2.4.1.3 Foco na segurança de tipos Uma das vantagens do uso de uma linguagem de programação estaticamente (fortemente) tipada, como Java, no desenvolvimento de aplicações web com o Play 2.0 é que o compilador do framework verifica as partes do código e consegue facilmente identificar a existência de erros de sintaxe tanto nos Controladores, Rotas e Modelos quanto na camada de Visualização. A Figura 5 mostra um exemplo de erro de compilação de um arquivo de Controlador da aplicação. Os erros de compilação são mostrados no navegador e são destacados com as letras vermelhas. Figura 5- Exemplo de erro de compilação no Play Framework 2.0 Fonte: Leroux et al (2012)
  • 25. ! ! 25! 2.4.1.4 Poderoso sistema de construção Os desenvolvedores que utilizam o Play para o desenvolvimento de aplicações web empresariais escaláveis necessitam de um mecanismo moderno e flexível para a construção de aplicações em Java e Scala. Por esse motivo o Play Framework 2.0 é integrado com os recursos do SBT (Simple Build Tool), sistema de construção de aplicações em Java e Scala que permite uma maior facilidade na criação, execução, compilação, construção, distribuição e gerenciamento de dependências da aplicação. Figura 6- Console do Play Framework Fonte: Elaborado pelo autor (2012) 2.4.1.5 Evoluções dos Bancos de Dados As aplicações web geralmente necessitam de banco de dados relacional com muitas tabelas e é preciso que os desenvolvedores criem documentações sobre a modelagem de uma das tabelas, principalmente quando muitos desenvolvedores são responsáveis pelo desenvolvimento e manutenção da aplicação ou quando é necessário fazer alguma alteração no banco de dados. O Play Framework 2.0 utiliza os scripts de evoluções para manter documentadas todas as mudanças que ocorreram no banco de dados. Estes arquivos de evoluções são arquivos escritos em SQL e são gerados automaticamente pelo Play a cada vez que os
  • 26. ! ! 26! modelos são alterados. Cada script de evolução é composto de duas partes: Uma parte de atualização da estrutura do banco de dados, e a outra parte com a regressão da estrutura do banco de dados. Figura 7- Exemplo de um script de evolução do banco de dados gerado pelo Play Framework 2.0 Fonte: Play Framework (2012)
  • 27. ! ! 27! 3 POTIGOLCODE: AMBIENTE DE APOIO AO ENSINO DE LÓGICA DE PROGRAMAÇÃO ATRAVÉS DA LINGUAGEM DE PROGRAMAÇÃO POTIGOL O PotigolCode é um ambiente web desenvolvido para auxiliar os professores no ensino de disciplinas como Introdução à Programação, Orientação a Objetos e Paradigmas de Linguagens de Programação. O ambiente foi desenvolvido utilizando as linguagens de programação Java e Scala através do Play Framework 2.0 e o banco de dados relacional MySQL. O sistema permite que os professores cadastrem os cursos e exercícios propostos, arquivos e ferramentas de auxílio ao desenvolvimento utilizando a linguagem de programação Potigol e o glossário da linguagem Potigol. Também permite que os alunos sejam capazes de resolver esses exercícios, recebam feedback automático da resposta submetida e ganhem uma pontuação, caso a resposta submetida esteja correta. Para a geração dos feedbacks automáticos são utilizados casos de testes unitários definidos previamente pelo professor no cadastro do exercício. Os códigos submetidos pelos alunos são submetidos a estes casos de testes e caso os testes sejam satisfeitos o aluno receberá a pontuação total, definida pelo professor, ou parte dela, caso o aluno tenha visualizado a solução do exercício. 3.1 ARQUITETURA DO SISTEMA O PotigolCode é um sistema web baseado na arquitetura MVC e utiliza o Play Framework 2.0. A Figura 8 ilustra a arquitetura utilizada no PotigolCode.
  • 28. ! ! 28! Figura 8- Diagrama da arquitetura proposta do sistema Fonte: Elaborado pelo autor (2012) O sistema utiliza uma infraestrutura privada de computação na nuvem com sistema operacional Linux que conta com alta disponibilidade, escalabilidade horizontal e vertical e alta capacidade de armazenamento e processamento. Esses recursos são essenciais para garantir que alunos e professores possam acessar o sistema de qualquer lugar do mundo e que o sistema execute os testes automatizados dos algoritmos rapidamente. Como sistema gerenciador de banco de dados (SGDB) foi utilizado o MySQL por ser livre, de código aberto e multiplataforma. No servidor foi utilizada a versão inicial e de testes da linguagem Potigol que é responsável pela execução dos algoritmos submetidos ao sistema. 3.2 REQUISITOS Os requisitos do PotigolCode foram inspirados em aplicações web voltadas para o ensino das linguagens de programação Java, Python e Ruby como CodingBat.com, CodeCademy.com e TryRuby.org e nas necessidades apresentadas pelo professor Leonardo Lucena, orientador deste trabalho e da linguagem de programação Potigol.
  • 29. ! ! 29! 3.2.1 Requisitos funcionais Os requisitos funcionais representam as principais funcionalidades que o sistema deve ser capaz de realizar. Eles são representados pelas tabelas 5, 6 e 7. Quadro 1- Lista de Requisitos Funcionais do PotigolCode referentes ao ator Professor Código Ator Nome Descrição F01 Professor Gerenciar Cursos Permite que o professor gerencie os cursos. F02 Professor Gerenciar Exercícios Permite que o professor gerencie os exercícios pertencentes aos cursos. F03 Professor Gerenciar Downloads Permite que o professor gerencie os downloads. F04 Professor Gerenciar Glossários Permite que o professor gerencie os glossários da linguagem Potigol. F05 Professor Gerenciar Alunos Permite que o professor gerencie os alunos cadastrados no sistema. F06 Professor Gerenciar Alunos Permite que o professor gerencie os alunos cadastrados no sistema. Fonte: Elaborado pelo autor (2012) Quadro 2- Lista de Requisitos Funcionais do PotigolCode referentes ao ator Aluno Código Ator Nome Descrição F08 Aluno Visualizar os Downloads Permite que os alunos visualizem os downloads cadastrados no sistema. F09 Aluno Realizar o Download do Arquivo Permite que os alunos façam o download dos arquivos cadastrados no sistema. F10 Aluno Consultar Permite que os alunos consultem os
  • 30. ! ! 30! Glossários glossários cadastrados no sistema. F11 Aluno Visualizar Cursos Permite que os alunos visualizem os cursos cadastrados no sistema. F12 Aluno Visualizar Exercícios Permite que os alunos visualizem os exercícios cadastrados no sistema. F13 Aluno Resolver Exercícios Permite que os alunos resolvam os exercícios cadastrados no sistema F14 Aluno Enviar Dúvida sobre o Exercício Permite que o aluno envie uma dúvida sobre o exercício para os professores cadastrados no sistema. F15 Aluno Acompanhar Ranking Permite que os alunos acompanhem o ranking dos alunos. Fonte: Elaborado pelo autor (2012) Quadro 3- Lista de Requisitos Funcionais do PotigolCode referentes ao ator Sistema Código Ator Nome Descrição F16 Sistema Avaliar a resposta submetida pelo aluno Responsável por submeter os casos de testes, definidos pelo professor, à resposta submetida pelo aluno. F17 Sistema Pontuar o aluno Responsável pelo cálculo da pontuação obtida pelo aluno. Fonte: Elaborado pelo autor (2012) 3.2.2 Requisitos não-funcionais Os requisitos não funcionais são relacionados às restrições do sistema quanto à disponibilidade, desempenho e segurança. Eles são representados pelas tabelas a seguir.
  • 31. ! ! 31! Quadro 4- Lista de Requisitos Não Funcionais do PotigolCode referentes ao ator Sistema Código Nome Descrição Categoria NF01 Autenticação dos Usuários Os usuários do sistema deverão ser autenticados através de diferentes níveis de acesso. Obrigatório NF02 Disponibilidade O sistema deve ser acessível de qualquer lugar e em qualquer hora através de um ambiente web. Obrigatório NF03 Desempenho O sistema deve possuir um bom desempenho para executar os testes automatizados. Desejável Fonte: Elaborado pelo autor (2012) 3.3 CASOS DE USO De acordo com as Figuras 9, 10 e 11, o PotigolCode possui dezessete casos de uso e três atores. O ator Professor interage com os casos de uso gerenciar cursos, gerenciar exercícios, gerenciar downloads, gerenciar glossários, gerenciar alunos e gerenciar professores. O ator Aluno interage com os casos de uso registrar-se, visualizar exercícios, resolver exercícios, visualizar downloads, fazer download dos arquivos, visualizar glossários e acompanhar o ranking dos alunos. O ator Sistema interage com o caso de uso avaliar resposta e pontuar resposta.
  • 32. ! ! 32! Figura 9- Diagrama dos casos de uso referentes ao ator Professor Fonte: Elaborado pelo autor (2012)
  • 33. ! ! 33! Figura 80- Diagrama dos casos de uso referentes ao ator Aluno Fonte: Elaborado pelo autor (2012) Figura 11- Diagrama dos casos de uso referentes ao ator Sistema Fonte: Elaborado pelo autor (2012) 3.3.1 Casos de uso do ator professor A seguir são apresentados os casos de uso executados pelo ator Professor e que compõem o módulo de gerenciamento do PotigolCode.
  • 34. ! ! 34! 3.3.1.1 Gerenciar cursos O caso de uso Gerenciar Cursos é responsável pelo cadastro, edição, exclusão e visualização dos cursos oferecidos no sistema. A Figura 12 representa as telas referentes ao caso de uso. Nela estão representadas a listagem, o formulário de cadastro e edição e a visualização dos cursos respectivamente. Figura 12- Telas referentes ao caso de uso Gerenciar Cursos Fonte: Elaborado pelo autor (2012) 3.3.1.2 Gerenciar exercícios O caso de uso Gerenciar Exercícios é responsável pelo cadastro, edição, exclusão e visualização dos exercícios pertencentes aos cursos oferecidos no sistema. A Figura 13 representa as telas referentes ao caso de uso. Nela estão representadas a listagem, o formulário de cadastro e edição e a visualização dos exercícios respectivamente.
  • 35. ! ! 35! Figura 13- Telas referentes ao caso de uso Gerenciar Exercícios Fonte: Elaborado pelo autor (2012) 3.3.1.3 Gerenciar downloads O caso de uso Gerenciar Downloads é responsável pelo cadastro, edição, exclusão e visualização dos downloads e de suas categorias de download. A Figura 14 representa as telas referentes ao caso de uso. Nela estão representadas a listagem, o formulário de cadastro e edição dos downloads e suas categorias respectivamente.
  • 36. ! ! 36! Figura 14- Telas referentes ao caso de uso Gerenciar Download Fonte: Elaborado pelo autor (2012) 3.3.1.4 Gerenciar glossários O caso de uso Gerenciar Glossários é responsável pelo cadastro, edição, exclusão e visualização dos glossários e seus capítulos da linguagem Potigol. A Figura 15 representa as telas referentes ao caso de uso. Nela estão representadas a listagem, o formulário de cadastro e edição e a visualização dos glossários e seus capítulos respectivamente.
  • 37. ! ! 37! Figura 15- Telas referentes ao caso de uso Gerenciar Glossários Fonte: Elaborado pelo autor (2012) 3.3.1.5 Gerenciar alunos O caso de uso Gerenciar Alunos é responsável pelo cadastro, edição e exclusão dos alunos cadastrados no sistema. A Figura 16 representa as telas referentes ao caso de uso. Nela estão representadas a listagem, o formulário de cadastro e edição e a visualização dos alunos respectivamente.
  • 38. ! ! 38! Figura 16- Telas referentes ao caso de uso Gerenciar Alunos Fonte: Elaborado pelo autor (2012) 3.3.1.6 Gerenciar professores O caso de uso Gerenciar Professores é responsável pelo cadastro, edição, exclusão e visualização dos professores cadastrados no sistema. A Figura 17 representa as telas referentes ao caso de uso. Nela está representado o formulário de cadastro e edição dos professores.
  • 39. ! ! 39! Figura 17- Telas referentes ao caso de uso Gerenciar Professores Fonte: Elaborado pelo autor (2012) 3.3.2 Casos de uso do ator aluno A seguir são apresentados os casos de uso executados pelo ator Aluno e que compõem o módulo de aprendizagem do PotigolCode. 3.3.2.1 Registrar-se O caso de uso Registrar-se é responsável pelo cadastro do aluno no sistema. A Figura 18 representa as telas referentes ao caso de uso. Nela estão representadas o formulário de cadastro, email de confirmação do cadastro e acesso ao sistema.
  • 40. ! ! 40! Figura 18- Telas referentes ao caso de uso Registrar-se Fonte: Elaborado pelo autor (2012) 3.3.2.2 Visualizar cursos O caso de uso Registrar-se é responsável pela listagem dos cursos e seus exercícios. A Figura 19 representa as telas referentes ao caso de uso. Nela está representada a listagem dos cursos.
  • 41. ! ! 41! Figura 19- Telas referentes ao caso de uso Visualizar Cursos Fonte: Elaborado pelo autor (2012) 3.3.2.3 Visualizar exercícios O caso de uso Registrar-se é responsável pela listagem dos cursos e seus exercícios. A Figura 20 representa as telas referentes ao caso de uso. Nela está representada a listagem dos exercícios. Figura 20- Telas referentes ao caso de uso Visualizar Exercícios Fonte: Elaborado pelo autor (2012)
  • 42. ! ! 42! 3.3.2.4 Resolver exercícios O caso de uso Resolver Exercícios é responsável por exibir a descrição do exercício e é por meio dele que o aluno submete sua resposta para os testes automatizados. A Figura 21 representa a tela referente ao caso de uso. Nela está representada a resolução de um exercício cadastrado no sistema. Figura 21- Tela referente ao caso de uso Resolver Exercícios Fonte: Elaborado pelo autor (2012) 3.3.2.5 Enviar dúvida sobre um exercício O caso de uso Enviar Dúvida sobre um Exercício permite que os alunos submetam dúvidas aos professores cadastrados no sistema. A Figura 22 representa as tela referente ao caso de uso. Nela está representado o formulário de envio da dúvida.
  • 43. ! ! 43! Figura 22- Tela referente ao caso de uso Enviar Dúvida sobre um Exercício Fonte: Elaborado pelo autor (2012) 3.3.2.6 Acompanhar ranking dos alunos O caso de uso Acompanhar Ranking dos Alunos permite que os alunos acompanhem a pontuação obtida dos alunos. A Figura 23 representa as telas referentes ao caso de uso. Nela está representada a listagem do ranking dos alunos cadastrados no sistema.
  • 44. ! ! 44! Figura 23- Tela referente ao caso de uso Acompanhar Ranking dos Alunos Fonte: Elaborado pelo autor (2012) 3.3.2.7 Visualizar downloads O caso de uso Visualizar Downloads permite que os alunos consultem os downloads cadastrados no sistema. A Figura 24 representa as telas referentes ao caso de uso. Nela está representada a listagem dos downloads disponíveis ordenados por categorias.
  • 45. ! ! 45! Figura 24- Tela referente ao caso de uso Visualizar Downloads Fonte: Elaborado pelo autor (2012) 3.3.2.8 Consultar glossários O caso de uso Consultar Glossários permite que os alunos consultem os glossários da linguagem Potigol. A Figura 25 representa a tela referente ao caso de uso. Nela está representada a visualização de um glossário cadastrado no sistema.
  • 46. ! ! 46! Figura 25- Tela referentes ao caso de uso Visualizar Glossário Fonte: Elaborado pelo autor (2012) 3.3.3 Casos de uso do ator sistema Abaixo são apresentados os casos de uso executados pelo ator Sistema e que compõem o módulo de avaliação das respostas submetidas pelos alunos no PotigolCode. 3.3.3.1 Avaliar resposta submetida pelo aluno O caso de uso Avaliar Resposta é o caso de uso mais crítico do sistema. Ele é o responsável pela avaliação da resposta submetida pelo usuário através de testes unitários automatizados baseado nos casos de testes cadastrados previamente pelo professor. A Figura 26 apresenta uma visão geral do funcionamento do caso de uso.
  • 47. ! ! 47! Figura 26- Visão geral do funcionamento do caso de uso Avaliar Resposta Fonte: Elaborado pelo autor (2012) De acordo com a Figura 26, o código submetido pelo aluno e os casos de teste do exercício são gravados em um arquivo temporário com a extensão .poti. A classe utilitária PotigolTestsHelper é responsável por executar o arquivo, capturar o retorno do código executado e comparar com os casos de testes. Uma vez os resultados comparados, o feedback da execução é mostrada para o usuário. A figura 27 representa as telas referentes ao caso de uso. Nela está representada o feedback que o aluno recebe após a avaliação automática da resposta submetida.
  • 48. ! ! 48! Figura 27- Exemplo de feedback apresentado ao aluno após a avaliação da resposta Fonte: Elaborado pelo autor (2012) 3.3.3.2 Pontuar aluno O caso de uso Pontuar Aluno é responsável pela contabilização dos pontos obtidos pelo aluno no exercício. Caso o aluno submeta uma resposta correta para o exercício sem ter consultado a solução proposta para o professor, a pontuação obtida é a quantidade total de pontos do exercício. Se o aluno submeter uma resposta correta, porém tenha consultado a solução proposta, a pontuação obtida corresponde à 75% do valor do total de pontos do exercício. 3.4 DIAGRAMA DE CLASSES O diagrama de classes do PotigolCode apresenta três pacotes principais onde são armazenadas as classes de controladores, modelos, formulários e utilitários do sistema. As Figuras 28 a 30 ilustram a organização das classes do sistema.
  • 49. ! ! 49! Figura 28- Organização do pacote Controllers que contêm todos os controladores da aplicação Fonte: Elaborado pelo autor (2012)
  • 50. ! ! 50! Figura 29- Organização do pacote models que contêm todos as entidades da aplicação Fonte: Elaborado pelo autor (2012)
  • 51. ! ! 51! Figura 30- Organização do pacote helpers que contêm as classes utilitárias da aplicação Fonte: Elaborado pelo autor (2012)
  • 52. ! ! 52! No pacote controllers estão as classes controladoras da aplicação que são responsáveis por gerenciar o acesso aos modelos, definir as regras de negócio e repassar os dados para a camada de visualização. No pacote models estão as entidades da aplicação que são uma representação das tabelas do banco de dados do sistema e são responsáveis pela manipulação e persistência dos dados. No pacote helpers estão as classes auxiliares do sistema como as de controle de acesso e permissão dos usuários, execução dos testes automatizados, ordenadores e comparadores.
  • 53. ! ! 53! 4 CONSIDERAÇÕES FINAIS O projeto desenvolvido neste trabalho permite que professores das disciplinas iniciais dos cursos de TI tenham uma ferramenta de apoio no processo ensino aprendizagem capaz de auxilia-los na ministração da disciplina e organização dos cursos e exercícios propostos. Como vantagem, o sistema demonstrou ser capaz de auxiliar os professores no gerenciamento dos materiais e glossários utilizados nos cursos e exercícios propostos. Outra vantagem é que o aluno recebe o feedback imediato da resposta submetida. Acredita-se que o sistema seja uma boa ferramenta de apoio para o ensino e aprendizado da linguagem Potigol, pois permite que os alunos acessem o sistema de qualquer lugar, por computador ou dispositivo móvel, não havendo a necessidade de instalação de nenhum aplicativo. A utilização das tecnologias adotadas foi bastante importante para o desenvolvimento deste trabalho, atendendo todos os requisitos funcionais e não funcionais. 4.1 TRABALHOS FUTUROS Como trabalho futuro, sugere-se o aprimoramento da avaliação automática das respostas dos exercícios a fim de aumentar o desempenho dos testes automatizados. Outra proposta é o aprimoramento dos critérios de pontuação do sistema para calcular a pontuação obtida através de critérios de desempenho, verificação de estilos de codificação, execução dos testes automatizados e qualidade do código. Também como proposta, sugere-se a adição da funcionalidade de acompanhamento das respostas enviadas pelo aluno, afim de avaliar o progresso e erro mais comuns dos alunos durante os cursos. Outra funcionalidade proposta é a possiblidade do professor adicionar uma restrição temporal para o aluno submeter a resposta do exercício. Esta funcionalidade poderá ser utilizada em sala de aula a fim de testar o nível conhecimento e habilidade de resolução de problemas em um curto prazo.
  • 54. ! ! 54! Também é proposta a criação de mecanismos de conquistas e selos baseado na pontuação obtida pelo aluno e a possibilidade de compartilhamento de tais conquistas e selos nas redes sociais como Twitter e Facebook. Propõe-se também a implementação do suporte à outras linguagens de programação como Java, Scala, Python e Ruby, permitindo que o PotigolCode possa ser utilizado em outras instituições de ensino que utilizem tais linguagens de programação.
  • 55. ! ! 55! REFERÊNCIAS CODE SCHOOL. TryRuby Disponível em: <http://www.tryruby.org/>. Acesso em: 05 out. 2012. CODECADEMY: Aprenda a Programar. Disponível em: <http://www.codecademy.com/pt/>. Acesso em: 05 out. 2012. DANTAS, Lucas Hiago A.; MORAIS, Clemilson de Lima. A LINGUAGEM DE PROGRAMAÇÃO POTIGOL. In: VIII CONGRESSO DE INICIAÇÃO CIENTÍFICA DO IFRN, 2011, Natal. HOSTINS, Higor; RAABE, André. AUXILIANDO A APRENDIZAGEM DE ALGORITMOS COM A FERRAMENTA WEBPORTUGOL. Disponível em: <http://www.de9.ime.eb.br/~sousamaf/cd/pdf/arq0011.pdf>. Acesso em: 30 out. 2012. LEROUX, Nicolas; KAPER, Sietse de. Play for Java: Covers Play 2. New York: Manning, 2012. MANSO, António; MARQUES, Célio Gonçalo; MARQUES, Célio Gonçalo. Portugol IDE v3.x: A new environment to teach and learn computer programming. Disponível em: <http://www.ieec.uned.es/Investigacion/Educon2010/SearchTool/EDUCON2010/papers/2010S 05D04.pdf>. Acesso em: 30 out. 2012. MOREIRA, Mireille Pinheiro; FAVERO, Eloi Luiz. Um Ambiente para Ensino de Programação.Disponível em: <http://www.ufpa.br/ppgcc/ppgcc/files/File/Seminario_Andamento/2008/EAD/artigo_1.1.pdf>. Acesso em: 22 out. 2012. PARLANT, Nick, CodingBat: Code Practice. Disponível em: <http://codingbat.com/>. Acesso em: 05 out. 2012. PETRY, Patrícia Gerent; ROSATELLI, Marta Costa. Ensino e Aprendizagem de Algoritmos com o AlgoLC. Disponível em: <http://www.lbd.dcc.ufmg.br/colecoes/sbie/2006/040.pdf>. Acesso em: 5 nov. 2012. PIMENTEL, Edson P. et al. Avaliação Contínua da Aprendizagem, das Competências e Habilidades em Programação de Computadores. Disponível em: <http://www.br- ie.org/pub/index.php/wie/article/view/819/805>. Acesso em: 30 out. 2012. RAABE, André Luís Alice; SILVA, Júlia Marques Carvalho da. Um Ambiente para Atendimento as Dificuldades de Aprendizagem de Algoritmos. Disponível em:
  • 56. ! ! 56! <http://200.169.53.89/download/CD%20congressos/2005/SBC%202005/pdf/arq0027.pdf>. Acesso em: 30 out. 2012. REBELO, Beatriz Jesus et al. Sistema Colaborativo de Suporte à Aprendizagem em Grupo da Programação – SICAS-COL. Disponível em: <http://www.niee.ufrgs.br/eventos/SIIE/2005/PDFs/Comunica%E7%F5es/c113-Rebelo.pdf>. Acesso em: 30 out. 2012. VIEIRA, Paulo Viníccius; RAABE, André Luis Alice; ZEFERINO, Cesar Albenes. Bipide – Ambiente de Desenvolvimento Integrado para a Arquitetura dos Processadores BIP. Disponível em: <http://www.br-ie.org/pub/index.php/rbie/article/view/1215/1111>. Acesso em: 30 out. 2012. ZENEXTY; TYPESAFE; Play 2.0 Documentation Disponível em: <http://www.playframework.org/documentation/2.0.4/Home>. Acesso em: 05 out. 2012.