Skip to content
This repository has been archived by the owner on Jan 8, 2020. It is now read-only.

modificando-js-Longhi-Valverde #70

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
98 changes: 41 additions & 57 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,57 +1,41 @@
# Cifrado César

> Recuerda seguir siempre esta [guía de estilos](https://github.com/Laboratoria/js-style-guide/)

Crea una web que pida, por medio de un `prompt()`, una frase al usuario y
devuelva el mismo mensaje encriptado según el
[algoritmo de Cifrado César](https://en.wikipedia.org/wiki/Caesar_cipher)
con el parámetro de desplazamiento de **33 espacios hacia la derecha**

Por ejemplo:

- Texto original: `ABCDEFGHIJKLMNOPQRSTUVWXYZ`
- Texto codificado: `HIJKLMNOPQRSTUVWXYZABCDEFG`

## Entregables

Para cada producto debes entregar **un repositorio de GitHub** que
contenga:
1. Archivo `README.md` que explique el **pseudocódigo** de tu solución y su
**diagrama de flujo**
2. Archivo `app.js` con el **código** de tu solución
3. Archivo `index.html` vinculado con tu `app.js`

## Tips

A continuación un video de Michelle que te lleva a través de la fórmula
matemática del Cifrado César y un par de cosas más que debes saber para
resolver este reto. ¡Escúchala con detenimiento y sigue sus consejos! :)

[![tips caesar cipher](https://img.youtube.com/vi/zd8eVrXhs7Y/0.jpg)](https://www.youtube.com/watch?v=zd8eVrXhs7Y)

También te compartimos más información de lo que Michelle te ha explicado
en el video anterior:

- [Aprende más sobre `charCodeAt()`](https://developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Objetos_globales/String/charCodeAt)
- [Aprende más sobre `String.fromCharCode()`](https://developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Objetos_globales/String/fromCharCode)
- [Aprende más sobre `ASCII`](http://conceptodefinicion.de/ascii/)

## Consideraciones específicas

1. Tu programa debe ser capaz de cifrar y descifrar tanto letras
mayúsculas como minúsculas. La fórmula para descifrar es: `(x - n) % 26`
2. Tu código debe estar compuesto por 2 funciones con los siguientes
nombres: `cipher` y `decipher`
3. El usuario no debe poder ingresar un campo vacío o que contenga números

## Criterios de evaluación

Se tomarán en cuenta las siguientes consideraciones a la hora de evaluar tu solución:

1. Nombramiento de variables
2. Indentación
3. Validación de input: el usuario no debe poder ingresar un campo vacío o de tipo que no corresponda
4. Estructura de tus archivos
5. Archivo `README.md` correctamente redactado
6. Uso de comentarios para hacer tu código más legible
7. Que el programa cumpla con el propósito requerido
# CIFRADO Cesar
#### SE CREA DOS FUNCIONES


#SE CREA DOS FUNCIONES
1. Primera **function cipher(){** que se hace para cifrar y se hace una **var** lo nombramos **sentence** es igual a un **prompt("Ingrese la frase que desea cifrar ");**

Se crea otra **var** nombrado **convertEncrypt** es igual a **sentence.split('');**
la **var** se nombra **pushEnncrypt** es igual aun array vacio **[];**
media un **for(var i** es igual **0;** **i**menor a **convertEncrypt.length;** i++){
la **var** nombrado **newcharacterPosition** es igual **convertEncrypt[i].charCodeAt();** utilizamos la formula para encriptar **var** nombrado **characterPosition** es igual **((newcharacterPosition** menos **65** más **33)** modulo **26** más **65);**
devuelve una cadena creada mediante el uso de una secuencia de valores DE LA FORMULA QUE HICIMOS ARRIBA
**var pushPosition=characterPosition.String.fromCharCode(characterPosition);**
AHORA AGREGAMOS Y JUNTAMOS LO CIFRADO EN EL ARRAY VACIO
**pushEnncrypt.push(pushPosition) && pushEnncrypt.join(pushPosition)**
}
y **return pushEnncrypt()**
}
llamamos la funcion **cipher()**

#SEGUNDA FUNCION QUE DECIFRA

2. la **function** llamada **decipher(){** ENTRAR UN PROMPT PARA QUE EL USUARIO ME DEVUELVA LO QUE SE LE indica
con **var** nombrado **phrase** es igual **prompt("Ingresa lo que deseas decifrar");**
LOS CARACTERES INGRESADOS SE SEPARAN mediante un **var phraseSplit** es igual a **phrase.split();**
COLOCAMOS UN ARRAY VACIO PARA LUEGO EL DECIFRADO ENTRE **var pushDecipher** es igual a [];
MEDIANTE UN FOR LO QUE INGRESO EL USUARIO COMENZARA A CONTAR UNO POR UNO
**for (var i=0; i<phraseSplit.length;i++){**
EL INDICE ES tODO LO QUE ENTRA EL USUARIO
**var newDecipher=phraseSplit[i];**
SE PONE LA FORMULA PARA DECIFRARLO
**var starDecipher=(newDecipher - 33) % 26;**
EL RESULTADO SE AGREGA Y JUNTA LOS CARACTERES AL ARRAY VACIO
**pushDecipher.push(starDecipher) && pushDecipher.join(starDecipher);
}**
y **return pushDecipher()** RETONAR AL ARRAR VACIO
**}**
**decipher()** llamamos a la function


diagrama de flujo ![diagrama de flujo](assets/docs/diagrama.png)
Binary file added assets/docs/diagrama.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
12 changes: 12 additions & 0 deletions index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>algoritmo de cifrado cesar</title>
</head>
<body>
<script type="text/javascript" src="js/app.js">

</script>
</body>
</html>
24 changes: 24 additions & 0 deletions js/.eslintrc.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
module.exports = {
"env": {
"browser": true
},
"extends": "eslint:recommended",
"rules": {
"indent": [
"warn",
2
],
"linebreak-style": [
"error",
"windows"
],
"quotes": [
"error",
"single"
],
"semi": [
"error",
"always"
]
}
};
66 changes: 66 additions & 0 deletions js/app.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
//crea una funcion que contiene la funcion a ejecutar si el usuario desea cifrar o descifrar una frase
function menu(option) {
//condicionamos cada opción
(option === 1) ? cipher() : (option === 2) ? decipher() : (option === 3) ? alert('HASTA PRONTO') : alert('No existe esa opcion');
}
// Muestra mensaje al usuario
do {
var strMenu = 'BIENVENIDO AL CIFRADO CESAR \n **Escriba 1 para cifrar una frase \n **Escriba 2 para descifrar una frase \n **Escriba 3 para salir';
//convierte a entero la opcion ingresada
var option = parseInt(prompt(strMenu));
//llama a la funcion menu
menu(option);
}//hace esto mientras el usuario ingrese opciones del 1 al 3 y sea de tipo numerico
while (option != 3 && option != NaN);



// SE CREA DOS FUNCIONES //
// PRIMERA FUNCION QUE CIFRE //
function cipher() {
// MEDIO DE UN PROMPT EL USUARIO DARA SU FRASE//
var sentence = prompt('Ingrese la frase que desea cifrar');
// LA FRASE Y SEPARAMOS POR CADA CARACTER
var convertEncrypt = sentence.split('');
// AGREGARE UN ARRAY VACIO PARA QUE ENTRE LOS CARACTERES ENCRIPTADOS
var pushEnncrypt = [];
// ENCRIPTAR UNO POR UNO MEDIANTE UN FOR
for (var i = 0; i < convertEncrypt.length;i++) {
// SE HACE UNA NUEVA variable QUE LA FRASE devuelve un número indicando
// el valor Unicode del carácter en el índice proporcionado
var newcharacterPosition = convertEncrypt[i].charCodeAt();
// utilizamos la formula para encriptar
var characterPosition = ((newcharacterPosition - 65 + 33) % 26 + 65);
// devuelve una cadena creada mediante el uso de una secuencia de valores // DE LA FORMULA QUE HICIMOS ARRIBA
var pushPosition = String.fromCharCode(characterPosition);
// AHORA AGREGAMOS Y JUNTAMOS LO CIFRADO EN EL ARRAY VACIO
pushEnncrypt.push(pushPosition) && pushEnncrypt.join(pushPosition);
}
//retorna alerta con el texto encriptado
var info = alert('La frase encriptada es ' + pushEnncrypt.join(''))

}
cipher();

// SEGUNDA FUNCION QUE DECIFRA
function decipher() {
// ENTRAR UN PROMPT PARA QUE EL USUARIO ME DEVUELVA LO QUE SE LE indica
var phrase = prompt('Ingresa lo que deseas decifrar');
// LOS CARACTERES INGRESADOS SE SEPARAN
var phraseSplit = phrase.split();
// COLOCAMOS UN ARRAY VACIO PARA LUEGO EL DECIFRADO ENTRE
var pushDecipher = [];
// MEDIANTE UN FOR LO QUE INGRESO EL USUARIO COMENZARA A CONTAR UNO POR UNO
for (var i = 0; i < phraseSplit.length; i++) {
// EL INDICE ES tODO LO QUE ENTRA EL USUARIO
var newDecipher = phraseSplit[i];
// SE PONE LA FORMULA PARA DECIFRARLO
var starDecipher = (newDecipher - 33) % 26;
// EL RESULTADO SE AGREGA Y JUNTA LOS CARACTERES AL ARRAY VACIO
pushDecipher.push(starDecipher) && pushDecipher.join(starDecipher);
}
//retorna alerta con el texto desencriptado
var info = alert('La frase desencriptada es ' + pushDecipher.join(''))

}
decipher();