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 />

Ao pedir o valor do fatorial de um número, é necessário também enviar um endereço<br />

postal para onde o valor deve ser enviado.<br />

def: fatorial<br />

mensagens:<br />

FAT: (n, cliente)<br />

<strong>com</strong>andos:<br />

casos para msg:<br />

FAT:<br />

se n = 0 então<br />

send 1 to cliente<br />

senão<br />

// multiplicador aceitará k, enviará nk ao cliente<br />

c ← new multiplicador (n, cliente)<br />

send [ FAT (n − 1), c ] to self<br />

O <strong>com</strong>portamento fatorial usa a variável self, que tem um significado especial: é o<br />

endereço postal do próprio ator.<br />

Presumindo que o ator que multiplicador age corretamente, podemos provar por<br />

indução que fatorial sempre retornará o fatorial do número n enviado a ele.<br />

Este é um exemplo didático apenas: existem maneiras mais eficientes de calcular o<br />

fatorial de um número de forma concorrente.<br />

13.2.2.2 Pilha <strong>com</strong> troca de mensagens<br />

Uma pilha pode ser implementada <strong>com</strong> atores, onde cada ator representa um elemento<br />

empilhado.<br />

Versão Preliminar<br />

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

293

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

Saved successfully!

Ooh no, something went wrong!