[ Abaixo, o a primeira parte do terceiro capítulo do meu livro Tecnologia e Educação: O Futuro da Escola na Sociedade da Informação, cuja história é parcialmente descrita no primeiro post desta série. Esclareço, para facilitar a vida do leitor, que este livro foi escrito há quase exatamente 17 anos, nos meses de Novembro e Dezembro de 1998, a pedido do PROINFO, Programa de Informática na Educação do Ministério da Educação, que estaria publicando, em prazo curtíssimo, uma coleção de 20 livros sobre o tema “Informática para Mudança na Educação”. Para o resto da história, por favor, leia o início do primeiro post da série. Trata-se, portanto, de um texto “datado”, porque poucas coisas mudam tão rápido na nossa sociedade como a tecnologia. Infelizmente, a educação muda, quando muda, muito devagar. Só mais uma observação: faltam alguns gráficos de LOGO e um esquema relacionado aos animais que não consegui transferir para cá. Vou continuar tentando.]
———-
III. O Computador na Escola – Parte A
A escola ou o sistema escolar que introduz o computador em suas atividades didático-pedagógicas deve ter bastante clareza sobre o que pretende, tomando cuidado para não prometer a professores e pais mais do que se pode alcançar, assim levando a comunidade escolar à desilusão com uma tecnologia que tem excelente potencial pedagógico.
A escola ou o sistema escolar deve, também, ter bastante clareza sobre o que lhe compete, no processo, e o que ela pode adquirir no mercado ou transferir a terceiros.
Assim sendo, é importante firmar bem algumas premissas que precisam ser levadas em consideração em qualquer processo de introdução de computadores em escolas.
1. Premissas Básicas
- Só se justifica o computador na escola se ele ajudar a escola a executar melhor suas funções.
- Projetos de introdução do computador na escola só dão bom resultados quando há comprometimento com o projeto por parte da direção e dos professores.
- Em última instância é a escola que deverá definir os contornos específicos do seu projeto.
A. Primeira Premissa
Justifica-se a introdução do computador na escola apenas se o computador puder ajudar a escola a desempenhar melhor suas funções, tanto no que tange às suas atividades-fim como no que diz respeito às suas atividades-meio.
Aqui neste texto não se trata da informatização das atividades-meio da escola. Trata-se, isto sim, de verificar a medida em que o computador pode ajudar a escola a desenvolver suas atividades-fim, a saber, preparar os alunos para alcançar sua realização pessoal como indivíduos, agir eficaz e responsavelmente na sociedade como cidadãos, e, por fim, atuar competentemente como profissionais, fazendo do trabalho não só uma fonte de realização pessoal e sustento próprio e da família, mas, também, uma forma de contribuir para com a sociedade.
B. Segunda Premissa
Um projeto de introdução do computador na escola só funciona se houver um comprometimento claro e firme com o projeto por parte da direção da escola e dos professores. No caso de um sistema escolar, também a direção do sistema deve estar comprometida com o projeto.
Por isso, é preciso, num primeiro momento, sensibilizar esses agentes para com:
- A importância da presença do computador como ferramenta pedagógica na escola;
- A necessidade de envolvimento dos professores nessa iniciativa;
- O sentido da proposta que será desenvolvida e, posteriormente, implementada.
Sensibilização com os dois primeiros elementos pode ser alcançada através de palestras e oficinas de trabalho, em que os agentes educacionais envolvidos (diretores, supervisores e principalmente professores) tenham a oportunidade de colocar e discutir suas dúvidas, inquietações, e expectativas em relação a essa nova tecnologia educacional.
Sensibilização com o terceiro elemento só será alcançada mediante o envolvimento desses profissionais da educação no próprio desenvolvimento da proposta que será implementada, a discussão dessa proposta pela comunidade escolar e a capacitação dos professores para que possam participar de sua implementação, uma vez formalmente elaborada e aprovada.
A informática não deve entrar na escola sem que os profissionais da educação que atuam na escola — diretores, supervisores, mas principalmente os professores — estejam convencidos de que essa tecnologia vai lhes ser de valia em seu trabalho e vai ajudá-los a promover melhor os objetivos educacionais que consideram valiosos: facilitar o aprendizado dos alunos, ajudando-os a se tornar pessoas autônomas e independentes, que sabem buscar por si mesmas as informações e os conhecimentos de que necessitam, que têm condições de analisar e avaliar criticamente as informações encontradas, que conseguem aplicar essas informações no processo de tomada de decisão nas atividades práticas da vida.
A postura filosófica que deve imperar em todo o trabalho realizado na escola é a de que mais importante do que simplesmente aprender informática é usar a informática para aprender — aprender outros conteúdos, mas, principalmente, aprender a solucionar problemas ligados à obtenção, à análise, à avaliação, à classificação, ao armazenamento, à recuperação, ao uso (ou à aplicação) e à distribuição da informação, e a aprender as habilidades e competências já assinaladas.
C. Terceira Premissa
Em última instância é a escola que deve definir os contornos específicos do projeto de informatização que será adotado. Essa é uma prerrogativa sua da qual não deve abrir mão, porque o uso do computador na escola, como uma tecnologia educacional que eventualmente vai auxiliar o professor no seu ensino e ajudar o aluno no seu aprendizado, deve levar em conta o projeto pedagógico da escola. Se a escola tiver um projeto pedagógico conservador, o computador vai ser uma ferramenta conservadora, dentro desse projeto. Se a escola tiver um projeto pedagógico progressista, o computador vai ser uma ferramenta que se enquadra nesse projeto. O que não dá certo é tentar fazer com que o computador seja usado de maneira convencional numa escola progressista, ou que seja usado de uma maneira progressista em uma escola convencional.
As pessoas ou instituições externas que vierem a assessorar a escola no processo de informatização devem agir apenas como agentes facilitadores e de suporte. Elas devem intervir sempre que solicitadas, e executar, supletivamente, funções que o pessoal da própria escola ainda não esteja em condições de executar, mas não devem permitir que a escola as encare como sendo as responsáveis pelo projeto, como se a escola pudesse “terceirizar” parte de sua atividade-fim. A responsabilidade principal pelo projeto deve sempre ser assumida pela escola, que nunca deve dela abdicar.
Se a escola não estiver convencida de que as atividades sugeridas ou propostas fazem sentido, não deve realizá-las apenas porque os agentes facilitadores as recomendaram: deve, neste caso, promover a discussão da questão até que aconteça o convencimento. Se não ficar convencida, não deve realizar essas atividades.
Assim, o que aqui se propõe é que a comunidade escolar defina ela mesma os contornos do seu projeto de informatização, de modo a preservar e reforçar seus objetivos e valores e sua filosofia da educação.
O papel do “facilitador externo” é muito semelhante ao papel do professor como facilitador da aprendizagem do aluno: o de facilitar, ajudar, apoiar, estimular, coordenar — mas o projeto de informatização da escola deve representar o ponto de vista de seus profissionais.
2. Modelos de Utilização do Computador na Escola
Nesta seção falaremos de quatro modelos básicos de utilização do computador na escola:
- O computador como ensinante
- O computador como aprendente
- O computador como ferramenta de aprendizagem
- O computador como ambiente de aprendizagem
Dentro desses modelos encaixaremos os principais tipos de software que possuem aplicação pedagógica.
A. O Computador como Ensinante [1]
Dentro deste modelo, o computador é visto como ensinante — como se fosse um professor eletrônico, ou uma máquina de ensinar.
a. Instrução Programada
Instrução programada através do computador é um método de instrução através do qual o computador é realmente colocado na posição de quem ensina ao aluno. O termo “CAI” é uma sigla, que corresponde ao Inglês “Computer-Assisted Instruction” (Instrução Assistida pelo Computador), que tem sido freqüentemente utilizada para se referir a esta modalidade de utilização do computador na educação. O modelo aqui é tipicamente instrucional, e, portanto, bastante convencional.
Em termos quantitativos, está é a forma mais difundida de utilização do computador na educação. É usada em escolas, em empresas, nas forças armadas, e em várias outras instituições que possuem objetivos educacionais que possam ser atingidos por meio do ensino e da instrução. Os que a adotam vêem o computador, basicamente, como um recurso instrucional que facilita a consecução de certos objetivos educacionais tradicionais através de métodos fundamentalmente convencionais (ensino e instrução).
Em escolas, essa abordagem, com freqüência, resulta na utilização do computador virtualmente como uma máquina de ensinar ou como um sofisticado equipamento audiovisual que ensina fatos, conceitos ou habilidades, dentro do contexto curricular regular. Ocasionalmente, alguns métodos menos convencionais, como simulações e jogos, são acoplados à instrução programada, mas na maioria dos casos esta se resume a exercícios repetitivos (para a fixação ou recuperação), tutoriais, e demonstrações. Por conter variações importantes, estamos discutindo simulações e jogos numa seção separada.
EXERCÍCIOS REPETITIVOS
Dentro das várias formas de instrução programada, os exercícios repetitivos talvez sejam a maneira mais comum de utilização do computador na educação. Programas que levam o aluno a praticar, repetitivamente, as operações aritméticas, as capitais do mundo, os nomes de chefes de Estado, os plurais irregulares, ortografia, vocabulário de línguas estrangeiras, os símbolos das substâncias químicas, etc., estão entre os mais difundidos e populares ¾ e, também, como se verá, entre os mais criticados por segmentos mais progressistas da comunidade pedagógica. Professores usam esses programas para ajudar os alunos a memorizar determinados fatos, para permitir que alunos defasados possam alcançar os outros, trabalhando fora do horário normal, para permitir que os alunos mais avançados possam progredir na matéria em ritmo mais acelerado, etc. De certo modo esses programas são uma versão computadorizada (e, freqüentemente, bem mais sofisticada) dos famosos “flash cards”, em que de um lado há uma pergunta e, de outro, a resposta. O aluno olha de um lado e vê, por exemplo, “3 x 7 =”, ou “A capital da França é:”, ou “abóbora” — enquanto do outro lado está a resposta correta, ou seja, respectivamente, “21”, “Paris”, “pumpkin”.
Especialmente em programas destinados a crianças menores a resposta certa pode ser recompensada com um gráfico mostrando um rosto sorridente e com algum efeito sonoro agradável, e a resposta errada vir acompanhada de um rosto triste e de alguma música meio fúnebre.
As principais críticas a esse tipo de utilização centram-se no fato de que a pedagogia utilizada ¾ basicamente de estímulo e resposta ¾ é muito estreita, às vezes desnecessariamente cansativa, e, por vezes, conducente a uma forma limitativa ou mesmo errônea de aprendizagem: a aprendizagem (basicamente passiva) por repetição e memorização (“drill”).
Não resta dúvida, porém, de que, se bem concebido e implementado, esse tipo de exercício de instrução programada pode ser de utilidade em contextos em que determinados fatos têm que ser memorizados, mesmo que sem maior compreensão, pois o ambiente computadorizado acrescenta uma certa dimensão motivacional ao processo. Tarefas que poderiam parecer incrivelmente maçantes aos alunos, como aprender tabuadas, capitais dos países do mundo, vocabulário, plurais irregulares, ou datas de fatos históricos importantes, passam a ser realizadas com relativo grau de interesse e mesmo de prazer — pelo menos no início.
TUTORIAIS
Uma variedade de instrução programada, talvez um pouco mais sofisticada do que os exercícios repetitivos de prática e fixação, é a que engloba os chamados tutoriais. O objetivo do tutorial é levar o computador a instruir o aluno, em uma determinada área do conhecimento, mais ou menos da mesma maneira que um professor o faria em sala de aula. Obviamente, há diferenças cruciais. O computador não é humano e tem que operar com uma limitada gama de possibilidades.
Neste caso o programa normalmente apresenta na tela um conjunto ordenado e seqüenciado de informações e depois testa o aluno acerca das informações repassadas. A apresentação das informações é normalmente acompanhada de gráficos, animações e sons e dá ao aluno a possibilidade de definir (pelo menos em parte) o seu percurso, voltar, repetir um trecho, etc.
As perguntas sobre o material apresentado normalmente vêm na forma de questões de múltiplas escolha, de questões com lacunas a serem preenchidas, ou, às vezes, de exercícios voltados para o estabelecimento de correlações. De qualquer maneira, as perguntas sempre têm uma resposta inequivocamente certa e uma gama de respostas plausíveis relativamente limitada. Após cada resposta, o aluno recebe um reforço, se respondeu corretamente; caso contrário, uma mensagem o informa de que sua resposta está errada e, algumas vezes, que ele tem uma ou mais chances de tentar novamente.
Durante todo processo o programa vai contabilizando o número de respostas certas e erradas, e às vezes, registrando o número de tentativas necessárias para que a resposta correta apareça ou o tempo gasto para responder a cada pergunta. Essa contabilidade toda é fornecida ao final do programa e, em muitos casos, automaticamente gravada em disco, para que o professor possa mais tarde analisar o desempenho de cada um dos alunos e tomar as medidas que achar apropriadas.
Existe software voltado especificamente para auxiliar o professor a montar esse tipo de programa educacional. Esse tipo de software interage com o professor, perguntando-lhe se quer exibir texto aos alunos e permitindo-lhe digitar esse texto como se o fizesse numa máquina de escrever. Pergunta-lhe, a seguir, se deseja elaborar questões de múltipla escolha ou de preenchimento de lacunas, ou ainda de algum outro tipo. Escolhido o tipo, é solicitado o número de questões e de opções (se for o caso), bem como as informações relativas à nota mínima para a aprovação (ou equivalente), ao tempo máximo que se deve dar ao aluno em cada questão (que pode ser ilimitado), ao número de tentativas permitidas, os comentários que devem aparecer após uma resposta certa e uma errada, etc. Acertados esses detalhes, o software gerador de programas educacionais de instrução programada pede ao professor que digite a primeira pergunta e suas várias opções, e que forneça a opção correta ou a(s) resposta(s) que preenche(m) corretamente a(s) lacuna(s). Feito isso, repete-se o processo para as perguntas seguintes. Algumas variações desse software chegam mesmo a embaralhar, aleatoriamente, as várias opções, caso o professor o deseje, de modo a garantir que cada opção tenha uma distribuição aleatória de respostas corretas. Um outro software é geralmente utilizado pelo aluno para o acesso ao material gerado pelo professor ¾ material esse que às vezes é chamado de “courseware”, para distingui-lo do software que permitiu ou facilitou a sua geração.
Essa forma de utilização do computador na educação pode ser empregada basicamente em qualquer área do currículo, para qualquer dos níveis ou graus do processo educacional, desde a pré-escola até o ensino superior, embora na pré-escola seja preciso levar em consideração o fato de que as crianças normalmente não são alfabetizadas, embora sejam capazes, em muitos casos, de reconhecer letras e números. Nessas circunstâncias, ou se utiliza um sintetizador de voz, ou se faz um programa que será usado com a supervisão do professor.
Obviamente, os educadores que se opõem ao uso de instrução programada fazem a esse tipo de programa as críticas já conhecidas, de que são fechados, não se prestam a assuntos em que as respostas não são sempre inequivocamente certas ou erradas, etc.
DEMONSTRAÇÕES
A designação desse tipo de programa já é indicativa de seu conteúdo, que dispensa maiores comentários. Podemos apenas ilustrar esse tipo de programa com um software de demonstração relativamente sofisticado, que, apesar disso, é com freqüência usado como exemplo.
Imaginemos um programa para ensinar, por demonstração, o conceito de densidade, no qual são apresentados ao aluno, na tela, através de gráficos, dois copos com líqüido. O programa pede ao aluno que observe o que acontece quando uma pedra de gelo é colocada em cada copo. Em um caso, o gelo vai para o fundo do copo; no outro, fica na superfície. O programa pergunta:
Programa: “O que é você viu acontecer?”
e o aluno responde algo assim:
Aluno: “Uma pedra afundou e a outra ficou em cima” [ou “Um gelo afundou e o outro não”].
Estando, como deve ser o caso, cada uma dessas respostas dentro do previsível, o programa dirá:
Programa: “OK. Por que, na sua opinião, aconteceu isso?”
e o aluno poderá responder dizendo:
Aluno: “Uma pedra era mais pesada do que a outra.”
Essa é, também, uma resposta previsível, com a qual o programa deve saber lidar. Uma maneira de fazê-lo é perguntar:
Programa: “E se colocássemos um pedaço de madeira em cada copo, um mais pesado que o outro, aconteceria a mesma coisa?”
ao que o aluno poderia responder com:
Aluno: “Acho que sim.”
Ou algo equivalente. Se for isso, o programa pode exibir novamente o gráfico, jogando dessa vez dois pequenos pedaços de madeira nos copos e informando que têm peso diferente. Só que agora os dois flutuam. Por isso, o programa pergunta o que aconteceu, o aluno responde que os dois flutuaram, o programa pergunta por que isso se deu, e o aluno responde alguma coisa como:
Aluno: “Os dois pedaços eram mais leves do que a água.”
E assim o diálogo continua.
Esse exemplo é relativamente sofisticado, pois o programa usa gráficos e animação (os objetos afundando), e é capaz, dentro de certos limites, de lidar com linguagem natural, reconhecendo e aceitando respostas genéricas como “Acho que sim” e complexas como “Os dois pedaços eram mais leves do que a água”. Tal sofisticação, hoje, é perfeitamente viável, tanto em termos dos equipamentos existentes como das técnicas necessárias para elaborar um programa dessa natureza.
Obviamente, a tarefa de programação, em um caso como esse, não é fácil, pois o programador tem que tentar antecipar a maior parte das respostas do aluno — mesmo (e, talvez, principalmente) as erradas [2] — de modo a criar um diálogo significativo. Isso é extremamente difícil. É preciso, também, testar extensivamente o programa, para verificar se algumas respostas relativamente típicas não foram omitidas. Para evitar esse e outros problemas, há sempre a tentação de formular perguntas com formato de múltipla escolha, em vez de perguntas de formato aberto ou semi-aberto. Tal procedimento, porém, acarreta o risco de os programas acabarem se tornando-se meros tutoriais, que, mesmo com o uso de gráficos, perderiam muito de sua criatividade.
Um exemplo mais simples de demonstração pode ser encontrado em programas gráficos que permitem a criação de curvas de seno. Fazendo uso de gráficos e de cores é possível demonstrar a relação existente entre as variáveis associadas a uma curva de seno. O professor (ou o aluno) pode manipular qualquer variável — a amplitude, por exemplo — e observar seu efeito sobre as outras em uma representação visual da curva na tela. Não há mais necessidade de giz de diferentes cores para indicar as mudanças na forma. Não é mais preciso apagar curvas e redesenhá-las. Torna-se desnecessário manter um sem número de transparências, de cores diferentes, para colocar uma em cima da outra. Aperta-se uma tecla, e a curva desaparece — ou então uma segunda curva, em cores diferentes, se sobrepõe à primeira. E assim por diante.
Demonstrações, como esta, efetuadas com o auxílio do computador têm um potencial muito mais rico do que as realizadas com giz e quadro-negro ou com transparências. As variáveis podem ser manipuladas com facilidade, e os efeitos são instantâneos. Além disso, as áreas de aplicação são verdadeiramente ilimitadas: abrangem desde a estrutura atômica até o movimento dos planetas, passando pela trajetória dos alimentos no aparelho digestivo e por centenas de outros assuntos.
Em termos pedagógicos, essas demonstrações são inegavelmente superiores aos exercícios repetitivos de prática e fixação e aos tutoriais, embora dificilmente possam, justamente em virtude de sua maior sofisticação, ser usadas por crianças muito novas. São recomendadas, portanto, para alunos do Ensino Médio (ou, então, das séries finais do Ensino Fundamental). Não há restrições quanto a áreas curriculares: basicamente, qualquer área pode beneficiar-se com elas.
b. Simulações e Jogos
SIMULAÇÕES
Uma simulação é um modelo que pretende imitar um sistema, real ou imaginário, com base em uma teoria de operação desse sistema. Umas das principais aplicações de computadores na área médica e nas forças armadas tem consistido em utilizá-lo para simular alguns ambientes a fim de testar os efeitos neles produzidos por várias formas de intervenção.
A implementação desse tipo de simulação muito complexa normalmente exige equipamentos de porte superior aos disponíveis em escolas. Mas não se trata do único tipo possível. Na verdade, para fazer simulações não é necessário nem sequer o computador. Todos conhecem jogo não-computadorizados, como Banco Imobiliário, War, etc., que são simulações bastante interessantes e instrutivas, por mais que se possa discordar dos conteúdos que veiculam.
Hoje em dia, os computadores disponíveis em escolas já tem capacidade de simular sistemas razoavelmente complexos. Eles podem ser programados para responder a determinadas intervenções de maneiras realistas e predizíveis, e sem dúvida podem processar significativas quantidades de dados. Por isso, simulações pedagogicamente relevantes podem ser realizadas com razoável complexidade e realismo, gerando, dessa forma, considerável interesse.
Esse recurso, porém, não pode nem deve substituir totalmente o trabalho no laboratório. O aluno nunca vai aprender, no computador, a acender um fogareiro, ou a aquecer de fato uma proveta. Isto significa que as simulações pelo computador devem ser utilizadas como um complemento, e nunca como uma substituição total, do trabalho no laboratório. Se forem utilizadas apenas aquelas, os alunos estarão sendo privados de importantes experiências de aprendizagem. Da mesma forma, aqueles que objetam ao uso de simulações podem estar privando as crianças de experiências de aprendizagem igualmente importantes e estimulantes, às quais elas não teriam outro meio de acesso.
As empresas de software já perceberam o potencial pedagógico desse tipo de programa e têm colocado no mercado interessantes simulações, relacionadas com acidentes ambientais (até mesmo envolvendo o famoso acidente nuclear de Three Mile Island, na Pensilvânia), com o mercado de ações, com a pilotagem de vários tipos de avião, etc. Nesses programas — que, em alguns casos, certamente têm considerável dose de fantasia, razão pela qual são freqüentemente descritos como jogos pedagógicos — o usuário testa suas hipóteses sobre os problemas que surgem no ambiente simulado manipulando variáveis e verificando como o comportamento do modelo se altera numa variedade de situações e condições.
Na verdade, como esses exemplos deixam entrever, a linha divisória entre simulações e, de um lado, demonstrações e, de outro, jogo, é, às vezes, muito tênue. Não é importante, contudo, pôr em relevo tais distinções classificatórias. Na maioria das vezes elas apenas refletem diferentes ênfases ou intenções. Não resta dúvida de que alguns jogos possivelmente desenvolvidos sem maiores propósitos pedagógicos podem ser tão instrutivos quanto algumas simulações concebidas explicitamente para contextos educacionais. O valor pedagógico da simulação deriva não tanto do conteúdo que ela exprime, mas do raciocínio sofisticado e das habilidades relativas à solução de problemas que ela estimula e requer. Boas simulações objetivam ajudar o usuário a desenvolver essas características interagindo com o modelo, independentemente do objeto da simulação. Boas simulações utilizam, para alcançar esse objetivo, gráficos, animação, texto e, acima de tudo, um problema realista e desafiador a ser enfrentado e solucionado.
As características de uma simulação interessante, do ponto de vista técnico e pedagógico, são muitas e variadas. Não há condições, aqui, nem sequer de mencionar muitas delas. Vamos nos ater apenas ao mais importante. Ao planejar uma simulação pedagógica, é essencial lembrar que, de um lado, o sistema a ser modelado tem que ser simplificado, de modo a permitir que o aluno manipule suas variáveis de maneira relativamente clara e acessível. Por outro lado, é necessário que o modelo seja suficientemente próximo do sistema original, com um número razoável de detalhes interessantes, sem simplificações exageradas; caso contrário, a simulação perde em poder descritivo e explicativo, e também em interesse.
Projetar e desenvolver um sistema com essas características não é fácil nem rápido e, possivelmente, está além da capacidade e/ou disponibilidade da maioria dos professores, com raras exceções. A maior parte das vezes, portanto, os professores terão que utilizar software comercial, que, é bom que se diga, nem sempre tem a desejável qualidade, seja técnica, seja pedagógica. É necessário, portanto, que se faça a seleção desse material com grande cuidado, levando-se em conta o preço que às vezes é elevado, a qualidade técnica e, acima de tudo, o valor pedagógico do programa.
Simulações pelo computador podem ser usadas na sala de aula a serviço de uma série de objetivos educacionais, como domínio de habilidades, aprendizagem de conteúdos, desenvolvimento de conceitos, promoção de investigação, aumento de motivação, etc.
Na área de ciências, o computador pode simular experimentos e sistemas naturais. A simulação, por exemplo, de um laboratório de química pode adicionar uma série de perspectivas ao trabalho pedagógico, reduzindo, ao mesmo tempo, o custo e a periculosidade, pois permite estudar, com razoável realismo, eventos e processos que, devido ao seu custo elevado ou seu alto grau de periculosidade, ou ainda a outras razões, normalmente não estão ao alcance da investigação e do conhecimento da maior parte das crianças. Em uma simulação, reagentes químicos podem ser “misturados” e o efeito dessa “mistura” pode ser visto, instantaneamente, na tela do computador, com economia de dinheiro, risco e tempo para a escola. A possibilidade de erros de procedimentos e medidas é consideravelmente diminuída nesse caso. Hipóteses complexas podem ser testadas com bastante facilidade. Tudo isso fala a favor da simulação pelo computador como um importante recurso para o processo de ensino e aprendizagem.
Ainda a respeito das ciências naturais, é importante também observar que, em vista do fato de que a maior parte dos processos em investigação funciona sob regras precisas, a experiência de aprendizagem através de simulação por computador freqüentemente implica aprendizagem não só de conteúdos, mas também de regras e princípios de procedimento.
No caso dos estudos sociais, as coisas ficam um pouco mais complicadas, porque aí os eventos e processos não funcionam ou operam, a maior parte do tempo, em obediência a regras e princípios precisos — ou, se o fazem, freqüentemente desconhecemos quais sejam. As limitações do computador, porém, impõem às simulações, também nessa área, regras precisas e resultados predeterminados, a despeito do fato de que em geral os sistemas simulados não se comportam de tal maneira. Entretanto, com programação competente pode dar-se relativa flexibilidade à simulação, sem, contudo, eliminar essa limitação.
Esse fato nos faz insistir na necessidade de que, depois do trabalho com uma simulação, forneçam-se aos alunos esclarecimentos sobre os pressupostos utilizados na criação daquele modelo, de modo a poderem eles entender porque o modelo se comportou dessa ou daquela maneira e compreender as limitações envolvidas no processo.
Exceto pela mencionada limitação, não há restrições ao uso de simulações pelo computador, no que diz respeito a áreas curriculares. Na verdade, a maior parte das simulações de fato interessantes são tipicamente interdisciplinares. Imaginemos, à guisa de exemplo, uma simulação da vida de um aluno após concluída sua formação escolar. Essa simulação forneceria ao aluno respostas, ou feedback, às decisões que ele tomasse, como casar-se, arrumar um emprego de programador, ter dois filhos, etc. As respostas seriam formuladas com base em dados estatísticos relativos a pessoas com características semelhantes. Tal simulação, se bem construída, ensinaria coisas importantes sobre os mais variados aspectos práticos, sobre a economia, as profissões, o casamento, bem como sobre psicologia social, individual, infantil, etc., pois tentaria imitar a vida real, que é caracteristicamente interdisciplinar.
No que tange aos níveis de escolaridade, as simulações sofisticadas, por exigirem, talvez até mais que as demonstrações, um certo nível de abstração do usuário, seriam especialmente recomendáveis para o Ensino Médio (ou mesmo para o Ensino Superior). Simulações menos sofisticadas, porém, que se assemelhem mais a jogos pedagógicos, podem ser usadas com proveito nos níveis inferiores.
JOGOS
A propósito dos jogos pedagógicos, vamos nos deter em alguns de seus aspectos.
Os jogos pedagógicos distinguem-se de outros tipos de jogos basicamente pelo seu objetivo: têm como objetivo explícito promover a aprendizagem de conteúdos pedagogicamente significativos — e não apenas divertir ou entreter. É difícil encontrar alguma outra característica distintiva. Diferenciá-los de outras modalidades de programas pedagógicos é relativamente mais fácil, embora, como vimos, a linha divisória entre simulações e alguns jogos pedagógicos por vezes não seja muito nítida. Os jogos pedagógicos, como todos os jogos, pretendem ser divertidos, embora estejam a serviço da aprendizagem. Espera-se, assim, que o aluno aprenda com maior facilidade — até sem sentir — os conceitos, os conhecimentos, as habilidades ou as competências incorporados no jogo.
Há jogos pedagógicos em que o componente lúdico é mero invólucro, adicionado como elemento motivacional, que pouco tem que ver, intrinsecamente, com o que se quer transmitir. Há outros jogos, porém, que por si mesmos têm o caráter de experiências de aprendizagem ricas e complexas. O jogo, nesses casos, não é algo extrínseco, adicionado a um experiência de aprendizagem para torná-la mais agradável: é, ele próprio, parte integrante daquela experiência.
Há um famoso jogo pedagógico que tem por finalidade levar o jogador a descobrir quem cometeu determinado crime. (Muitos educadores têm criticado, com alguma justiça, o fato de que a maior parte dos jogos, incluindo os pedagógicos, gira ao redor de temas violentos, como assassinatos, guerras, desastres nucleares, ataques de extraterrestres, etc. Certamente outros temas poderiam ser mais explorados). Para isso, o aluno tem que saber aplicar, ou aprender a aplicar, várias regras de lógica e evidência. Oferecem-se ao aluno enunciados contendo pequenas informações, que, à primeira vista, parecem nada ter que ver com o resultado final. Mas o uso do bom estilo sherlockiano permite juntá-los a outros, estabelecer a partir deles deduções que vão gerar novos enunciados, e assim por diante. Ao final, descobre-se, com absoluta certeza, quem é o assassino e percebe-se que cada enunciado fornecido foi essencial para se chegar àquela conclusão.
Um jogo desses é tremendamente instrutivo, pois demonstra ao aluno a necessidade de encarar pensamento, linguagem e lógica com extrema seriedade. Ele aprende como processar informações, como fazer inferências lógicas, como testar conjeturas, etc., tudo na operação de solucionar um problema interessante.
Há outros jogos cujo objetivo educacional consiste mais no ensino de habilidades básicas. Um jogo interessante para ensinar os fatores de um determinado número (mas que ensina bem mais do que isso) funciona mais ou menos deste modo: o computador exibe na tela números de 1 a 25 — ou de 1 a 50, ou de 1 a 100, conforme a escolha do jogador. Este seleciona um número qualquer e recebe os pontos correspondentes ao seu valor. As regras são as seguintes:
Todos os fatores, exibidos na tela, de cada número escolhido pelo jogador têm seu valor atribuído ao oponente — no caso, o computador. Para cada número selecionado pelo jogador, o computador tem que ganhar pelo menos um ponto; não é permitido, pois, selecionar um número que não tenha mais nenhum fator presente na tela. Tendo o jogador escolhido um número e o computador ganho os pontos correspondentes à soma dos valores de cada um de seus fatores que ainda estava na tela, tanto o número escolhido como seus fatores são eliminados da tela. Quando um jogador não tiver não tiver mais condições de jogar, por não haver mais nenhum número a escolher que dê ao computador pelo menos um ponto, o computador fica com os pontos correspondentes à soma dos valores de todos os números restantes na tela, isto é, aqueles que o jogador não conseguiu escolher.
Como se pode facilmente ver, para começar bem o jogador deve escolher primeiro o maior número primo presente na tela. Caso a seqüência acabe em 25, a escolha deve recais sobre 23, pois dessa forma o jogador ganha 23 pontos e o computador apenas 1 (único fator de 23, que, sendo primo, só é divisível por si mesmo e pela unidade). Feito isto, 23 e 1 são eliminados da tela, e o resultado é 23 a 1 a favor do jogador. Suponhamos, porém, que, numa infeliz segunda jogada, o jogador escolha 24, número que certamente dará alguns fatores ao computador. O total de pontos do jogador, portanto, salta para 47. Mas, em compensação, o computador ganha os fatores 12, 8, 6, 4, 3, 2 — 35 pontos! E, pior ainda, todos esses números são eliminados da tela, de modo que, por exemplo, o número 16 fica condenado a pertencer ao computador ao final, pois seus únicos fatores, 2, 4, 8, já foram eliminados. E por aí se vai.
Pode-se perceber que o jogo leva não só ao aprendizado dos fatores dos vários números, mas, também, de maneira relativamente concreta, ao aprendizado do conceito de número primo, ao conhecimento dos números primos da seqüência em jogo, eventualmente à descoberta das melhores maneiras de decidir com facilidade e rapidez se um determinado número é divisível por outro, etc. Mas o jogo também vai ajudar o aluno a desenvolver, à medida que se familiariza com o programa, estratégias de ação que lhe permitam ganhar com mais freqüência e/ou facilidade, e habilidades para solucionar problemas.
Semelhantemente ao caso das simulações, grande parte do valor e do atrativo dos jogos pedagógicos através do computador deriva do fato de que estes podem ser incomparavelmente mais complexos e desafiadores do que seus pares não-computadorizados. Um só jogo pode servir como contexto para a aprendizagem de múltiplos conceitos e variadas habilidades, de natureza bastante sofisticada, tudo isso de uma maneira tal que o aluno dificilmente fica cansado no processo.
Infelizmente, um bom jogo pedagógico não é fácil de programar. Exige tempo, conhecimento de programação, de psicologia do desenvolvimento e da aprendizagem, e, naturalmente, uma idéia criativa e pedagogicamente valiosa. O preço final fatalmente não é baixo. O desenvolvimento desse produto exige o patrocínio de órgãos comprometidos com a causa educacional, porque as alternativas, em termos de mercado, parecem bem mais atraentes, financeiramente falando. De um lado, programas educacionais no estilo da instrução programada, por mais criticáveis que possam ser do ponto de vista pedagógico, têm tido sucesso razoável no mercado — e, as vezes, sucesso até bem mais do que razoável! Apesar disso, são bem mais fáceis de elaborar e, portanto, possuem um custo de desenvolvimento bem menor. De outro lado, jogos sem pretensão pedagógica são verdadeiros best-sellers e não exigem tanto, em termos técnicos e pedagógicos, quanto um bom programa educacional. Isto faz com que os bons jogos, verdadeiramente pedagógicos, acabem espremidos entre esses dois produtos, não oferecendo, devido ao seu alto custo de desenvolvimento e à concorrência de outros tipos de software, grandes atrativos às empresas de desenvolvimento de software. A única solução, por enquanto, tem sido o apoio financeiro de fundações envolvidas com a educação.
Dada a sua complexidade, o desenvolvimento desses jogos está acima da capacidade de um professor isolado. Uma maneira de solucionar o problema seria estimular equipes interdisciplinares de pesquisadores e professores universitários a desenvolver esses programas justamente com os professores do Ensino Fundamental e Médio.
Os jogos pedagógicos prestam-se a utilização em qualquer área do currículo e em qualquer nível do processo de escolarização. Mas é necessário que, em seu planejamento, o professor selecione muito bem aqueles de que vai lançar mão, refletindo sempre sobre a maneira como a aprendizagem estimulada pelo jogo se insere em seu plano curricular, dentro dos objetivos educacionais que pretende desenvolver naquele segmento do currículo.
Isso não significa excluir os jogos que ensinem habilidades e conceitos que não se encaixam bem dentro do contexto curricular. Certamente deve haver lugar para eles. Mas deve haver também o cuidado para que o tempo gasto com os jogos seja visto e percebido pelos alunos como parte integrante de seu processo educativo, e não como um mero momento de recreação.
B. O Computador como Aprendente
Aqui nesta seção vamos discutir exclusivamente a linguagem LOGO, não porque não existam outros softwares que possam ilustrar esse papel do “computador como aprendente”, mas porque LOGO é o melhor e o mais bem conhecido exemplo dessa abordagem.
a. LOGO: Uma Breve História
LOGO [3] é o nome de uma linguagem de programação desenvolvida nos anos sessenta no Massachusetts Institute of Technology (MIT), em Cambridge, MA, Estados Unidos, sob a supervisão do professor Seymour Papert, educador matemático que trabalhava no MIT na época em pesquisas sobre Inteligência Artificial. Hoje Papert continua no MIT, mas seu trabalho se voltou para a área da educação mediada pelo computador.
LOGO é uma linguagem de computação que se pretende única por incorporar os princípios básicos de uma filosofia da educação progressista — na realidade, construtivista — que emergiu dos contatos de Papert com a obra do psicólogo e epistemólogo suíço Jean Piaget, em Genebra, Suíça.
Escudando-se nessa filosofia da educação, Papert, em vez de criar uma linguagem de programação voltada para múltiplas áreas de aplicação (como é o caso de BASIC e outras linguagens de programação), preferiu desenvolver uma ferramenta que pudesse promover essa filosofia.
Não muito conhecida fora de círculos acadêmicos até a década de oitenta, LOGO rapidamente se tornou uma das linguagens de programação mais usadas em contextos educacionais. Hoje em dia, porém, parece existir uma certa reação a LOGO em determinados contextos, em parte porque a linguagem não acompanhou, tão rapidamente como talvez devesse, desenvolvimentos técnicos na área de computação, como interfaces gráficas, multimídia, programação orientada para eventos e para objetos, etc.
Custou um pouco para aparecer a primeira implementação de LOGO para computadores. O primeiro computador a receber uma implementação de LOGO foi o Apple II. Quase que simultaneamente, no decorrer de 1981, foram desenvolvidas três implementações para ele: Apple Logo, pela Logo Computer Systems, Inc., de Montreal, Quebec, Canadá, Terrapin Logo, pela Terrapin, Inc., de Cambridge, MA, e Krell Logo, pela Krell Software Company, de Stony Brook, NY. As duas últimas versões são virtualmente idênticas, porque foram feitas em cima do LOGO desenvolvido no MIT.
Quase ao mesmo tempo, surgiu uma versão de LOGO, também baseada no LOGO do MIT, para o computador TI 99/4 — TI 99/4A da Texas Instruments, que, infelizmente, logo deixou de ser fabricado, caindo vítima da guerra de preços dos fabricantes de computadores pessoais.
A seguir apareceu, em 1982, uma versão para o TRS Color Computer, da Rádio Shack, que não foi desenvolvida na linha do LOGO do MIT, e, já em 1983, uma versão para o Commodore 64, da Commodore Business Systems, um dos computadores mais vendidos de 1983 até por volta de 1987. Essa versão para o Commodore 64 também foi desenvolvida pela Terrapin, Inc.
Quatro versões para o PC da IBM também surgiram no final da década de 80, produzidas, respectivamente, pela Logo Computer Systems, Inc. (LCSI), pela Digital Research, de Pacific Grove, CA, pela Harvard Associates, de Sommerville, MA, e pela Waterloo Microsystems, Inc., de Waterloo, Ontario, Canadá. As únicas versões que realmente evoluíram e sobreviveram foram a da Logo Computer Systems, Inc. (LCSI) e a da Harvard Associates (PC Logo).
Um dos desenvolvimentos mais interessantes foi o LOGO para o Atari (o computador, não o vídeo-jogo), desenvolvido pela Logo Computer Systems, Inc. na segunda metade da década de 80, versão essa que fazia lembrar o LOGO para o TI 99/4 — TI 99/4A, da Texas Instruments, posto que fazia uso de azulejos (“tiles”), sprites, etc.
Existem versões de LOGO em basicamente todas as principais línguas do mundo. Em Português, a primeira versão a surgir foi para os computadores compatíveis com o Apple II, versão essa traduzida e adaptada pela Microarte, de São Paulo, SP — o chamado MLOGO. A ITAUTEC também desenvolveu um LOGO em Português para o seu ITAUTEC Jr., que foi traduzida para o Português pelo NIED — Núcleo de Informática Aplicada à Educação da UNICAMP, então sob coordenação do Prof. Eduardo Chaves — uma rara versão de LOGO rodando em cima do sistema operacional CP/M. Depois do LOGO da ITAUTEC surgiu uma versão de LOGO em Português para computadores da linha MSX, o chamado Hot Logo, e a People Computação de Campinas, SP, lançou a primeira versão de LOGO em Português para computadores compatíveis com o IBM PC, o People LOGO, em 1992, versão que foi desenvolvida por Djalma Salles de Souza, sob a coordenação técnico-pedagógica do Prof. Eduardo Chaves. Hoje o People LOGO está extremamente desatualizado, não tendo ainda uma versão para Windows. O NIED da UNICAMP, agora sob a coordenação do Prof. José Armando Valente, vem há tempos desenvolvendo uma versão de LOGO chamada SLOGO, que distribui gratuitamente para escolas. Hoje SLOGO está adaptado para o ambiente Windows, mas não se pode dizer que esteja totalmente acabado como os produtos comerciais disponíveis no mercado. A versão mais completa em Português hoje em dia (final de 1998) é Mega Logo, desenvolvida na Eslovênia e traduzida para o Português pela empresa Cnotinfor, de Portugal, que a adaptou também para o Português brasileiro.
b. A Filosofia da Educação por Trás de LOGO
Deixando a linguagem de lado, por um momento, falemos brevemente da filosofia da educação que a fundamenta. Essa filosofia da educação parte do seguinte pressuposto: muitas das coisas que uma criança aprende são, sem dúvida, decorrentes de um processo de ensino deliberado e formal. Mas muitas outras coisas a criança aprende através da exploração, da busca, da investigação. Essa aprendizagem não é decorrente do ensino, pelo menos não do ensino no sentido formal e deliberado, e pode ser caracterizada como uma verdadeira auto-aprendizagem. Como vimos, várias filosofias da educação têm enfatizado a importância, para a formação intelectual da criança, desse tipo de aprendizagem, e vários estudos têm mostrado que aquilo que a criança aprende porque fez, porque investigou, porque descobriu por si mesma, não só tem um significado todo especial para o desenvolvimento de suas estruturas cognitivas, por se constituir numa aprendizagem altamente significativa para a criança, como é retido por muito mais tempo. Papert, o criador de LOGO, originalmente chamava esse tipo de aprendizagem de “aprendizado Piagetiano”, porque foi em Piaget que ele descobriu suas raízes. Como vimos, porém, essa filosofia da educação é bem mais antiga, remontando, em aspectos essenciais, a Sócrates.
É esse tipo de aprendizagem que o criador e os proponentes de LOGO pretendem que seja incentivado e desenvolvido com a ajuda da linguagem de programação LOGO. A linguagem LOGO não tem, portanto, o objetivo de estimular a aprendizagem tipicamente passiva de conteúdos curriculares, caracterizada pela mera absorção de conhecimentos e informações repassados através do ensino ou da instrução. A aprendizagem que se considera importante estimular é a auto-aprendizagem, a aprendizagem que acontece no processo de exploração e investigação e que, portanto, traz consigo sempre o prazer da descoberta ¾ pois o aprender deve ser, como regra, algo agradável e divertido, que traz prazer, e não algo maçante e indigesto, que tem lugar por imposição ou mera obrigação.
É importante ter isto em mente ao discutir a linguagem LOGO, pois essa linguagem não foi desenvolvida para ser apenas mais uma linguagem de programação, e sim como uma ferramenta importante para a promoção de uma aprendizagem ativa, dinâmica, relevante e significativa. A linguagem LOGO surgiu, portanto, como instrumento de uma filosofia da educação. Tão importante quanto discutir suas características técnicas é entender a filosofia da educação que a produziu e lhe dá fundamentação e sustentação.
c. Características Técnicas de LOGO
OS GRÁFICOS DA TARTARUGA
Sendo uma linguagem voltada para o trabalho educacional, que em grande parte é voltado para crianças, LOGO não poderia deixar de fazer uso de gráficos. Seus criadores a dotaram, portanto de excelentes recursos gráficos, em alta resolução, manipuláveis tanto em modo de execução imediata como por programas, através de comandos bastante simples, mas poderosos. Esses recursos gráficos, centrados na famosa “Tartaruga”, que acabou se tornando o símbolo de LOGO, e que nada mais é do que um cursor gráfico, permitem que a criança desenhe na tela com relativa facilidade, mas com uma grande vantagem em relação aos seus desenhos com lápis e papel ou aos seus desenhos com softwares de desenho que não têm finalidades pedagógicas: ao desenhar na tela com LOGO a criança é forçada a pensar sobre o que está fazendo, e, nesse processo, aprende coisas importantes, não só sobre o projeto que está desenvolvendo, mas também sobre como ela própria pensa e sobre como o computador funciona.
Os recursos gráficos de LOGO se mostraram tão úteis e eficientes no trabalho educacional que várias outras linguagens de programação e programas pedagógicos acabaram anexando o sub-conjunto de comandos gráficos de LOGO aos seus próprios comandos. Isto se deu com algumas versões de BASIC, de PILOT (outra linguagem voltada para a educação, mas com outra filosofia), FORTH, COMAL, etc. Além disso, sugiram vários pacotes gráficos, para os mais variados tipos de computadores, que se inspiraram nos “Gráficos da Tartaruga” de LOGO. Num determinado momento até pacotes gráficos à base de LOGO, para o uso profissional, foram anunciados. Por isso, o que originalmente foi uma grande novidade em LOGO hoje já não chama tanto a atenção. Na verdade, há muitos que acusam LOGO de não ter evoluído tão rapidamente quanto sua concorrência nessa área.
MANIPULAÇÃO DE ENTIDADES LINGÜÍSTICAS
O que muitos dos leitores talvez desconheçam é que LOGO, embora dedicado especificamente à educação, não é uma linguagem voltada exclusivamente para crianças: possui poderosíssimos recursos para manipulação de palavras e listas, sendo muito usado em trabalhos sofisticados de inteligência artificial, especialmente no processamento de linguagem natural e em sistemas de dedução. Isto significa que a criança pode começar com a parte gráfica, e ir gradativamente progredindo até tornar-se, assim o desejando, competente em basicamente todos os aspectos que uma linguagem de programação bastante completa pode oferecer. O potencial de LOGO não se esgota, portanto, de modo algum, nos desenhos que uma criança até bem nova consegue fazer na tela, com poucos e simples comandos, e que exigiriam, em uma outra linguagem, linhas e linhas de programação (mas que podem ser feitos de forma relativamente fácil, se bem que quase mecânica, com softwares não pedagógicos, como Paint Brush).
Não é possível discutir, aqui, os aspectos mais sofisticados de linguagem, principalmente os relativos a processamento de listas, os quais, em grande parte, foram tomados emprestados de LISP. Discutir-se-ão, portanto, apenas algumas características genéricas da linguagem, e, em seguida, alguns poucos aspectos relativos ao uso dos recursos gráficos na educação. Ao final, far-se-á menção à capacidade de LOGO de lidar com sistemas dedutivos, mas sem discutir as características técnicas que viabilizam essa capacidade.
OUTRAS CARACTERÍSTICAS
LOGO é, em primeiro lugar, uma linguagem orientada para programação basicamente estruturada, voltada para o uso de procedimentos modulares. Não é uma linguagem de programação orientada para eventos, como Visual Basic, ou para objetos, como Delphi.
Em segundo lugar, LOGO é uma linguagem “extensível”, isto é, cujo vocabulário pode ser estendido pelo usuário. Os comandos de LOGO se dividem, basicamente, em comandos primitivos, que são os que já vem implementados na linguagem, e em nomes de procedimentos que são desenvolvidos pelo usuário, e, que uma vez na área de trabalho (na memória) são executados como se fossem comandos primitivos. A maior parte dos comandos primitivos, e todos os procedimentos, podem ser executados em modo direto ou ser invocados a partir de um (outro) procedimento. Desta forma, é possível, por exemplo, fazer um desenho na tela, digamos um quadrado, em modo direto de execução, usando os comandos primitivos, verificar qual a seqüência de comandos que produziu aquela figura, e em seguida definir essa seqüência, dando-lhe um nome — QUADRADO, ou qualquer outro. Esse nome passa então a ser um novo comando de LOGO, e todas as vezes que o usuário digitar QUADRADO, LOGO desenhará a figura correspondente na tela.
Desta forma, se a criança quer desenhar uma casa, é muito mais fácil e eficiente aprender a desenhar um quadrado, um triângulo, um retângulo, um paralelogramo (para representar o telhado), uma chaminé ou uma antena de televisão, uma porta, uma janela, etc., e depois juntar tudo isto em um super-procedimento chamado CASA, do que desenhar a casa linearmente. Nesse processo a criança aprende noções importantes de programação modular e estruturada e técnicas importantes de solução de problemas, como o princípio de que freqüentemente a melhor estratégia para solucionar um grande problema é quebrá-lo em problemas menores, que são mais fáceis de solucionar.
Uma terceira característica de LOGO é ser uma linguagem extremamente interativa e amiga. Como já disse, os desenhos podem ser feitos, inicialmente, em modo direto de execução. Cada erro de sintaxe é respondido com uma mensagem de erro clara e precisa, como, por exemplo, “o comando REPITA precisa de dois parâmetros” — e não com um vago “Erro de Sintaxe”. Quando da programação de um procedimento, o editor de LOGO permite que se defina, altere ou corrija um procedimento de modo extremamente simples.
Mas LOGO tem várias outras características bastante interessantes. Ao se carregar de um disco um arquivo de procedimento, os procedimentos já existentes na memória não são necessariamente apagados e substituídos: havendo memória disponível, todos eles podem ficar à disposição do usuário. Por outro lado, LOGO permite a definição de variáveis globais e locais. O valor de uma variável global opera em todos os procedimentos em que aquela variável é utilizada. O valor de uma variável local fica restrito ao procedimento em que ela foi definida. Assim, se a variável LADO for definida como uma variável local, o fato de que seu valor no procedimento QUADRADO é alterado não implica alteração no valor da variável LADO do procedimento TRIÂNGULO.
Como dissemos, os objetos com os quais LOGO opera incluem não só números e cadeias de caracteres mais também listas. Este fato permite que os dados sejam estruturados de maneira interessante e eficiente, pois pode haver inclusive listas de procedimentos, listas de listas, etc. Essa característica de linguagem às vezes não é de assimilação muito fácil para quem está acostumado com outros tipos de linguagem, mas permite a manipulação de símbolos lingüísticos de maneira bem mais fácil do que em outras linguagens de programação
LOGO também permite recursão. Desta forma, um procedimento pode invocar a si próprio, até que aconteça determinada situação ou o programa seja interrompido. Adiante será dado um exemplo dessa característica.
COMANDOS GRÁFICOS BÁSICOS
Mas falemos um pouco agora dos comandos gráficos básicos. Eles permitem que o cursor gráfico (a Tartaruga) se movimente na tela de alta resolução, deixando um rastro, que em alguns sistemas pode ser de uma cor especificada, ou apagando um rastro anteriormente feito, ou então sem deixar rastro.
Qual, porém, a utilidade pedagógica de fazer a Tartaruga andar na tela? Fazendo-a andar, a criança conseguirá desenhar na tela, construindo desde desenhos bastante simples até sofisticadas obras de arte e complexos gráficos para uso profissional. Ao desenhar, ela descobrirá alguns princípios muito importantes sobre ângulos, distâncias, perspectiva, etc., acabando por dominar a chamada “Geometria da Tartaruga”. Mas mais do que isto: aprenderá a desenvolver habilidades e atitudes indispensáveis para a solução de qualquer tipo de problema. Isso será ilustrado em um momento.
Antes, vejamos brevemente quais os principais comandos gráficos que a Tartaruga reconhece para se movimentar pela tela. Será usada uma versão brasileira dos comandos, com o original entre parênteses, que não corresponde, necessariamente, à de nenhum LOGO em existência.
PARACASA (HOME) — faz com que a Tartaruga se dirija para o centro da tela e fique com sua “cabeça” apontando diretamente para cima (posição “Norte”). Em algumas versões de LOGO esse comando também limpa a tela, sendo usado para ingresso no modo gráfico de alta resolução.
PARAFRENTE (FORWARD) n — a Tartaruga vai para frente n pontos de tela. (Para frente, para a Tartaruga, é qualquer direção para a qual esteja apontada a sua “cabeça”. Depois de um comando PARACASA, frente é, como vimos, diretamente para cima na tela).
PARATRÁS (BACK) n — a Tartaruga vai para trás, dando marcha a ré, n pontos de tela. (Para trás, para a Tartaruga, é uma direção diametricamente oposta — 180 graus — àquela em que ela iria, se o comando fosse PARAFRENTE. PARAFRENTE 100, seguido de PARATRÁS 100, deixam a Tartaruga na mesma posição, apontando na mesma direção. Depois de um comando PARACASA, para trás é diretamente para baixo na tela — posição “Sul”).
GIRODIREITA (RIGHT) n — a direção em que a Tartaruga está apontando é alterada em n graus, para a direita — mas a Tartaruga não anda (não muda de posição: só de direção).
GIROESQUERDA (LEFT) n — idem, para a esquerda. GIRODIREITA 180 e GIROESQUERDA 180 levam a Tartaruga, naturalmente, a apontar numa mesma direção, não importando qual comando tenha sido usado. GIRODIREITA 360 e GIROESQUERDA 360 deixam a Tartaruga apontando na mesma direção em que apontava antes do comando.
A Tartaruga tem sempre uma posição e uma direção. O estado da Tartaruga em um dado momento inclui referência à sua posição e à sua direção.
Há outros comandos, que não serão introduzidos aqui por falta de espaço. Por ora, só mais um:
REPITA (REPEAT) n [ ]. Este comando faz com que a Tartaruga repita n vezes o comado ou os comandos colocados entre colchetes. REPITA 100 [PARAFRENTE 1] é equivalente a PARAFRENTE 100.
d. Aplicações Pedagógicas de LOGO
GRÁFICOS E CONCEITOS GEOMÉTRICOS
Vejamos agora alguns exemplos de utilização dos comandos gráficos e de sua aplicação pedagógica.
O conjunto de comandos a seguir desenha um quadrado, com lado de 100 passos da Tartaruga.
PARAFRENTE 100
GIRODIREITA 90
PARAFRENTE 100
GIRODIREITA 90
PARAFRENTE 100
GIRODIREITA 90
PARAFRENTE 100
GIRODIREITA 90
O seguinte conjunto de comandos “ensina” LOGO a desenhar um quadrado, porque, neste caso, está se definindo um procedimento que acrescenta ao vocabulário de LOGO o termo “Quadrado”
APRENDA “Quadrado
PARAFRENTE 100
GIRODIREITA 90
PARAFRENTE 100
GIRODIREITA 90
PARAFRENTE 100
GIRODIREITA 90
PARAFRENTE 100
GIRODIREITA 90
FIM
Obviamente, um procedimento equivalente, e bem mais simples e elegante seria:
APRENDA “Quadrado
REPITA 4 [PARAFRENTE 100 GIRODIREITA 90]
FIM
Ao executar este procedimento, a criança terá na tela um quadrado, com um lado de 100 passos da Tartaruga.
Se a criança ainda não possui a noção de ângulo, é necessário permitir que ela caminhe no seu próprio ritmo. Eventualmente, ao fazer desenhos como este e os que vêm a seguir, ela começará a entender o que é um ângulo e como o seu valor produz resultados bastante diferentes, embora o “algoritmo” seja o mesmo.
LOGO naturalmente aceita o uso de variáveis, de modo que poderíamos generalizar o procedimento anterior e fazê-lo desenhar um quadrado de qualquer tamanho desejado.
APRENDA “Quadrado 😡
REPITA 4 [PARAFRENTE 😡 GIRODIREITA 90]
FIM
Neste caso, toda vez que se der o comando QUADRADO é preciso fornecer um número, como parâmetro, que passará a ser o conteúdo da variável :x. Assim:
QUADRADO 100
produzirá a figura a seguir:
No caso, 100 é o número de passos de Tartaruga a que corresponderá o lado do quadrado.
Vejamos agora o mesmo comando com um parâmetro diferente:
QUADRADO 200
É interessante notar que se este segundo quadrado for feito sem apagar o primeiro, a criança facilmente poderá verificar que a área do segundo quadrado não é o dobro da do primeiro, mas, sim, quatro vezes maior!
O procedimento que desenha um triângulo é muito parecido. Aqui o professor, com o intuito de facilitar o entendimento da criança, pode, antes de ela criar o procedimento, indagar se ela tem idéia de qual será o valor do giro para a direita que é necessário para que seja desenhado um triângulo. A idéia inicial que muitas pessoas têm (até adultos) é de que o ângulo seria 60º, não 120º. Essa expectativa da criança, se é que ela a tem, pode ser trabalhada criativamente pelo professor. O procedimento é o seguinte:
APRENDA “Triângulo 😡
REPITA 3 [PARAFRENTE 😡 GIRODIREITA 120]
FIM
Caso seja dado o comando
TRIANGULO 100
aparecerá algo assim na tela:
É possível ainda generalizar esses dois procedimentos (QUADRADO e TRIÂNGULO) ainda mais e, em vez de fazer um procedimento que desenha apenas um quadrado ou um triângulo (ainda que de tamanhos diferentes), fazer um procedimento que desenha polígonos regulares com qualquer número de lados e de lados (naturalmente iguais) de qualquer tamanho. Aqui já começa a haver condições para que a criança entenda (ou entenda melhor) a noção de ângulo.
Para isso, devemos nos dar conta de que, no polígono quadrado, o ângulo (90º) é obtido dividindo o ângulo de uma circunferência (360º) pelo número de lados do polígono (no caso, 4); no polígono triângulo, o ângulo (120º) é obtido dividindo o ângulo de uma circunferência (360º) pelo número de lados do polígono (no caso, 3); e assim por diante.
Desta forma, o novo procedimento — vamos chamá-lo de POLÍGONO agora — fica assim:
APRENDA “Polígono 😡 :y
REPITA 😡 [PARAFRENTE :y GIRODIREITA 360/:x]
FIM
Aqui, o comando
POLÍGONO 4 100
desenhará um quadrado; o comando
POLÍGONO 5 100
desenhará um pentágono, e assim por diante. A primeira variável indica o número de lados e a segunda o tamanho do lado. Eis a figura que aparece na tela depois de executados os seguintes comandos, deixando sempre na tela a figura anterior:
POLÍGONO 4 100
POLÍGONO 5 100
POLÍGONO 6 100
POLÍGONO 7 100
POLÍGONO 8 100
POLÍGONO 9 100
POLÍGONO 10 100
Note que quanto mais lados tem um polígono, menor deve ser o tamanho do lado, porque, doutra forma, ele não caberá inteiro numa tela — e “vazará” para o outro lado. Aqui, porque colocamos apenas sete polígonos (de quatro a dez lados), o maior polígono ainda coube na tela, mesmo mantendo o tamanho do lado. (Em LOGO, quando um traço chega ao fim da tela, ele normalmente continua no lado oposto da tela, como se a tela fosse esférica).
Aqui o professor poderá sugerir que a criança experimente diferentes valores, para ver como ficam os polígonos regulares formados. É preciso não se esquecer de que, quanto maior o número de lados (variável :x), tanto menor deve ser o tamanho do lado (variável :y), para que o polígono caiba na tela.
Um sentimento de surpresa geralmente advém à criança quando ela tenta executar o procedimento com os seguintes parâmetros:
POLÍGONO 360 1
Neste caso, como prontamente se verá, LOGO desenha uma circunferência na tela, fato que mostra que, na tela de um computador, uma circunferência não se distingue de um polígono de 360 lados em que o tamanho de cada um dos lados é de apenas um ponto!
Quando se trabalha com LOGO espera-se que a criança vá aprendendo a manipular os recursos da linguagem e, eventualmente, descubra por si só, sem que isso seja dito pelo professor, como é possível começar com um procedimento e ir modificando esse procedimento para torná-lo mais genérico e potente.
Podemos agora definir um procedimento em LOGO, que faça os mais interessantes desenhos na tela, sem que o procedimento básico seja alterado, variando-se apenas os parâmetros fornecidos.
APRENDA “Poliflor :v 😡 :y
REPITA :v [POLÍGONO 😡 :y gd 360/:v]
FIM
Imaginemos que, neste caso, o comando dado seja
POLIFLOR 12 4 75
O resultado será este:
Neste caso, aquilo que segue ao comando REPITA (e que está entre colchetes) será executado 12 vezes, porque o valor atribuído à variável :v (a primeira variável) é 12. Na primeira execução do comando REPITA, LOGO desenhará um polígono de 4 lados (valor atribuído à variável :x), e, portanto um quadrado, com lado de 75 passos (valor atribuído à variável :y). O que acontece depois? No caso, depois de desenhar o primeiro quadrado, a Tartaruga fica exatamente na posição em que estava antes de desenhá-lo. O comando final, dentro dos colchetes, faz com que sua direção se desloque 30º para a direita, o grau sendo alcançado dividindo-se 360º pelo valor da variável :v, que é 12.
Experimentando outros valores, é possível constatar como um mesmo procedimento pode fazer desenhos os mais variados. Vejamos, por exemplo, os seguintes parâmetros:
POLIFLOR 10 6 75
POLIFLOR 18 18 30
POLIFLOR 32 12 50
Vejamos agora um outro procedimento:
APRENDA “Polespiral :v 😡 :y
REPITA :v [PARAFRENTE 😡 GIRODIREITA :y ATRIBUA “x 😡 +2]
FIM
Digamos que esse procedimento seja usado com os seguintes parâmetros:
POLESPIRAL 100 2 90
Neste caso, não se desenha um polígono. Com esses parâmetros, o que está dentro dos colchetes será repetido 100 vezes. Na primeira vez, a Tartaruga anda dois passos, gira 90º para a direita e, em seguida, o valor de :x, que era 2, é incrementado em 2, passando a ser 4. Repete-se todo o conteúdo do colchete, agora pela segunda vez, a Tartaruga agora andando quatro passos e girando 90º para a direita. Ao final das 100 repetições (valor de :v), haverá na tela uma “espiral quadrada”, por assim dizer.
Experimentando, agora, outros valores, podemos constatar como um mesmo procedimento pode fazer desenhos os mais variados. Tentemos, por exemplo, os seguintes valores:
POLESPIRAL 100 2 89
POLESPIRAL 75 2 45
POLESPIRAL 125 125 125
POLESPIRAL 90 90 90
POLESPIRAL 100 90 180
Se quisermos, podemos fazer uma variação desse procedimento que fica repetindo indefinidamente e em que o valor do incremento é fornecido como parâmetro. Assim:
APRENDA “Polespiral2 😡 :y :z
PARAFRENTE 😡 GIRODIREITA :y
POLESPIRAL2 :x+:z :y :z
FIM
Neste caso, o procedimento usa recursão, isto é, invoca a si próprio, e a variável :z contém o valor do incremento do lado. Esse procedimento nunca termina sua execução de moto próprio: só o faz quando você aperta uma tecla de interrupção, como geralmente ESC ou CTRL+C.
POLESPIRAL2 1 90 3 (interrompido depois de 150 iterações)
Vejamos, por fim, muito brevemente, o que está envolvido em um desenho típico que uma criança fez na tela, pois o valor pedagógico de LOGO começa a aparecer mesmo nesse simples procedimento. Suponhamos que a criança se proponha desenhar um casa. Se ela já conhece ângulos, e sabe o valor de um ângulo reto, possivelmente não terá maiores dificuldades para desenhar um quadrado. Ela poderá fazê-lo assim:
POLÍGONO 4 100
Neste caso, o quadrado terá um lado de cem passos da Tartaruga. Precisamos, agora, colocar a Tartaruga, mantendo a direção em que ela se encontra, no topo superior esquerdo do quadrado, o que pode ser feito com os comandos:
SEMTRAÇO PARAFRENTE 100 COMTRAÇO
(O comando SEMTRAÇO faz com que a Tartaruga caminhe sem deixar um traço; o comando COMTRAÇO faz com que volte a deixar um traço ao caminhar). Agora temos a Tartaruga, com a cabeça virada para cima (direção “Norte”, que tem o valor de 0º ou 360º), no canto superior esquerdo do quadrado desenhado.
Imaginemos que a criança queira desenhar uma cumeeira que seja um triângulo (posto que não há muitas alternativas). Aqui o professor pode discutir os diferentes tipos de triângulo: equilátero, isósceles, escaleno, reto, etc. Digamos que a criança quer fazer em cima do quadrado um triângulo equilátero, que precisará ter o lado igual ao do quadrado (100 passos).
Como fazer? A Tartaruga agora precisa virar, para direita, um certo número de graus, para deixar a Tartaruga na direção certa para desenhar o triângulo. Quantos graus? Segundo a filosofia da educação que LOGO esposa é preciso deixar a criança explorar. Explorando, ela vai chegar mais cedo ou mais tarde, ao número certo. Mas aqui entre nós: qual é o ângulo certo? Muitas crianças vão tentar 45º. Há que deixá-las tentar. O certo, porém, se se deseja desenhar um triângulo equilátero, é girar a Tartaruga 30º para a direita e dar o comando:
POLIGONO 3 100
O desenho ficará assim:
Digamos que, quando vir o desenho, a criança ache que essa cumeeira está alta demais. O que ela queria, não era um triângulo equilátero, mas, sim, um triângulo isósceles, com base 100 (para juntar no topo do quadrado). Imaginemos que ela apague o que fez (ou faça de novo) e fique, novamente, com o desenho no estágio em que ele estava antes de ela desenhar o triângulo:
E agora, qual o ângulo que a Tartaruga terá que virar para a direita para desenhar um dos lados do triângulo isósceles cuja base é o topo do quadrado? Agora 45º é o candidato mais natural, não é mesmo?
Mas e daí? Alterada a direção da Tartaruga em 45º para a direita, quantos passos ela precisa agora dar para ficar bem no meio da base, de modo que o telhado da casa tenha uma caída perfeitamente simétrica? A base do triângulo (correspondente ao topo do quadrado) tem 100 pontos. O vértice do telhado deve estar na direção do meio do lado superior do quadrado. Por isso, a criança pode ser tentada a instruir a Tartaruga a ir para frente 50 pontos. Não iria dar muito certo. A criança teria que continuar tentando, até chegar ao número adequado. Já se viram crianças instruindo a Tartaruga a andar para frente um ponto de cada vez, até chegar ao lugar desejado, contando, ao mesmo tempo, o número de pontos que ela teve que andar para chegar lá. Mas imaginemos que, de uma forma ou de outra, a criança tenha descoberto o número mágico e faça a Tartaruga andar o número certo de pontos, de modo a ficar nesta posição (70,71 é uma boa pedida: é a raiz quadrada de 5000):
A Tartaruga agora está basicamente no meio do lado superior do quadrado, cerca de 50 pontos acima deste lado. Qual o ângulo que a Tartaruga deverá virar, para a direita, para descer até o canto superior direito do quadrado, andando o mesmo tanto que andou do outro lado e fechando o triângulo? Normalmente demora um pouco para a criança perceber qual é o ângulo, mas ela eventualmente o descobre. O ângulo é reto — só pode ser, não é verdade? Se os outros dois ângulos (os de baixo) possuem 45º e a soma dos ângulos internos é 180º, o ângulo do vértice superior do triângulo só pode ser 90º. Mas a gente sabe isso — a criança, freqüentemente, não, ou, se sabe, não se dá conta de que o conhecimento que ela possui pode ser útil, de um forma prática, em muitos contextos. Uma vez descoberto o ângulo, é fácil fechar o triângulo.
O essencial de todo este processo é que a criança vai, naturalmente, aprendendo conceitos e princípios importantes, não só de geometria, mas também sobre como resolver um problema. Em um dado momento ela entende, por exemplo, o Teorema de Pitágoras, sem nunca antes ter visto a sua fórmula. Essa fórmula, quando lhe for apresentada, será algo significativo e concreto, ancorado em sua experiência, e não algo abstrato, que tem decorar.
DEDUCAÇÃO E MANIPULAÇÃO DE CONCEITOS
Aqui não vamos discutir os comandos de LOGO que nos permitirão manipular conceitos e fazer deduções, porque isso faria com que dedicássemos muito espaço a questões relativamente complexas. Vamos apenas ilustrar como se pode manipular conceitos e fazer deduções usando LOGO como ferramenta.
Imaginemos que se proponha a uma classe que desenvolva, como projeto, e usando LOGO, um jogo que faça com que o computador adivinhe o animal em que uma criança está pensando. (Normalmente os jogos que já vêm prontos fazem com que o computador “pense” em algo — digamos, um número — e a criança tente adivinhar qual é o número em que o computador “pensou”. Aqui a proposta é que se faça o inverso).
Uma maneira de executar esse projeto é criando uma base de dados de animais hierarquizada em função de suas características mais importantes ou mais conhecidas.
Digamos que, inicialmente, se crie uma categoria de animais vertebrados e outra de não vertebrados.
Na categoria dos animais vertebrados poderíamos criar duas outras categorias: a dos que têm pena e a dos que não têm pena.
Na categoria dos que têm pena poderíamos distinguir mais duas categorias: a dos que cantam bonito e a dos que não cantam bonito.
Na categoria dos que cantam bonito colocaríamos um animal que, provavelmente, seria o primeiro em que alguém pensaria nessa categoria: canário.
Na categoria dos que não cantam bonito poderíamos criar mais duas categorias: a dos que são vendidos em supermercado e a dos que não são vendidos em supermercado.
Na categoria dos que são vendidos em supermercado colocaríamos um animal que, provavelmente, seria o primeiro em que alguém pensaria nessa categoria: frango.
Na categoria dos que não são vendidos em supermercado colocaríamos um animal que, provavelmente, seria um daqueles em que alguém pensaria nessa categoria: pardal.
Na categoria dos animais que não têm pena poderíamos criar duas outras categorias: a dos animais domésticos e a dos não domésticos.
Na categoria dos animais domésticos poderíamos criar duas outras categorias: a dos animais que servem de guarda e a dos animais que não servem de guarda.
Na categoria dos que animais que servem de guarda colocaríamos um animal que, provavelmente, seria o primeiro em que alguém pensaria nessa categoria: cachorro.
Na categoria dos que animais que não servem de guarda poderíamos criar mais duas categorias: a dos animais que servem de montaria e a dos animais que não servem de montaria.
Na categoria dos animais que servem de montaria colocaríamos um animal que, provavelmente, seria o primeiro em que alguém pensaria nessa categoria: cavalo.
Na categoria dos animais que não servem de montaria colocaríamos um animal que, provavelmente, seria o primeiro em que alguém pensaria nessa categoria: gato.
(Note-se que, seguindo as categorias, o gato é um animal vertebrado, sem penas, doméstico, que não serve de guarda e nem serve de montaria).
Na categoria dos animais não domésticos poderíamos criar mais duas categorias: a dos animais de mais de um metro de altura e a dos animais de menos de um metro de altura.
Na categoria dos animais não domésticos de mais de um metro de altura colocaríamos um animal que, provavelmente, seria o primeiro em que alguém pensaria nessa categoria: elefante.
Na categoria dos animais não domésticos de menos de um metro de altura poderíamos criar mais duas categorias: a dos animais com juba e a dos animais sem juba.
Na categoria dos animais não domésticos de menos de um metro de altura e com juba colocaríamos um animal que, provavelmente, seria o primeiro em que alguém pensaria nessa categoria: leão.
Na categoria dos animais não domésticos de menos de um metro de altura e sem juba colocaríamos um animal que, provavelmente, seria o primeiro em que alguém pensaria nessa categoria: onça.
Na categoria dos animais não vertebrados colocaríamos duas outras categorias: a dos animais usados como isca e a dos não usados como isca.
Na categoria dos animais não vertebrados usados como isca colocaríamos um animal que, provavelmente, seria o primeiro em que alguém pensaria nessa categoria: minhoca.
Na categoria dos animais não vertebrados que não são usados como isca poderíamos colocar duas outras categorias: a dos comestíveis e a dos não comestíveis.
Na categoria dos animais não vertebrados que não são usados como isca e são comestíveis colocaríamos um animal que, provavelmente, seria o primeiro em que alguém pensaria nessa categoria: lesma (escargot).
Na categoria dos animais não vertebrados que não são usados como isca e não são comestíveis colocaríamos um animal em que, provavelmente, alguém pensaria nessa categoria: bicho-bola.
Eis aqui o esquema hierarquizado dessa base de dados:
Com uma base de dados assim hierarquizada, o computador vai adivinhar de pronto vários animais em que as crianças vão pensar. Digamos que o primeiro animal em que uma criança pense seja um gato.
O diálogo irá mais ou menos assim:
Computador: Pense num animal e guarde com você o nome do animal em que você pensou. Pronto?
Criança: Pronto [pensou em gato].
Computador: Responda às minhas perguntas com “Sim” ou “Não” que vou adivinhar em que animal você pensou. OK?
Criança: OK
Computador: É vertebrado?
Criança: Sim.
Computador: Tem penas?
Criança: Não.
Computador: É doméstico?
Criança: Sim.
Computador: É animal de guarda?
Criança: Não.
Computador: É animal de montaria?
Criança: Não.
Computador: É um gato?
Criança: Sim.
Mas imaginemos que a criança tenha pensado em um animal que não está originalmente na base de dados. Digamos que tenha pensado em um hamster. Neste caso, quando o computador perguntasse: “É um gato?”, a criança responderia “Não” — e como continuaria o diálogo? Mais ou menos assim:
Computador: É um gato?
Criança: Não!!!
Computador: Sinto muito! Dessa vez você me pegou. Qual é o animal em que você pensou?
Criança: Um hamster.
Computador: Puxa, nesse eu nunca iria pensar. Mas diga-me uma coisa: o que é que um hamster faz que um gato não faz?
Criança: O hamster rói.
Computador: Ah, bom. Obrigado. Quer brincar de novo? Preciso de uma nova chance.
E por aí vai. Com a resposta da criança, o computador acrescenta uma informação à sua base de dados.
Agora, na categoria dos animais domésticos que não servem de montaria, em vez de colocarmos já de início um animal, o gato, colocaríamos mais duas categorias: a dos animais roedores e a dos animais não roedores. Em seguida, na categoria dos roedores colocaríamos o hamster, e deixaríamos o gato na categoria dos não roedores.
Assim, da vez seguinte que uma criança pensasse em um hamster, o computador já seria capaz de adivinhar.
Com um programa construído em cima de uma base de dados hierarquizada dessa forma, o “conhecimento” do computador vai aumentando à medida que ele vai jogando com as crianças, porque toda vez que ele não consegue adivinhar o animal em que a criança está pensando ele aprende alguma coisa diferente (porque a criança a ensina a ele!).
Esse é um programa extremamente divertido — na realidade, é um jogo. No entanto, o grande desafio é construir o jogo com LOGO, porque no processo as crianças aprenderão muita coisa sobre sistemas dedutivos e, também, sobre animais, sobre como o computador funciona e, naturalmente, sobre as estruturas de LOGO como linguagem de programação. Certamente o raciocínio da criança será desafiado jogando um jogo como esse, mas será mais desafiado ainda construindo esse jogo.
É nisto que reside o poder de LOGO, como linguagem de programação: o fato de que ele trás, embutido em si, uma filosofia da educação bastante atraente, que permite com que, usando a ferramenta, a criança aprenda bem mais do que simplesmente usar a linguagem de programação: aprenda a pensar e a refletir sobre o que ela mesma está pensando, para que possa “ensinar” o computador a pensar como ela.
e. Uma Aplicação Pedagógica de PROLOG
A LINGUAGEM DE PROGRAMAÇÃO PROLOG
PROLOG é uma outra linguagem de programação. PROLOG quer dizer “Programação em Lógica”. Diferentemente de LOGO, PROLOG [4] não foi feito para ser usado na educação: foi feito visando ao desenvolvimento de aplicações que envolvem inteligência artificial, especialmente sistemas especialistas. No entanto, PROLOG pode ser usado com grande proveito na educação, especialmente para a montagem de sistemas dedutivos — verdadeiros sistemas especialistas.
Um sistema em PROLOG é bastante diferente de um programa elaborado em uma linguagem de programação, como LOGO, que é baseada em procedimentos. Numa linguagem baseada em procedimentos o programador, ao escrever um programa, precisa especificar, nos mínimos detalhes, como será resolvido o problema que o programa se propõe a resolver Numa linguagem como PROLOG, que é declarativa, o programador, ao elaborar um sistema, declara os fatos básicos que são relevantes ao problema, elabora as regras de inferência que, aplicadas aos fatos, permitirão que sejam derivados novos fatos, que eventualmente ajudarão a resolver problemas colocados pelo usuário. PROLOG já conhece as regras lógicas da dedução. Logo elas não precisam ser elaboradas. Esses elementos ficarão mais claros no sistema a seguir apresentado.
PROLOG tem várias implementações. Vamos aqui usar um vocabulário e uma sintaxe mais ou menos padrão, traduzindo os termos para o Português.
CRIAÇÃO DE UM SISTEMA DE PARENTESCO
No caso queremos construir um sistema que, com base em fatos e regras de inferência fornecidos pelos usuários (digamos que alunos), responda a eles quais são as suas relações de parentesco com os membros de sua família. Na verdade, o sistema vai criar uma base de dados que, com a ajuda das regras fornecidas, gerará o equivalente a uma árvores genealógica da família
Para que isso seja possível, é preciso fornecer ao programa alguns fatos básicos, que não vão ser derivados através de regras de inferência. Embora haja alguma flexibilidade aqui, podemos com razoável certeza dizer é mais fácil definir como fato básico que uma dada pessoa é do sexo masculino ou do sexo feminino do que é inferir isso a partir de uma outra característica da pessoa. Nem todas as pessoas são pais ou mães — embora todas as pessoas sejam filhos ou filhas. Por isso, é verdade que poderíamos definir como fato básico para cada pessoa se ela é filho ou filha e, daí, inferir que ela é do sexo masculino ou do sexo feminino a partir da informação que é filho ou filha. Mas o processo seria mais complicado. Assim sendo, preferimos considerar como fato básico acerca de todas as pessoas constantes da base de dados que ela é do sexo masculino ou do sexo feminino.
Além disso, vamos considerar como fato básico a informação sobre quem é pai ou mãe de quem. Neste caso a informação só existirá para quem realmente for pai ou mãe de outra pessoa. Os que não são não terão, naturalmente, essa informação sobre eles.
Por fim, vamos considerar também como fato básico a informação de que duas pessoas são casadas (supondo, naturalmente, que o sejam).
Vamos imaginar, agora, uma família de, digamos 40 membros, a saber:
Carlos, Alvina, Raul, Catarina, Oscar, Edith, Dulce, José, Angelina, Anello, Alice, Eduardo, Sueli, Benedito, Aparecida, João, Eliane, Mário, Lúcia, Flávio, Anelice, Isaías, Idília, Nelson, Andrea, Richard, Patrícia, Alexandre, Irene, Vítor, Diogo, Tiago, Lídia, Marcos, Tatiana, Rodrigo, Mônica, Camila1, Camila2, Liziane
Pelos nomes já se sabe quem é do sexo masculino e quem é do sexo feminino — mas no caso do sistema isto teria que ser declarado.
Carlos é pai de Raul, Oscar e Dulce
Alvina é mãe de Raul, Oscar e Dulce
Raul é pai de Irene e Idília
Catarina é mãe de Irene e Idília
Oscar é pai de Eduardo e Eliane
Edith é mãe de Eduardo e Eliane
José é pai de Edith e Alice
Angelina é mãe de Edith e Alice
Anello é pai de Mário e Anelice
Alice é mãe de Mário e Anelice
Eduardo é pai de Andrea e Patrícia
Sueli é mãe de Tatiana, Rodrigo e Patrícia
Benedito é pai de Sueli, Marcos, e Liziane
Aparecida é mãe de Sueli e Maros
João é pai de Vítor e Diogo
Eliane é mãe de Vítor e Diogo
Mário é pai de Tiago
Lúcia é mãe de Tiago
Flávio é pai de Lídia
Anelice é mãe de Lídia
Isaías é pai de Nelson
Idília é mãe de Nelson
Nelson é pai de Camila-2
Marcos é pai de Mônica
Mônica é mãe de Camila-1
Carlos e Alvina são casados
Raul e Catarina são casados
Oscar e Edith são casados
José e Angelina são casados
Anello e Alice são casados
Eduardo e Sueli são casados
Benedito e Aparecida são casados
João e Eliane são casados
Mário e Lúcia são casados
Flávio e Anelice são casados
Isaías e Idília são casados
Andrea e Richard são casados
Patrícia e Alexandre são casados
Só. O resto será definido por regras de inferência.
Em PROLOG fatos básicos são introduzidos com a seguinte redação:
masc(X)
fem(X)
pai(X,Y)
mae(X,Y)
casados(X,Y)
Por exemplo:
masc(Oscar)
fem(Patrícia)
pai(Eduardo,Andrea)
pai(Eduardo,Patrícia)
mãe(Mônica,Camila-1)
casados(Alice,Anello)
Todas as outras relações de parentesco são derivadas dos fatos primitivos através das regras de inferência a seguir enunciadas.
pais(X,Y) se
pai(X,Y) ou
mae(X,Y).
Leia-se: “X é pais de Y se X é pai ou mae de Y”.
Note-se que todas as regras de parentesco estão definidas no plural. “Pais” quer dizer “pai ou mãe”. Neste caso, as relações “pai” (masculino) e “mae” (feminino) são fatos básicos (isto é, são fornecidas como fatos, não definidas por regras). A relação “pais” só é definida para facilitar algumas definições, adiante, em que não faz diferença se uma pessoa é pai ou mãe da outra, desde que seja um dos dois.
filhos(X,Y) se
pais(Y,X).
Leia-se: “X é filhos de Y se Y é pais de X”.
Neste caso, “filhos” quer dizer “filho ou filha”. Como as relações “filho” (masculino) e “filha” (feminino) não são fatos básicos, e, portanto, precisam ser definidas com regras de parentesco, isto precisa ser feito com o auxílio das relações primitivas “masc” e “fem”. Assim:
filho(X,Y) se
filhos(X,Y) e
masc(X).
Leia-se: “X é filho de Y se X é filhos (filho ou filha) de Y e X é do sexo masculino”.
filha(X,Y) se
filhos(X,Y) e
fem(X).
Leia-se: “X é filha de Y se X é filhos (filho ou filha) de Y e X é do sexo feminino”.
E assim por diante:
avos(X,Y) se
pais(X,Z) e
pais(Z,Y).
Leia-se: “X é avos (avô ou avó) de Y se X é pais (pai ou mãe) de Z e Z é pais (pai ou mãe) de Y”.
netos(X,Y) se
avos(Y,X).
Leia-se: “X é netos (neto ou neta) de Y se Y é avos (avô ou avó) de X”.
bisavos(X,Y) se
avos(X,Z) e
pais(Z,Y).
Leia-se: “X é bisavos (bisavô ou bisavó) de Y se X é avos (avô ou avó) de Z e Z é pais (pai ou mãe) de Y”.
bisnetos(X,Y) se
bisavos(Y,X).
Leia-se: “X é bisnetos (bisneto ou bisneta) de Y se Y é bisavos (bisavôu ou bisavó) de X”.
trisavos(X,Y) se
bisavos(X,Z) e
pais(Z,Y).
Leia-se: “X é trisavos (trisavô ou trisavó) de Y se X é bisavos (bisavô ou bisavó) de Z e Z é pais (pai ou mãe) de Y”.
trisnetos(X,Y) se
trisavos(Y,X).
Leia-se: “X é trisnetos (trisneto ou trisneta) de Y se Y é trisavos (trisavô ou trisavó) de X”.
tetravos(X,Y) se
trisavos(X,Z) e
pais(Z,Y).
Leia-se: “X é tetravos (tetravô ou tetravó) de Y se X é trisavos (trisavô ou trisavó) de Z e Z é pais (pai ou mãe) de Y”.
tetranetos(X,Y) se
tetravos(Y,X).
Leia-se: “X é tetranetos (tetraneto ou tetraneta) de Y se Y é tetravos (tetravô ou tetravó) de X”.
irmaos(X,Y) se
pai(Z,X) e
pai(Z,Y) e
mae(W,X) e
mae(W,Y) e
X<>Y.
Leia-se: “X é irmãos (irmão ou irmã) de Y se Z é pai de X, Z é pai de Y, W é mae de X, W é mae de Y, e X e Y não são a mesma pessoa”.
Esta regra exige algumas explicações. Primeiro, está se definindo aqui a relação “irmaos” no sentido pleno do termo, em que ser irmãos significa ter o mesmo pai e a mesma mãe. Segundo, é por isso que não se usa a relação “pais” em vez de usar as relações “pai” e “mae” (a relação “pais” vai ser usada na definição seguinte). Como vimos, a relação “pais” quer dizer “é pai ou é mãe”, isto é, basta que seja um, enquanto aqui precisamos que tanto o pai como a mãe sejam os mesmos — não basta que seja apenas um. Terceiro, a última cláusula pode parecer esquisita, mas revela como o computador “pensa”: se não incluirmos na definição de “irmaos” a exigência de que X e Y não sejam a mesma pessoa, o computador vai concluir que X é irmão de X, isto é, de si mesmo, porque X tem o mesmo pai e a mesma mãe que X! Note-se que ao lidar com essas questões a pessoa vai aprendendo conceitos importantes de lógica — e, naturalmente, de parentesco.
meiosirmaos(X,Y) se
pais(Z,X) e
pais(Z,Y) e
not(irmaos(X,Y)) e
X<>Y.
Leia-se: “X é meiosirmãos (meio irmão ou meia irmã) de Y se Z é pais (pai ou mãe) de X, Z é pais (pai ou mãe) de Y, X e Y não são irmãos (no sentido pleno), e X e Y não são a mesma pessoa”.
Note-se que neste caso, como basta que um dos pais seja o mesmo, podemos usar a relação “pais”. Mas aqui temos uma outra complicação. Se não incluirmos a segunda cláusula, o computador vai concluir que os irmãos plenos também são meios irmãos, porque eles têm o mesmo pai ou (na verdade, e) a mesma mãe. Por isso é preciso que, no caso de meios irmãos, se faça a ressalva de que a relação não se aplica a irmãos plenos.
É sempre possível definir as relações de outra forma, mas qualquer definição vai sempre ter que enfrentar problemas semelhantes.
irmaosposticos(X,Y) se
pais(Z,X) e
conjuges(Z,W) e
pais(W,Y) e
not(irmaos(X,Y)) e
not(meiosirmaos(X,Y)) e
X<>Y.
Leia-se: “X é irmaosposticos (irmão postiço ou irmã postiça) de Y se Z é pais (pai ou mãe) de X, Z é cônjuge (marido ou mulher) de W, W é pais (pai ou mãe) de Y, X e Y não são nem irmãos plenos nem meios irmãos, e X não é a mesma pessoa que Y”.
Neste caso, “irmaosposticos” são os irmãos em virtude do casamento dos pais — algo cada vez mais comum hoje em dia. Na realidade, X e Y não são irmãos nem meios irmãos, neste caso, porque não têm nem o mesmo pai nem a mesma mãe. X é, por exemplo, filho de casamento anterior de Z com uma pessoa, e Y é filho do casamento anterior de W com uma outra pessoa — e Z e W se casaram (um com o outro). Na prática, X e Y se consideram irmãos-entre-aspas — a relação é “postiça”.
tios(X,Y) se
irmaos(X,W) e /* Cláusula 1
pais(W,Y)
ou
meiosirmaos(X,W) e /* Cláusula 2
pais(W,Y)
ou
conjuges(X,W) e /* Cláusula 3
irmaos(W,Z) e
pais(Z,Y)
ou
conjuges(X,W) e /* Cláusula 4
meiosirmaos(W,Z) e
pais(Z,Y).
Leia-se: “X é tios (tio ou tia) de Y se: [Hipótese 1] X é irmaos (irmão ou irmã) de W e W é pais (pai ou mãe) de Y; ou [Hipótese 2] X é meiosirmaos (meio irmão ou meia irmã) de W e W é pais (pai ou mãe) de Y; ou [Hipóteses 3 e 4] X é cônjuge de tios (tio ou tia) de Y”. Note-se que à medida que os parentescos vão ficando mais complicados, também a lógica necessária para defini-los se complica.
tiosafin(X,Y) se
irmaos(X,W) e /* Cláusula 1
pais(W,Z) e
conjuges(Z,Y)
ou
meiosirmaos(X,W) e /* Cláusula 2
pais(W,Z) e
conjuges(Z,Y)
ou
conjuges(X,K) e /* Cláusula 3
irmaos(K,W) e
pais(W,Z) e
conjuges(Z,Y)
ou
conjuges(X,K) e /* Cláusula 4
meiosirmaos(K,W) e
pais(W,Z) e
conjuges(Z,Y).
Leia-se: X é tiosafin (tio ou tia por afinidade) de Y se X é tios (tio ou tia) do cônjuge de Y”.
Daqui para frente não vamos explicar as definições, porque as explicações já fornecidas são mais do que suficientes para que se possam entender as relações seguintes. [5]
tios2grau(X,Y) se
pais(W,X) e
avos(Z,Y)e
irmaos(W,Z).
tios3grau(X,Y) se
avos(W,X) e
avos(Z,K) e
pais(K,Y) e
irmaos(W,Z).
tiosavos(X,Y) se
tios(X,Z) e
pais(Z,Y).
tiosavos2grau(X,Y) se
pais(K,X) e
avos(W,Y) e
pais(L,W) e
irmaos(K,L).
tiosbisavos(X,Y) se
tios(X,W) e
avos(W,Y).
tiostrisavos(X,Y) se
tios(X,W) e
bisavos(W,Y).
tiostetravos(X,Y) se
tios(X,W) e
trisavos(W,Y).
sobrinhos(X,Y) se
tios(Y,X).
sobrinhos2grau(X,Y) se
tios2grau(Y,X).
sobrinhos3grau(X,Y) se
tios3grau(Y,X).
sobrinhosnetos(X,Y) se
tiosavos(Y,X).
sobrinhosnetos2grau(X,Y) se
tiosavos2grau(Y,X).
sobrinhosbisnetos(X,Y) se
tiosbisavos(Y,X).
sobrinhostrisnetos(X,Y) se
tiostrisavos(Y,X).
sobrinhostetranetos(X,Y) se
tiostetravos(Y,X).
primos(X,Y) se
pais(W,X) e /* Cláusula 1
pais(Z,Y) e
irmaos(W,Z)
ou
conjuges(X,K) e /* Cláusula 2
pais(Z,K) e
pais(W,Y) e
irmaos(W,Z).
primosafin(X,Y) se
pais(W,X) e /* Cláusula 1
conjuges(Y,K) e
pais(Z,K) e
irmaos(W,Z)
ou
conjuges(X,W) e /* Cláusula 2
conjuges(Y,Z) e
pais(K,W) e
pais(L,Z) e
irmaos(K,L).
primos2grau(X,Y) se
avos(W,X) e
avos(Z,Y) e
irmaos(W,Z).
primos3grau(X,Y) se
pais(W,X) e
pais(Z,Y) e
primos2grau(W,Z).
conjuges(X,Y) se
casados(X,Y) /* Cláusula 1
ou
casados(Y,X). /* Cláusula 2
sogros(X,Y) se
pais(X,Z) e
conjuges(Z,Y).
genros(X,Y) se
sogros(Y,X).
cunhados(X,Y) se
irmaos(X,Z) e /* Cláusula 1
conjuges(Z,Y)
ou
irmaos(Y,Z) e /* Cláusula 2
conjuges(Z,X)
ou
meiosirmaos(X,Z) e /* Cláusula 3
conjuges(Z,Y)
ou
meiosirmaos(Y,Z) e /* Cláusula 4
conjuges(Z,X).
concunhados(X,Y) se
conjuges(X,Z) e
cunhados(Z,Y)
e not(irmaos(X,Y)).
Com esse conjunto de fatos básicos e regras de inferência é possível perguntar:
Quem são os tios (tio ou tia) de Patrícia?
Eduardo é tio-avô de quem?
E assim por diante.
A sintaxe para se fazer essas perguntas seria algo como:
tios (X,Patrícia)?
e o programa responderia:
X=Eliane
X=Marco
X=Denise
Ou então:
tiosavos (Eduardo,X)?
e o programa responderia:
X=Camila-1
Não é necessário ressaltar que a elaboração de um sistema como este não só ajuda o desenvolvimento do raciocínio dedutivo de quem está participando do projeto, mas, também, faz com que ele aprenda um bocado sobre parentesco, sobre como o computador é capaz de simular a inteligência humana, e sobre como resolver problemas.
NOTAS
[1] Vamos usar os termos “ensinante” e, mais adiante, “aprendente”, porque os achamos termos que expressam melhor o sentido das expressões “aquele que ensina” e “aquele que aprende” do que, de um lado, os termos “professor”, “instrutor” ou “tutor”, termos que não são derivados do verbo “ensinar”, e, de outro lado, o termo “aprendiz”, que, embora derivado do verbo “aprender”, possui conotação própria (quem aprende uma arte ou ofício), mais estreita do que aquela sugerida pelo termo “aprendente”.
[2] Sempre é mais difícil lidar com respostas erradas, porque resposta certa, presumivelmente, há uma só, mas a gama de respostas erradas, em questões abertas ou mesmo semi-abertas, é quase ilimitada.
[3] A pronúncia correta da palavra é “Lôgo”, com o primeiro “o” fechado. Apesar de LOGO ser uma linguagem de programação, a palavra “Logo”, em si, foi introduzida na língua portuguesa como masculina, provavelmente pela relutância da língua de considerar feminina uma palavra terminada em “o”. Assim, a linguagem LOGO é chamada, abreviadamente, em Português de “LOGO”, palavra que faz concordância no masculino.
[4] O termo “Prolog” também é masculino em Português.
[5] É preciso fazer a ressalva, porém, de que algumas das definições aqui fornecidas podem não ser as mais geralmente aceitas. Em alguns casos, por não se encontrar material confiável, arbitrou-se uma definição com a qual alguns podem não concordar (como, por exemplo, a distinção entre tios-avós e tios de segundo grau e outras).
Eduardo O C Chaves
Campinas, Dez/98
Transcrito aqui em Salto, 3 de Fevereiro de 2016