08.02.2015 Views

Programação Funcional e Concorrente com Scheme

Programação Funcional e Concorrente com Scheme

Programação Funcional e Concorrente com Scheme

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

notas de aula -<br />

Jerônimo C. Pellegrini<br />

O triângulo de Sierpinski pode ser gerado da seguinte maneira: primeiro desenhe um<br />

triângulo ABC em preto. Depois, execute os passos a seguir:<br />

• Marque os pontos médios [AB], [BC], [AC] de cada lado do triângulo;<br />

• Desenhe um triângulo branco usando estes pontos médios <strong>com</strong>o vértices;<br />

• Agora a figura conterá três triângulos pretos, [AC]C[BC], A[AC][AB] e [AB][BC][B].<br />

Repita esta operação para cada um deles.<br />

É evidente que não poderemos executar este processo indefinidamente; nosso gerador<br />

de triângulos de Sierpinski aceitará <strong>com</strong>o parâmetro o número de iterações (quando o<br />

número for zero um único triângulo preto será desenhado).<br />

( define make-sierpinski<br />

( lambda (x1 y1 x2 y2 x3 y3 fill-out fill-in n)<br />

( define make-sierpinski-aux<br />

Versão Preliminar<br />

( lambda (x1 y1 x2 y2 x3 y3 fill n acc )<br />

(if ( positive n)<br />

( let (( x12 (/ (+ x1 x2) 2.0))<br />

( y12 (/ (+ y1 y2) 2.0))<br />

( x13 (/ (+ x1 x3) 2.0))<br />

( y13 (/ (+ y1 y3) 2.0))<br />

( x23 (/ (+ x2 x3) 2.0))<br />

( y23 (/ (+ y2 y3) 2.0)))<br />

( append acc<br />

( list<br />

[ 27 de outubro de 2010 at 15:47 ]<br />

77

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!