Browse Source

README-es.md edited on August 3, 2016 at 10:55am

Jose R Ortiz Ubarri 8 years ago
parent
commit
82baa54f26
1 changed files with 22 additions and 21 deletions
  1. 22
    21
      README-es.md

+ 22
- 21
README-es.md View File

8
 
8
 
9
 Como habrás aprendido en experiencias de laboratorio anteriores, lograr que un programa compile es solo una pequeña parte de programar. El compilador se encargará de decirte si hubo errores de sintaxis, pero no podrá detectar errores en la lógica del programa. Es muy importante probar las funciones del programa para validar que producen los resultados correctos y esperados.
9
 Como habrás aprendido en experiencias de laboratorio anteriores, lograr que un programa compile es solo una pequeña parte de programar. El compilador se encargará de decirte si hubo errores de sintaxis, pero no podrá detectar errores en la lógica del programa. Es muy importante probar las funciones del programa para validar que producen los resultados correctos y esperados.
10
 
10
 
11
-Una manera de hacer estas pruebas es “a mano”, esto es, corriendo el programa múltiples veces, ingresando valores representativos (por medio del teclado) y visualmente verificando que el programa devuelve los valores esperados. Otra forma más conveniente es implementar funciones dentro del programa cuyo propósito es verificar que otras funciones produzcan resultados correctos. En esta experiencia de laboratorio, practicarás ambos métodos de verificación.
11
+Una manera de hacer estas pruebas es a mano; esto es, corriendo el programa múltiples veces, ingresando valores representativos (por medio del teclado) y visualmente verificando que el programa devuelve los valores esperados. Otra forma más conveniente es implementar funciones dentro del programa cuyo propósito es verificar que otras funciones produzcan resultados correctos. En esta experiencia de laboratorio practicarás ambos métodos de verificación.
12
 
12
 
13
 
13
 
14
 ## Objetivos:
14
 ## Objetivos:
67
 ### La función `assert`
67
 ### La función `assert`
68
 
68
 
69
 
69
 
70
-La función `assert(bool expression)` se puede utilizar como herramienta rudimentaria para validar funciones. `assert` tiene un funcionamiento muy sencillo y poderoso. Si la expresión que colocamos entre los paréntesis de `assert` es *cierta* la función permite que el programa continúe con la próxima instrucción. De lo contrario, si la expresión que colocamos entre los paréntesis es *falsa*, la función `assert` hace que el programa termine e imprime un mensaje al terminal que informa al usuario sobre la instrucción de `assert` que falló. 
70
+La función `assert(bool expression)` se puede utilizar como herramienta rudimentaria para validar funciones. `assert` tiene un funcionamiento muy sencillo y poderoso. Si la expresión que colocamos entre los paréntesis de `assert` es *cierta* la función permite que el programa continúe con la próxima instrucción. De lo contrario, si la expresión que colocamos entre los paréntesis es *falsa*, la función `assert` hace que el programa termine e imprima un mensaje al terminal que informe al usuario sobre la instrucción de `assert` que falló. 
71
 
71
 
72
-Por ejemplo, el siguiente programa correrá de principio a fin sin problemas pues todos las expresiones incluidas en los paréntesis de los asserts evalúan a *true*.
72
+Por ejemplo, el siguiente programa correrá de principio a fin sin problemas pues todos las expresiones incluidas en los paréntesis de los asserts evalúan a *cierto*.
73
 
73
 
74
 ---
74
 ---
75
 
75
 
94
 
94
 
95
 ---
95
 ---
96
 
96
 
97
-El siguiente programa no correrá hasta el final pues el segundo `assert` (`assert(j == i);`)  contiene una expresión  (`j == i`) que evalúa a *false*.
97
+El siguiente programa no correrá hasta el final pues el segundo `assert` (`assert(j == i);`)  contiene una expresión  (`j == i`) que evalúa a *falsa*.
98
 
98
 
99
 ---
99
 ---
100
 
100
 
116
 
116
 
117
 ```
117
 ```
118
 
118
 
119
-**Figura 2.** Ejemplo de programa que no "pasa" una prueba de `assert`.
119
+**Figura 2.** Ejemplo de programa que no pasa una prueba de `assert`.
120
 
120
 
121
 ---
121
 ---
122
 
122
 
123
-Al correr el pasado programa, en lugar de obtener la frase `Eso es todo amigos!”` en el terminal, obtendremos un mensaje como el siguiente:
123
+Al correr el pasado programa, en lugar de obtener la frase `"Eso es todo amigos!”` en el terminal, obtendremos un mensaje como el siguiente:
124
 
124
 
125
 `Assertion failed: (j == i), function main, file ../programa01/main.cpp, line 8.`
125
 `Assertion failed: (j == i), function main, file ../programa01/main.cpp, line 8.`
126
 
126
 
183
 
183
 
184
 ![figure4.png](images/figure4.png)
184
 ![figure4.png](images/figure4.png)
185
 
185
 
186
-**Figura 4** - Interfaz de un programa para hallar el valor máximo entre tres enteros.
186
+**Figura 4.** Interfaz de un programa para hallar el valor máximo entre tres enteros.
187
 
187
 
188
 ---
188
 ---
189
 
189
 
193
 * a = 3, b = 6, c = 2; resultado esperado: 6
193
 * a = 3, b = 6, c = 2; resultado esperado: 6
194
 * a = 1, b = 10, c = 100; resultado esperado: 100
194
 * a = 1, b = 10, c = 100; resultado esperado: 100
195
 
195
 
196
-Si alguno de estos tres casos no da el resultado esperado, el programa de tu amiga no funciona. Por otro lado, si los tres casos funcionan, entonces el programa tiene una probabilidad alta de estar correcto.
196
+Si alguno de estos tres casos no da el resultado esperado, el programa de tu amiga no funciona. Por otro lado, si los tres casos funcionan, entonces el programa tiene una alta probabilidad de estar correcto.
197
+
197
 
198
 
198
 #### Funciones para validar
199
 #### Funciones para validar
199
 
200
 
206
 
207
 
207
     ![figure5.png](images/figure5.png)
208
     ![figure5.png](images/figure5.png)
208
 
209
 
209
-    **Figura 5** - Interfaz de la función `3 Sorts`.
210
+    **Figura 5.** Interfaz de la función `3 Sorts`.
210
 
211
 
211
     ---
212
     ---
212
 
213
 
228
 
229
 
229
     ![figure7.jpg](images/figure7.jpg)
230
     ![figure7.jpg](images/figure7.jpg)
230
 
231
 
231
-    **Figura 7** - Formas de ganar en el juego "Piedra, papel y tijera".
232
+    **Figura 7.** Formas de ganar en el juego "Piedra, papel y tijera".
232
 
233
 
233
     ---
234
     ---
234
 
235
 
235
     ![figure8.png](images/figure8.png)
236
     ![figure8.png](images/figure8.png)
236
 
237
 
237
-    **Figura 8** - Interfaz de la función `Rock, Paper, Scissors`.
238
+    **Figura 8.** Interfaz de la función `Rock, Paper, Scissors`.
238
 
239
 
239
     ---
240
     ---
240
 
241
 
249
 
250
 
250
     ![figure9.png](images/figure9.png)
251
     ![figure9.png](images/figure9.png)
251
 
252
 
252
-    **Figura 9** - Interfaz de la función `Zulu time`.
253
+    **Figura 9.** Interfaz de la función `Zulu time`.
253
 
254
 
254
     ---
255
     ---
255
 
256
 
269
   | 2       | "alce", "zorro", "coyote" | "zorro", "alce", "coyote" | ....      | ....       |            |
270
   | 2       | "alce", "zorro", "coyote" | "zorro", "alce", "coyote" | ....      | ....       |            |
270
   | ....    | ....                      | ....                      | ....      | ....       | ....       |
271
   | ....    | ....                      | ....                      | ....      | ....       | ....       |
271
 
272
 
272
-  **Figura 10** - Tabla para organizar los resultados de las pruebas.
273
+  **Figura 10.** Tabla para organizar los resultados de las pruebas.
273
 
274
 
274
   ---
275
   ---
275
 
276
 
277
 
278
 
278
 
279
 
279
 
280
 
280
-### Ejercicio 2: Hacer pruebas "a mano"
281
+### Ejercicio 2 - Hacer pruebas "a mano"
281
 
282
 
282
 El proyecto `testing` implementa varias versiones de cada una de las cuatro funciones simples que se decribieron en el Ejercicio 1. Algunas o todas las implementaciones pueden estar incorrectas. Tu tarea es, usando las pruebas que diseñaste en el Ejercicio 1, probar las versiones de cada función para determinar cuáles de ellas, si alguna, están implementadas correctamente.
283
 El proyecto `testing` implementa varias versiones de cada una de las cuatro funciones simples que se decribieron en el Ejercicio 1. Algunas o todas las implementaciones pueden estar incorrectas. Tu tarea es, usando las pruebas que diseñaste en el Ejercicio 1, probar las versiones de cada función para determinar cuáles de ellas, si alguna, están implementadas correctamente.
283
 
284
 
284
 Este ejercicio **NO requiere programación**, debes hacer las pruebas **sin mirar el código.**
285
 Este ejercicio **NO requiere programación**, debes hacer las pruebas **sin mirar el código.**
285
 
286
 
286
-#### Instrucciones:
287
+#### Instrucciones
287
 
288
 
288
 1. Carga a `QtCreator` el proyecto `Testing`. Hay dos maneras de hacer esto:
289
 1. Carga a `QtCreator` el proyecto `Testing`. Hay dos maneras de hacer esto:
289
 
290
 
290
     * Utilizando la máquina virtual: Haz doble “click” en el archivo `Testing.pro` que se encuentra en el directorio `/home/eip/labs/testing-testing` de la máquina virtual.
291
     * Utilizando la máquina virtual: Haz doble “click” en el archivo `Testing.pro` que se encuentra en el directorio `/home/eip/labs/testing-testing` de la máquina virtual.
291
-    * Descargando la carpeta del proyecto de `Bitbucket`: Utiliza un terminal y escribe el commando `git clone http:/bitbucket.org/eip-uprrp/testing-testing` para descargar la carpeta `tema-nombre` de `Bitbucket`. En esa carpeta, haz doble “click” en el archivo `Testing.pro`.
292
+    * Descargando la carpeta del proyecto de `Bitbucket`: Utiliza un terminal y escribe el comando `git clone http:/bitbucket.org/eip-uprrp/testing-testing` para descargar la carpeta `tema-nombre` de `Bitbucket`. En esa carpeta, haz doble “click” en el archivo `Testing.pro`.
292
 
293
 
293
 2. Configura el proyecto y corre el programa. Verás una pantalla similar a la siguiente:
294
 2. Configura el proyecto y corre el programa. Verás una pantalla similar a la siguiente:
294
   
295
   
296
 
297
 
297
     ![figure11.png](images/figure11.png)
298
     ![figure11.png](images/figure11.png)
298
 
299
 
299
-    **Figura 11** - Ventana para seleccionar la función que se va a probar.
300
+    **Figura 11.** Ventana para seleccionar la función que se va a probar.
300
 
301
 
301
     ---
302
     ---
302
 
303
 
303
 3. Selecciona el botón de `3 Sorts` y obtendrás la interfaz de la Figura 5.
304
 3. Selecciona el botón de `3 Sorts` y obtendrás la interfaz de la Figura 5.
304
 
305
 
305
-4. La "Version Alpha" en la caja indica que estás corriendo la primera versión del algoritmo `3 Sorts`. Usa las pruebas que escribiste en el Ejercicio 1 para validar la "Version Alpha". Luego, haz lo mismo para las versiones Beta, Gamma y Delta. Escribe cuáles son las versiones correctas (si alguna) de la función y porqué. Recuerda que, para cada función, algunas o todas las implementaciones pueden estar incorrectas. Además, especifica cuáles pruebas te permitieron determinar las versiones que son incorrectas.
306
+4. La "Versión Alpha" en la caja indica que estás corriendo la primera versión del algoritmo `3 Sorts`. Usa las pruebas que escribiste en el Ejercicio 1 para validar la "Version Alpha". Luego, haz lo mismo para las versiones Beta, Gamma y Delta. Escribe cuáles son las versiones correctas (si alguna) de la función y por qué. Recuerda que, para cada función, algunas o todas las implementaciones pueden estar incorrectas. Además, especifica cuáles pruebas te permitieron determinar las versiones que son incorrectas.
306
 
307
 
307
 
308
 
308
 
309
 
309
-### Ejercicio 3: Usar `assert` para realizar pruebas unitarias
310
+### Ejercicio 3 - Usar `assert` para realizar pruebas unitarias
310
 
311
 
311
-Hacer pruebas "a mano" cada vez que corres un programa es una tarea que resulta "cansona" bien rápido. En los ejercicios anteriores lo hiciste para unas pocas funciones simples. ¡Imagínate hacer lo mismo para un programa complejo completo como un navegador o un procesador de palabras!
312
+Hacer pruebas a mano cada vez que corres un programa es una tarea que puede resultar cansona bien rápido. En los ejercicios anteriores lo hiciste para unas pocas funciones simples. ¡Imagínate hacer lo mismo para un programa complejo como un navegador o un procesador de palabras!
312
 
313
 
313
 Las *pruebas unitarias* ayudan a los programadores a validar códigos y simplificar el proceso de depuración ("debugging"), a la vez que evitan la tediosa tarea de hacer pruebas a mano en cada ejecución.
314
 Las *pruebas unitarias* ayudan a los programadores a validar códigos y simplificar el proceso de depuración ("debugging"), a la vez que evitan la tediosa tarea de hacer pruebas a mano en cada ejecución.
314
 
315
 
346
 
347
 
347
 1. Utiliza "Entrega 1" en Moodle para entregar la tabla con las pruebas que diseñaste en el Ejercicio 1 y que completaste en el Ejercicio 2 con los resultados de las pruebas de las funciones.
348
 1. Utiliza "Entrega 1" en Moodle para entregar la tabla con las pruebas que diseñaste en el Ejercicio 1 y que completaste en el Ejercicio 2 con los resultados de las pruebas de las funciones.
348
 
349
 
349
-2. Utiliza "Entrega 2" en Moodle para entregar el archivo `main.cpp` que contiene las funciones `test_isALetter`, `test_isValidTime`, `test_gcd` y sus invocaciones. Recuerda utilizar buenas prácticas de programación, al incluir el nombre de los programadores y documentar tu programa.
350
+2. Utiliza "Entrega 2" en Moodle para entregar el archivo `main.cpp` que contiene las funciones `test_isALetter`, `test_isValidTime`, `test_gcd` y sus invocaciones. Recuerda utilizar buenas prácticas de programación, incluye el nombre de los programadores, y documenta tu programa.
350
 
351
 
351
 ---
352
 ---
352
 
353