Browse Source

Arreglando README

Rafael Arce Nazario 8 years ago
parent
commit
cb95c9cd0a
1 changed files with 145 additions and 149 deletions
  1. 145
    149
      README.md

+ 145
- 149
README.md View File

@@ -1,6 +1,6 @@
1 1
 [English](#markdown-header-decision-structures-password-strength) | [Español](#markdown-header-estructuras-de-decision-fortaleza-de-contrasenas)
2 2
 
3
-#Estructuras de decisión - Fortaleza de contraseñas
3
+# Estructuras de decisión - Fortaleza de contraseñas
4 4
 
5 5
 ![main1.png](images/main1.png)
6 6
 ![main2.png](images/main2.png)
@@ -8,22 +8,23 @@
8 8
 
9 9
 
10 10
 
11
-En casi todas las instancias en que queremos resolver un problema hay una o más opciones que dependen  de si se cumplen o no ciertas condiciones. Los programas de computadoras se construyen para resolver problemas y, por lo tanto, deben tener una estructura que permita tomar decisiones. En C++ las  instrucciones de decisión (o condicionales) se estructuran utilizando `if`, `else`, `else if` o `switch`. Muchas veces el uso de estas estructuras también envuelve el uso de expresiones de relación y operadores lógicos. En la experiencia de laboratorio de hoy practicarás el uso de algunas  estructuras de decisión completando el diseño de una aplicación que determina la fortaleza de  una contraseña de acceso ("password"). 
11
+En casi todas las instancias en que queremos resolver un problema hay una o más opciones que dependen  de si se cumplen o no ciertas condiciones. Los programas de computadoras se construyen para resolver problemas y, por lo tanto, deben tener una estructura que permita tomar decisiones. En C++ las  instrucciones de decisión (o condicionales) se estructuran utilizando `if`, `else`, `else if` o `switch`. Muchas veces el uso de estas estructuras también envuelve el uso de expresiones de relación y operadores lógicos. En la experiencia de laboratorio de hoy practicarás el uso de algunas  estructuras de decisión completando el diseño de una aplicación que determina la fortaleza de  una contraseña de acceso ("password").
12 12
 
13
-##Objetivos:
13
+## Objetivos:
14 14
 
15 15
 1.  Utilizar expresiones relacionales y seleccionar operadores lógicos adecuados para la toma de decisiones.
16 16
 2. Aplicar estructuras de decisión.
17 17
 
18 18
 
19
-##Pre-Lab:
19
+## Pre-Lab:
20 20
 
21 21
 Antes de llegar al laboratorio debes:
22 22
 
23 23
 1. Haber repasado los siguientes conceptos:
24 24
 
25
-operadores lógicos.
26
-`if`, `else`, `else if`.
25
+    a. operadores lógicos
26
+    
27
+    b. `if`, `else`, `else if`.
27 28
 
28 29
 2. Haber repasado el uso de objetos de la clase `string` y su método `length()`.
29 30
 
@@ -36,7 +37,7 @@ operadores lógicos.
36 37
 
37 38
 ---
38 39
 
39
-##Fortaleza de contraseñas de acceso
40
+## Fortaleza de contraseñas de acceso
40 41
 
41 42
 Utilizar contraseñas de acceso resistentes es esencial para mantener los datos seguros en los sistemas de información. Una contraseña se considera resistente o fuerte ("strong") si resulta costo-inefectivo para el "pirata informático" ("hacker") emplear tiempo tratando de adivinarla usando contraseñas ingenuas o fuerza bruta. Por ejemplo, una contraseña que consiste de una palabra simple del diccionario, sin números, símbolos o letras mayúsculas, es tan fácil de descifrar que hasta "un cavernícola puede hacerlo".
42 43
 
@@ -54,81 +55,80 @@ Las siguientes tablas resumen los valores añadidos y sustraídos para varias ca
54 55
 
55 56
 |      | Categoría                        | Puntos                                   | Notas                                                |
56 57
 | :--- | :-------------------------------- | :-------------------------------------: | ----------------------------------------------------: |
57
-| 1.   | Número de caracteres             | $4\left(len\right)$                                 | $len$ es el largo de la contraseña                        |
58
-| 2.   | Letras mayúsculas                | ![sumaMayus.png](images/sumaMayus.png)
59
-     | $n$ es el número de letras mayúsculas                |
60
-| 3.   | Letras minúsculas                | ![sumaMin.png](images/sumaMin.png)
61
-    | $n$ es el número de letras minúsculas                |
62
-| 4.   | Dígitos                          |  ![sumaDigitos.png](images/sumaDigitos.png)
63
-   | $n$ es el número de dígitos                          |
64
-| 5.   | Símbolos                         | $6n$     | $n$ es el número de símbolos                         |
65
-| 6.   | Dígitos o símbolos en el medio   | $2n$                                    | $n$ es el número de dígitos y símbolos en el medio   |
66
-| 7.   | Requisitos                       | ![criterios.png](images/criterios.png)                              | $n$ es el número de criterios que se cumplen        |
58
+| 1.   | Número de caracteres             | $$4\left(len\right)$$                                 | $$len$$ es el largo de la contraseña                        |
59
+| 2.   | Letras mayúsculas                | ![sumaMayus.png](images/sumaMayus.png)| $n$ es el número de letras mayúsculas                |
60
+| 3.   | Letras minúsculas                | ![sumaMin.png](images/sumaMin.png) | $$n$$ es el número de letras minúsculas                |
61
+| 4.   | Dígitos                          |  ![sumaDigitos.png](images/sumaDigitos.png) | $$n$$ es el número de dígitos                          |
62
+| 5.   | Símbolos                         | $$6n$$     | $$n$$ es el número de símbolos                         |
63
+| 6.   | Dígitos o símbolos en el medio   | $$2n$$                                   | $n$ es el número de dígitos y símbolos en el medio   |
64
+| 7.   | Requisitos                       | ![criterios.png](images/criterios.png)                              | $$n$$ es el número de criterios que se cumplen        |
67 65
 
68
-**Tabla 1.** Criterios positivos para  la fortaleza de la contraseña. 
66
+**Tabla 1.** Criterios positivos para  la fortaleza de la contraseña.
69 67
 
70 68
 ---
71 69
 
72 70
 Lo que sigue son algunos detalles adicionales y ejemplos de los criterios para **sumas**.
73 71
 
74
-1. **Número de caracteres**: este es el criterio más simple. La puntuación es $4$ veces el largo de la contraseña. Por ejemplo, `"ab453"` tiene un conteo de $5$ y puntuación de $4 \cdot 5= 20$.
72
+1. **Número de caracteres**: este es el criterio más simple. La puntuación es $$4$$ veces el largo de la contraseña. Por ejemplo, `"ab453"` tiene un conteo de $$5$$ y puntuación de $$4 \cdot 5= 20$$.
75 73
 
76
-2. **Letras mayúsculas** La puntuación es $2 \left(len - n \right)$ si la contraseña consiste de una mezcla de letras mayúsculas **Y** al menos otro tipo de caracter (minúscula, dígitos, símbolos). De lo contrario, la puntuación es $0$. Por ejemplo,
74
+2. **Letras mayúsculas** La puntuación es $$2 \left(len - n \right)$$ si la contraseña consiste de una mezcla de letras mayúsculas **Y** al menos otro tipo de caracter (minúscula, dígitos, símbolos). De lo contrario, la puntuación es $$0$$. Por ejemplo,
77 75
 
78
-    a. la puntuación para `"ab453"` sería $0$ ya que no tiene letras mayúsculas (el conteo también es $0$)
76
+    a. la puntuación para `"ab453"` sería $$0$$ ya que no tiene letras mayúsculas (el conteo también es $$0$$)
79 77
 
80
-    b. la puntuación para `"ALGO"` sería $0$ porque **solo** contiene letras mayúsculas (el conteo es $4$).
78
+    b. la puntuación para `"ALGO"` sería $$0$$ porque **solo** contiene letras mayúsculas (el conteo es $$4$$).
81 79
 
82
-    c. la puntuación para `"SANC8in"` sería $2  \left(7-4\right) = 6$ porque la contraseña es de largo $7$, contiene $4$ letras mayúsculas, y contiene caracteres de otro tipo (el conteo es $4$).
80
+    c. la puntuación para `"SANC8in"` sería $$2  \left(7-4\right) = 6$$ porque la contraseña es de largo $$7$$, contiene $$4$$ letras mayúsculas, y contiene caracteres de otro tipo (el conteo es $$4$$).
83 81
 
84
-3. **Letras minúsculas** La puntuación es $2 \left(len - n\right)$ si la contraseña es una mezcla de letras minúsculas **Y** al menos otro tipo de caracter (mayúscula, dígitos, símbolos). De lo contrario, la puntuación es $0$. Por ejemplo,
82
+3. **Letras minúsculas** La puntuación es $$2 \left(len - n\right)$$ si la contraseña es una mezcla de letras minúsculas **Y** al menos otro tipo de caracter (mayúscula, dígitos, símbolos). De lo contrario, la puntuación es $$0$$. Por ejemplo,
85 83
 
86
-    a. la puntuación para `"ab453"` sería $2 \left(5-2\right) = 6$ porque la contraseña es de largo $5$, contiene $2$ letras minúsculas, y contiene caracteres de otro tipo. El conteo es $2$.
84
+    a. la puntuación para `"ab453"` sería $$2 \left(5-2\right) = 6$$ porque la contraseña es de largo $$5$$, contiene $$2$$ letras minúsculas, y contiene caracteres de otro tipo. El conteo es $$2$$.
87 85
 
88
-    b. la puntuación para `"ALGO"` sería $0$ porque no contiene letras minúsculas. El conteo es $0$.
86
+    b. la puntuación para `"ALGO"` sería $$0$$ porque no contiene letras minúsculas. El conteo es $$0$$.
89 87
 
90
-    c. la puntuación para `"sancochin"`  sería $0$ porque contiene **solo** letras minúsculas. El conteo es $9$.
88
+    c. la puntuación para `"sancochin"`  sería $$0$$ porque contiene **solo** letras minúsculas. El conteo es $$9$$.
91 89
 
92
-4. **Dígitos** La puntuación es $4n$ si la contraseña consiste de una mezcla de dígitos **Y** al menos otro tipo de caracter (minúscula, mayúscula, símbolos). De otro modo la puntuación es $0$. Por ejemplo,
90
+4. **Dígitos** La puntuación es $$4n$$ si la contraseña consiste de una mezcla de dígitos **Y** al menos otro tipo de caracter (minúscula, mayúscula, símbolos). De otro modo la puntuación es $$0$$. Por ejemplo,
93 91
 
94
-  a. la puntuación para `"ab453"` sería $4 \cdot3 = 12$ porque la contraseña contiene $3$ dígitos y contiene caracteres de otro tipo.
92
+  a. la puntuación para `"ab453"` sería $$4 \cdot3 = 12$$ porque la contraseña contiene $$3$$ dígitos y contiene caracteres de otro tipo.
95 93
 
96
-  b. la puntuación para `"ALGO"` sería $0$ porque no tiene dígitos.
94
+  b. la puntuación para `"ALGO"` sería $$0$$ porque no tiene dígitos.
97 95
 
98
-  c. la puntuación para `801145555` sería $0$ porque contiene **solo** dígitos.
96
+  c. la puntuación para `801145555` sería $$0$$ porque contiene **solo** dígitos.
99 97
 
100
-5. **Símbolos** La puntuación es $6n$ si la contraseña contiene $n$ símbolos. De otro modo la puntuación es $0$. Por ejemplo,
98
+5. **Símbolos** La puntuación es $$6n$$ si la contraseña contiene $n$ símbolos. De otro modo la puntuación es $$0$$. Por ejemplo,
101 99
 
102
-  a. la puntuación para `"ab453"` sería $0$ porque no contiene símbolos.
100
+  a. la puntuación para `"ab453"` sería $$0$$ porque no contiene símbolos.
103 101
 
104
-  b. la puntuación para `"ALGO!!"` sería $6 \cdot 2$ porque contiene $2$ símbolos y contiene otros tipos de caracteres.
102
+  b. la puntuación para `"ALGO!!"` sería $$6 \cdot 2$$ porque contiene $$2$$ símbolos y contiene otros tipos de caracteres.
105 103
 
106
-  c. la puntuación para `”---><&&”`  sería $6 \cdot 7 = 42$ porque contiene $7$ símbolos. Nota que en el caso de símbolos, se otorga puntuación incluso cuando no hay otro tipo de caracteres.
104
+  c. la puntuación para `”---><&&”`  sería $$6 \cdot 7 = 42$$ porque contiene $$7$$ símbolos. Nota que en el caso de símbolos, se otorga puntuación incluso cuando no hay otro tipo de caracteres.
107 105
 
108
-6. **Dígitos o símbolos en el medio** La puntuación es $2n$ si la contraseña contiene símbolos o dígitos que no están en la primera o última posición. Por ejemplo,
106
+6. **Dígitos o símbolos en el medio** La puntuación es $$2n$$ si la contraseña contiene símbolos o dígitos que no están en la primera o última posición. Por ejemplo,
109 107
 
110
-  a. la puntuación para `"ab453"` sería $2 \cdot2 = 4$ porque contiene dos dígitos que no están en la primera o última posición, estos son `4` y `5`. 
108
+  a. la puntuación para `"ab453"` sería $$2 \cdot2 = 4$$ porque contiene dos dígitos que no están en la primera o última posición, estos son `4` y `5`.
111 109
 
112
-  b. la puntuación para `"ALGO!"` sería $0$ porque no contiene dígitos ni símbolos en el medio, el único símbolo está al final.
110
+  b. la puntuación para `"ALGO!"` sería $$0$$ porque no contiene dígitos ni símbolos en el medio, el único símbolo está al final.
113 111
 
114
-  c. la puntuación para `S&c8i7o!`  sería $2 \cdot 3 = 6$ porque contiene $3$ símbolos o dígitos en el medio, estos son `&`, 8`, y `7`.
112
+  c. la puntuación para `S&c8i7o!`  sería $$2 \cdot 3 = 6$$ porque contiene $$3$$ símbolos o dígitos en el medio, estos son `&`, 8`, y `7`.
115 113
 
116
-7. **Requisitos**: Se otorga  $2n$ solo si el criterio del largo **Y** 3 o 4 de los otros criterios se cumplen, donde $n$ es el número de *criterios* que se cumplen. Los criterios son:
114
+7. **Requisitos**: Se otorga  $$2n$$ solo si el criterio del largo **Y** 3 o 4 de los otros criterios se cumplen, donde $$n$$ es el número de *criterios* que se cumplen. Los criterios son:
117 115
 
118 116
     a. La contraseña debe tener 8 o más caracteres de largo.
119 117
 
120
-    b. Contener:        - Letras mayúsculas
121
-        - Letras minúsculas
122
-        - Números
123
-        - Símbolos
118
+    b. Contener:
119
+
120
+        1. Letras mayúsculas
121
+        2. Letras minúsculas
122
+        3. Números
123
+        4. Símbolos
124 124
 
125 125
     Cada uno de los listados en la parte b. cuenta como un criterio individual. Por ejemplo,
126 126
 
127
-      a. la puntuación para `"ab453"` sería $0$ porque el criterio del largo no se cumple.
127
+      a. la puntuación para `"ab453"` sería $$0$$ porque el criterio del largo no se cumple.
128 128
 
129
-      b. la puntuación para `"abABCDEF"` sería $0$ debido a que, a pesar de que se cumple el criterio del largo, solo 2 de los 4 otros criterios se cumplen (mayúsculas y minúsculas).
129
+      b. la puntuación para `"abABCDEF"` sería $$0$$ debido a que, a pesar de que se cumple el criterio del largo, solo 2 de los 4 otros criterios se cumplen (mayúsculas y minúsculas).
130 130
 
131
-      c. la puntuación para `"abAB99!!"` sería $2 \cdot 5 = 10$ debido a que cumple la condición del largo y también los otros 4 criterios.
131
+      c. la puntuación para `"abAB99!!"` sería $$2 \cdot 5 = 10$$ debido a que cumple la condición del largo y también los otros 4 criterios.
132 132
 
133 133
 
134 134
 #### Restando puntos
@@ -137,35 +137,35 @@ Lo que sigue son algunos detalles adicionales y ejemplos de los criterios para *
137 137
 
138 138
 |      | Categoría                         | Puntos                                   | Notas                                                                   |
139 139
 | :--- | :-------------------------------- | :-------------------------------------: | ----------------------------------------------------:                   |
140
-| 1.   | Solo letras                       |![resLetras.png](images/resLetras.png)    | $len$ es el largo de la contraseña                                           |
141
-| 2.   | Solo dígitos                      | ![resDigitos.png](images/resDigitos.png)    | $len$ es el largo de la contraseña                                           |
142
-| 3.   | Letras mayúsculas consecutivas    | $-2n$                                   | $n$ es el número de letras mayúsculas que siguen a otra letra mayúscula |
143
-| 4.   | Letras minúsculas consecutivas    | $-2n$                                   | $n$ es el número de letras minúsculas que siguen a otra letra minúscula                                                                     |
144
-| 5.   | Dígitos consecutivos              | $-2n$                                   | $n$ es el número de dígitos que siguen a otro dígito                     |
140
+| 1.   | Solo letras                       |![resLetras.png](images/resLetras.png)    | $$len$$ es el largo de la contraseña                                           |
141
+| 2.   | Solo dígitos                      | ![resDigitos.png](images/resDigitos.png)    | $$len$$ es el largo de la contraseña                                           |
142
+| 3.   | Letras mayúsculas consecutivas    | $$-2n$$                                   | $$n$$ es el número de letras mayúsculas que siguen a otra letra mayúscula |
143
+| 4.   | Letras minúsculas consecutivas    | $$-2n$$                                   | $$n$$ es el número de letras minúsculas que siguen a otra letra minúscula                                                                     |
144
+| 5.   | Dígitos consecutivos              | $$-2n$$                                   | $$n$$ es el número de dígitos que siguen a otro dígito                     |
145 145
 
146
-**Tabla 2.** Criterios negativos para la fortaleza de la contraseña. 
146
+**Tabla 2.** Criterios negativos para la fortaleza de la contraseña.
147 147
 
148 148
 ---
149 149
 
150 150
 Lo que sigue son algunos detalles adicionales y ejemplos de los criterios para **restas**.
151 151
 
152
-1. **Letras solamente**: La puntuación es $-len$ para una contraseña que consista solo de letras, de otro modo obtiene $0$. Por ejemplo, 
152
+1. **Letras solamente**: La puntuación es $$-len$$ para una contraseña que consista solo de letras, de otro modo obtiene $$0$$. Por ejemplo,
153 153
 
154
-    a. la puntuación para `"ab453"` sería $0$ ya que contiene letras y números
154
+    a. la puntuación para `"ab453"` sería $$0$$ ya que contiene letras y números
155 155
 
156
-    b. la puntuación para `"Barrunto"` sería $-8$ ya que consiste solo de letras y su largo es $8$.
156
+    b. la puntuación para `"Barrunto"` sería $$-8$$ ya que consiste solo de letras y su largo es $$8$$.
157 157
 
158
-2. **Dígitos solamente**: La puntuación es $-len$ para una contraseña que consista solo de dígitos, de otro modo obtiene $0$. Por ejemplo, 
158
+2. **Dígitos solamente**: La puntuación es $$-len$$ para una contraseña que consista solo de dígitos, de otro modo obtiene $$0$$. Por ejemplo,
159 159
 
160
-    a. la puntuación para `"ab453"` sería $0$ ya que contiene solo letras y números
160
+    a. la puntuación para `"ab453"` sería $$0$$ ya que contiene solo letras y números
161 161
 
162
-    b. la puntuación para `”987987987”` sería $-9$ ya que consiste solo de dígitos y su largo es $9$.
162
+    b. la puntuación para `”987987987”` sería $$-9$$ ya que consiste solo de dígitos y su largo es $$9$$.
163 163
 
164
-3. **Letras mayúsculas consecutivas**: La puntuación es $-2n$ donde $n$ es el número de letras mayúsculas que siguen a otra letra mayúscula. Por ejemplo,
164
+3. **Letras mayúsculas consecutivas**: La puntuación es $$-2n$$ donde $$n$$ es el número de letras mayúsculas que siguen a otra letra mayúscula. Por ejemplo,
165 165
 
166
-    a. la puntuación para `"DB453"` sería $-2 \cdot 1 = -2$ ya que solo contiene una letra mayúscula (`B`) que sigue a otra letra mayúscula.
166
+    a. la puntuación para `"DB453"` sería $$-2 \cdot 1 = -2$$ ya que solo contiene una letra mayúscula (`B`) que sigue a otra letra mayúscula.
167 167
 
168
-    b. la puntuación para `"TNS1PBMA"` sería $-2 \cdot 5 = -10$ ya que contiene 5 letras mayúsculas (`N`, `S`, `B`, `M`, `A`) que siguen a otra letra mayúscula.
168
+    b. la puntuación para `"TNS1PBMA"` sería $$-2 \cdot 5 = -10$$ ya que contiene 5 letras mayúsculas (`N`, `S`, `B`, `M`, `A`) que siguen a otra letra mayúscula.
169 169
 
170 170
 4. **Letras minúsculas consecutivas**: Igual que el criterio #3 pero para letras minúsculas.
171 171
 
@@ -189,19 +189,19 @@ Lo que sigue son algunos detalles adicionales y ejemplos de los criterios para *
189 189
 
190 190
 ---
191 191
 
192
-##Sesión de laboratorio:
192
+## Sesión de laboratorio:
193 193
 
194
-En esta experiencia de laboratorio practicarás el uso de expresiones matemáticas y estructuras condicionales para computar la puntuación de resistencia o fortaleza de una contraseña combinando las puntuaciones de los criterios individuales. 
194
+En esta experiencia de laboratorio practicarás el uso de expresiones matemáticas y estructuras condicionales para computar la puntuación de resistencia o fortaleza de una contraseña combinando las puntuaciones de los criterios individuales.
195 195
 
196 196
 Tu tarea es completar el diseño de una aplicación para medir la fortaleza de las contraseñas de acceso ("password strength"). Al final obtendrás un programa que será una versión simplificada de la aplicación en http://www.passwordmeter.com/. Como no existe un sistema oficial para medir las contraseñas, se utilizarán las fórmulas creadas por el "passwordmeter" para evaluar la fortaleza general de una contraseña dada. La aplicación permitirá al usuario entrar una contraseña y calculará su fortaleza utilizando una serie de reglas.
197 197
 
198 198
 La fortaleza de la contraseña se cuantificará otorgando puntos por utilizar "buenas" técnicas de selección de contraseñas (como combinar símbolos y letras) y restando puntos por utilizar "malos" hábitos (como utilizar solo letras minúsculas o caracteres consecutivos de un mismo tipo). Tu programa analizará la contraseña dada por el usuario y usará los criterios en las tablas presentadas arriba para computar una puntuación para la fortaleza de la contraseña.
199 199
 
200
-Una vez completada la aplicación, esta mostrará una ventana en donde, según se vayan entrando los caracteres de la contraseña, se desglosará la puntuación parcial obtenida. Esta interface gráfica para el usuario le ofrecerá  una manera de mejorar su contraseña y corregir los  malos hábitos típicos al formular contraseñas débiles. 
200
+Una vez completada la aplicación, esta mostrará una ventana en donde, según se vayan entrando los caracteres de la contraseña, se desglosará la puntuación parcial obtenida. Esta interface gráfica para el usuario le ofrecerá  una manera de mejorar su contraseña y corregir los  malos hábitos típicos al formular contraseñas débiles.
201 201
 
202 202
 
203 203
 
204
-###Ejercicio 1: Familiarizarte con las funciones pre-definidas
204
+### Ejercicio 1: Familiarizarte con las funciones pre-definidas
205 205
 
206 206
 El primer paso en esta experiencia de laboratorio es familiarizarte con las funciones pre-definidas en el código. Invocarás estas funciones en el código que crearás para computar la puntuación de varios de los criterios para fortaleza de contraseñas.
207 207
 
@@ -209,16 +209,15 @@ El primer paso en esta experiencia de laboratorio es familiarizarte con las func
209 209
 
210 210
 1.  Carga a Qt el proyecto `PassworStrength`  haciendo doble "click" en el archivo `PasswordStrength.pro` en el directorio `Documents/eip/Conditionals-PasswordStrength` de tu computadora. También puedes ir a `http://bitbucket.org/eip-uprrp/conditionals-passwordstrength` para descargar la carpeta `Conditionals-PasswordStrength` a tu computadora.
211 211
 
212
-
213 212
 2. Configura el proyecto.  El proyecto consiste de varios archivos. **Solo escribirás código en el archivo `readpassword.cpp`. No debes cambiar nada en los demás archivos.** Sin embargo, debes familiarizarte con las funciones que ya están definidas en ellos, ya que usarás algunas de ellas para crear tu código.
214 213
 
215
-
216 214
       * `psfunctions.cpp` : contiene las implementaciones de algunas de las funciones que tu programa va a invocar para calcular la puntuación de la fortaleza total de la contraseña. **No tienes que cambiar nada del código en este archivo ni en el archivo `psfunctions.h`**. Simplemente invocarás desde la función `readPass` en el archivo `readpassword.cpp` las funciones contenidas en ellos, según sea necesario. Hay funciones que no necesitarás invocar. Nota que el nombre de las funciones te dice lo que la función hace.
215
+
217 216
       * `psfunctions.h` : contiene los prototipos de las funciones definidas en `psfunctions.cpp`.
218
-     
219
-   
220 217
 
221
-###Ejercicio 2: Conocer las funciones para actualizar la interface gráfica de usuarios.
218
+
219
+
220
+### Ejercicio 2: Conocer las funciones para actualizar la interface gráfica de usuarios.
222 221
 
223 222
 En el ejercicio de laboratorio crearás el código para calcular la puntuación asociada a cada uno de los criterios de las tablas de sumas y deducciones mostradas arriba. Estas puntuaciones deben ser actualizadas en la interface gráfica de usuarios que se muestra en la Figura 1.
224 223
 
@@ -289,13 +288,13 @@ En  el código de arriba `count` contiene  el número de caracteres en la contra
289 288
     void setConsecutiveLower(int count, int score) ;
290 289
 
291 290
     // Para actualizar el criterio de dígitos consecutivos.
292
-    void setConsecutiveDigits(int count, int score) ; 
291
+    void setConsecutiveDigits(int count, int score) ;
293 292
   ```
294 293
 
295
-###Ejercicio 3: Calcular la puntuación de los criterios y la puntuación total de la contraseña
294
+### Ejercicio 3: Calcular la puntuación de los criterios y la puntuación total de la contraseña
296 295
 
297 296
 
298
-El código que te proveemos contiene las funciones que computan el conteo para  la mayoría de los criterios y cuyos nombres reflejan lo que hace y devuelve la función. Por ejemplo, `countUppercase`, devuelve el número de caracteres que son letras mayúsculas. [Aquí](http://ccom.uprrp.edu/~rarce/ccom3033f14/documentation/passwordStrengthCL/psfunctions_8cpp.html) hay una lista y descripción de las funciones. 
297
+El código que te proveemos contiene las funciones que computan el conteo para  la mayoría de los criterios y cuyos nombres reflejan lo que hace y devuelve la función. Por ejemplo, `countUppercase`, devuelve el número de caracteres que son letras mayúsculas. [Aquí](http://ccom.uprrp.edu/~rarce/ccom3033f14/documentation/passwordStrengthCL/psfunctions_8cpp.html) hay una lista y descripción de las funciones.
299 298
 
300 299
 Tu tarea es utilizar expresiones matemáticas y estructuras condicionales para las puntuaciones de los criterios individuales y combinarlas para computar la puntuación total de fortaleza de una contraseña.
301 300
 
@@ -322,17 +321,17 @@ Tu tarea es utilizar expresiones matemáticas y estructuras condicionales para l
322 321
 
323 322
 ---
324 323
 
325
-En el Ejemplo 2, el conteo de los **requisitos** es 5 porque `"S1nf@nia!"` cumple con el criterio de largo y también contiene mayúsculas, minúsculas, números y símbolos. Por lo tanto, la puntuación del número de requisitos es $2 \cdot 5 =10$.
324
+En el Ejemplo 2, el conteo de los **requisitos** es 5 porque `"S1nf@nia!"` cumple con el criterio de largo y también contiene mayúsculas, minúsculas, números y símbolos. Por lo tanto, la puntuación del número de requisitos es $$2 \cdot 5 =10$$.
326 325
 
327 326
 En el código del proyecto vas a encontrar ejemplos de cómo calcular los primeros dos criterios positivos: el número de caracteres en la contraseña y el número de letras mayúsculas. Puedes compilar y ejecutar el ejemplo para que veas la interfase funcionando con esos dos criterios. Parte de tu tarea es añadir el código para computar las puntuaciones de los demás criterios. Recuerda que debes ir acumulando el resultado de la puntuación total y hacer invocaciones para actualizar la interface gráfica.
328 327
 
329 328
 
330 329
 
331
-###Ejercicio 4: Determinar y desplegar la fortaleza de la contraseña
330
+### Ejercicio 4: Determinar y desplegar la fortaleza de la contraseña
332 331
 
333
-    En la parte superior de la interface gráfica se ingresa la contraseña.  El usuario ingresará la contraseña en la parte superior de la interface gráfica. Debajo aparece un *informe* que contiene los distintos criterios, el conteo para cada criterio, y la puntuación individual para los criterios. Este informe se va actualizando según el usuario va ingresando los caracteres de la contraseña.  La puntuación total será la suma de todas los puntos (sumas y restas) de los criterios individuales.
332
+En la parte superior de la interface gráfica se ingresa la contraseña.  El usuario ingresará la contraseña en la parte superior de la interface gráfica. Debajo aparece un *informe* que contiene los distintos criterios, el conteo para cada criterio, y la puntuación individual para los criterios. Este informe se va actualizando según el usuario va ingresando los caracteres de la contraseña.  La puntuación total será la suma de todas los puntos (sumas y restas) de los criterios individuales.
334 333
 
335
-    Basado en la puntuación total, el programa debe clasificar la fortaleza de la contraseña como sigue:
334
+Basado en la puntuación total, el programa debe clasificar la fortaleza de la contraseña como sigue:
336 335
 
337 336
 | Puntación total |  Fortaleza  |
338 337
 |-----------------|-------------|
@@ -342,13 +341,13 @@ En el código del proyecto vas a encontrar ejemplos de cómo calcular los primer
342 341
 | [60,80)         | Fuerte      |
343 342
 | [80,100]        | Bien fuerte |
344 343
 
345
-El código provisto ya invoca la función `strengthDisplay` con la fortaleza calculada y la puntuación final para actualizar la clasificación y la barra que indica la fortaleza en la interface gráfica. 
344
+El código provisto ya invoca la función `strengthDisplay` con la fortaleza calculada y la puntuación final para actualizar la clasificación y la barra que indica la fortaleza en la interface gráfica.
346 345
 
347 346
 ---
348 347
 
349 348
 ---
350 349
 
351
-##Entregas
350
+## Entregas
352 351
 
353 352
 Utiliza "Entrega" en Moodle para entregar el archivo `readpassword.cpp` que contiene el código con el cómputo de las puntuaciones de los criterios individuales, la puntuación final, las invocaciones para actualizar la interface gráfica, la clasificación de la fortaleza y se despliegue. Recuerda utilizar buenas prácticas de programación, incluir el nombre de los programadores y documentar tu programa.
354 353
 
@@ -358,7 +357,7 @@ Utiliza "Entrega" en Moodle para entregar el archivo `readpassword.cpp` que cont
358 357
 
359 358
 ---
360 359
 
361
-##Referencias
360
+## Referencias
362 361
 
363 362
 
364 363
 [1] Passwordmeter, http://www.passwordmeter.com/
@@ -372,7 +371,7 @@ Utiliza "Entrega" en Moodle para entregar el archivo `readpassword.cpp` que cont
372 371
 
373 372
 [English](#markdown-header-decision-structures-password-strength) | [Español](#markdown-header-estructuras-de-decision-fortaleza-de-contrasenas)
374 373
 
375
-#Decision Structures - Password Strength
374
+# Decision Structures - Password Strength
376 375
 
377 376
 ![main1.png](images/main1.png)
378 377
 ![main2.png](images/main2.png)
@@ -380,7 +379,7 @@ Utiliza "Entrega" en Moodle para entregar el archivo `readpassword.cpp` que cont
380 379
 
381 380
 Commonly, when solving a problem, there are one or more steps that depend on whether certain conditions are met. Computer programs are built to solve problems, so they should have a structure that allows them to make decisions. In C++ the decision instructions (or conditionals) are structured using  `if`, `else`, `else if` or `switch`. Relational expressions and logical operators are common when handling decision structures. In today's laboratory experience you will practice the use of some of these structures by completing the design of an application that determines the strength of a password.
382 381
 
383
-##Objectives:
382
+## Objectives:
384 383
 
385 384
 1. Use relational expressions and select adequate logical operators to make decisions.
386 385
 2. Apply decision structures.
@@ -391,8 +390,9 @@ Commonly, when solving a problem, there are one or more steps that depend on whe
391 390
 Before you get to the laboratory you should have:
392 391
 
393 392
 1. Reviewed the following concepts:
394
-  
395
-    a. Logical operators
393
+
394
+    a. Logical operators.
395
+
396 396
     b. `if`, `else`, `else if`.
397 397
 
398 398
 2. Reviewed the use of objects of the `string` class and its `length()` method.
@@ -405,7 +405,7 @@ Before you get to the laboratory you should have:
405 405
 
406 406
 ---
407 407
 
408
-##Password strength
408
+## Password strength
409 409
 
410 410
 Using strong passwords is essential to securing information. A password is considered strong if it is not cost-effective for a hacker to try and guess it using different methods or brute force. For example, a password that consists of a simple dictionary word, without digits, symbols or uppercase letters, is so easy to decipher that even a caveman could do it.
411 411
 
@@ -414,9 +414,9 @@ Since an official system to measure password strength doesn't exist, we will use
414 414
 The following tables review the added and subtracted values for various criteria in passwords:
415 415
 
416 416
 
417
-###Assigning points to a password
417
+### Assigning points to a password
418 418
 
419
-####Adding Points:
419
+#### Adding Points:
420 420
 
421 421
 ---
422 422
 
@@ -424,66 +424,63 @@ The following tables review the added and subtracted values for various criteria
424 424
 
425 425
 |      | Category                        | Points                                   | Notes                                                |
426 426
 | :--- | :-------------------------------- | :-------------------------------------: | ----------------------------------------------------: |
427
-| 1.   | Number of characters             | $4\left(len\right)$                                 | $len$ is the length of the password                        |
428
-| 2.   | Uppercase letters                | ![addUpper.png](images/addUpper.png)
429
-     | $n$ is the number of uppercase letters                |
430
-| 3.   | Lowercase letters                | ![addLower.png](images/addLower.png)
431
-    | $n$ is the number of lowercase letters                |
432
-| 4.   | Digits                          |  ![addDigits.png](images/addDigits.png)
433
-   | $n$ is the number of digits                          |
434
-| 5.   | Symbols                        | $6n$     | $n$ is the number of symbols                       |
435
-| 6.   | Digits or symbols in the middle   | $2n$                                    | $n$ is the number of digits or symbols in the middle   |
436
-| 7.   | Requisites                       | ![criteria.png](images/criteria.png)                              | $n$ is the number of criteria that are met        |
427
+| 1.   | Number of characters             | $$4\left(len\right)$$                                 | $$len$$ is the length of the password                        |
428
+| 2.   | Uppercase letters                | ![addUpper.png](images/addUpper.png) | $$n$$ is the number of uppercase letters                |
429
+| 3.   | Lowercase letters                | ![addLower.png](images/addLower.png)  | $$n$$ is the number of lowercase letters                |
430
+| 4.   | Digits                          |  ![addDigits.png](images/addDigits.png) | $$n$$ is the number of digits                          |
431
+| 5.   | Symbols                        | $$6n$$     | $$n$$ is the number of symbols                       |
432
+| 6.   | Digits or symbols in the middle   | $$2n$$                                    | $$n$$ is the number of digits or symbols in the middle   |
433
+| 7.   | Requisites                       | ![criteria.png](images/criteria.png)                              | $$n$$ is the number of criteria that are met        |
437 434
 
438
-**Table 1.** Positive criteria for password strength. 
435
+**Table 1.** Positive criteria for password strength.
439 436
 
440 437
 ---
441 438
 
442 439
 What follows are some additional details and examples for the criteria of **adding points**.
443 440
 
444
-1. **Number of characters**: this is the simplestcriteria. The score will be $4$ times the length of the password. For example, `"ab453"` has a count of $5$ and a score of $4 \cdot 5 = 20$.
441
+1. **Number of characters**: this is the simplestcriteria. The score will be $$4$$ times the length of the password. For example, `"ab453"` has a count of $$5$$ and a score of $$4 \cdot 5 = 20$$.
445 442
 
446
-2. **Uppercase letters**: the score is $2 \left(len - n \right)$ if the password consists of a mix of uppercase letters **AND** at least another type of character (lowercase, digits, symbols). If not, the score is $0$. For example,
443
+2. **Uppercase letters**: the score is $$2 \left(len - n \right)$$ if the password consists of a mix of uppercase letters **AND** at least another type of character (lowercase, digits, symbols). If not, the score is $$0$$. For example,
447 444
 
448
-  a. the score for `"ab453"` would be $0$ since it doesn't have uppercase letters (the count is also $0$).
445
+  a. the score for `"ab453"` would be $$0$$ since it doesn't have uppercase letters (the count is also $$0$$).
449 446
 
450
-  b. the score for `"ALGO"` would be $0$ since it **only** has uppercase letters (the count is $4$).
447
+  b. the score for `"ALGO"` would be $$0$$ since it **only** has uppercase letters (the count is $$4$$).
451 448
 
452
-  c. the score for `"SANC8in"` would be $2  \left(7-4\right) = 6$ since the password has a length of $7$, has $4$ uppercase letters, and contains characters of another type (the count is $4$).
449
+  c. the score for `"SANC8in"` would be $$2  \left(7-4\right) = 6$$ since the password has a length of $$7$$, has $$4$$ uppercase letters, and contains characters of another type (the count is $$4$$).
453 450
 
454
-3. **Lowercase letters**: the score is $2 \left(len - n\right)$ if the password is a mix of lowercase letters **AND** at least another type of character (uppercase, digits, symbols). If not, the score is $0$. For example,
451
+3. **Lowercase letters**: the score is $$2 \left(len - n\right)$$ if the password is a mix of lowercase letters **AND** at least another type of character (uppercase, digits, symbols). If not, the score is $$0$$. For example,
455 452
 
456
-  a. the score for `"ab453"` would be $2 \left(5-2\right) = 6$ because the password has a length of $5$, contains $2$ lowercase letters, and contains characters of another type. The count is $2$.
453
+  a. the score for `"ab453"` would be $$2 \left(5-2\right) = 6$$ because the password has a length of$$5$$, contains $$2$$ lowercase letters, and contains characters of another type. The count is $$2$$.
457 454
 
458
-  b. the score for `"ALGO"` would be $0$ because it doesn't have lowercase letters. The count is $0$.
455
+  b. the score for `"ALGO"` would be $$0$$ because it doesn't have lowercase letters. The count is $$0$$.
459 456
 
460
-  c. the score for `"sancochin"`  would be $0$ because it contains **only** lowercase letters. The count is $9$.
457
+  c. the score for `"sancochin"`  would be $$0$$ because it contains **only** lowercase letters. The count is $$9$$.
461 458
 
462
-4. **Digits**: the score is $4n$ if the password consists of a mix of digits **AND** at least another type of character (lowercase, uppercase, symbols). If not, the score is $0$. For example,
459
+4. **Digits**: the score is $4n$ if the password consists of a mix of digits **AND** at least another type of character (lowercase, uppercase, symbols). If not, the score is $$0$$. For example,
463 460
 
464
-  a. the score for `"ab453"` would be  $4 \cdot 3 = 12$ because the password contains $3$ digits and contains characters of another type.
461
+  a. the score for `"ab453"` would be  $$4 \cdot 3 = 12$$ because the password contains $$3$$ digits and contains characters of another type.
465 462
 
466
-  b. the score for `"ALGO"` would be $0$ because it doesn't have digits.
463
+  b. the score for `"ALGO"` would be $$0$$ because it doesn't have digits.
467 464
 
468
-  c. the score for `801145555` would be $0$ because it contains **only** digits.
465
+  c. the score for `801145555` would be $$0$$ because it contains **only** digits.
469 466
 
470
-5. **Symbols** The score is $6n$ if the password contains $n$ symbols. Otherwise, the score is $0$. For example,
467
+5. **Symbols** The score is $$6n$$ if the password contains $$n$$ symbols. Otherwise, the score is $$0$$. For example,
471 468
 
472
-  a. the score for `"ab453"` would be $0$ because it does not contain symbols.
469
+  a. the score for `"ab453"` would be $$0$$ because it does not contain symbols.
473 470
 
474
-  b. the score for `"ALGO!!"` would be $6 \cdot 2$ because it contains $2$ symbols and contains other types of characters.
471
+  b. the score for `"ALGO!!"` would be $$6 \cdot 2$$ because it contains $$2$$ symbols and contains other types of characters.
475 472
 
476
-  c. the score for `”---><&&”` would be $6 \cdot 7 = 42$ because it contains $7$ symbols. Note that in the case of symbols, points are given even when there aren't other types of characters.
473
+  c. the score for `”---><&&”` would be $$6 \cdot 7 = 42$$ because it contains $$7$$ symbols. Note that in the case of symbols, points are given even when there aren't other types of characters.
477 474
 
478
-6. **Digits or symbols in the middle** The score is $2n$ if the password contains symbols or digits that are not in the first or last position. For example,
475
+6. **Digits or symbols in the middle** The score is $$2n$$ if the password contains symbols or digits that are not in the first or last position. For example,
479 476
 
480
-  a. the score for `"ab453"` would be $2 \cdot2 = 4$ because it contains 2 digits that are not in the first or last position, these are `4` and `5`.
477
+  a. the score for `"ab453"` would be $$2 \cdot2 = 4$$ because it contains 2 digits that are not in the first or last position, these are `4` and `5`.
481 478
 
482
-  b. the score for `"ALGO!"` would be $0$ because it does not contain digits or symbols in the middle, the only symbol is in the last position.
479
+  b. the score for `"ALGO!"` would be $$0$$ because it does not contain digits or symbols in the middle, the only symbol is in the last position.
483 480
 
484
-  c. the score for `S&c8i7o!` would be $2 \cdot 3 = 6$ because it contains $3$ symbols or digits in the middle, these are `&`, 8`, and `7`.
481
+  c. the score for `S&c8i7o!` would be $$2 \cdot 3 = 6$$ because it contains $$3$$ symbols or digits in the middle, these are `&`, 8`, and `7`.
485 482
 
486
-7. **Requisites**: The score is $2n$ only if the length criteria **AND** 3 or 4 of the other criteria are met, where $n$ is the number of *criteria* that are met. The criteria are:
483
+7. **Requisites**: The score is $$2n$$ only if the length criteria **AND** 3 or 4 of the other criteria are met, where $$n$$ is the number of *criteria* that are met. The criteria are:
487 484
 
488 485
   a. The password must contain 8 or more characters of length.
489 486
 
@@ -495,11 +492,11 @@ What follows are some additional details and examples for the criteria of **addi
495 492
 
496 493
 Each of the items listed in part b. count as one individual criteria. For example,
497 494
 
498
-  a. the score for `"ab453"` would be $0$ because the criteria for length is not met.
495
+  a. the score for `"ab453"` would be $$0$$ because the criteria for length is not met.
499 496
 
500
-  b. the score for `"abABCDEF"` would be $0$ because, despite the fact that the length criteria is met, only 2 of the 4 other criteria are met (uppercase and lowercase letters).
497
+  b. the score for `"abABCDEF"` would be $$0$$ because, despite the fact that the length criteria is met, only 2 of the 4 other criteria are met (uppercase and lowercase letters).
501 498
 
502
-  c. the score for `"abAB99!!"` would be $2 \cdot 5 = 10$ because the length criteria and the other 4 criteria are met.
499
+  c. the score for `"abAB99!!"` would be $$2 \cdot 5 = 10$$ because the length criteria and the other 4 criteria are met.
503 500
 
504 501
 
505 502
 #### Subtracting points
@@ -508,36 +505,36 @@ Each of the items listed in part b. count as one individual criteria. For exampl
508 505
 
509 506
 |      | Category                         | Points                                   | Notes                                                                  |
510 507
 | :--- | :-------------------------------- | :-------------------------------------: | ----------------------------------------------------:                   |
511
-| 1.   | Only letters                       |![subsLetters.png](images/subsLetters.png)    | $len$ is the length of the password                                          |
512
-| 2.   | Only digits                      | ![subsDigits.png](images/subsDigits.png)    | $len$ is the length of the password                                           |
513
-| 3.   | Consecutive uppercase letters    | $-2n$                                   | $n$ is the number of uppercase letters that follow another uppercase letter |
514
-| 4.   | Consecutive lowercase letters   | $-2n$                                   | $n$ is the number of lowercase letters that follow another lowercase letter                                                                     |
515
-| 5.   | Consecutive digits             | $-2n$                                   | $n$ is the number of digits that follow another digit                     |
508
+| 1.   | Only letters                       |![subsLetters.png](images/subsLetters.png)    | $$len$$ is the length of the password                                          |
509
+| 2.   | Only digits                      | ![subsDigits.png](images/subsDigits.png)    | $$len$$ is the length of the password                                           |
510
+| 3.   | Consecutive uppercase letters    | $$-2n$$                                   | $$n$$ is the number of uppercase letters that follow another uppercase letter |
511
+| 4.   | Consecutive lowercase letters   | $$-2n$$                                   | $$n$$ is the number of lowercase letters that follow another lowercase letter                                                                     |
512
+| 5.   | Consecutive digits             | $$-2n$$                                   | $$n$$ is the number of digits that follow another digit                     |
516 513
 
517 514
 
518
-**Table 2.** Negative criteria for password strength. 
515
+**Table 2.** Negative criteria for password strength.
519 516
 
520 517
 ---
521 518
 
522 519
 The following are additional details and examples of the criteria for **subtracting points**.
523 520
 
524
-1. **Only letters**: The score is $-len$ for a password that consists of letters only, otherwise it is $0$. For example,
521
+1. **Only letters**: The score is $$-len$$ for a password that consists of letters only, otherwise it is $$0$$. For example,
525 522
 
526
-  a. the score for `"ab453"` would be $0$ since it contains letters and numbers.
523
+  a. the score for `"ab453"` would be $$0$$ since it contains letters and numbers.
527 524
 
528
-  b. the score for `"Barrunto"` would be $-8$ since it only contains letters and its length is $8$.
525
+  b. the score for `"Barrunto"` would be $$-8$$ since it only contains letters and its length is $$8$$.
529 526
 
530
-2. **Only digits**: The score is $-len$ for a password that consists of digits only, otherwise it is $0$. For example,
527
+2. **Only digits**: The score is $$-len$$ for a password that consists of digits only, otherwise it is $$0$$. For example,
531 528
 
532
-  a. the score for `"ab453"` would be $0$ since it contains only letters and numbers.
529
+  a. the score for `"ab453"` would be $$0$$ since it contains only letters and numbers.
533 530
 
534
-  b. the score for `”987987987”` would be $-9$ since it contains only digits and its length is $9$.
531
+  b. the score for `”987987987”` would be $$-9$$ since it contains only digits and its length is $$9$$.
535 532
 
536
-3. **Consecutive uppercase letters**: The score is $-2n$ where $n$ is the number of uppercase letters that follow another uppercase letter. For example,
533
+3. **Consecutive uppercase letters**: The score is $$-2n$$ where $$n$$ is the number of uppercase letters that follow another uppercase letter. For example,
537 534
 
538
-  a. the score for `"DB453"` would be $-2 \cdot 1 = -2$ since it only contains one uppercase letter (`B`) that follows another uppercase letter.
535
+  a. the score for `"DB453"` would be $$-2 \cdot 1 = -2$$ since it only contains one uppercase letter (`B`) that follows another uppercase letter.
539 536
 
540
-  b. the score for `"TNS1PBMA"` would be $-2 \cdot 5 = -10$ since it contains 5 uppercase letters (`N`, `S`, `B`, `M`, `A`) that follow another uppercase letter.
537
+  b. the score for `"TNS1PBMA"` would be $$-2 \cdot 5 = -10$$ since it contains 5 uppercase letters (`N`, `S`, `B`, `M`, `A`) that follow another uppercase letter.
541 538
 
542 539
 4. **Consecutive lowercase letters**: The same as for criteria #3 but for lowercase letters.
543 540
 
@@ -562,7 +559,7 @@ The following are additional details and examples of the criteria for **subtract
562 559
 
563 560
 ---
564 561
 
565
-##Laboratory session:
562
+## Laboratory session:
566 563
 
567 564
 In this laboratory session you will practice the use of mathematical expressions and conditional structures to compute the score for the strength of a password combining the points for the individual criteria.
568 565
 
@@ -570,12 +567,12 @@ Your task is to complete the design of the application to measure the strength o
570 567
 
571 568
 The strength of the password will be quantified by adding points for using good password selection techniques (like combining symbols and letters) and subtracting points for using bad habits (like using only uppercase letters or consecutive symbols of the same type). Your program will analyze the password given by the user and use the criteria in the tables presented above to compute a score for the password's strength.
572 569
 
573
-Once the application is complete, it will show a window where, as the password characters are entered, the partial score will be displayed. This graphical interface will offer the user a way to improve his password and correct typical weak password habits. 
570
+Once the application is complete, it will show a window where, as the password characters are entered, the partial score will be displayed. This graphical interface will offer the user a way to improve his password and correct typical weak password habits.
574 571
 
575 572
 
576 573
 
577 574
 
578
-###Exercise 1: Familiarize yourself with the pre-defined functions
575
+### Exercise 1: Familiarize yourself with the pre-defined functions
579 576
 
580 577
 The first step in this laboratory experience is to familiarize yourself with the functions that are pre-defined in the code.  You will call these functions as part of your own code to compute the score of the various password strength criteria.
581 578
 
@@ -583,7 +580,6 @@ The first step in this laboratory experience is to familiarize yourself with the
583 580
 
584 581
 1. Load the project `PassworStrength` onto Qt by double clicking the file `PasswordStrength.pro` in the directory `Documents/eip/Conditionals-PasswordStrength` of your computer. You can also go to `http://bitbucket.org/eip-uprrp/conditionals-passwordstrength` to download the folder `Conditionals-PasswordStrength` to your computer.
585 582
 
586
-
587 583
 2. Configure the project. The project consists of several files. **You will only write code in the file  `readpassword.cpp`. You should not make any changes in the other files.** Despite this, you should familiarize yourself with the functions that are already defined in them, since you will be using some of them to create your code.
588 584
 
589 585
   * `psfunctions.cpp` : contains the implementations of some of the functions that will invoke in your program to calculate the score for the password's strength. **You do not have to change anything in this file or in the file `psfunctions.h`**. Simply invoke the functions as necessary from the `readPass` function in the `readpassword.cpp` file. Note that the function names tell you what the functions do.
@@ -591,7 +587,7 @@ The first step in this laboratory experience is to familiarize yourself with the
591 587
   * `psfunctions.h` : contains the prototypes for the functions defined in `psfunctions.cpp`.
592 588
 
593 589
 
594
-###Exercise 2: Understand the functions to update the user's graphical interface.
590
+### Exercise 2: Understand the functions to update the user's graphical interface.
595 591
 
596 592
 In the laboratory exercise you will write code to calculate the score associated to each one of the criteria in the tables for adding and subtracting points shown above. These scores should be updated in the user's graphical interface that is shown in Figure 1.
597 593
 
@@ -662,12 +658,12 @@ There are predefined functions that update the graphical interface. For the appl
662 658
     void setConsecutiveLower(int count, int score) ;
663 659
 
664 660
     // To update the criterium of consecutive digits.
665
-    void setConsecutiveDigits(int count, int score) ; 
661
+    void setConsecutiveDigits(int count, int score) ;
666 662
     ```
667 663
 
668 664
 
669 665
 
670
-###Exercise 3: Compute the score for the criteria and the total score for the password
666
+### Exercise 3: Compute the score for the criteria and the total score for the password
671 667
 
672 668
 The code that we're providing you contains the functions that compute the count for the majority of the criteria and whose names reflect what they do and what the function returns. For example, `countUppercase`, return the number of characters that are uppercase letters.
673 669
 
@@ -702,7 +698,7 @@ In Example 2, the number of **requisites** is 5 because `"S1nf@nia!"` meets the
702 698
 In the project's code you will find examples of how to calculate the first two positive criteria: the number of characters in the password and the numbers of uppercase letters. You can compile and execute the example so you can see the working interface with these two criteria. Part of your task is to add the code to compute the score for the remaining criteria. Remember that you should accumulate the total score and invoke the functions to update the graphical interface.
703 699
 
704 700
 
705
-###Exercise 4: Determine and display the password's strength
701
+### Exercise 4: Determine and display the password's strength
706 702
 
707 703
 The password is entered in the top section of the graphical interface. The user will input the password in the top section of the graphical interface. Below appears the *report* that contains the different criteria, the count for each criteria, and the individual score for the criteria. This report will be updated as the user inputs the password's characters. The total score will be the sum of all of the points (addition and subtraction) of the individual criteria.
708 704
 
@@ -723,7 +719,7 @@ The provided code already invokes the `strengthDisplay` function with the streng
723 719
 
724 720
 ---
725 721
 
726
-##Deliverables
722
+## Deliverables
727 723
 
728 724
 Use "Deliverables" in Moodle to upload the `readpassword.cpp` file that contains the code with the computation for the score of the individual criteria, the final score, the function calls to update the graphical interface, the password's classification and the display functions. Remember to use good programming techniques, include the name of the programmers involved, and to document your program.
729 725
 
@@ -733,6 +729,6 @@ Use "Deliverables" in Moodle to upload the `readpassword.cpp` file that contains
733 729
 
734 730
 ---
735 731
 
736
-##References
732
+## References
737 733
 
738 734
 [1] Passwordmeter, http://www.passwordmeter.com/