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.