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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

notas de aula - Jerônimo C. Pellegrini<br />

1.13 abstração de dados<br />

(esta seção está in<strong>com</strong>pleta)<br />

Para criar um tipo abstrato de dados precisamos de procedimentos para:<br />

• Criar uma objeto deste tipo;<br />

• Verificar se um objeto é deste tipo;<br />

• Verificar se dois objetos deste tipo são iguais;<br />

• Como os objetos deste tipo terão vários <strong>com</strong>ponentes, precisamos de procedimentos<br />

para acessar cada um deles.<br />

1.13.1 Exemplo: números <strong>com</strong>plexos<br />

O padrão <strong>Scheme</strong> define o tipo número <strong>com</strong>plexo, mas sua implementação é opcional.<br />

Faremos nossa própria implementação de números <strong>com</strong>plexos.<br />

( define make-rectangular<br />

( lambda (a b)<br />

( list a b )))<br />

Para determinar se um objeto é um número <strong>com</strong>plexo criamos o procedimento<br />

<strong>com</strong>plex<br />

( define <strong>com</strong>plex <br />

( lambda (x)<br />

( and ( list x)<br />

( number ( car x))<br />

( number ( cadr x )))))<br />

O procedimento <strong>com</strong>plex= verifica se dois <strong>com</strong>plexos são iguais.<br />

( define <strong>com</strong>plex =<br />

( lambda (z1 z2)<br />

Versão Preliminar<br />

( and (= ( real-part z1)<br />

( real-part z2 ))<br />

(= ( imag-part z1)<br />

( imag-part z2 )))))<br />

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

49

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

Saved successfully!

Ooh no, something went wrong!