You are on page 1of 10

Implementao de Compilador e Ambiente de Programao Icnica para a Linguagem Logo em um Ambiente de Robtica Pedaggica de Baixo Custo

Marcelo R. G. Barbosa1, Felipe A. Silva2, Victor M. de A. Oliveira2, Valria D. Feltrim1, Luiz G. B. Mirisola2, Paulo C. Gonalves1, Josu J. G. Ramos2, Lucas T. Alves2
1

Departamento de Informtica Universidade Estadual de Maring UEM Maring PR Brasil


2

Centro de Tecnologia da Informao Renato Archer CTI Campinas SP Brasil

marcelo.barbosa@benner.com.br, {fel1310, victormatheus, luiz.mirisola, paulocg, ltanure}@gmail.com, valeria.feltrim@din.uem.br, josue.ramos@cti.gov.br

Abstract. Pedagogical Robotics is a tool to promote the integration of practical activities with scientific knowledge and team work that can become feasible in developing countries by using low cost alternatives. In this sense the availability of hardware and software components will contribute to the development of pedagogical robotics programs. This paper presents a contribution to this objective by presenting a Logo Compiler that use the formalisms required by compilers and the process of Logo code generation in an Iconic Logo programming environment Resumo. A robtica pedaggica constitui um instrumento para promover a integrao de atividades prticas com o conhecimento cientifico e trabalho em equipe, que pode ser viabilizado em pases em desenvolvimento com alternativas de baixo custo. Neste contexto, a disponibilizao de componentes de hardware e software abertos vem a favorecer o desenvolvimento de programas de robtica pedaggica. Este artigo apresenta mais uma contribuio neste sentido, pelo desenvolvimento de compilador Logo aberto que usa os formalismos requeridos pela tcnica de desenvolvimento de compiladores e pela apresentao do processo de gerao de cdigo Logo a partir de um ambiente icnico de programao.

1. Introduo
Ao longo dos ltimos anos, as ideias relacionadas ao construcionismo de Papert [Papert 2004] tm motivado o desenvolvimento de diferentes sistemas computadorizados voltados para a educao. Nesse contexto se destaca a robtica educacional, unindo o uso da linguagem Logo, proposta por Papert, montagem e programao de robs a partir de kits de robtica especialmente preparados para esse fim. O conjunto de robtica educacional LEGO Mindstorms, comercializado pela empresa LEGO, foi um dos primeiros kits disponveis no mercado com essas caractersticas [Gonalves 2007].

XX Simpsio Brasileiro de Informtica na Educao (2009)

Com a popularizao de ambientes robticos educacionais, diversas iniciativas surgiram em nvel mundial. No mbito brasileiro, h vrios ambientes fornecidos por empresas brasileiras e estrangeiras, alm de ambientes abertos como o Arduino [Arduino 2009] e GoGo board [Sipitakiat 2004]. Esses ambientes possuem uma unidade de controle bsica e um padro prprio de adio de componentes, como sensores e motores. Entretanto, conforme detalhado em Ramos et al. (2007), o custo de tais ambientes constitui o principal obstculo para o seu uso de forma difundida nas escolas, especialmente em pases em desenvolvimento. Dessa forma, a disponibilizao de solues abertas de baixo custo constitui uma alternativa importante para viabilizar o uso da robtica educacional de forma abrangente. Alm do custo, outras questes interferem na aplicao de ambientes como o disponibilizado para a GoGo board em plataformas de baixo custo, por exemplo, o software utilizado para a programao da placa. Ramos et al. (2009) prope solues de software que resolvem parte das limitaes da GoGo board, visando sua aplicao no contexto educacional e usando computadores de baixo custo. As principais limitaes abordadas so: i) possuir somente ambiente de programao textual (no possui ambiente de programao icnico); ii) a unidade de controle que opera com interface serial, dificultando o seu uso em computadores que possuem apenas interface USB, visto problemas de compatibilidade com vrios conversores USB-serial e iii) ter software no compatvel com o sistema operacional Linux. Alm disso, o compilador utilizado pelo ambiente da GoGo board possua cdigo fechado, apesar dos esquemas de hardware e o cdigo fonte da unidade de controle estarem abertos. Dessa forma, as solues propostas em Ramos et al. (2009) incluem: ambiente de programao textual e icnico, ambiente de operao e compilador, desenvolvidos como software aberto, alm da possibilidade do uso do GoGo board em Linux. Tambm foi apresentada a adequao realizada no software e hardware da GoGo board para que esta seja operada segundo interface USB. Estes aspectos preenchem algumas lacunas que impediam a implementao de programas de Robtica Pedaggica de Baixo Custo (RPBC) em escolas e dificultavam a evoluo de funcionalidades, como o uso de interfaces diferentes da serial convencional RS232.
Entrada do usurio ou arquivo de pro grama em texto
Interface de operao e programao no computador (pyGogoMonitor e pyGogoBlocos)

Entrada do usurio ou arquivo de programa em Blocos

pyGogoMonitor Cdigo Logo

PyGo goBlocos Cdigo Logo Comp ilador

Unidade de Controle

Carrinho de controle remoto com os motores com u nidade de controle

Cdigo intermedirio da mquina virtual Execuo do programa pela mquina virtual da GoGo board

Figura 1(a). Componentes de ambiente RPBC, includo interfaces do software de programao e operao, hardware da unidade controle, a GoGo board e experimento com carrinho seguidor de trilha.

Figura 1(b). Integrao dos componentes de software com a GoGo board.

XX Simpsio Brasileiro de Informtica na Educao (2009)

A Figura 1(a) apresenta os componentes de RPBC: na parte superior esto as interfaces do software de programao e operao; na parte inferior, o hardware da unidade de controle (a GoGo board) e a aplicao desta em um experimento de carrinho seguidor de trilha. A Figura 1(b) apresenta como os componentes de hardware e software interagem. Nesta figura, mostrado o ambiente para operao e programao da placa, chamado pyGoGoMonitor, que tem recursos para operao remota da unidade de controle e para o desenvolvimento de programas textuais na linguagem Logo. Ao lado mostrado o ambiente de programao icnico, chamado pyGoGoBlocos, utilizado para se gerar programas Logo de forma grfica. Ambos se comunicam com a GoGo board utilizando um compilador, que opera no computador de controle, traduzindo programas em Logo para a linguagem utilizada pela GoGo board para, em seguida, enviar estes programas para serem carregados e armazenados na GoGo board. O usurio ento pode comandar a execuo do programa armazenado para realizar uma aplicao robtica. O compilador desenvolvido, isto , o software que traduz os comandos da linguagem Logo para a linguagem interpretada pela a unidade de controle utiliza ferramentas especificas de desenvolvimento de compiladores baseados em uma especificao formal da linguagem, o que facilita a manuteno do software e a eventual incorporao de novos comandos. Como no existe uma especificao formal universalmente reconhecida da linguagem Logo, optou-se por adotar como padro especificao utilizada no compilador com cdigo fechado desenvolvido originalmente para a GoGo board [Sipitakiat 2004]. Assim, este trabalho apresenta os aspectos ligados implementao do compilador utilizado pelos ambientes pyGoGoMonitor e pyGoGoBlocos, que foi inicialmente desenvolvido na UEM [Barbosa 2008] e finalizado no CTI. No estado atual, o compilador permite a definio de comando de motores, leitura de sensores, controle de fluxo, variveis e constantes numricas, operaes numricas e lgicas, temporizao e procedimentos. Tambm mostrado neste trabalho o processo de gerao de cdigo Logo no ambiente programao icnica. Aps esta seo introdutria, o restante deste artigo est organizado como segue. A Seo 2 apresenta a mquina virtual Logo da unidade de controle. A Seo 3 apresenta o compilador desenvolvido. A Seo 4 apresenta o ambiente de programao grfico e, finalmente, a Seo 5 apresenta as concluses deste trabalho.

2. A Mquina Virtual Logo da Unidade de Controle


Desde a sua criao, por volta de 2002, o desenvolvedor da GoGo board distribuiu os esquemas eletrnicos, guias de montagem, guias de experimentos, etc., visando disponibilizar uma unidade controle adequada para experimentos com robtica de baixo custo. Recentemente, em 2007, foi distribudo sob licena GPL o software da unidade de controle da GoGo board, entretanto, no foram disponibilizados os softwares ligados unidade de programao e operao. Entre os componentes de software disponibilizados est a mquina virtual que interpreta os cdigos de instruo segundo uma linguagem intermediria especfica, em geral, chamada de bytecode. Uma mquina virtual corresponde a um processador virtual que tem um conjunto de instrues com nvel de abstrao mais baixo que a linguagem

XX Simpsio Brasileiro de Informtica na Educao (2009)

em que se est escrevendo um programa, porm com um nvel de abstrao mais alto que a linguagem do processador. Dessa forma, um compilador que produz cdigo para uma mquina virtual no depende do processador utilizado na unidade de controle. Assim, so pr-carregados na unidade de controle funes responsveis pela execuo das instrues da mquina virtual correspondente a traduo de um programa na linguagem Logo escrito pelo usurio. Este programa carregado aps a compilao e, na medida em que o usurio comande a sua execuo, o conjunto de instrues compilado executado, permitindo a execuo autnoma de programas escritos nesta linguagem, compondo, assim, um rob autnomo de baixo custo. No caso de uma GoGo board com interface serial, que tem velocidade de comunicao pequena, justificvel o uso de uma mquina virtual, pois isso diminui o tempo de carregamento de programas, j que o tamanho dos mesmos fica menor em relao opo de carregamento de todas as funes que seriam requeridas por uma determinada aplicao. No caso de placas com interface USB, com comunicao quase dez mil vezes mais rpida do que a comunicao serial RS232, esta alternativa pode ser revista, considerando-se a traduo direta dos comandos em Logo para os cdigos prprios do processador. Dentre as diferentes alternativas para a mquina virtual, os desenvolvedores da GoGo board implementaram uma mquina virtual em pilha, de modo que os valores a serem processados so empilhados para posterior execuo da operao, sendo que o resultado normalmente fica armazenado no topo da pilha de dados. Em geral, uma instruo de um programa Logo corresponde a vrias instrues da mquina virtual. Por exemplo, se o objetivo adicionar dois nmeros, a traduo do comando SOMA feita para uma linguagem intermediaria semelhante a: coloque o primeiro valor na pilha, ento coloque o segundo valor na pilha e some os dois nmeros, colocando o resultado na pilha. Em 2007, Arnan Sipiatkiat disponibilizou o cdigo-fonte que mostra como o interpretador de bytecode da linguagem Cricket Logo [Cricket 2009] interpreta cada cdigo. Este interpretador chamado de Cricket Logo Virtual Machine (VM). Neste cdigo-fonte esto descritos os cdigos de mquina aceitos pela GoGo board, alm de outras caractersticas do interpretador, como a notao ps-fixa, que define como uma expresso se comportar ao ser analisada. Como a Critcket Logo VM tem uma arquitetura simples, a traduo do cdigofonte para o cdigo intermedirio corresponde a uma sequencia de bytecodes. Logo, a traduo do cdigo Logo Repeat 10 [onfor 20 beep] , corresponde ao envio dos bytecodes 1 10 3 5 1 20 50 12 4 9 0. Este comando Repeat define a uma lista de valores que devero ser repetidos 10 vezes. Seguindo a forma ps-fixa, ser empilhado o valor 10 (bytecode 10), que corresponde a um byte (bytecode 1) empilha 1 10; em seguida ser empilhada a lista de valores (bytecode 3) com o seu tamanho (bytecode 5). Este tamanho corresponde aos bytecodes enviados a partir do tamanho da lista (no exemplo, os bytecodes 1 20 50 12), at o seu final (bytecode 4), inclusive, seguida do comando de iterao Repeat (bytecode 9) empilha 3 5 1 20 50 12 4 9. Por fim, empilhado o marcador de trmino do cdigo (bytecode 0).

XX Simpsio Brasileiro de Informtica na Educao (2009)

3. O Compilador
Um compilador traduz um programa descrito em uma linguagem de alto nvel, mais adequada aos seres humanos, para os cdigos em uma linguagem de mquina, que podem ser executados por um processador. No presente caso, a linguagem Logo a linguagem de alto nvel e os bytecodes interpretados pela mquina virtual da GoGo board a linguagem de mquina. Dessa forma, o compilador apresentado aqui traduz instrues Logo para instrues da Cricket Logo VM. Grosso modo, o processo de compilao pode ser descrito como contendo as seguintes etapas: anlise lxica, anlise sinttica, anlise semntica e gerao de cdigo. Para o desenvolvimento do compilador foi utilizada a ferramenta Ply [Beazley 2001]. Suas principais caractersticas so: estar implementada em Python; ser similar s ferramentas tradicionais Lex/Yacc do Unix; prover suporte s regras de recuperao e checagem de erros, gramticas ambguas e produes vazias; e ser relativamente simples de usar. A Ply possui dois mdulos dedicados a gerao automtica de compiladores, o Lex.py e o Yacc.py, que sero descritos nas sees seguintes. 3.1. Anlise Lxica A primeira fase da compilao a anlise lxica. O seu objetivo separar a seqncia de caracteres do texto de um programa-fonte em itens lxicos ou lexemas, que so sequencias de caracteres com um significado coletivo. Os lexemas so classificados como identificadores, palavras-chave, operadores, constantes, smbolos de pontuao, entre outros [Aho et al. 2008]. O analisador lxico realiza tambm outras tarefas, como remover comentrios e marcas de edio (tabulaes, caracteres de avano de linha e espaos), bem como relacionar o nmero de linha com possveis mensagens de erro. Para a implementao do analisador lxico para a linguagem Logo foi utilizado o mdulo Lex.py da ferramenta Ply. A Tabela 1 apresenta alguns lexemas da linguagem Logo, a sua classificao e exemplos simplificados da sua especificao no mdulo Lex.
Tabela 1. Exemplos de lexemas da linguagem Logo Lexemas to, end, repeat, if, ifelse, beep, stop, ledon, ledoff >, <, =, +, -, *, /, % Inicializa_, teste_123_, :tx, :valor, num,rec, ab, , c, ... 0, 13, 9, 168, ... ; (linha de comentrio) Classificao Palavras reservadas Operaes e Relao Identificadores Exemplo de definio Lex.py
reserved = { 'to' : 'TO', 'end' : 'END', etc } t_DIVIDE = '/' digit='([0-9])' letter='([a-zA-Z])' alphanum='([a-zA-Z0-9])' Procname='(letter+(alphanum)*)' Nliteral='(digit)+' t_ignore_COMMENTLINE=';.*'

Nmeros inteiros Comentrios

Conforme mostrado nos exemplos da Tabela 1, os lexemas da linguagem Logo so especificados como regras definidas nos arquivos de entrada do mdulo Lex no formato apropriado. O dicionrio reserved utilizado para definir as palavras reservadas da linguagem, isto , lexemas simples, sem regras especiais de formao. Regras tambm podem ser definidas a partir de expresses regulares. Por exemplo, nomes de procedimentos so definidos como uma letra concatenada com uma seqncia de zero ou mais caracteres alfanumricos (operador *). Uma constante numrica definida

XX Simpsio Brasileiro de Informtica na Educao (2009)

como uma seqncia de um ou mais dgitos (operador +). Funes podem ser associadas a lexemas, por exemplo, quando uma constante numrica encontrada uma funo verifica se o nmero vlido e emite uma mensagem de erro, caso necessrio.

3.2. Anlise Sinttica, Semntica e Gerao de Cdigo


A seqncia de lexemas identificados pela anlise lxica a entrada do mdulo Yacc.py. Este mdulo foi utilizado para a implementao das anlises sinttica e semntica e tambm para a gerao de cdigo. Desta forma, o compilador desenvolvido se caracteriza como sendo de uma passagem [Louden 2004]. A anlise sinttica verifica se os lexemas formam um programa estruturado de acordo com a gramtica da linguagem, que define os comandos e operaes possveis no Logo. A anlise semntica verifica a correo semntica das instrues e implementada por meio de regras que so disparadas durante a anlise sinttica. De modo similar, regras de gerao de cdigo so associadas estrutura sinttica da linguagem. O cdigo gerado implementa as operaes especificadas pelo programa na linguagem de sada do compilador. O Yacc.py requer a especificao de declaraes (variveis, precedncias entre operadores) e regras de traduo (produo gramatical e da ao semntica), conforme exemplos mostrados na Tabela 2.
Tabela 2. Exemplos de regras de traduo para a gramtica da linguagem Logo Declaraes Regras de traduo
DEBUG = True precedence = 'procedure : 'statement : 'statement : (('left', 'AND', 'OR', 'XOR'),.. } TO PROCEDURENAME statements END' IF expression LBRACKET statements RBRACKET' SHOW expression'

As regras de traduo da Tabela 2 mostram que um procedimento (procedure) deve ser definido utilizando-se o lexema TO, seguido do nome do procedimento, um statement e finalizado pelo lexema END. Um statement definido por outras regras da gramtica, como as duas regras seguintes mostradas na tabela, que definem a estrutura condicional IF e o comando SHOW (que envia um valor pela porta serial). A seqncia de lexemas lida e processada da esquerda para a direita, aplicando-se as regras quando possvel, at que todo o cdigo seja reduzido a uma regra principal, que define que o programa deve ser uma seqncia de um ou mais procedimentos. Cada regra gramatical est associada a uma funo, que gera o cdigo correspondente operao desejada, processa as regras filhas recursivamente e insere o cdigo gerado na posio correta. A linguagem inclui comandos especiais para operao do hardware (motores, sensores e beeps) e, caso hardware adicional seja desenvolvido, as regras lxicas e sintticas podem ser facilmente estendidas para incorporar novos comandos linguagem.

4. O Ambiente de Programao Grfico - O pyGoGoBlocos


Linguagens de programao grfica (ou visual) so aquelas em que o usurio especifica seus programas manipulando elementos visuais. As caractersticas que tornam estas linguagens atraentes, principalmente para as pessoas sem conhecimento de programao, so a capacidade de abstrair aspectos mais profundos de implementao e

XX Simpsio Brasileiro de Informtica na Educao (2009)

permitir um foco maior no algoritmo que no conhecimento da sintaxe de uma determinada linguagem. O pyGoGoBlocos est inserido nos dialetos da linguagem Logo com recursos grficos. O desenvolvimento do pyGoGoBlocos foi motivado pela inexistncia de uma plataforma com software aberto para programao grfica para kits robticos, conforme mostrado em Ramos et al. (2009). Assim, o pyGoGoBlocos, baseado no LogoBlocks [Begel 1996], usa uma interface de programao grfica para ajudar usurios inexperientes a compreender os conceitos envolvidos na programao e na robtica. O encaixe dos blocos facilita a organizao do pensamento e evita erros de sintaxe, muito comuns durante a aprendizagem. A tarefa bsica no pyGoGoBlocos juntar pedaos de cdigo em forma de blocos, de modo a criar o programa desejado. Cada componente da linguagem Logo mapeado em um bloco, que possui uma determinada cor e tipos de conexes. As conexes so espaos onde se podem conectar outros blocos. Por meio da cor, passa-se a informao de tipo do bloco, como condicional ou nmero. Por meio das conexes, visualiza-se claramente a sintaxe da linguagem, j que o formato de encaixe s permite que tipos compatveis se conectem. Por exemplo, o bloco SE s aceita expresses booleanas na comparao e somente estas possuem a borda arredondada que se encaixa no espao de comparao. Alm disso, possvel encapsular cdigo em procedimentos, minimizando a confuso de muitos elementos visuais na tela. O pyGoGoBlocos faz o mapeamento dos esquemas de blocos em cdigo textual, que compilado e enviado placa para ser executado. Na Figura 2 mostrado um exemplo de programa para gerao de sons a partir da sequencia de Fibonacci. esquerda da figura, mostrada a representao em blocos e, direita, o cdigo Logo correspondente.
glob al va riave l1 glob al va riave l2 to s tart setv ariav el1 1 setv ariav el2 1 loop [ setv ariav el1 varia vel2 beep wait vari avel 2 setv ariav el2 vari avel1 +vari avel 2 ] end

Figura 2. Esquema de blocos ( esquerda) e o cdigo Logo correspondente ( direita) que emite um som numa freqncia igual seqncia de Fibonacci.

Os tipos de blocos disponveis no pyGoGoBlocos podem ser classificados em oito categorias. A Tabela 3 apresenta as categorias de blocos disponveis, bem como uma descrio dos blocos que compem cada categoria.

XX Simpsio Brasileiro de Informtica na Educao (2009)

Tabela 3. Categorias e tipos de blocos disponveis no pyGoGoBlocos Categoria Controle Disposio Fluxo Condio Nmeros Tipo de Blocos Ligar, desligar, frear, girar motor em sentido horrio, girar motor em sentido anti-horrio, reverter sentido, ligar por uma durao de tempo, alterar potncia dos motores, alterar posio de motor servo. Espao vertical, espao horizontal, espao vertical maior. Se, se-seno, lao infinito, repetir um nmero de vezes, esperar at que uma condio seja verdadeira, parar a execuo do cdigo. Comparao entre dois nmeros (menor, maior, igual), e, ou, ou exclusivo, no, boto Nmero inteiro, nmero aleatrio, pegar valor de um sensor, criar varivel, atribuir valor a uma varivel, soma, subtrao, diviso, mdulo. Obs.: onde se pode utilizar nmeros, tambm se pode usar variveis, que so mapeadas em tempo de execuo pelo interpretador nos seus valores numricos. Durao de tempo (dcimos de segundo), esperar uma quantidade de tempo, pegar valor do contador de tempo, reiniciar contador de tempo. Bip, acender led, apagar led, comentrio. Criar novo procedimento, finalizar procedimento.

Temporizao Outros Procedimento

4.1. Mecanismo para a Transformao dos Blocos em Cdigo Logo A implementao do pyGoGoBlocos usa programao orientada a objetos. O sistema de blocos est baseado na definio de uma classe Bloco que contem as propriedades gerais e cada bloco uma especializao desta classe. Assim, o algoritmo de gerao de cdigo a partir dos blocos baseia-se no fato que, por construo, cada bloco possui um conjunto de conexes e cada conexo possui um retngulo que quando entra em coliso com o retngulo de outra conexo verifica a possibilidade de encaixe considerando as propriedades de cada conexo. As conexes possuem as seguintes propriedades de i) Tipo: normal, lgica e nmero; ii) Formato: macho e fmea e iii) Fluxo: para o pai, para o filho. O encaixe se d em funo das propriedades das duas conexes envolvidas e segue as seguintes regras: i) As conexes devem ter o mesmo tipo e ii) As conexes devem ter formatos opostos. Os blocos e suas conexes formam uma rvore sinttica. O processo de gerao de cdigo percorre esta rvore seguindo as conexes de cada bloco. Cada bloco declara como ser gerado seu prprio cdigo. Por exemplo, o bloco Beep est implementado em cdigo Python pelas seguintes instrues:
self.add_code(self.conn_parent) self.add_code("beep\n") self.add_code(self.conn_child)

onde self.conn_parent a conexo que liga o bloco com o bloco de cima e self.conn_child o liga com o bloco de baixo. utilizada a propriedade de poliformismo da orientao a objeto na funo add_code para permitir que, quando o parmetro da funo for uma string (ex.: "beep\n"), este seja simplesmente inserido no cdigo de sada. Quando o parmetro uma conexo, seguida a conexo e, recursivamente, analisado o cdigo do bloco que est conectado a ela, at que o bloco verificado no possua conexes que possam ser seguidas. Neste ponto, um problema que pode surgir haver uma recurso infinita, se uma conexo que se liga com o bloco "pai" for seguida. Por isso foi inserido a

XX Simpsio Brasileiro de Informtica na Educao (2009)

propriedade Fluxo, permitindo que somente conexes do tipo para o filho sejam seguidas no processo de gerao de cdigo. O pseudo-cdigo do algoritmo de gerao de cdigo Logo a partir da estrutura de blocos mostrado a seguir:
Cdigo(bloco, texto): para todas as entradas E da funo add_code: se E for uma conexo: se E estiver sendo utilizada e no apontar para o bloco pai: texto = Cdigo( destino de E, texto ) se E for um tipo constante (string, inteiro ou float): texto = texto + E retorne texto

A Figura 3 mostra a rvore que percorrida durante o processo de gerao de cdigo para um programa em blocos. A partir do bloco incio, busca-se o seu filho, que o bloco Mudar varivel, que est conectado varivel1 e ao valor 1, fazendo que seja gerado o cdigo Logo para atribuir o valor 1 a varivel1. Este bloco tem como filho outro bloco mudar varivel que atribui valor 1 varivel dois. O filho seguinte o bloco Lao, que est conectado a uma seqncia de blocos a ser executada repetidamente.

Figura 3. Mostra-se direita, de forma parcial, o processo de gerao de cdigo para o programa em blocos mostrado esquerda.

5. Disponibilidade do Projeto
O projeto descrito neste artigo est disponvel sob licena GPL e pode ser encontrado no endereo <http://sourceforge.net/projects/br-gogo>.

6. Concluso
Este artigo apresentou mais uma contribuio com objetivo de disponibilizar componentes de hardware e software abertos para o desenvolvimento de programas de robtica pedaggica de baixo custo. Foi apresentado um compilador Logo de cdigo aberto, que usa os formalismos requeridos pela tcnica de desenvolvimento de compiladores e o processo de gerao de cdigo Logo a partir de um ambiente icnico

XX Simpsio Brasileiro de Informtica na Educao (2009)

de programao. Com os resultados apresentados neste artigo o sistema est pronto para inicio de testes em escolas.

Agradecimentos
Os autores agradecem o apoio do Programa PIBIC do CNPq.

Referncias
Aho, A. V.; Lam, M. S.; Sethi, R.; Ullman, J. D. (2008) Compiladores: Princpios, tcnicas e ferramentas. 2 Edio, So Paulo: Pearson Addison-Wesley. Arduino (2009) Open-source physical computing platform. Disponvel em: <http://www.arduino.cc>. Acesso em: 30-07-2009. Barbosa, M. R. G. (2008) Estudo e Implementao de um Novo Compilador para a Linguagem de Programao Cricket Logo Visando sua Aplicao em uma Arquitetura de Baixo Custo. Trabalho de Concluso de Curso. Departamento de Informtica, Centro de Tecnologia, Universidade Estadual de Maring, PR. Beazley, D. M. (2009) PLY. Python Lex-Yacc. <http://www.dabeaz.com/ply/>. Acesso em: 14-06-2009. Disponvel em:

Begel, A. (1996) A Graphical Programming Language for Interacting with the World. < http://research.microsoft.com/~abegel/mit/begel-aup.pdf>. Acesso em: 17-10-2009. Cricket (2009) Handy Cricket Home Page. <http://www.handyboard.com>. Acesso em: 30-07-2009. Disponvel em:

Gonalves, P. C. (2007) Prottipo de um rob mvel de baixo custo para uso educacional Dissertao (Mestrado em Cincia da Computao), Universidade Estadual de Maring, Maring, PR. Louden, K. C. (2004) Compiladores: Princpios e Prticas. So Paulo: Editora Pioneira Thomson Learning. Papert, S. (1994). A Mquina das Crianas: Repensando a Escola na Era da Informtica. Porto Alegre: Artes Mdicas. Ramos, J. J. G.; Azevedo, H.; Vilhete V. A. J.; Noves O.; Figueiredo D.; Tanure L.; Holanda F. (2007) Iniciativa Para Robtica Pedaggica Aberta e de Baixo Custo para Incluso Social e Digital no Brasil. In: Anais do VIII Simpsio Brasileiro de Automao Inteligente (SBAI 2007), Florianpolis, SC. Ramos, J. J. G.; Silva, F. A.; V. Oliveira; Alves, L. T.; DAbreu, J. V. V. (2009) Desenvolvimento de Componentes de Hardware e software abertos para programas de Robtica Pedaggica de Baixo Custo. In: Anais do IX Simpsio Brasileiro de Automao Inteligente (SBAI 2009), Braslia, DF. Sipitakiat, A.; Blikstein, P.; Cavallo, D. (2004) GoGo Board: Augmenting Programmable Bricks for Economically Challenged Audiences, In: Proceedings of the Int. Conf. of the Learning Sciences (ICLS 2004), Los Angeles, USA.

XX Simpsio Brasileiro de Informtica na Educao (2009)

You might also like