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

( define ceasar-decrypt<br />

( lambda (s)<br />

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

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

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

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

(ceasar-encrypt "mensagem secreta")<br />

”WOXCKQOWDCOMBODK”<br />

(ceasar-decrypt "WOXCKQOWDCOMBODK")<br />

”MENSAGEMTSECRETA”<br />

Como usamos módulo 26, a tradução só faz sentido para as 26 letras maiúsculas;<br />

perdemos o espaço entre as palavras (e o mesmo acontecerá <strong>com</strong> números e pontuação)! Os<br />

procedimentos que traduzem caracteres só devem modificar aqueles que forem alfabéticos.<br />

Usaremos o procedimento <strong>Scheme</strong> char-alphabetic para realizar esta verificação.<br />

( define ceasar-translate-char<br />

( lambda (c k)<br />

(if ( char-alphabetic c)<br />

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

c )))<br />

(ceasar-encrypt "mensagem secreta")<br />

”WOXCKQOW COMBODK”<br />

(ceasar-decrypt "WOXCKQOW COMBODK")<br />

”MENSAGEM SECRETA”<br />

26))<br />

O ROT13 é uma cifra de César que tornou-se popular em fóruns na Internet para evitar<br />

que trechos de mensagens sejam lidos por distração (por exemplo, respostas de charadas,<br />

descrição de truques para jogos online, partes de filmes e livros). O ROT13 é exatamente<br />

Versão Preliminar<br />

igual ao nosso ceasar-encript se usado <strong>com</strong> k = 13.<br />

k)<br />

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