Browse Source

README-es.md edited on August 1, 2016

Jose R Ortiz Ubarri 8 years ago
parent
commit
675b5a9690
1 changed files with 20 additions and 19 deletions
  1. 20
    19
      README-es.md

+ 20
- 19
README-es.md View File

1
-#Recursión - Revolvedor de imágenes
1
+# Recursión - Revolvedor de imágenes
2
 
2
 
3
 ![main1.png](images/main1-small.png)
3
 ![main1.png](images/main1-small.png)
4
 ![main2.png](images/main2-small.png)
4
 ![main2.png](images/main2-small.png)
5
 ![main3.png](images/main3-small.png)
5
 ![main3.png](images/main3-small.png)
6
 
6
 
7
-[Verano 2016 - Rafa - Ive]
7
+[Verano 2016 - Coralys]
8
 
8
 
9
-La recursión es una técnica muy utilizada en programación. Con esta técnica se resuelven problemas resolviendo un problema similar pero para casos más pequeños. Podemos construir conjuntos de objetos o procesos utilizando *reglas recursivas* y *valores iniciales*. Las *funciones recursivas* son funciones que se auto-invocan, utilizando cada vez conjuntos o elementos más pequeños,  hasta llegar a un punto en donde se utiliza la condición inicial en lugar de auto-invocarse. En esta experiencia de laboratorio practicarás la definición e implementación de funciones recursivas para revolver una imagen y hacerla incomprensible.
9
+La recursión es una técnica muy utilizada en programación. Con esta técnica se resuelven problemas resolviendo un problema similar, pero para casos más pequeños. Podemos construir conjuntos de objetos o procesos utilizando *reglas recursivas* y *valores iniciales*. Las *funciones recursivas* son funciones que se auto-invocan, utilizando cada vez conjuntos o elementos más pequeños, hasta llegar a un punto en donde se utiliza la condición inicial en lugar de auto-invocarse. En esta experiencia de laboratorio, practicarás la definición e implementación de funciones recursivas para revolver una imagen y hacerla incomprensible.
10
 
10
 
11
-##Objetivos:
11
+## Objetivos:
12
 
12
 
13
 1. Definir e implementar funciones recursivas.
13
 1. Definir e implementar funciones recursivas.
14
 2. Practicar el procesamiento de imágenes.
14
 2. Practicar el procesamiento de imágenes.
15
 3. Practicar el uso de estructuras de control y repetición.
15
 3. Practicar el uso de estructuras de control y repetición.
16
 
16
 
17
 
17
 
18
-##Pre-Lab:
18
+## Pre-Lab:
19
 
19
 
20
 Antes de llegar al laboratorio debes haber:
20
 Antes de llegar al laboratorio debes haber:
21
 
21
 
23
 
23
 
24
 2. Haber estudiado los conceptos e instrucciones para la sesión de laboratorio.
24
 2. Haber estudiado los conceptos e instrucciones para la sesión de laboratorio.
25
 
25
 
26
-3. Haber tomado el quiz Pre-Lab que se encuentra en Moodle.
26
+3. Haber tomado el quiz Pre-Lab disponible en Moodle.
27
 
27
 
28
 ---
28
 ---
29
 
29
 
31
 
31
 
32
 
32
 
33
 
33
 
34
-##Revolver imágenes digitalmente
34
+## Revolver imágenes digitalmente
35
 
35
 
36
 Al revolver las imágenes digitalmente reordenamos los píxeles de las imágenes para romper la relación entre píxeles adyacentes y así hacer que la imagen original sea incomprensible. Esta técnica se usa mucho para cifrar imágenes y esconder datos. [1]
36
 Al revolver las imágenes digitalmente reordenamos los píxeles de las imágenes para romper la relación entre píxeles adyacentes y así hacer que la imagen original sea incomprensible. Esta técnica se usa mucho para cifrar imágenes y esconder datos. [1]
37
 
37
 
47
 
47
 
48
 ### ¡Revuélvela!
48
 ### ¡Revuélvela!
49
 
49
 
50
-El método que utilizarás para revolver las imágenes funciona intercambiando  rectángulos de una imagen un cierto número de veces, según lo establezca el *nivel*. La Figura 2 ilustra  un  revoltillo de *nivel 1* de una imagen: se intercambian los cuadrantes diagonales. Observa también la Figura 6.
50
+El método que utilizarás para revolver las imágenes funciona intercambiando rectángulos de una imagen un cierto número de veces, según lo establezca el *nivel*. La Figura 2 ilustra un revoltillo de *nivel 1* de una imagen: se intercambian los cuadrantes diagonales. Observa también la Figura 6.
51
 
51
 
52
 ---
52
 ---
53
 
53
 
78
 
78
 
79
 ---
79
 ---
80
 
80
 
81
-Si continuamos el patrón, un revoltillo de *nivel 3* comienza intercambiando los cuadrantes diagonales. Luego le aplica un revoltillo de *nivel 2* a cada cuadrante: intercambia las mitades izquierda y derecha y aplica el revoltillo de *nivel 1* a cada nuevo cuadrante. La Figura 8 muestra el proceso de hacer un revoltillo de nivel 3.
81
+Si continuamos el patrón, un revoltillo de *nivel 3* comienza intercambiando los cuadrantes diagonales. Luego le aplica un revoltillo de *nivel 2* a cada cuadrante: intercambia las mitades izquierda y derecha, y aplica el revoltillo de *nivel 1* a cada nuevo cuadrante. La Figura 8 muestra el proceso de hacer un revoltillo de nivel 3.
82
 
82
 
83
 Para revolver una imagen hacemos este proceso para un cierto *nivel N*. ¿Cuál es el patrón? ¿Cómo comenzaría el revoltillo de *nivel 4*? ¿En cuántos cuadrantes habremos dividido la figura original al completar el revoltillo?
83
 Para revolver una imagen hacemos este proceso para un cierto *nivel N*. ¿Cuál es el patrón? ¿Cómo comenzaría el revoltillo de *nivel 4*? ¿En cuántos cuadrantes habremos dividido la figura original al completar el revoltillo?
84
 
84
 
99
 
99
 
100
 ![figure7.png](images/figure7.png)
100
 ![figure7.png](images/figure7.png)
101
 
101
 
102
-**Figura 7.** Revoltillo de nivel 2: (a) se intercambian las mitades izquierda y derecha, (b)  se aplica un revoltillo de nivel 1 a cada cuadrante.
102
+**Figura 7.** Revoltillo de nivel 2: (a) se intercambian las mitades izquierda y derecha, (b) se aplica un revoltillo de nivel 1 a cada cuadrante.
103
 
103
 
104
 
104
 
105
 ---
105
 ---
106
 
106
 
107
 ![figure8.png](images/figure8.png)
107
 ![figure8.png](images/figure8.png)
108
 
108
 
109
-**Figura 8.** Revoltillo de nivel 3: (a) se intercambian los cuadrantes diagonales para luego aplicar revoltillo de nivel 2 a cada cuadrante (b) se intercambian mitades izquierda y derecha en cada cuadrante, (c) se aplica un revoltillo de nivel 1 a cada nuevo cuadrante.
109
+**Figura 8.** Revoltillo de nivel 3: (a) se intercambian los cuadrantes diagonales para luego aplicar revoltillo de nivel 2 a cada cuadrante, (b) se intercambian mitades izquierda y derecha en cada cuadrante, (c) se aplica un revoltillo de nivel 1 a cada nuevo cuadrante.
110
 
110
 
111
 
111
 
112
 
112
 
127
 ---
127
 ---
128
 
128
 
129
 
129
 
130
-##Funciones adicionales provistas en el proyecto
130
+## Funciones adicionales provistas en el proyecto
131
 
131
 
132
 El proyecto en el que trabajarás hoy contiene la función `cropSwap` que implementa la funcionalidad de intercambiar los píxeles contenidos en dos rectángulos congruentes dentro de una imagen. Su prototipo es:
132
 El proyecto en el que trabajarás hoy contiene la función `cropSwap` que implementa la funcionalidad de intercambiar los píxeles contenidos en dos rectángulos congruentes dentro de una imagen. Su prototipo es:
133
 
133
 
135
 
135
 
136
 Sus parámetros son:
136
 Sus parámetros son:
137
 * `img`: referencia a la imagen que se desea modificar (un objeto de clase `QImage`)
137
 * `img`: referencia a la imagen que se desea modificar (un objeto de clase `QImage`)
138
-* `x0`, `y0`,`x0`, `y0`: coordenadas de las esquinas superior izquierda del los rectángulos.
138
+* `x0`, `y0`,`x1`, `y1`: coordenadas de las esquinas superior izquierda del los rectángulos.
139
 * `width`, `height`: ancho y altura (en píxeles) de los rectángulos.
139
 * `width`, `height`: ancho y altura (en píxeles) de los rectángulos.
140
 
140
 
141
 Por ejemplo, si deseamos intercambiar los píxeles de la mitad superior e inferior de una imagen *P* de ancho 100 y alto 150, invocamos la función así:
141
 Por ejemplo, si deseamos intercambiar los píxeles de la mitad superior e inferior de una imagen *P* de ancho 100 y alto 150, invocamos la función así:
149
 
149
 
150
 
150
 
151
 
151
 
152
-##Sesión de laboratorio:
152
+## Sesión de laboratorio:
153
 
153
 
154
 
154
 
155
 El proyecto `ImageScrambler` contiene el esqueleto de una aplicación para revolver y "des-revolver" imágenes. En la experiencia de laboratorio de hoy trabajarás con el archivo `Filter.cpp` para completar la aplicación.
155
 El proyecto `ImageScrambler` contiene el esqueleto de una aplicación para revolver y "des-revolver" imágenes. En la experiencia de laboratorio de hoy trabajarás con el archivo `Filter.cpp` para completar la aplicación.
157
 
157
 
158
 
158
 
159
 
159
 
160
-###Ejercicio 1: Pseudocódigo de la función para revolver
160
+### Ejercicio 1: Pseudocódigo de la función para revolver
161
 
161
 
162
 Escribe el pseudocódigo para expresar el algoritmo de revolver descrito arriba como una función recursiva.
162
 Escribe el pseudocódigo para expresar el algoritmo de revolver descrito arriba como una función recursiva.
163
 
163
 
164
 
164
 
165
 
165
 
166
-###Ejercicio 2: Función recursiva para revolver la imagen
166
+### Ejercicio 2: Función recursiva para revolver la imagen
167
 
167
 
168
-####Instrucciones
168
+**Instrucciones**
169
 
169
 
170
 1.	Carga a `QtCreator` el proyecto `ImageScrambler`. Hay dos maneras de hacer esto:
170
 1.	Carga a `QtCreator` el proyecto `ImageScrambler`. Hay dos maneras de hacer esto:
171
 
171
 
172
        * Utilizando la máquina virtual: Haz doble “click” en el archivo `ImageScrambler.pro` que se encuentra  en el directorio `/home/eip/labs/recursion-imagescrambler` de la máquina virtual.
172
        * Utilizando la máquina virtual: Haz doble “click” en el archivo `ImageScrambler.pro` que se encuentra  en el directorio `/home/eip/labs/recursion-imagescrambler` de la máquina virtual.
173
-       * Descargando la carpeta del proyecto de `Bitbucket`: Utiliza un terminal y escribe el commando `git clone http:/bitbucket.org/eip-uprrp/recursion-imagescrambler` para descargar la carpeta `recursion-imagescrambler` de `Bitbucket`. En esa carpeta, haz doble “click” en el archivo `ImageScrambler.pro`.
173
+       
174
+       * Descargando la carpeta del proyecto de `Bitbucket`: Utiliza el terminal de la máquina virtual y escribe el commando `git clone http:/bitbucket.org/eip-uprrp/recursion-imagescrambler` para descargar la carpeta `recursion-imagescrambler` de `Bitbucket`. En esa carpeta, haz doble “click” en el archivo `ImageScrambler.pro`.
174
 
175
 
175
 2. El código que te proveemos crea la interfaz de la Figura 9.
176
 2. El código que te proveemos crea la interfaz de la Figura 9.
176
 
177
 
198
 
199
 
199
 1. Utiliza "Entrega 1" en Moodle para entregar el archivo con el pseudocódigo de la función para revolver.
200
 1. Utiliza "Entrega 1" en Moodle para entregar el archivo con el pseudocódigo de la función para revolver.
200
 
201
 
201
-2. Utiliza "Entrega 2" en Moodle para entregar el archivo `Filter.cpp` que contiene las funciones  que implementaste en esta experiencia de laboratorio. Recuerda utilizar buenas prácticas de programación, incluir el nombre de los programadores y documentar tu programa.
202
+2. Utiliza "Entrega 2" en Moodle para entregar el archivo `Filter.cpp` que contiene las funciones que implementaste en esta experiencia de laboratorio. Recuerda utilizar buenas prácticas de programación, al incluir el nombre de los programadores y documentar tu programa.
202
 
203
 
203
 ---
204
 ---
204
 
205