Code Monkey home page Code Monkey logo

sprint1-produto-final-cifra's Introduction

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.

sprint1-produto-final-cifra's People

Contributors

maryfsc avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.