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

Jerônimo C. Pellegrini<br />

( define char- > ceasar-idx<br />

( lambda (x)<br />

( let ((a ( char- > integer #\A)))<br />

(- ( char- > integer x) a ))))<br />

( define ceasar-idx- > char<br />

( lambda (x)<br />

( let ((a ( char- > integer #\A)))<br />

( let ((b (+ x a )))<br />

( integer- > char b )))))<br />

(char->ceasar-idx #\B)<br />

1<br />

O procedimento ceasar-translate-char faz o deslocamento do caracter.<br />

( define ceasar-translate-char<br />

( lambda (c k)<br />

( ceasar-idx- > char ( modulo (+ (char- > ceasar-idx c)<br />

k)<br />

26))))<br />

(ceasar-translate-char #\B 10)<br />

#\L<br />

Para decifrar o caracter deslocamos no sentido contrário:<br />

(ceasar-translate-char #\L -10)<br />

#\B<br />

Versão Preliminar<br />

Para cifrar e decifrar mensagens criamos procedimentos que deslocam caracteres e<br />

usamos string-map para aplicá-los sobre a mensagem:<br />

( define ceasar-encrypt<br />

( lambda (s)<br />

( let (( ceasar-enc-10 ( lambda (c)<br />

( ceasar-translate-char c 10))))<br />

( string-map ceasar-enc-10<br />

( string-upcase s )))))<br />

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

43

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

Saved successfully!

Ooh no, something went wrong!