Você está na página 1de 8

1

UEMS - UNIVERSIDADE ESTADIAL DE MATO GROSSO DO SUL



RECURSIVIDADE NO AMBIENTE SUPERLOGO

Marcio Demetrius Martinez, professor do Curso de Computao da UEMS, Unidade
Universitria Nova Andradina; e-mail: martinez@uems.br

Palavras-chave: superlogo. procedimentos. recursividade. fractais.

Resumo: Nosso objetivo neste minicurso apresentar brevemente alguns conceitos bsicos
de programao na linguagem Logo. Esperamos que, aps o estudo dos contedos que
sero abordados, os alunos sejam capazes de compreender, criar e editar procedimentos em
Logo, principalmente os procedimentos recursivos. Visto que, em muitos casos, um fractal
pode ser gerado por um processo recorrente ou iterativo, esse ser o nosso campo principal
de aplicao. Para o proposto, como j mencionamos, utilizaremos a linguagem de
programao Logo que foi projetada para ser um instrumento de aprendizagem. Logo
uma linguagem poderosa e fcil de usar, criada nos anos 60 por Wallace Feurzeig, Daniel
Bobrow e Seymour Papert. Existem muitas implementaes da linguagem Logo, em
diferentes idiomas e para diversos sistemas operacionais. A verso que utilizaremos o
Superlogo, um Logo para Windows que foi adaptado para o portugus pelo Ncleo de
Informtica Aplicada Educao, da UNICAMP. Num primeiro momento deste minicurso
faremos um breve reconhecimento do ambiente Superlogo e em seguida passaremos para
exemplos de sequncias definidas recursivamente, na criao de procedimentos recursivos
e finalmente nas aplicaes para alguns fractais.


















2
1. A TELA DO SuperLogo 3.0



























PRINCIPAIS COMANDOS
COMANDO AO
PF 100 Movimenta a tartaruga 100 passos para frente (posio)
PT 200 Movimenta a tartaruga 200 passos para trs (posio)
PD 90 Gira a tartaruga 90 graus direita (orientao)
PE 70 Gira a tartaruga 70 graus esquerda (orientao)
TAT Limpa a tela e posiciona a tartaruga na sua posio inicial (centro da
tela - posio [0,0] no eixo de coordenadas cartesianas) e orientao
(0 em relao a um eixo imaginrio) originais.
UN Permite movimentar a tartaruga sem desenhar a trajetria na tela
UB Permite movimentar a tartaruga apagando traos que estejam na sua
trajetria
UL Permite movimentar a tartaruga desenhando a trajetria na tela
DT Torna a tartaruga invisvel
AT Torna a tartaruga visvel
MUDECL N. Muda a cor do trao
MUDECF N. Muda a cor do fundo
REPITA n. Usado para repetir uma ao ou seqncia de aes num determinado
Janela de comandos
Janela grfica
Menus
Entrada de comandos
Botes de comandos
3
[lista de
comandos da
ao]
n. de vezes.
PINTE Comando usado para pintar o interior de uma regio para isso a
tartaruga deve ser movimentada para dentro da regio
+ Operao de adio
- Operao de subtrao
* Operao de multiplicao
/ Operao de diviso

MENUS
Os menus do SuperLogo 3.0 so auto-explicativos e de fcil assimilao. No menu Ajuda
opo ndice esto listados todos os comandos do SuperLogo 3.0. Ao selecionar um dos
comandos pode-se ter acesso sua sintaxe. O ndice uma espcie de manual interno do
software.

ATIVIDADE 1:
Objetivo: estudar as caractersticas de figuras geomtricas planas e os conceitos
envolvidos: paralelismo, perpendicularidade, ngulos, medidas de comprimento e
congruncia entre ngulos e medidas de comprimento.
Usando os recursos do SuperLogo 3.0 faa com que a tartaruga desenhe:
- Um quadrado
- Um retngulo
- Um tringulo eqiltero

1) Quadrado:
pf 50 pd 90 pf 50 pd 90 pf 50 pe 90 pf 50.


Programao em Logo
2. PROCEDIMENTOS
Uma das caractersticas mais importantes do Logo a facilidade com que podemos
estender a linguagem, criando novos comandos e operaes (ou procedimentos). Por
exemplo, vamos definir um comando chamado quadrado, que desenha um quadrado de
lado 50. Antes, vamos verificar se j no h um procedimento com este nome. Escrevendo
quadrado na caixa de entrada, obtemos como resposta a mensagem
Ainda no aprendi quadrado
ou seja, a tartaruga (ou melhor, o Logo) no conhece tal procedimento. Para definir o
comando, clique Procedimento / Editar na barra de menu. Na janela que se abrir, escreva o
nome do procedimento que deseja definir no caso, quadrado e clique o boto OK. A
janela do editor de procedimentos aparecer, ento, com o incio e o fim da definio do
procedimento quadrado j escritos, como mostrado na Figura 1.

4

Figura 1. Janela do editor de procedimentos.

A definio propriamente dita do procedimento, repita 4 [pf 50 pe 90], deve ser inserida
entre o aprenda e o fim, como est na Figura 2.


Figura 2. A definio do procedimento quadrado.

Escolha, em seguida, o item rea de Trabalho / Atualizar na barra de menu do editor e
salve a definio do comando na memria do computador. Clicando rea de Trabalho /
Sair, voc fecha o editor de procedimentos. Escreva agora quadrado
na janela de comandos e mande executar. Em vez de enviar uma mensagem de erro como
antes, a tartaruga agora desenhar um quadrado de lado 50.
Esta definio de quadrado no muito til, pois obtemos sempre um quadrado de mesmo
tamanho (50 pontos). No podemos desenhar um quadrado de lado 100 ou 10. Seria melhor
que quadrado fosse semelhante, por exemplo, ao comando parafrente, que tem um
parmetro que determina o tamanho do deslocamento. Assim, quadrado 100 faria um
quadrado de lado 100. fcil criar esta verso aperfeioada do comando. Para isto, volte ao
Procedimento / Editar da barra de menu e escolha o procedimento quadrado na janela de
opes. O procedimento definido anteriormente vai aparecer na janela do editor. Mude-o
para

aprenda quadrado :lado
repita 4 [pf :lado pe 90]
fim

e salve o resultado. Agora, se tentarmos

5
quadrado 100

ou

quadrado 10

obteremos quadrados de lados 100 e 10, respectivamente. Veja tambm o que acontece com

repita 3 [quadrado 20*contevezes]

O comando contevezes (ou cv) fornece o nmero de repeties j realizadas pelo repita.

ATIVIDADE 2:

repita 3 [escreva contevezes];
repita 200 [pf contevezes pe 90];
repita 720 [pf 10 pe contevezes];

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]];
repita 8 [pd 45 repita 6 [repita 90 [pf 2 pd 2] pd 90]] (Mude o 6 por 1, 2, 3,..,7, para
criar outras figuras interessantes).

Note que o nmero que segue o comando quadrado atribudo varivel lado definida pelo
procedimento. Os dois pontos que so escritos antes da palavra lado indicam que estamos
interessados no valor da varivel lado, e no em um comando de nome lado. Podemos ler
:X como o valor da varivel X ou o contedo de X ou, ainda, a coisa que estamos
chamando X.

3. RECURSIVIDADE
Uma definio recursiva aquela em que o item que est sendo definido usado na sua
prpria definio. A princpio, pode parecer muito estranho que algo possa ser definido em
termos de si prprio. Mostraremos alguns exemplos de definies
recursivas que encontramos na matemtica e na computao para tornar mais claro o
conceito de definio recursiva.
Veja como podemos usar um procedimento recursivo para calcular o fatorial de n, usando
apenas que n! = n(n-1)! e 0! = 1.

aprenda fatorial :n
se :n=0 [envie 1 pare]
envie :n*fatorial (:n-1)
fim

Note tambm o uso do comando se, que executa a lista de instrues dentro dos
colchetes se a condio, no caso :n=0, for satisfeita. O comando pare termina a
execuo de um procedimento. Teste seu programa, executando
6

escreva fatorial 5

Uma seqncia uma lista de objetos dispostos segundo uma determinada ordem. Ou seja,
numa seqncia existe um primeiro elemento, um segundo e assim por diante. Podemos
definir recursivamente uma seqncia explicitando o valor do(s) primeiro(s) elemento(s) e
definindo os demais elementos a partir deles. Por exemplo, a seqncia S que tem como
cinco primeiros elementos os nmeros 2, 4, 8, 16, 32, pode ser definida recursivamente
assim:

2 se 1
( )
2* ( 1) se 2
n
S n
S n n
=
=

>



aprenda sequencia :n
se :n=1 [envie 2]
envie 2*sequencia :n-1
fim

Sequncia de Fibonacci:

1 se 1
( ) 1 se 2
( 2) ( 1) se 3
n
F n n
F n F n n
=

= =

+ >



aprenda fibo :n
se ou :n=1 :n=2 [envie 1]
envie (fibo :n-2) + fibo :n-1
fim

ATIVIDADE 3:
Escreva uma procedure que calcule o n-ensimo termo da sequncia:
i)
3 se 1
( ) 5 se 2
( 1) ( 1) ( 2) ( 2) se 2
n
D n n
n D n n D n n
=

= =

+ >



ii)
1 se 1
2 se 2
( )
3 se 3
( 1) 2 ( 2) 3 ( 3) se
n
n
T n
n
T n T n T n
=
=
=
=
+ + 3 n

>



4. FRACTAIS
7
No dicionrio Aurlio, temos a definio de fractal, que uma Forma Geomtrica
de aspectos irregular ou fragmentado, que pode ser subdividida indefinidamente
em partes, s quais, de certo modo, so cpias reduzidas do todo.

A definio mais simples que fractais so objetos gerados pela repetio de
um menor processo peridico, apresentando auto-semelhana e complexidade
infinita.

Um procedimento recursivo que envolve desenhos com a tartaruga est mostrado
a seguir:

aprenda arvore :x
se :x<1 [pare]
pf :x
pe 20
arvore :x/1.5
pd 40
arvore :x/1.5
pe 20
pt :x
fim

Executando a instruo, obtemos o resultado mostrado na Figura 3.

arvore 50


Figura 3. Desenho feito pelo procedimento arvore.
8
Outro procedimento recursivo :

aprenda tri :x
se :x<3 [pare]
repita 3 [tri :x/2 pf :x pd 120]
fim

Executando

tri 200


Salvando seus procedimentos

Os procedimentos que voc definiu aps iniciar a sua sesso Logo esto
guardados apenas na memria do computador. Se voc terminar o programa
Logo, todos eles sero perdidos.

Para salv-los em um arquivo em disco, v para a barra de menu e selecione
Arquivo / Salvar como... . Na caixa de dilogo que se abrir, escolha o disco, a
pasta onde deseja salvar seus procedimentos e o nome do arquivo que ir cont-
los. Note que todos os procedimentos que esto na memria iro para esse
arquivo. Se voc no deseja guardar algum procedimento, tem que apag-lo da
memria antes de salvar o resto. Isto feito indo para Procedimento / Apagar na
barra de menu e selecionando, na caixa de dilogo que se abrir, os procedimentos
que sero descartados. Em uma prxima sesso Logo, os procedimentos salvos
no arquivo podem ser carregados novamente para a memria, usando o menu
Arquivo / Abrir.

Você também pode gostar