|
@@ -1,4 +1,4 @@
|
1
|
|
-# Estructuras de decisión - Fortaleza de contraseñas
|
|
1
|
+# Estructuras de selección - Fortaleza de contraseñas
|
2
|
2
|
|
3
|
3
|
![main1.png](images/main1.png)
|
4
|
4
|
![main2.png](images/main2.png)
|
|
@@ -6,12 +6,12 @@
|
6
|
6
|
|
7
|
7
|
[Verano 2016 - Ive]
|
8
|
8
|
|
9
|
|
-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").
|
|
9
|
+En casi todas las instancias en que queremos resolver un problema seleccionamos una o más opciones dependiendo 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 y seleccionar alternativas. En C++ las selecciones (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 selección completando el diseño de una aplicación que determina la fortaleza de una contraseña de acceso ("password").
|
10
|
10
|
|
11
|
11
|
## Objetivos:
|
12
|
12
|
|
13
|
13
|
1. Utilizar expresiones relacionales y seleccionar operadores lógicos adecuados para la toma de decisiones.
|
14
|
|
-2. Aplicar estructuras de decisión.
|
|
14
|
+2. Aplicar estructuras de selección.
|
15
|
15
|
|
16
|
16
|
|
17
|
17
|
## Pre-Lab:
|
|
@@ -211,9 +211,13 @@ Una vez completada la aplicación, esta mostrará una ventana en donde, según s
|
211
|
211
|
|
212
|
212
|
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.
|
213
|
213
|
|
214
|
|
-**Instrucciones**
|
215
|
214
|
|
216
|
|
-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.
|
|
215
|
+#### Instrucciones:
|
|
216
|
+
|
|
217
|
+1. Carga a `QtCreator` el proyecto `PassworStrength`. Hay dos maneras de hacer esto:
|
|
218
|
+
|
|
219
|
+ * Utilizando la máquina virtual: Haz doble “click” en el archivo `PassworStrength.pro` que se encuentra en el directorio `/home/eip/labs/selections-passwordstrength` de la máquina virtual.
|
|
220
|
+ * Descargando la carpeta del proyecto de `Bitbucket`: Utiliza un terminal y escribe el commando `git clone http:/bitbucket.org/eip-uprrp/selections-passwordstrength` para descargar la carpeta `tema-nombre` de `Bitbucket`. En esa carpeta, haz doble “click” en el archivo `PassworStrength.pro`.
|
217
|
221
|
|
218
|
222
|
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.
|
219
|
223
|
|
|
@@ -254,48 +258,49 @@ totalScore += score ;
|
254
|
258
|
En el código de arriba `count` contiene el número de caracteres en la contraseña, `score` contiene el cómputo de la puntuación del criterio de número de caracteres y `setNumberOfCharacters(count, score);` invoca la función para que se actualice la información correspondiente al criterio “Number of characters” en la interface gráfica.
|
255
|
259
|
|
256
|
260
|
|
257
|
|
- Las funciones para actualizar la interface gráfica son:
|
258
|
|
- ```
|
259
|
|
- // Para actualizar el largo de la contraseña.
|
260
|
|
- void setNumberOfCharacters(int count, int score) ;
|
|
261
|
+ Las funciones para actualizar la interfaz gráfica son:
|
|
262
|
+
|
|
263
|
+```
|
|
264
|
+// Para actualizar el largo de la contraseña.
|
|
265
|
+void setNumberOfCharacters(int count, int score) ;
|
261
|
266
|
|
262
|
|
- // Para las sumas
|
|
267
|
+// Para las sumas
|
263
|
268
|
|
264
|
|
- // Para actualizar los caracteres en mayúscula.
|
265
|
|
- void setUpperCharacters(int count, int score) ;
|
|
269
|
+// Para actualizar los caracteres en mayúscula.
|
|
270
|
+void setUpperCharacters(int count, int score) ;
|
266
|
271
|
|
267
|
|
- // Para actualizar los caracteres en minúscula.
|
268
|
|
- void setLowerCharacters(int count, int score) ;
|
|
272
|
+// Para actualizar los caracteres en minúscula.
|
|
273
|
+void setLowerCharacters(int count, int score) ;
|
269
|
274
|
|
270
|
|
- // Para actualizar los caracteres que son dígitos.
|
271
|
|
- void setDigits(int count, int score) ;
|
|
275
|
+// Para actualizar los caracteres que son dígitos.
|
|
276
|
+void setDigits(int count, int score) ;
|
272
|
277
|
|
273
|
|
- // Para actualizar los caracteres que son símbolos.
|
274
|
|
- void setSymbols(int count, int score) ;
|
|
278
|
+// Para actualizar los caracteres que son símbolos.
|
|
279
|
+void setSymbols(int count, int score) ;
|
275
|
280
|
|
276
|
|
- // Para actualizar digitos o simbolos en el medio
|
277
|
|
- void setMiddleDigitsOrSymbols(int count, int score) ;
|
|
281
|
+// Para actualizar digitos o simbolos en el medio
|
|
282
|
+void setMiddleDigitsOrSymbols(int count, int score) ;
|
278
|
283
|
|
279
|
|
- // Para actualizar el criterio de los requisitos
|
280
|
|
- void setRequirements(int count, int score) ;
|
|
284
|
+// Para actualizar el criterio de los requisitos
|
|
285
|
+void setRequirements(int count, int score) ;
|
281
|
286
|
|
282
|
|
- // Para las restas
|
|
287
|
+// Para las restas
|
283
|
288
|
|
284
|
|
- // Para actualizar el criterio de letras solamente.
|
285
|
|
- void setLettersOnly(int count, int score) ;
|
|
289
|
+// Para actualizar el criterio de letras solamente.
|
|
290
|
+void setLettersOnly(int count, int score) ;
|
286
|
291
|
|
287
|
|
- // Para actualizar el criterio de dígitos solamente.
|
288
|
|
- void setDigitsOnly(int count, int score) ;
|
|
292
|
+// Para actualizar el criterio de dígitos solamente.
|
|
293
|
+void setDigitsOnly(int count, int score) ;
|
289
|
294
|
|
290
|
|
- // Para actualizar el criterio de mayúsculas consecutivas.
|
291
|
|
- void setConsecutiveUpper(int count, int score) ;
|
|
295
|
+// Para actualizar el criterio de mayúsculas consecutivas.
|
|
296
|
+void setConsecutiveUpper(int count, int score) ;
|
292
|
297
|
|
293
|
|
- // Para actualizar el criterio de minúsculas consecutivas.
|
294
|
|
- void setConsecutiveLower(int count, int score) ;
|
|
298
|
+// Para actualizar el criterio de minúsculas consecutivas.
|
|
299
|
+void setConsecutiveLower(int count, int score) ;
|
295
|
300
|
|
296
|
|
- // Para actualizar el criterio de dígitos consecutivos.
|
297
|
|
- void setConsecutiveDigits(int count, int score) ;
|
298
|
|
- ```
|
|
301
|
+// Para actualizar el criterio de dígitos consecutivos.
|
|
302
|
+void setConsecutiveDigits(int count, int score) ;
|
|
303
|
+```
|
299
|
304
|
|
300
|
305
|
### Ejercicio 3: Calcular la puntuación de los criterios y la puntuación total de la contraseña
|
301
|
306
|
|