sexta-feira, 15 de junho de 2012

Logo e Fractais

A linguagem de programação Logo tradicional envolve uma tartaruga gráfica, um robô preparado para responder aos comandos  do usuário. O resultado é mostrado após digitar-se o comando. Incentivando o aprendizado. Nela, o aluno aprende tentando ensinar a tartaruga a movimentar-se através de tentativa e erro.

Existem quatro comandos básicos para movimentar a tartaruga:
  • parafrente (pf) [num_passos]
  • paratrás (pt) [num_passos]
  • paradireita (pd) [ângulo]
  • paraesquerda (pe) [ângulo]

O seguinte programa desenha um quadrado na tela de tamanho 100:
Repita 4 [pf 100 pd 90]



O seguinte programa gera um circulo utilizando a tartaruga gráfica:
repita 360 [pf 1 pd 1]
 
 


Através do comando APRENDA, podemos ensinar a tartaruga uma função. Ao ser digitado APRENDA, abre-se uma caixa de texto onde você deve escrever as instruçõoes desta função que você está ensinando a tartaruga. Quando terminar digite 'FIM'. Outra alternativa é ir no menu Procedimento e escolher a opção Editar.

aprenda quadrado :x
repita 4 [pf :x pd 90]
fim

Temos também o comando SE para modificar o fluxo de execução de uma instrução. Se alguma condição é verdadeira, a ação a ser executada no caso é uma lista de instruções. Quando o resultado do predicado é falso, a lista não é executada e o interpretador Logo continua a execução do programa no comando imediatamente seguinte ao comando SE. A forma geral do comando SE, portanto, : SE {predicado} {lista}.

Vejamos este exemplo:

APRENDA TRIANGULO :X
UL
SE :X<3 [PARE]
REPITA 3 [TRIANGULO :X/2 PF :X PD 120]
FIM

Perceba também que o programa acima o chama mesmo quando executado, uma clara demonstração de recursividade em Logo.

Este programa simples desenha umas das formas elementares da geometria fractal chamadas Triângulo de Sierpinski.

  
 Fractal Árvore

aprenda arvore :d
se :d < 5 [pare]
pf :d
pd 30
tree :d-10
pe 60
arvore :d-10
pd 30
pt :d
fim

Fractal Quadrado
 
aprenda quadrado_fractal :comprimento :profundidade

  ; caso base
  se :profundidade = 0 [ pare ]

  ; caso recursivo: desenhe o quadrado tal que em cada canto tem um quadrado fractal


  repita 4 [
    pf :comprimento
    pd   90
    quadrado_fractal :comprimento * 0.4 :profundidade - 1
  ]

fim




aprenda floco :comprimento :profundidade

  se :profundidade = 0 [
    pf :comprimento
    pare
  ]

  floco :comprimento  / 3 :profundidade - 1
  pe    60
  floco :comprimento  / 3 :profundidade - 1
  pd   120
  floco :comprimento / 3 :profundidade - 1
  pe    60
  floco :comprimento / 3 :profundidade - 1

fim


aprenda koch :comprimento :profundidade
  repita 3 [ floco :comprimento :profundidade pd 120]
fim





2 comentários:

Anônimo disse...

onde baixa?

Anônimo disse...

onde baixa?