Skip to content

Um dos produtos finais do Sprint 1 da Laboratória SP 2018-1. Cifra de César.

Notifications You must be signed in to change notification settings

maryfsc/sprint1-produto-final-cifra

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 

Repository files navigation

sprint1-produto-final-cifra

Um dos produtos finais do Sprint 1 da Laboratória SP 2018-1. Cifra de César.

Fluxograma de encriptador de mensagem usando Cifra de César

No evento de clique no botão do formulário HTML, inicia a função JavaScript cipher().

Variável userInput é criada, obtendo o valor do input de texto do usuário no formulário HTML.

Na condicional, se userInput for uma string vazia, retorna o alerta 'Digite sua palavra!'.

Caso contrário, verifica-se se essa string possui números através de um loop com o contador de 0 a 9, ou menos de 10. Se for encontrado um número maior que -1 usando indexOf, significa que a string possui números. Logo, exibe o alerta 'Digite somente letras!'.

Dando prosseguimento à função, uma vez que contenha uma string somente com letras.

Uma array vazia lettersCodes é criada.

Por meio de um loop em userInput, cria-se uma variável code que recebe o código ASCII de cada elemento da string, usando charCodeAt(). Por meio do método push(), lettersCodes recebe code, se tornando uma array de códigos ASCII para cada letra de userInput.

Cria-se uma array vazia cipherLettersCodes, uma varíavel indefinida cipherCodeNumber, e ainda outra variável indefinida cipherCode.

Através de um loop em lettersCodes, verifica-se no controle de fluxo se o elemento contido no index atual de lettersCodes está dentro de um range de maior ou igual a 65 ou menor ou igual a 90, obtendo dessa forma a verificação se o código ASCII a ser tratado é de uma letra maiúscula.

Caso true, cipherCodeNumber recebe o resultado da fórmula (elemento do index atual de lettersCodes - 65 + 33) % 26 + 65, para verificar por qual ASCII de letra maiúscula o original será substituído.

cipherCode recebe o resultado deste cálculo, e aplica-se String.fromCharCode() para descobrir qual letra corresponde ao código ASCII obtido.

Por meio de um push(), cipherLettersCodes recebe a letra já encriptografada.

Na outra condição, se o elemento da posição atual de lettersCodes estiver no range definido de maior ou igual a 97 ou menor ou igual a 122, obtem-se a verificação se o código ASCII a ser tratado é de uma letra minúscula.

Caso true, cipherCodeNumber recebe a fórmula (elemento do index atual de lettersCode - 97 + 33) % 26 + 97, para verificar por qual ASCII de letra minúscula o ASCII original será substituído.

cipherCode recebe o resultado do cálculo, aplicando String.fromCharCode() para descobrir qual letra corresponde ao ASCII obtido.

cipherLettersCodes recebe a letra encriptografada por meio de um push().

Cria-se a variável encryptedMessage, que recebe cipherLettersCodes, antes um array de letras encriptografadas, agora uma string unida por join('').

Cria-se a variável printMessage, que recebe o elemento HTML de id 'message'.

A função retorna printMessage com uma mensagem no HTML contendo 'Sua mensagem é ' mais a varíavel encryptedMessage, seguido de '!'.

Encerra-se a função.

O código contém a função decipher(), que contém um parâmetro userWord.

No controle de fluxo, verifica-se se userWord é uma string vazia. Caso true, retorna o alerta 'Digite sua palavra!'.

Caso false, verifica-se por meio de um loop com o contador de 0 a 9, ou menor que 10, se userWord possui números. Se for encontrado um número maior que -1 usando indexOf, significa que a string possui números. Logo, exibe o alerta 'Digite somente letras!'.

Dando prosseguimento à função, uma vez que contenha uma string somente com letras.

Cria-se uma array vazia decipherLettersCodes.

Usando um loop em userWord, cria-se uma variável decipherCode que recebe o código ASCII do elemento em questão, usando charCodeAt(). decipherLettersCodes recebe esse código por meio de um push().

Cria-se uma array vazia arrDecipherCodes. Criam-se as variáveis indefinidas decipherCodeNumber e decipherCode.

Por meio de um loop, verifica-se se o código ASCII da posição atual de decipherLettersCodes está no range de maior ou igual a 65 ou menor ou igual a 90, obtendo assim a verificação se a letra é maiúscula.

Caso true, decipherCodeNumber recebe o elemento no index atual de decipherLettersCodes - 7, para fazer com que a letra "volte" 7 posições no alfabeto.
Por meio de um if, se o resultado for menor que 65, acrescenta-se 26, para que retorne o código da letra que será a substituição.

decipherCode recebe String.fromCharCode recebendo o resultado das operações contido em decipherCodeNumber, para encontrar a letra que fará a substituição.

Por meio de um push(), arrDecipherCodes recebe a letra já encriptografada.

Na outra condição, verifica-se se o código ASCII da posição atual de decipherLettersCodes está no range de maior ou igual a 97 ou menor ou igual a 122, obtendo assim a verificação se a letra é minúscula.

Caso true, decipherCodeNumber recebe o elemento no index atual de decipherLettersCodes - 7, para fazer com que a letra "volte" 7 posições no alfabeto.
Por meio de um if, se o resultado for menor que 97, acrescenta-se 26, para que retorne o código da letra que será a substituição.

decipherCode recebe String.fromCharCode recebendo o resultado das operações contido em decipherCodeNumber, para encontrar a letra que fará a substituição.

Por meio de um push(), arrDecipherCodes recebe a letra já encriptografada.

Cria-se uma varíavel decipheredMessage, recebendo arrDecipherCodes, antes uma array de letras, agora unida por meio de join('').

Retorna decipheredMessage, uma string com a mensagem original encriptografada agora descodificada.

Encerra-se a função.

About

Um dos produtos finais do Sprint 1 da Laboratória SP 2018-1. Cifra de César.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published