|
||
|
Introdução ao LOGO
A Rainha abandonou então
a partida, quase sem fôlego, e perguntou a Alice:
Logo e a Tartaruga A linguagem de programação Logo foi projetada para ser um instrumento de aprendizagem - algo que estudantes usam para aprender outras coisas. Ela é uma linguagem poderosa (é um dialeto do LISP) e fácil de usar, criada nos anos 60 por Wallace Feurzeig, Daniel Bobrow e Seymour Papert. Este último, um matemático que colaborara com Piaget, tornou-se o principal inspirador do uso do Logo como meio de aprendizagem. Em suas primeiras versões o Logo podia controlar os movimentos de um pequeno robô, chamado de "tartaruga" devido à sua forma, e que acabou tornando-se a marca registrada da linguagem. Com o desenvolvimento de terminais gráficos de baixo custo a tartaruga mudou-se para a tela do computador, onde pode mover-se de forma mais rápida e precisa.
O Ambiente Logo Logo é uma linguagem interativa e interpretada. Um comando Logo pode ser executado isoladamente, sem a necessidade de fazer parte de um programa completo. À medida em que as linhas de comando são escritas o ambiente Logo as "interpreta" (traduz) para o computador e ordena a sua execução. A maioria dos ambientes Logo divide a tela do computador em pelo menos duas regiões: aquela onde são escritos os comandos, e outra onde a tartaruga se move. Como estas áreas estão arranjadas depende da implementação de Logo que estamos usando. A própria linguagem varia um pouco de uma implementação para outra. Para simplificar vamos centrar nossa discussão no SuperLogo, um Logo adaptado para o português pelo Núcleo de Informática Aplicada à Educação (NIED) da UNICAMP. O SuperLogo é distribuído gratuitamente pela internet (http://www.nied.unicamp.br). A área de comandos do SuperLogo fica na base da tela, em uma janela que contém duas caixas de texto e vários botões. A caixa inferior é a caixa de entrada, onde são digitados os comandos a serem executados. Em cima dela está a caixa de saída, onde o Logo mantém uma lista dos comandos já executados e escreve suas mensagens de erro. A caixa de saída também é usada por comandos que escrevem alguma coisa. Por exemplo, digite na caixa de entrada escreva [alô mundo] e aperte a tecla <Enter> ou o botão "EXECUTAR". Note que na caixa de saída aparecem o comando que foi digitado e o resultado da sua execução (se nada deu errado). Tente também escreva 1+1
Movimentos da Tartaruga Uma das características do Logo é a existência de um objeto - a tartaruga - cujos movimentos são controlados por comandos da linguagem. A tartaruga é geralmente um pequeno desenho que pode se deslocar pela tela do computador, mas nada impede que ela seja, como nas primeiras versões do Logo, um robô que anda pelo chão. Para ter uma idéia dos comandos Logo que movimentam a tartaruga, digite na caixa de entrada parafrente 50 Com isto a tartaruga deve andar 50 passos (pontos da tela) para a frente. Escreva agora paraesquerda 90 Note que a tartaruga girou 90 graus para a esquerda. Tente também paratrás 80
Estes são os comandos básicos para mover a tartaruga. Como muitos outros comandos Logo, eles podem ser escritos de forma abreviada: parafrente = pf
A tartaruga deixa um rastro por onde passa, como se estivesse usando um lápis. Se queremos movê-la sem desenhar, empregamos o comando usenada. Verifique o que acontece com usenada
A tartaruga deve ter andado sem deixar rastros. Se quisermos voltar a desenhar sobre a tela usamos o comando uselápis. Por exemplo: uselápis
A tartaruga pode ficar invisível. Para isto basta executar o comando desapareçatat Para torná-la visível execute apareçatat Para limpar a tela, apagando todos os desenhos, e recolocar a tartaruga na sua posição inicial use o comando tartaruga que pode ser abreviado para tat. Ou simplesmente aperte o botão "TAT" que está ao lado da caixa de saída.
Repetições Podemos fazer a tartaruga desenhar um quadrado com as instruções (note como é possível escrever mais de um comando Logo por linha) pf 50 pe 90
Entretanto é bem mais simples usar o comando repita, repita 4 [pf 50 pe 90] Um triângulo pode ser traçado com repita 3 [pf 50 pe 120] e um retângulo é obtido através de repita 2 [pf 50 pe 90 pf 100 pe 90] O comando contevezes (ou cv) fornece o número de repetições já realizadas pelo repita. Tente por exemplo repita 3 [escreva contevezes] ou repita 200 [pf contevezes pe 90] ou ainda repita 720 [pf 10 pe contevezes] e repita 1800 [pf 10 pe contevezes + .1] Dentro da lista de comandos do repita podem estar outros repita. Veja o que acontece com repita 6 [pe 60 repita 4 [pf 50 pe 90]] e repita 8 [pd 45 repita 6 [repita 90 [pf 2 pd 2] pd 90]] (mude o "6" por 1...7 para criar outras figuras surpreendentes).
Procedimentos Uma das características mais importantes do Logo é a facilidade com que podemos estender a linguagem, criando novos comandos e operações (ou procedimentos). Por exemplo, vamos definir um comando chamado quadrado que desenha um quadrado na tela. Antes, vamos verificar se já não há um procedimento com este nome. Escrevendo quadrado na caixa de entrada obtemos como resposta a mensagem AINDA NÃO APRENDI QUADRADO ou seja, a tartaruga (ou melhor, o Logo) não conhece tal procedimento. Para definir o comando, clique em PROCEDIMENTO / EDITAR na barra de menu. Na janela que se abrir escreva o nome do procedimento que deseja definir - no caso, quadrado - e aperte o botão OK. A janela do editor de procedimentos aparecerá então, com o início e o fim da definição do procedimento quadrado já escritos: aprenda quadrado
A definição propriamente dita do procedimento deve ser inserida entre o aprenda e o fim. No nosso caso teríamos aprenda quadrado
Escolha em seguida o ítem ÁREA DE TRABALHO / ATUALIZAR na barra de menu do editor e salve a definição do comando na memória do computador. Clicando em ÁREA DE TRABALHO / SAIR voce fecha o editor de procedimentos. Escreva agora quadrado na janela de comandos e mande executar. Ao invés de enviar uma mensagem de erro como antes, a tartaruga agora desenhará um quadrado de lado 50. Esta definição de quadrado não é muito útil, pois obtemos sempre um quadrado do mesmo tamanho (50 pontos). Não podemos desenhar um quadrado de lado 100, ou 10. Seria melhor que quadrado fosse semelhante, por exemplo, ao comando parafrente, que tem um parâmetro que determina o tamanho do deslocamento. Assim, quadrado 100 faria um quadrado de lado 100. É fácil criar esta versão aperfeiçoada do comando. Para isto volte ao PROCEDIMENTO / EDITAR da barra de menu, e escolha o procedimento quadrado na janela de opções. O procedimento definido anteriormente vai aparecer na janela do editor. Mude-o para aprenda quadrado :lado
e salve o resultado. Agora, se tentarmos quadrado 100 ou quadrado 10 obteremos quadrados de lados 100 e 10 respectivamente. Veja também o que acontece com repita 50 [quadrado 2*contevezes] Note que o número que segue o comando quadrado é atribuído à variável lado definida pelo procedimento. Os dois pontos que são escritos antes da palavra lado indicam que estamos interessados no valor da variável lado, e não em um comando de nome lado. Podemos ler :X como "o valor da variável X", ou "o conteúdo de X", ou ainda "a coisa que estamos chamando de X".
Variáveis Já que entramos no assunto de variáveis, vamos aprender como elas podem ser criadas e receber valores. Por exemplo, para definir uma variável de nome XY com valor 2 podemos usar atribua "xy 2 Se mandarmos escrever o valor de XY, escreva :xy obteremos o número 2 na caixa de saída. Observe que se tentarmos escreva "xy teremos as letras XY como resposta. O papel das aspas é avisar ao Logo que o que vem depois delas deve ser considerado como uma palavra e não um comando. Se omitirmos as aspas e fizermos escreva xy ou atribua xy 2 obteremos a mensagem de erro "AINDA NÃO APRENDI XY", ou seja, o Logo pensa que XY é um comando e avisa que tal comando não está definido. Vamos usar o comando atribua para definir um procedimento que fornece o fatorial de um número inteiro. O procedimento fat mostrado a seguir calcula n! fazendo o produto 1x2x3...n aprenda fat :n
Se fizermos em seguida o teste, escreva fat 5 vamos obter 5! = 120. Observe o comando envie que usamos no procedimento acima - ele faz com que fat retorne como resultado o valor da variável f.
Operações matemáticas Várias operações matemáticas estão definidas na linguagem Logo. Por exemplo, a exponenciação é feita com a operação potência :a :b, que retorna ab. Veja o que acontece com escreva potência 2 3 A raiz quadrada é dada por raizq, como já vimos. As funções trigonométricas seno, cosseno e tangente também estão definidas (sen, cos, tan), assim como as suas funções inversas (arcsen, arccos, arctan). Se executarmos escreva sen 30 obtemos 0.5 como resposta. Vemos daí que os argumentos das funções trigonométricas são lidos em graus, não em radianos. Da mesma forma escreva arctan 1 resulta em 45 (graus) e não em p /4 (radianos). Se queremos trabalhar com radianos em vez de graus devemos usar as funções senrad, cosrad, tanrad, e as inversas arcsenrad, arccosrad, arctanrad. Por exemplo escreva senrad pi/2 resulta em 1. Note que usamos no comando acima um procedimento, pi, que retorna o valor de p . Veja o que ocorre com escreva pi Figuras de Lissajous podem ser facilmente desenhadas com as funções trigonométricas. Por exemplo, execute a instrução repita 360 [mudexy (100*sen 3*cv) (100*sen 4*cv)] Observe que na instrução acima usamos um novo comando para mover a tartaruga - mudexy :a :b move a tartaruga até o ponto da tela de coordenadas (a, b). O ponto (0, 0) corresponde ao centro da tela. Um procedimento particularmente interessante é sorteienúmero, que pode ser abreviado para sortnum. Executando sorteienúmero :n obtemos um número inteiro escolhido ao acaso entre 0 e n-1. Veja o que acontece com repita 5 [escreva sortnum 10] ou faça tartaruga andar ao acaso com repita 500 [pf 10 pe sortnum 180] O logaritmo natural e a função exponencial também estão definidos no Logo. Eles são dados pelos procedimentos ln e exponencial, respectivamente. Uma lista completa das funções matemáticas definidas no SuperLogo pode ser encontrada no ítem AJUDA da barra de menu.
Recursão Procedimento Logo podem ser recursivos. Isto significa que eles são capazes de chamar a si próprios. Veja como podemos usar um procedimento recursivo para calcular o fatorial de N, usando apenas que N! = N x (N-1)! e 0! = 1. aprenda fatorial :n
Note também o uso do comando se, que executa a lista de instruções dentro dos colchetes se a condição, no caso :n=0, for satisfeita. O comando pare termina a execução de um procedimento. Teste seu programa executando escreva fatorial 5 Um procedimento recursivo que envolve desenhos com a tartaruga está mostrado a seguir: aprenda arvore :x
Veja o que acontece com arvore 50 Outro procedimento recursivo é: aprenda tri :x
Executando tri 200 a tartaruga desenha um fractal famoso.
Salvando seus procedimentos Os procedimentos que você definiu após iniciar a sua sessão Logo estão guardados apenas na memória do computador. Se você terminar o programa Logo todos eles serão perdidos. Para salvá-los em um arquivo em disco vá para a barra de menu e selecione ARQUIVO / SALVAR COMO. Na caixa de diálogo que se abrir escolha o disco e pasta onde deseja salvar seus procedimentos, e o nome do arquivo que irá contê-los. Note que todos os procedimentos que estão na memória irão para este arquivo. Se você não deseja guardar algum procedimento, tem que apagá-lo da memória antes de salvar o resto. Isto é feito indo para PROCEDIMENTO / APAGAR na barra de menu e selecionando na caixa de diálogo que se abre os procedimentos que serão descartados. Em uma próxima sessão Logo os procedimentos salvos no arquivo podem ser carregados novamente para a memória, usando o menu ARQUIVO / ABRIR.
O que mais? Há muito mais no Logo do que foi dito acima. Estas notas cobriram
apenas uma pequena parte das características e recursos da linguagem.
Muitos aspectos importantes, como a manipulação de listas
(em certo sentido o "coração" do Logo) e comandos de controle
não foram abordados. Uma visão mais completa da linguagem
pode ser obtida com o programa de AJUDA do SuperLogo.
|
||
| C.E.Aguiar
Fevereiro/01 |