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

Jerônimo C. Pellegrini<br />

Precisamos de um let a mais, porque se a última forma fosse (close-input-port in)<br />

o valor de retorno do procedimento seria o valor que ela retorna. Por isso guardamos o<br />

valor lido por read em uma variável temporária db e a retornamos depois.<br />

With-input-from-file e with-output-to-file executam um procedimento (sem<br />

argumentos) modificando a entrada e saída padrão.<br />

( with-output-to-file " saida . txt "<br />

( lambda ()<br />

( display " Seu nú mero da sorte é: ")<br />

( display ( next-random 111))<br />

( newline )<br />

( display " Tenha um bom dia !" )))<br />

O código abaixo lerá o conteúdo do arquivo saida.txt e o mostrará na porta de saída<br />

corrente.<br />

( with-input-from-file " saida . txt "<br />

( lambda ()<br />

( let loop ((c ( read-char )))<br />

(if ( not ( eof-object c))<br />

( begin ( display c)<br />

( loop ( read-char )))))))<br />

É muitas vezes inconveniente usar diversas chamadas a display e newline para<br />

mostrar muitos objetos. Para isso poderíamos criar então dois procedimentos, print e<br />

print-line, que recebem uma lista de argumentos e usa display para mostrar cada um.<br />

( define print-list<br />

( lambda ( lst )<br />

(if ( not ( null lst ))<br />

( begin ( display ( car lst ))<br />

( print-list ( cdr lst ))))))<br />

Versão Preliminar<br />

( define print<br />

( lambda objetos<br />

( print-list objetos )))<br />

( define print-line<br />

( lambda objetos<br />

( print-list objetos )<br />

64<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!