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 - Jerônimo C. Pellegrini<br />

(vector->list v)<br />

(10 )<br />

(list->vector ’("abc"#\d #\e 10)<br />

#(”abc” #\d #\e 10)<br />

3.5.1 Iteração <strong>com</strong> do<br />

Embora iterar sobre vetores seja muito simples <strong>com</strong> named let, é hábito <strong>com</strong>um o uso de<br />

outra forma especial para fazê-lo.<br />

A forma especial do aceita duas listas de argumentos seguidas de formas <strong>Scheme</strong>.<br />

A primeira lista descreve as variáveis do loop, suas formas iniciais e as funções que as<br />

modificam. A segunda lista descreve o teste de parada e o valor de retorno.<br />

A forma geral do do é<br />

(do ( ( var1 inicio1 modifica1 )<br />

( var2 inicio2 modifica2 )<br />

... )<br />

( teste resultado )<br />

forma1<br />

forma2<br />

... )<br />

O exemplo a seguir inicializa i <strong>com</strong> 1, x <strong>com</strong> a lista vazia, e segue iterando até<br />

que i seja igual a dez. Após cada iteração, i passa a ser (+ i 1) e x passa a ser<br />

(cons (* i 2) x).<br />

(do ((i 1 (+ i 1))<br />

(x ’() ( cons (* i 2) x )))<br />

((= i 10) ’final )<br />

( display i)<br />

( display ": ")<br />

Versão Preliminar<br />

( display x)<br />

( newline ))<br />

98<br />

[ 27 de outubro de 2010 at 15:47 ]

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

Saved successfully!

Ooh no, something went wrong!