Utilizando o Robocode Como Ferramenta de Auxílio No Aprendizado de Algoritmos e Java

8
Utilizando o Robocode como ferramenta de auxílio no aprendizado de algoritmos e Java Instituto Federal de Educação, Ciência e Tecnologia do Sertão 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 appl ied with studen ts of Bachelor of Comp uting , explor ing concepts of Pro blem  Based Learning - PBL, which were solved challenges at the same time it was built the code of virtual robo ts, developi ng the best strateg y for a virtual battle. The  software also allowed to work from programming to structural paradigms of object-ori ent ed pr ogrammin g, as wel l as art ifi cial int ell igence in a tot all y intera ctive, fun and motiva ting. Also pre sented is the time of intera ction between the participants in a virtual battle.  Resumo: Este trabalho relata a abordagem didática do software Robocode para o ensino de algoritmos e linguagem de programação Java. Descreve a prática apl ica da com alu nos do Curso de Lic enci atu ra em Comput ação, explor and o conceitos de Aprendizagem Baseada em Pr oblemas - PBL, onde foram resolvidos des afi os ao mesmo tempo em que foi const ruí do o cód igo dos robôs virtua is, elabo rando a melho r estraté gia para uma bata lha virtual. O softwa re permitiu ta mb ém tr ab al har des de a progr ama çã o estrutura l à par ad ig mas da  progra mação orientada à objetos, como também inteligência artificial em um ambi ente total mente interativo, divertido e motiva dor . T ambé m é apr esentado o momento de interação entre os participantes em uma batalha virtual. 1. Introdução O ensino de programação é de fundamental importância na grade curricular dos cursos de computação, pois permite o entendimento dos processos associados à construção de fer ramentas co mpu tac ion ais . A apre ndi zag em de pro gra maç ão é um re qui sito importante para todos que desejem se tornar um profissional de computação. Ensinar  programaçã o é um desafio, pois não é fácil despertar o interesse e a criatividade do al un o pa ra o dese nv ol vim ento de so luções comp ut ac iona is pa ra os pr oblema s encontrados diariamente, como também fazer com que este represente a sua solução utilizando a lógica de programação.

Transcript of Utilizando o Robocode Como Ferramenta de Auxílio No Aprendizado de Algoritmos e Java

  • 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/.