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

56
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

description

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

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

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

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

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

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

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

!

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

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

!

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!

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

!

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.

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

!

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.

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

!

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

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

!

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

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

!

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

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

!

!

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

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

!

!

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

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

!

!

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)

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

!

!

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;

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

!

!

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.

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

!

!

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

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

!

!

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

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

!

!

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

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

!

!

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.

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

!

!

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.

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

!

!

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

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

!

!

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.

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

!

!

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:

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

!

!

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

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

!

!

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)

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

!

!

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

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

!

!

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)

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

!

!

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.

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

!

!

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.

Page 29: POTIGOLCODE: AMBIENTE DE APOIO AO ENSINO DE LÓGICA DE PROGRAMAÇÃO ATRAVÉS 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

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

!

!

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.

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

!

!

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.

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

!

!

32!

Figura 9- Diagrama dos casos de uso referentes ao ator Professor

Fonte: Elaborado pelo autor (2012)

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

!

!

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.

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

!

!

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.

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

!

!

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.

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

!

!

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.

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

!

!

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.

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

!

!

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.

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

!

!

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.

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

!

!

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.

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

!

!

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)

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

!

!

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.

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

!

!

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.

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

!

!

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.

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

!

!

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.

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

!

!

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.

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

!

!

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.

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

!

!

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.

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

!

!

49!

Figura 28- Organização do pacote Controllers que contêm todos os controladores da aplicação

Fonte: Elaborado pelo autor (2012)

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

!

!

50!

Figura 29- Organização do pacote models que contêm todos as entidades da aplicação

Fonte: Elaborado pelo autor (2012)

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

!

!

51!

Figura 30- Organização do pacote helpers que contêm as classes utilitárias da aplicação

Fonte: Elaborado pelo autor (2012)

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

!

!

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.

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

!

!

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.

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

!

!

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.

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

!

!

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/2010S05D04.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:

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

!

!

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.