Upload
geidson-benicio-coelho
View
34
Download
0
Embed Size (px)
Citation preview
Utilizando o Robocode como ferramenta de auxlio no aprendizado de algoritmos e Java
Instituto Federal de Educao, Cincia e Tecnologia do Serto Pernambucano Caixa Postal 56314-520 Petrolina PE Brasil
Abstract: This paper reports the didactic approach of Robocode software for teaching algorithms and programming language Java. Describes the practice applied with students of Bachelor of Computing, exploring concepts of Problem Based Learning - PBL, which were solved challenges at the same time it was built the code of virtual robots, developing the best strategy for a virtual battle. The software also allowed to work from programming to structural paradigms of object-oriented programming, as well as artificial intelligence in a totally interactive, fun and motivating. Also presented is the time of interaction between the participants in a virtual battle.
Resumo: Este trabalho relata a abordagem didtica do software Robocode para o ensino de algoritmos e linguagem de programao Java. Descreve a prtica aplicada com alunos do Curso de Licenciatura em Computao, explorando conceitos de Aprendizagem Baseada em Problemas - PBL, onde foram resolvidos desafios ao mesmo tempo em que foi construdo o cdigo dos robs virtuais, elaborando a melhor estratgia para uma batalha virtual. O software permitiu tambm trabalhar desde a programao estrutural paradigmas da programao orientada objetos, como tambm inteligncia artificial em um ambiente totalmente interativo, divertido e motivador. Tambm apresentado o momento de interao entre os participantes em uma batalha virtual.
1. Introduo
O ensino de programao de fundamental importncia na grade curricular dos cursos
de computao, pois permite o entendimento dos processos associados construo de
ferramentas computacionais. A aprendizagem de programao um requisito
importante para todos que desejem se tornar um profissional de computao. Ensinar
programao um desafio, pois no fcil despertar o interesse e a criatividade do
aluno para o desenvolvimento de solues computacionais para os problemas
encontrados diariamente, como tambm fazer com que este represente a sua soluo
utilizando a lgica de programao.
O baixo ndice de assimilao por parte de universitrios dos cursos de
computao nas disciplinas onde os requisitos exigem o conhecimento de programao
tem se tornado um problema enfrentado por diversas instituies. Segundo Rocha
(1991) as dificuldades encontradas podem ser diagnosticadas no somente pelo alto
grau de repetncia, mas tambm pelos problemas demonstrados por alunos em
disciplinas avanadas, que exigem o pr-requisito de programao. Essa dificuldade de
compreenso reflete em um alto ndice de evaso dos alunos dos cursos de computao.
Rocha (1991) afirma que estamos tendo um fracasso no ensino de programao e
Gomes (2000) fala do insucesso generalizado verificado no estudo de programao.
Programar significa solucionar de maneira intensa problemas de lgica e
matemtica, e so os problemas de lgica, matemtica e arquitetura de sistemas que
exigem que o aluno tenha que alavancar muitas habilidades diferentes, as quais muitas
vezes no desenvolveram por completo em perodos anteriores, para que ele possa ter
um retorno mnimo em aprendizado e produtividade. A dificuldade de construir a lgica
de uma soluo, representar seu algoritmo, utilizar paradigmas de programao so uma
das maiores dificuldades pertinentes ao desenvolvimento de programao. Essa
problemtica advinda da utilizao de mtodos de ensino de linguagem de
programao desatualizados e quase sempre ineficientes.
Os autores desse artigo so alunos do VII perodo do Curso de Licenciatura em
Computao do Instituto Federal Serto Pernambucano (IF SERTO-PE). A
experincia destes alunos mostra um problema enfrentando no s por estes, mas
tambm por muitos alunos dos cursos de computao onde o ensino programao no
motivador. A utilizao de metodologias e exerccios ultrapassados frequente, com
enunciados como Fluxo de atividades para trocar a lmpada ou Digitar cinco notas e
mostra a mdia, maior e menor nota, tanto no ensino de lgica como tambm no ensino
de orientao objetos. Apesar desses mtodos ainda serem utilizados, suas solues
no so desafiadoras.
Tapia e Fita (2001) diz que existem duas formas de ativar a motivao: atravs
da curiosidade e do desafio. Apresentar um problema que sua soluo desconhecida
ou conhecida, mas os passos para obt-la no, uma das formas de despertar essa
curiosidade. Esse tipo de questo permite a tentativa, investigao e experimentao de
solues por parte dos estudantes.
Pensando em tornar o aprendizado e o ensino de programao mais fcil e
motivador diversas ferramentas interativas foram desenvolvidas como podemos citar o
XLogo, Scratch, Robomind, Yenk, GreenFoot, BlueJ, Robocode, entre outras. O uso
dessas ferramentas visa auxiliar os alunos na melhor compreenso da programao e
tambm auxiliar os professores a obterem melhores resultados com seus alunos.
Com base neste cenrio, foi desenvolvida para o projeto uma metodologia para
ensino de programao utilizando o software Robocode, que um ambiente simples e
interativo de programao de robs virtuais utilizando a linguagem de programao
Java, aliado aos conceitos de PBL - Problem Based Learning - Aprendizagem Baseada
em Problemas, onde o aprendizado obtido gradativamente atravs da resoluo de
problemas simples aos mais complexos. Com esse modelo o aluno est em constante
avaliao e cada avano na atividade constri o prximo passo a ser trabalhado, ou seja,
o contedo vai sendo aplicado de acordo com a produtividade do aluno, contrrio aos
mtodos de ensinos tradicionais, em que o contedo passado ao aluno e a avaliao
realizada em perodo pr-definidos.
2. Trabalhos Relacionados
Na literatura encontram diversas ferramentas desenvolvidas para o ensino de lgica e
programao Java. Um dos mtodos utilizados para o ensino de lgica o uso do
pseudocdigo, uma forma genrica de escrever um algoritmo, utilizando uma linguagem
mais informal, podendo ser entendida por qualquer pessoa, sem necessidade de
conhecer a sintaxe de nenhuma linguagem de programao. O uso do pseudocdigo
tambm pode auxiliar a escrever um programa menor e mais fcil de ser entendido.
Podemos citar (Benitti et al, 2009), apresenta experimento utilizando o software
ROBOMID, que oferece uma linguagem de programao simples para movimentao
de um rob em ambiente bidimensional.
Para o ensino de programao orientada objetos Java, podemos encontrar
diversos ambientes interativos, onde implementam objetos e cenrios animados. O
Greenfoot relatado em (Vahldick, 2007) um framework e um ambiente para criar
aplicaes interativas e simulaes. Este ambiente permite que iniciantes adquiram
experincia com programao orientada objetos, implementando e interagindo com
objetos na forma de cenrios. Uma vez que estes objetos estejam sendo desenvolvidos,
eles podem ser colocados em um mundo e os desenvolvedores podem interagir
diretamente com eles de forma a chamar seus mtodos. O Greenfoot torna fcil a
criao de representaes grficas para objetos e controles como loopings, start, stop,
etc. (Mota et al, 2008), descreve o ambiente JavaTool, desenvolvida com objetivo de ser
um ambiente de desenvolvimento para o ensino dos conceitos introdutrios de
programao utilizando a sintaxe simplificada da linguagem Java. O JavaTool permite
que o estudante crie e visualize a animao do cdigo, facilitando o seu entendimento.
3. A ferramenta
Robocode um jogo de programao, de cdigo aberto, implementado em Java,
constitudo de robs que batalham entre si em uma arena virtual. Com o lema
Construir o melhor, destruir o resto!, o Robocode surgiu no final do ano 2000,
desenvolvido por Matthew A. Nelson e se tornou profissional quando ele trouxe IBM
em julho de 2001. No incio de 2005, ele foi enviado para SourceForge como Open
Source na verso 1.0.7. A comunidade desenvolveu suas prprias verses, livrando-a de
bugs e implementando novas funcionalidades.
No jogo o jogador o programador do rob, que no ter influncia direta sobre
o jogo. Em vez disso o jogador deve escrever a inteligncia do rob dizendo-lhe como
se comportar e reagir a eventos que ocorrem na batalha. Em diversas instituies no
mundo, o Robocode usado no auxlio do ensino de programao e inteligncia
artificial, principalmente na linguagem Java, mas outras linguagens como .NET, C# e
Scala tambm esto se tornando populares.
O Robocode possui sua API (Robocode, 2008a) bem extensa e escrita em Java,
composta por uma arena de batalha, um console de informaes e editor de cdigo.
Atualmente o software est na verso estvel 1.8.2.0, disponvel para sistemas Windows
e Linux.
Figura 1. Arena de Batalha e Editor de Cdigo do Robocode
O estudo da ferramenta foi voltada s experincias da sua aplicao no ensino de
programao. Em diversos pases, instituies de ensino possuem competies regionais
e nacionais, a fim de estimular o raciocnio lgico e o estudo de programao por seus
alunos, como tambm propiciar um ambiente de competio saudvel onde o vencedor
ser aquele que desenvolver a melhor programao da performance para seu rob.
4. Oficina de capacitao e prtica com o uso da metodologia A interveno foi proposta como mtodo de avaliao da disciplina Metodologia
do Ensino da Computao em conjunto com a turma do 6 perodo do curso de
Licenciatura em Computao no Instituto Federal de Educao, Cincia e Tecnologia
(IF SERTO-PE), ao qual foi apresentado a construo de uma metodologia que
interviesse em uma disciplina elementar com auxlio de um recurso tecnolgico. Um
brainstorm de ideias foi desenvolvido para fundamentar a metodologia de ensino a ser
aplicada nos cursos tcnicos da referida instituio.
Inicialmente foi preparada uma interveno voltada para o ensino de lgica de
programao, mas como a maioria dos alunos da turma j haviam cursado as disciplinas
de lgica de programao e programao orientada a objetos, foi ento proposto a
aplicao da metodologia voltada para o ensino de conceitos da linguagem de
programao, como estrutura de controle, repetio, mtodos e eventos utilizando o
Robocode, tendo como objetivo a avaliao da turma acerca da capacidade da
ferramenta no aprendizado de programao, comparando com a experincia vivida
anteriormente com os mtodos tradicionais de ensino nas disciplinas de programao da
grade do curso. Foram preparadas atividades variadas para estmulo no
desenvolvimento do raciocnio lgico.
A interveno ento foi dividida em duas etapas, sendo a primeira a capacitao
realizada em laboratrio, em que foi explorado o software Robocode e seus principais
recursos, com uma abordagem interdisciplinar. Nesta capacitao foi trabalhado
diversos conceitos, como declarao e tipos de variveis, estruturas condicionais e de
repetio, herana, mtodos, eventos presentes na API do Robocode. Envolveu tambm
conhecimentos de lgica de programao, ingls, matemtica e Inteligncia Artificial.
Exerccios simples como construo dos mtodos andarQuadrado( ) e andarEmL( )
foram resolvidos, partindo para um maior nvel de complexidade com a construo dos
mtodos atiraPerto( ) e implementao de inteligncia do rob para mudar seu
comportamento baseado em sua energia. Para isso foram mostrados os passos para obter
as informaes do rob atravs de eventos disparados durante a batalha.
Os alunos seguiam a capacitao desenvolvendo seus robs durante a aula,
permitindo o acompanhamento dos instrutores. A ferramenta prope um envolvimento
entre professor e aluno, no que diz respeito construo do conhecimento
individualizado, pois o professor deve estimular o mesmo a progredir no nvel das
atividades. Proporciona tambm resultados visuais de imediato, assim que o aluno
programa seu cdigo, j possvel executar o seu rob, permitindo a visualizao do
comportamento do mesmo. A construo de um rob eficiente envolve conhecimentos
prvios de geometria, como assuntos de coordenadas vetoriais, ngulos e plano
cartesiano, como tambm Inteligncia Artificial.
Figuras 2 e 3. Capacitao - Amostra da ferramenta
A segunda etapa da interveno foi realizada a culminncia da batalha entre os
robs construdos pelos alunos. Os mesmos tiveram um dia aps a capacitao para
pesquisarem mais recursos da API Robocode, e aperfeioar o desempenho de seus
robs, adicionando comportamentos que eles achassem mais apurado, contribuindo para
aprimorar do conhecimento iniciado em sala.
A batalha foi realizada no ptio de eventos do IF Serto Pernambucano, atraindo
alm dos alunos envolvidos diretamente na capacitao, a ateno daqueles que
passavam e se interessavam em conhecer um pouco da ferramenta, considerada
inovadora, pois ainda no utilizada por disciplinas de programao nas instituies da
regio.
Figura 4. Culminncia
Figura 5. Batalha final entre os robs.
No momento da batalha entre os robs desenvolvidos pelos participantes, era
aparente a euforia e a competio saudvel entre eles. Os mesmos disputavam entre si
fazendo compromissos de trazerem um rob com suas potencialidades amplificadas
para uma futura batalha, sugerindo uma marcao de ranking para o evento.
5. Resultados Obtidos
A prtica proporcionou aos instrutores um conhecimento mais aprofundado em
relacionar um contedo terico a uma prtica auxiliada com a ferramenta tecnolgica,
despertando um maior interesse pela rea de programao e afins.
Foi possvel comprovar atravs de observao que os alunos participantes da
capacitao com a ferramenta Robocode demonstram um ganho considervel na
aprendizagem de programao, assimilao temtica dos contedos, envolvimento
dinmico com a ferramenta. Os mesmos ficaram motivados a continuar implementando
os seus robs com um melhor desempenho, solicitando aos instrutores responsveis pela
interveno, uma segunda batalha, em um nvel mais avanado. Assim percebe-se que
os mesmos iro continuar a busca autnoma sobre a ferramenta aplicada e sobre a
linguagem de programao utilizada, investindo na construo do seu conhecimento.
Apesar do curto espao de tempo dedicado essa tarefa e a informalidade de sua
realizao, foi observado que a prtica com o Robocode despertou um interesse natural
nos alunos para a rea de programao, e quaisquer iniciativas que venham a ser
tomadas nesta rea tendem a ser coroadas com muito sucesso.
6. Referncias
BENITTI et al. Experimentao com Robtica Educativa no Ensino Mdio: ambiente, atividades e resultados. Workshop de Informtica na Educao WIE 2009.
GOMES, A. J. Ambiente de suporte aprendizagem de conceitos bsicos de programao, Dissertao (Mestrado)Universidade de Coimbra, 2000.
ROCHA, Helena. V. Representaes computacionais auxiliares ao entendimento de conceitos de programao. Campinas: Unicamp, 1991.
Robocode: using robot thanks to teach JAVA. Disponvel em: http://www.docstoc.com/docs/40841739/Robocode.
Robocode (2008a). Robocode API, http://robocode.sourceforge.net/docs/robocode/.
TAPIA, J. A.; FITA, E. C. (2001) "A motivao em sala de aula: o que , como se faz", So Paulo: Loyola, 4. ed.
VAHLDICK, A.. "Uma experincia ldica no ensino de programao orientada a objetos". I Workshop de Ambientes de Apoio Aprendizagem de Algoritmos e Programao Simpsio Brasileiro de Informtica na Educao, 2007.
Robocode (2008a). Robocode API, http://robocode.sourceforge.net/docs/robocode/.