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

b )))<br />

(/ numerador (* 2 a )))))<br />

Um procedimento <strong>Scheme</strong> que retorna a lista (possivelmente vazia) de soluções para<br />

a equação teria que verificar o discriminante antes de usar o procedimento raiz – de<br />

outra forma haveria a tentativa de calcular a raiz quadrada de um número negativo, que<br />

não é real. O resultado da chamada de procedimento (raizes-grau-2 a b c) deve ser:<br />

⎧<br />

(list (raiz a b c +) (raiz a b c -)) se ∆ > 0<br />

⎪⎨<br />

(list (/ (- b) (* 2 a))) se ∆ = 0<br />

⎪⎩ (list) se ∆ < 0<br />

A forma especial cond escolhe uma dentre várias formas <strong>Scheme</strong>, e pode ser usada<br />

para escolher que forma será avaliada e devolvida <strong>com</strong>o valor do procedimento:<br />

( define raizes-grau-2<br />

( lambda (a b c)<br />

( let (( delta ( discriminante a b c )))<br />

( display delta )( newline )<br />

( cond (( positive delta )<br />

( list ( raiz a b c delta +)<br />

(( zero delta )<br />

A forma geral do cond é<br />

( raiz a b c delta -)))<br />

( list (/ (- b) (* 2 a ))))<br />

( else ( list ))))))<br />

( cond ( teste1 forma1-1<br />

forma1-2<br />

...)<br />

( teste2 forma2-1<br />

...<br />

forma2-2<br />

...)<br />

Versão Preliminar<br />

( else forma-else-1<br />

forma-else-2<br />

...))<br />

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

19

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

Saved successfully!

Ooh no, something went wrong!