瀏覽代碼

README-es.md edited online with Bitbucket

Jose R Ortiz Ubarri 8 年之前
父節點
當前提交
a507bcdb85
共有 1 個文件被更改,包括 32 次插入29 次删除
  1. 32
    29
      README-es.md

+ 32
- 29
README-es.md 查看文件

@@ -5,9 +5,9 @@
5 5
 ![main2.png](images/main2.png)
6 6
 ![main3.png](images/main3.png)
7 7
 
8
-[Verano 2016 - Ive]
8
+[Verano 2016 - Ive- Tatiana]
9 9
 
10
-Una de las ventajas de utilizar programas de computadoras es que podemos realizar tareas repetitivas fácilmente. Los ciclos como `for`, `while`, y `do-while` son  estructuras de control que nos permiten repetir un conjunto de instrucciones. A estas estructuras también se les llama *estructuras de repetición*. En la experiencia de laboratorio de hoy utilizarás ciclos `for`  para completar una aplicación de cifrado.
10
+Una de las ventajas de utilizar programas de computadoras es que podemos realizar tareas repetitivas fácilmente. Los ciclos como `for`, `while`, y `do-while` son estructuras de control que nos permiten repetir un conjunto de instrucciones. A estas estructuras también se les llama *estructuras de repetición*. En la experiencia de laboratorio de hoy utilizarás ciclos `for` para completar una aplicación de cifrado.
11 11
 
12 12
 ## Objetivos:
13 13
 
@@ -20,7 +20,7 @@ Antes de llegar al laboratorio debes haber:
20 20
 
21 21
 1. Repasado los conceptos básicos relacionados a estructuras de repetición.
22 22
 
23
-2. Repasado conceptos básicos de la clase `string` de C++,las funciones `length`, `toupper` y `push_back`, `isalpha` y las operaciones aritméticas con caracteres.
23
+2. Repasado conceptos básicos de la clase `string` de C++, las funciones `length`, `toupper` y `push_back`, `isalpha` y las operaciones aritméticas con caracteres.
24 24
 
25 25
 3. Visto el video sobre el "Ceasar Cypher" del Khan Academy, colocado en <https://www.youtube.com/watch?v=sMOZf4GN3oc>.
26 26
 
@@ -28,7 +28,7 @@ Antes de llegar al laboratorio debes haber:
28 28
 
29 29
 5. Estudiado los conceptos e instrucciones para la sesión de laboratorio.
30 30
 
31
-6. Tomado el quiz Pre-Lab disponible en Moodle.
31
+6. Tomado el quiz Pre-Lab, disponible en Moodle.
32 32
 
33 33
 
34 34
 ---
@@ -37,7 +37,7 @@ Antes de llegar al laboratorio debes haber:
37 37
 
38 38
 ## Criptografía 
39 39
 
40
-La *criptografía* es un área que estudia la teoría y los métodos utilizados para proteger información de modo que personas que no estén autorizadas no puedan tener acceso a ella. Un *sistema criptográfico* es un sistema en el que la información (*mensaje* entendible por humanos)  es tranformada a un texto cifrado inentendible para las personas no autorizadas a verlo. Las personas autorizadas a ver el mensaje usan un *descifrador* para revertir el texto cifrado al mensaje original.  
40
+La *criptografía* es un área que estudia la teoría y los métodos utilizados para proteger información de modo que personas que no estén autorizadas no puedan tener acceso a ella. Un *sistema criptográfico* es un sistema en el que la información (*mensaje* entendible por humanos)  es transformada a un texto cifrado inentendible para las personas no autorizadas a verlo. Las personas autorizadas a ver el mensaje usan un *descifrador* para revertir el texto cifrado al mensaje original.  
41 41
 
42 42
 ### El Cifrado César (Ceasar Cypher)
43 43
 
@@ -47,7 +47,7 @@ El Cifrado César es una técnica muy simple de cifrado por sustitución. Se dic
47 47
 
48 48
 ![figure1.png](images/figure1.png)
49 49
 
50
-**Figura 1.** Cifrador César con desplazamiento de 3 espacios.
50
+**Figura 1.** Cifrado César con desplazamiento de 3 espacios.
51 51
 
52 52
 ---
53 53
 
@@ -57,13 +57,13 @@ El Cifrado César es una técnica muy simple de cifrado por sustitución. Se dic
57 57
 
58 58
 ![figure2.png](images/figure2.png)
59 59
 
60
-**Figura 2.** Disco para cifrador César que muestra un desplazamiento de 8 espacios.
60
+**Figura 2.** Disco para cifrado César que muestra un desplazamiento de 8 espacios.
61 61
 
62 62
 ---
63 63
 
64 64
 ### Utilizando el operador módulo
65 65
 
66
-La operación de suma modular es esencial para implementar sistemas de cifrado en programación. En la aplicación de cifrado César de arriba podemos pensar que a cada letra del alfabeto (en inglés) le asignamos un número entre 0 y 25 (La `A` es 0, la`B` es 1, …, la `Z` es 25). El cifrador César convierte cada letra al número correspondiente en el intervalo [0, 25] y luego suma el desplazamiento. Para hacer el desplazamiento cíclico, cada vez que nuestro desplazamiento nos dé una letra que corresponda a un número mayor que 25, tomamos el residuo al dividir por 26 y usamos la letra que corresponda a ese residuo. Nota que tomar el residuo al dividir por 26 los resultados estarán entre 0 y 25, que son los valores asociados al alfabeto.
66
+La operación de suma modular es esencial para implementar sistemas de cifrado en programación. En la aplicación de cifrado César de arriba podemos pensar que a cada letra del alfabeto (en inglés) le asignamos un número entre 0 y 25 (La `A` es 0, la`B` es 1, …, la `Z` es 25). El cifrado César convierte cada letra al número correspondiente en el intervalo [0, 25] y luego suma el desplazamiento. Para hacer el desplazamiento cíclico, cada vez que nuestro desplazamiento nos dé una letra que corresponda a un número mayor que 25, tomamos el residuo al dividir por 26 y usamos la letra que corresponda a ese residuo. Nota que tomar el residuo al dividir por 26 los resultados estarán entre 0 y 25, que son los valores asociados al alfabeto.
67 67
 
68 68
 El residuo al dividir dos números enteros se puede obtener utilizando el operador de *módulo*: `%`.
69 69
 
@@ -71,12 +71,12 @@ Volviendo al Ejemplo 1, en la palabra "ARROZ", a la letra ‘Z’ le corresponde
71 71
 
72 72
 El proceso de arriba funciona si podemos asociar las letras de la ‘A’ a la ‘Z’ con los números del `0` al `25`. Esto se logra utilizando el valor numérico de los caracteres. Como en  el código ASCII el valor de las letras ‘A’ a la ‘Z’ va desde 65 hasta 90,  necesitamos hacer un ajuste en el cómputo de modo que a la `A` se le asigne `0`. Para convertir una letra mayúscula a un número en el intervalo [0, 25] solo tenemos que restar 65 (`’A’ - 65 = 0`, `’Z’ - 65 = 25`). Para cambiar un valor en el intervalo [0, 25] a la letra mayúscula que corresponde en el código ASCII solo tenemos que sumar 65 al número. Por ejemplo, el número 3 corresponde a la letra cuyo código ASCII es $3 + 65 = 68$, la letra ‘D’.
73 73
 
74
-La Figura 3 muestra el pseudocódigo para una algoritmo para el cifrador César. Cada letra ‘c’ en el mensaje se convierte a un número en el intervalo [0, 25] (restándole ‘A’), luego se hace el desplazamiento de d unidades al número (sumando d módulo 26). Finalmente se convierte el resultado al caracter correspondiente sumando el código ASCII de ‘A’.
74
+La Figura 3 muestra el pseudocódigo para una algoritmo para el cifrado César. Cada letra ‘c’ en el mensaje se convierte a un número en el intervalo [0, 25] (restándole ‘A’), luego se hace el desplazamiento de `d` unidades al número (sumando `d` módulo 26). Finalmente se convierte el resultado al carácter correspondiente sumando el código ASCII de ‘A’.
75 75
 
76 76
 ---
77 77
 
78 78
 ```cpp
79
-    Datos de entrada: un "string" de mensaje, la cantidad de desplazamiento d 
79
+    Datos de entrada: un "string" de mensaje, la cantidad de desplazamiento `d` 
80 80
     Datos de salida: el mensaje cifrado usando cifrado César 
81 81
 
82 82
     1. cypheredText = ""
@@ -88,19 +88,19 @@ La Figura 3 muestra el pseudocódigo para una algoritmo para el cifrador César.
88 88
     3. devuelve ("return") cypheredText 
89 89
 ```
90 90
 
91
-**Figura 3.** Pseudo-código para cifrar utilizando un cifrador César.
91
+**Figura 3.** Pseudo-código para cifrar utilizando un cifrado César.
92 92
 
93 93
 ---
94 94
 
95
-El cifrado César no es muy seguro ya que puede descifrarse fácilmente con un análisis de frecuencia. Por ejemplo, se sabe que en el idioma inglés la letra ‘e’ es la letra más frecuente en un texto. Si buscamos la letra que más se repite en un texto cifrado con un cifrador César, lo más probable es que esa fue la letra que se sustituyó por la ‘e’; con esto podemos deducir cuál fue desplazamiento utilizado y así descifrar el mensaje.
95
+El cifrado César no es muy seguro ya que puede descifrarse fácilmente con un análisis de frecuencia. Por ejemplo, se sabe que en el idioma inglés la letra ‘e’ es la letra más frecuente en un texto. Si buscamos la letra que más se repite en un texto cifrado con un cifrado César, lo más probable es que esa fue la letra que se sustituyó por la ‘e’; con esto podemos deducir cuál fue desplazamiento utilizado y así descifrar el mensaje.
96 96
 
97 97
 
98 98
 
99 99
 ### El Cifrado Vigenere 
100 100
 
101
-La debilidad principal del cifrador César es que cada letra en el mensaje se desplaza por el mismo número de posiciones. El cifrado Vigenere es un método de cifrado un poco más fuerte porque el desplazamiento en cada letra no es constante. El cifrado César recibe como datos de entrada el mensaje y un desplazamiento, mientras que el cifrado Vigenere recibe como dato de entrada el mensaje y una **clave** que determina el desplazamiento que se le hará a cada letra del mensaje.
101
+La debilidad principal del cifrado César es que cada letra en el mensaje se desplaza por el mismo número de posiciones. El cifrado Vigenere es un método de cifrado un poco más fuerte porque el desplazamiento en cada letra no es constante. El cifrado César recibe como datos de entrada el mensaje y un desplazamiento, mientras que el cifrado Vigenere recibe como dato de entrada el mensaje y una **clave** que determina el desplazamiento que se le hará a cada letra del mensaje.
102 102
 
103
-**Ejemplo 2.** Supongamos por el momento que tanto el mensaje como la clave tienen el mismo largo. Por ejemplo, suponga que el mensaje es "COSAS" y la palabra clave es "MENOR". La letra ‘C’ se parea con la letra ‘M’, la letra ‘O’ se parea con la letra ‘E’, la ‘S’ con la ‘N’, etcétera, como en la figura de abajo. Como la letra ‘A’ corresponde a un desplazamiento de 0 espacios, entonces la letra ‘M’ corresponde a un desplazamiento de 12 espacios, la ‘E’ a un desplazamiento de 4 espacios, etc. Utilizando la palabra clave "MENOR", el cifrador Vigenere hará un desplazamiento de 12 espacios a la letra ‘C’, un desplazamiento de 4 espacios a la letra ‘O’, etc., hasta obtener la palabra cifrada "OSFOJ" como se muestra en la Figura 4. 
103
+**Ejemplo 2.** Supongamos por el momento que tanto el mensaje como la clave tienen el mismo largo. Por ejemplo, suponga que el mensaje es "COSAS" y la palabra clave es "MENOR". La letra ‘C’ se parea con la letra ‘M’, la letra ‘O’ se parea con la letra ‘E’, la ‘S’ con la ‘N’, etcétera, como en la figura de abajo. Como la letra ‘A’ corresponde a un desplazamiento de 0 espacios, entonces la letra ‘M’ corresponde a un desplazamiento de 12 espacios, la ‘E’ a un desplazamiento de 4 espacios, etc. Utilizando la palabra clave "MENOR", el cifrado Vigenere hará un desplazamiento de 12 espacios a la letra ‘C’, un desplazamiento de 4 espacios a la letra ‘O’, etc., hasta obtener la palabra cifrada "OSFOJ" como se muestra en la Figura 4. 
104 104
 
105 105
 ---
106 106
 
@@ -113,13 +113,13 @@ La debilidad principal del cifrador César es que cada letra en el mensaje se de
113 113
 
114 114
 ---
115 115
 
116
-Podemos visualizar un cifrador Vigenere utilizando una tabla como la de la Figura 5. Nota que lo que se hace es usar un cifrador César con un desplazamiento diferente para cada letra del mensaje.
116
+Podemos visualizar un cifrado Vigenere utilizando una tabla como la de la Figura 5. Nota que lo que se hace es usar un cifrado César con un desplazamiento diferente para cada letra del mensaje.
117 117
 
118 118
 ---
119 119
 
120 120
 ![figure6.png](images/figure6.png)
121 121
 
122
-**Figura 5.** Tabla para cifrador Vigenere.
122
+**Figura 5.** Tabla para el cifrado Vigenere.
123 123
 
124 124
 ---
125 125
 
@@ -143,13 +143,13 @@ El programa que estarás modificando en la sesión de hoy utiliza los siguientes
143 143
 
144 144
 * `length`: Devuelve el largo de un objeto de la clase `string`; esto es, `length` devuelve el número de caracteres que tiene el "string". Se utiliza escribiendo `.length()` después del nombre del objeto.
145 145
 
146
-* `push_back`: Este método recibe un caracter como argumento y lo añade al final del “string”. Se utiliza escribiendo `.push_back(elCaracter)` después del nombre del “string”. Por ejemplo, para añadir el caracter 'a' a  un objeto de la clase `string` llamado  `cadena`, escribimos `cadena.push_back('a')`.
146
+* `push_back`: Este método recibe un carácter como argumento y lo añade al final del “string”. Se utiliza escribiendo `.push_back(elCaracter)` después del nombre del “string”. Por ejemplo, para añadir el carácter 'a' a  un objeto de la clase `string` llamado  `cadena`, escribimos `cadena.push_back('a')`.
147 147
 
148 148
 También utilizaremos las funciones:
149 149
 
150
-* `toupper`: Esta función recibe como argumento un caracter y devuelve el caracter en mayúscula. Por ejemplo, para cambiar el caracter 'a' a mayúscula se utiliza `toupper('a')`.
150
+* `toupper`: Esta función recibe como argumento un carácter y devuelve el caracter en mayúscula. Por ejemplo, para cambiar el carácter 'a' a mayúscula se utiliza `toupper('a')`.
151 151
 
152
-* `isalpha`: Esta función recibe como argumento un caracter y devuelve un valor distinto de cero (`true`) si el caracter es una letra y cero (`false`) si el caracter no es una letra. Por ejemplo, `isalpha(3)` devuelve "false" pero `isalpha(‘F’)` devuelve `true`.
152
+* `isalpha`: Esta función recibe como argumento un carácter y devuelve un valor distinto de cero (`true`) si el carácter es una letra y cero (`false`) si el carácter no es una letra. Por ejemplo, `isalpha(3)` devuelve `false` pero `isalpha(‘F’)` devuelve `true`.
153 153
 
154 154
 
155 155
 ---
@@ -174,9 +174,9 @@ También utilizaremos las funciones:
174 174
 
175 175
 ## Sesión de laboratorio:
176 176
 
177
-En esta experiencia de laboratorio completarás una aplicación para cifrar un mensaje de texto utilizando el cifrado Vigenere. Para simplificar el código, la clave y el mensaje deben consistir solo de letras y tu programa debe cambiar todas las letras del mensaje y la clave a mayúsculas.
177
+En esta experiencia de laboratorio, completarás una aplicación para cifrar un mensaje de texto utilizando el cifrado Vigenere. Para simplificar el código, la clave y el mensaje deben consistir sólo de letras y tu programa debe cambiar todas las letras del mensaje y la clave a mayúsculas.
178 178
 
179
-### Ejercicio 1 - Cifrador con clave y mensaje del mismo largo (solo letras)
179
+### Ejercicio 1 - Cifrado con clave y mensaje del mismo largo (solo letras)
180 180
 
181 181
 En este ejercicio completarás la aplicación para cifrar un mensaje de texto, 
182 182
 que solo contiene letras, utilizando una palabra clave que también consiste solo de letras y que tiene el mismo largo del mensaje. 
@@ -188,22 +188,22 @@ que solo contiene letras, utilizando una palabra clave que también consiste sol
188 188
     * Utilizando la máquina virtual: Haz doble “click” en el archivo `VigenereCypher.pro` que se encuentra  en el directorio `/home/eip/labs/repetitions-vigenerecypher` de la máquina virtual.
189 189
     * Descargando la carpeta del proyecto de `Bitbucket`: Utiliza un terminal y escribe el commando `git clone http:/bitbucket.org/eip-uprrp/repetitions-vigenerecypher` para descargar la carpeta `repetitions-vigenerecypher` de `Bitbucket`. En esa carpeta, haz doble “click” en el archivo `VigenereCypher.pro`.
190 190
 
191
-2. Estarás añadiendo código en el archivo `cypher.cpp`. En este archivo, la función `cypher` recibe un mensaje y una clave del mismo largo y consistentes solo de letras, y devuelve el mensaje cifrado por el cifrador Vigenere. Tu tarea es completar la función de cifrado.
191
+2. Estarás añadiendo código en el archivo `cypher.cpp`. En este archivo, la función `cypher` recibe un mensaje y una clave del mismo largo y consistentes sólo de letras, y devuelve el mensaje cifrado por el cifrado Vigenere. Tu tarea es completar la función de cifrado.
192 192
  
193
-    El código debe verificar si el mensaje y la clave consisten solo de letras y tienen el mismo largo; si esto no ocurre, el mensaje cifrado será (literalmente) `"MENSAJE O CLAVE INVALIDO"`. El programa debe implementar el cifrador Vigenere para ir cifrando cada letra del mensaje utilizando la clave.  Solo debes utilizar las funciones mencionadas en la sección anterior. Para simplificar el código tu programa debe cambiar todas las letras del mensaje y la clave a mayúsculas.
193
+    El código debe verificar si el mensaje y la clave consisten solo de letras y tienen el mismo largo; si esto no ocurre, el mensaje cifrado será (literalmente) `"MENSAJE O CLAVE INVÁLIDA"`. El programa debe implementar el cifrado Vigenere para ir cifrando cada letra del mensaje utilizando la clave.  Solo debes utilizar las funciones mencionadas en la sección anterior. Para simplificar el código tu programa debe cambiar todas las letras del mensaje y la clave a mayúsculas.
194 194
 
195
-3. Al terminar tu código, ve a la función `main` y descomenta la invocación a la función de prueba unitaria  `test_cypher1`. Esa función realiza varias invocaciones a la función `cypher` para validar si sus resultados son correctos. Tu función `cypher` debe pasar todas las pruebas antes de continuar con la próxima parte de este laboratorio. 
195
+3. Al terminar tu código, ve a la función `main` y descomenta la invocación a la función de prueba unitaria  `test_cypher1`. Esta función realiza varias invocaciones a la función `cypher` para validar si sus resultados son correctos. Tu función `cypher` debe pasar todas las pruebas antes de continuar con la próxima parte de este laboratorio. 
196 196
 
197 197
 
198
-### Ejercicio 2 - Cifrador con clave y mensaje de largos arbitrarios 
198
+### Ejercicio 2 - Cifrado con clave y mensaje de largos arbitrarios 
199 199
 
200
-En este ejercicio modificarás el código de la función `cypher` que creaste para el Ejercicio 1 de modo que la aplicación ahora pueda cifrar cualquier mensaje  utilizando una palabra clave que consista solo de letras pero que tenga cualquier largo. 
200
+En este ejercicio modificarás el código de la función `cypher` que creaste para el Ejercicio 1 de modo que la aplicación ahora puede cifrar cualquier mensaje utilizando una palabra clave que consista sólo de letras pero que tenga cualquier largo. 
201 201
 
202 202
 #### Instrucciones:
203 203
 
204
-1. Escribe el código de la función `cypher` para que reciba un mensaje y una clave y devuelva el mensaje cifrado por el cifrador Vigenere. En esta ocasión, el mensaje y la clave pueden tener cualquier largo y el mensaje puede tener cualquier caracter (la clave solo puede tener letras). 
204
+1. Escribe el código de la función `cypher` para que reciba un mensaje y una clave y devuelva el mensaje cifrado por el cifrado Vigenere. En esta ocasión, el mensaje y la clave pueden tener cualquier largo y el mensaje puede tener cualquier carácter (la clave solo puede tener letras). 
205 205
 
206
-     El programa debe implementar el cifrador Vigenere para ir cifrando cada caracter del mensaje utilizando las letras de la clave.  Para simplificar el código, tu programa debe cambiar todas las letras a mayúsculas. Si alguno de los caracteres del mensaje no es una letra, el cifrador no lo cambia, como se muestra en la Figura 7. Si alguno de los caracteres de la clave no es una letra, el mensaje cifrado será "CLAVE INVALIDA". Solo debes utilizar las funciones mencionadas en la sección anterior.
206
+     El programa debe implementar el cifrado Vigenere para ir cifrando cada carácter del mensaje utilizando las letras de la clave.  Para simplificar el código, tu programa debe cambiar todas las letras a mayúsculas. Si alguno de los caracteres del mensaje no es una letra, el cifrador no lo cambia, como se muestra en la Figura 7. Si alguno de los caracteres de la clave no es una letra, el mensaje cifrado será "CLAVE INVALIDA". Solo debes utilizar las funciones mencionadas en la sección anterior.
207 207
 
208 208
      ---
209 209
 
@@ -225,7 +225,7 @@ En este ejercicio modificarás el código de la función `cypher` que creaste pa
225 225
 
226 226
 ##Entrega
227 227
 
228
-Utiliza "Entrega" en Moodle para entregar el archivo `cypher.cpp` que contiene la función `cypher` que creaste en el Ejercicio 2. Recuerda utilizar buenas prácticas de programación, incluir el nombre de los programadores y documentar tu programa.
228
+Utiliza "Entrega" en Moodle para entregar el archivo `cypher.cpp` que contiene la función `cypher` que creaste en el Ejercicio 2. Recuerda utilizar buenas prácticas de programación, incluye el nombre de los programadores y documenta tu programa.
229 229
 
230 230
 ---
231 231
 
@@ -241,3 +241,6 @@ http://www.nctm.org/uploadedImages/Classroom_Resources/Lesson_Plans/
241 241
 
242 242
 -----
243 243
 
244
+
245
+
246
+