Linguagem de
Programação para
Crianças
Diogo Peixoto - [email protected]
Haroldo Gondim - [email protected]
Renato Mendes - [email protected]
Rodrigo Medeiros - [email protected]
Problema
• É complexo ensinar programação (apesar das
habilidades motoras e cognitivas já adquiridas pelos alunos
para manusear a máquina);
• Exige abstração para entender como a máquina funciona
e como você irá mandar os comandos.
• Essencialmente, precisamos ensinar a resolver
problemas.
Contexto
1960: experimentos na área de computação gráfica
SketchPad (1963)
Grail - Graphical Input Language (1968) / Alan Kay.
Contexto
• 1960:
– Papert e Piaget em Viena;
– Primeira versão do LOGO 1967.
• 1970:
– MIT, Turtle, Computador Pessoal (Apple II e Texas Instrument TI/99).
Comandos
Comando
Descrição
Exemplo
PARAFRENTE
A tartatura ir para frente na direção na qual ela está apontada
especificando o número de passos da Tartaruga
PARAFRENTE 10
PARATRAS
Ir para o lado oposto onde ela está apontada especificando o
número de passos da Tartaruga.
PARATRAS 15
GIRADIREITA
Gira a Tartaruga no sentido horário.
GIRADIREITA 45
GIRAESQUERDA
Gira a Tartaruga o sentido horário.
GIRAESQUERDA 75
CORCANETA
Configura a cor da linha desenhada
CORCANETA PRETO
USARCANETA
Configura se a linha vai ser desenhada ou não
USARCANETA VERDADEIRO
Comandos
Comando
Descrição
Exemplo
REPETIR
Repetir os camandos
REPETIR 2 VEZES
PARAFRENTE 10
FIMREPETIR
APRENDA
Memorizar comandos
APRENDA reta (X)
PARAFRENTE X
FIMAPRENDA
SE .. FACA ..
SENAOFACA
Execução de comando condicional
SE X == TRUE
FACA
RETA(10)
SENAOFACA
RETA(20)
FIMSE
Comandos
APRENDA quadrado (X)
REPETIR 4 VEZES
GIRARDIREITA 90 PARAFRENTE X
FIMREPETIR
FIMAPRENDA
APRENDA triangulo(X)
REPETIR 3 VEZES
GIRARDIREITA 60 PARAFRENTE X
FIMREPETIR
FIMAPRENDA
APRENDA casa(X)
QUADRADO(X) JUNTA TRIANGULO(X)
FIMAPRENDA
casa(10)
BNF (1.0)
Programa ::= Comando
Comando ::= Movimento
| For
ParaFrente
::= "PARAFRENTE"
ValorInteiro
ParaTras
::= "PARATRAS"
ValorInteiro
GiraDireita
::= "GIRADIREITA"
ValorInteiro
GiraEsquerda ::= "GIRAESQUERDA" ValorInteiro
| Atribuicao
| Sequencia
For ::= "REPETIR" ValorInteiro "{" Comando "}"
| Id
";" Comando
Movimento ::= ParaFrente
Atribuicao ::= "APRENDA" Id Comando "FIMAPRENDA"
Sequencia ::= Id + Id
| ParaTras
| GiraDireita
| GiraEsquerda
ValorInteiro ::= Valores Inteiros e >= 0
BNF (2.0)
Programa ::= Expressao
Expressao ::= Sequencia
| Valor
| ExpressaoUnaria
| ExpressaoBinaria
| Declaracao
| Execucao
| If-Then-Else
| For
| Id
Valor ::= ValorConcreto
ValorConcreto ::= ValorInteiro
| ValorBooleano
| ValorCor
ValorInteiro ::= [0-9]+
ValorBooleano ::= "VERDADEIRO" | "FALSO"
ExpressaoUnaria ::= Acao
Acao ::= "PARAFRENTE" Expressao
| "PARATRAAS" Expressao
| "GIRARDIREITA" Expressao
| "GIRARESQUERDA" Expressao
| "CORCANETA" Expressao
| "USARCANETE" Expressao
ExpressaoBinaria ::= Expressao "+" Expressao
| Expressao "==" Expressao
| Expressao ">" Expressao
| Expressao "<" Expressao
| Expressao ">=" Expressao
| Expressao "<=" Expressao
| Expressao "Junta" Expressao
Declaracao ::= "APRENDA" Id "("ListaParametros")" Expressao "FIMAPRENDA"
ListaParametros ::= Id | Id "," ListaParametros
ValorCor
::= "PRETO" | "VERMELHO" |
"VERDE" | "AZUL"
BNF (2.0)
Execucao ::= Id(ListaExpressao)
ListaExpressao ::= Expressao | Expressao ","
ListaExpressao
If-Then-Else ::= "SE" Expressao "FACA"
Expressao "SENAOFACA" Expressao "FIMSE"
For
::= "REPETIR" Expressao "VEZES"
Expressao "FIMREPETIR"
Id ::= [a-zA-Z]+
Parser (.jj)
ProgrameBrincando.jj
Site do Projeto
http://www.cin.ufpe.br/~hgtf/plp
ou
http://bit.ly/1ge5UZC
Referências
PAPERT, Seymour. Logo: computadores e educação. Trad. José Armando
Valente, Beatriz Bitelman. Afira V. Ripper. 2. ed. São Paulo: Brasiliense, 1986.
_____________. A máquina das crianças: repensando a escola na era da
informática. Trad. Sandra Costa. Porto Alegre: Artes Médicas, 1994.
Download

Linguagem de Programação para Crianças