next up previous contents
Segue: Segunda abordagem Acima: Algumas técnicas de preenchimento Anterior: Algumas técnicas de preenchimento   Conteúdo

Primeira abordagem


Se desejarmos, por exemplo, desenhar um retângulo preenchido de 100 por 200, uma primeira idéia pode ser desenhar o retângulo de 100 por 200, depois desenhar um retângulo de 99 por 199, depois um retângulo de 98 por 198... até o retângulo ser preenchido inteiramente.
Comecemos por definir um retângulo de comprimento e altura que dependa de duas variáveis.
retêngulo preenchido

aprenda rec :alt :lar
repita 2[pf :alt pd 90 pf :lar pd 90]
fim
Para preencher o nosso grande retângulo, vai-se por conseguinte executar:
rec 100 200 rec 99 199 rec 98 198 ..... rec 1 101
Definindo então um procedimento retângulo dedicado a desenhar este retângulo preenchido.
aprenda retangulo :alt :lar
rec :alt :lar
retangulo :alt-1 :lar-1
fim

Ao testarmos retângulo 100 200 percebe-se que há um problema: o procedimento não se para quando o retângulo é preenchido, ela continua a desenhar retângulos! Vai-se por conseguinte acrescentar um teste que permite detectar se o comprimento ou a amplitude é igual a 0. Para isso, pede-se ao programa que se interrompa com a primitiva pare.

aprenda retangulo :alt :lar
se ou :alt=0 :lar=0 [pare]
rec :alt :lar
retangulo :alt-1 :lar-1
fim
Nota: em vez de utilizar a primitiva ou, podemos usar o símbolo | . Assim:
se :alt=0 | :lar=0 [pare]

next up previous contents
Segue: Segunda abordagem Acima: Algumas técnicas de preenchimento Anterior: Algumas técnicas de preenchimento   Conteúdo
alex 2006-06-18