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

presente, a operação é feita usando duas portas padrão: “entrada corrente” e “saída corrente”.<br />

Estas duas portas podem ser obtidas pelos procedimentos current-input-port e<br />

current-output-port.<br />

O procedimento display envia um objeto <strong>Scheme</strong> para uma porta, de maneira que<br />

pareça legível para humanos, mas não de forma que possa ser lido novamente pelo<br />

ambiente <strong>Scheme</strong>. Por exemplo, strings são mostradas sem aspas (e portanto da mesma<br />

forma que símbolos).<br />

( let (( out ( open-output-file " saida . txt " )))<br />

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

( display ( next-random 322) out )<br />

( newline out )<br />

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

( close-output-port out ))<br />

O procedimento newline envia para uma porta uma quebra de linha. O trecho acima<br />

gravará, no arquivo saida.txt:<br />

Seu número da sorte é: 2041087718<br />

Tenha um bom dia!<br />

Para escrever apenas um caracter em uma porta de saída, usamos write-char.<br />

O procedimento read-char lê um caracter de uma porta de entrada. Já peek-char<br />

retorna o próximo caracter, mas não o consome.<br />

O procedimento eof-object é usado para verificar se um objeto lido de uma porta<br />

representa o fim de um arquivo.<br />

Os procedimentos read e write são usados para ler e escrever formas <strong>Scheme</strong> em<br />

sua representação externa. Uma forma escrita por write pode ser lida por read: strings<br />

são escritas <strong>com</strong> aspas, caracteres são escritos <strong>com</strong> \#, etc. Para ilustrar a diferença entre<br />

display e write, podemos simplesmente reescrever o trecho anterior usando write:<br />

( let (( out ( open-output-file " saida . txt " )))<br />

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

Versão Preliminar<br />

( write ( next-random 321) out )<br />

( write #\ newline out )<br />

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

( close-output-port out ))<br />

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