Explorar el Código

README-es.md edited on August 3, 2016 at 9:40am

Jose R Ortiz Ubarri hace 8 años
padre
commit
948d9799bd
Se han modificado 1 ficheros con 13 adiciones y 15 borrados
  1. 13
    15
      README-es.md

+ 13
- 15
README-es.md Ver fichero

1
-
2
 # Recursión - Figuras Recursivas
1
 # Recursión - Figuras Recursivas
3
 
2
 
4
 ![main1.jpg](images/main1.jpg)
3
 ![main1.jpg](images/main1.jpg)
5
 ![main2.jpg](images/main2.jpg)
4
 ![main2.jpg](images/main2.jpg)
6
 ![main3.png](images/main3.png)
5
 ![main3.png](images/main3.png)
7
 
6
 
8
-[Verano 2016 - Ive]
7
+[Verano 2016 - Ive - Coralys]
9
 
8
 
10
-Una técnica muy utilizada en programación es la *recursió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 el valor inicial en lugar de auto-invocarse. Los fractales son un ejemplo de figuras que se pueden crear usando recursión. En esta experiencia de laboratorio practicarás la definición e implementación de funciones recursivas para dibujar formas auto-similares (fractales).
9
+Una técnica muy utilizada en programación es la *recursió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 el valor inicial en lugar de auto-invocarse. Los fractales son un ejemplo de figuras que se pueden crear usando recursión. En esta experiencia de laboratorio practicarás la definición e implementación de funciones recursivas para dibujar formas auto-similares (fractales).
11
 
10
 
12
 Los ejercicios de esta experiencia de laboratorio son una adaptación de https://sites.google.com/a/wellesley.edu/wellesley-cs118-spring13/lectures-labs/lab-6-turtle-recursion.
11
 Los ejercicios de esta experiencia de laboratorio son una adaptación de https://sites.google.com/a/wellesley.edu/wellesley-cs118-spring13/lectures-labs/lab-6-turtle-recursion.
13
 
12
 
27
 
26
 
28
 3. Haber estudiado los conceptos e instrucciones para la sesión de laboratorio.
27
 3. Haber estudiado los conceptos e instrucciones para la sesión de laboratorio.
29
 
28
 
30
-4. Haber tomado el quiz Pre-Lab que se encuentra en Moodle.
29
+4. Haber tomado el quiz Pre-Lab disponible en Moodle.
31
 
30
 
32
 ---
31
 ---
33
 
32
 
44
 ---
43
 ---
45
 
44
 
46
 
45
 
47
-
48
 Una manera ingeniosa de practicar y "visualizar" recursión es programando funciones que produzcan figuras auto-similares (o recursivas). Por ejemplo, considera una figura recursiva que llamaremos *rama*. La Figura 3 muestra `rama(0,90)`, `rama(1,90)` y `rama(2,90)`.
46
 Una manera ingeniosa de practicar y "visualizar" recursión es programando funciones que produzcan figuras auto-similares (o recursivas). Por ejemplo, considera una figura recursiva que llamaremos *rama*. La Figura 3 muestra `rama(0,90)`, `rama(1,90)` y `rama(2,90)`.
49
 
47
 
50
 ---
48
 ---
55
 
53
 
56
 ---
54
 ---
57
 
55
 
58
-¿Puedes ver el comportamiento recursivo de esta figura? Nota que `rama(0,90)` es solo un segmento vertical (un segmento en un ángulo de 90 grados); `rama(1,90)` es `rama(0,90)` con dos segmentos inclinados en  su extremo superior. Más preciso, `rama(1,90)` es `rama(0,90)` con una  `rama(0,60)` y una `rama(0,120)` en el extremo superior. Similarmente, `rama(2,90)` es `rama(0,90)`  con dos `rama(1,90)` inclinadas en el extremo superior. Esto es,  `rama(2,90)` es:
56
+¿Puedes ver el comportamiento recursivo de esta figura? Nota que `rama(0,90)` es solo un segmento vertical (un segmento en un ángulo de 90 grados); `rama(1,90)` es `rama(0,90)` con dos segmentos inclinados en su extremo superior. Más preciso, `rama(1,90)` es `rama(0,90)` con una `rama(0,60)` y una `rama(0,120)` en el extremo superior. Similarmente, `rama(2,90)` es `rama(0,90)` con dos `rama(1,90)` inclinadas en el extremo superior. Esto es, `rama(2,90)` es:
59
 `rama(0,90)` con una `rama(1,60)` y una `rama(1,120)` en el extremo superior. Nota que $$60=90-30$$ y que $$120=90+30$$.
57
 `rama(0,90)` con una `rama(1,60)` y una `rama(1,120)` en el extremo superior. Nota que $$60=90-30$$ y que $$120=90+30$$.
60
 
58
 
61
-De esta manera podemos expresar `rama(n,A)` como una composición de ramas con $$n$$'s más pequeñas inclinadas. El Código 1 provee una manera de expresar `rama` como una función recursiva.
59
+De esta manera podemos expresar `rama(n,A)` como una composición de $$n$$ ramas más pequeñas e inclinadas. El Código 1 provee una manera de expresar `rama` como una función recursiva.
62
 
60
 
63
 ---
61
 ---
64
 
62
 
89
 
87
 
90
 ---
88
 ---
91
 
89
 
92
-## Sesión de laboratorio
90
+## Sesión de laboratorio:
93
 
91
 
94
-En la experiencia de laboratorio de hoy implementarás  funciones recursivas para producir fractales.
92
+En la experiencia de laboratorio de hoy implementarás funciones recursivas para producir fractales.
95
 
93
 
96
 ### Ejercicio 1 - Copo de nieve
94
 ### Ejercicio 1 - Copo de nieve
97
 
95
 
110
 1. Carga a `QtCreator` el proyecto `RecursiveShapes`. Hay dos maneras de hacer esto:
108
 1. Carga a `QtCreator` el proyecto `RecursiveShapes`. Hay dos maneras de hacer esto:
111
 
109
 
112
     * Utilizando la máquina virtual: Haz doble “click” en el archivo `RecursiveShapes.pro` que se encuentra  en el directorio `/home/eip/labs/recursion-recursiveshapes` de la máquina virtual.
110
     * Utilizando la máquina virtual: Haz doble “click” en el archivo `RecursiveShapes.pro` que se encuentra  en el directorio `/home/eip/labs/recursion-recursiveshapes` de la máquina virtual.
113
-    * Descargando la carpeta del proyecto de `Bitbucket`: Utiliza un terminal y escribe el commando `git clone http:/bitbucket.org/eip-uprrp/recursion-recursiveshapes` para descargar la carpeta `recursion-recursiveshapes` de `Bitbucket`. En esa carpeta, haz doble “click” en el archivo `RecursiveShapes.pro`.
111
+    * Descargando la carpeta del proyecto de `Bitbucket`: Utiliza un terminal y escribe el comando `git clone http:/bitbucket.org/eip-uprrp/recursion-recursiveshapes` para descargar la carpeta `recursion-recursiveshapes` de `Bitbucket`. En esa carpeta, haz doble “click” en el archivo `RecursiveShapes.pro`.
114
 
112
 
115
 2. Compila y corre el programa para que veas una figura del copo de nieve construida con 3 iteraciones de la función `snowflake`. Puedes ver el código que define esta función en el archivo `snowflake.cpp` del proyecto de `Qt`.
113
 2. Compila y corre el programa para que veas una figura del copo de nieve construida con 3 iteraciones de la función `snowflake`. Puedes ver el código que define esta función en el archivo `snowflake.cpp` del proyecto de `Qt`.
116
 
114
 
117
-    En la función `main`, busca la línea en donde se declara y dá valor a la variable `level`. Cambia el valor de `level` a `0` y corre el programa de nuevo. Podrás ver el triángulo que representa el caso base de la recursión para el copo de nieve. Continúa cambiando el valor de la variable `level` y corriendo el programa para que veas el proceso de la recursión y de producir figuras auto-similares.
115
+    En la función `main`, busca la línea en donde se declara y da valor a la variable `level`. Cambia el valor de `level` a `0` y corre el programa de nuevo. Podrás ver el triángulo que representa el caso base de la recursión para el copo de nieve. Continúa cambiando el valor de la variable `level` y corriendo el programa para que veas el proceso de la recursión y de producir figuras auto-similares.
118
 
116
 
119
 
117
 
120
 ### Ejercicio 2 - Cajas autosimilares
118
 ### Ejercicio 2 - Cajas autosimilares
132
 La función recursiva `boxes` incluye tres parámetros: `sideLength`, `shrinkFactor`, y `smallestLength`.
130
 La función recursiva `boxes` incluye tres parámetros: `sideLength`, `shrinkFactor`, y `smallestLength`.
133
 
131
 
134
 * `sideLength`: un entero que determina el largo de los lados del cuadrado más grande.
132
 * `sideLength`: un entero que determina el largo de los lados del cuadrado más grande.
135
-* `shrinkFactor`: un número real que determina la razón del siguiente nivel de cuadrados. Por ejemplo, si `sideLength` es `100`, y `shrinkFactor` es `0.3`, el largo de los lados del cuadrado más grande será `100` unidades, y el largo de los lados del próximo cuadrado más pequeño  será `100*.3=30` unidades. Se colocan 4 copias de ese cuadrado más pequeño dentro del cuadrado anterior, **un cuadrado en cada esquina**.
133
+* `shrinkFactor`: un número real que determina la razón del siguiente nivel de cuadrados. Por ejemplo, si `sideLength` es `100`, y `shrinkFactor` es `0.3`, el largo de los lados del cuadrado más grande será `100` unidades, y el largo de los lados del próximo cuadrado más pequeño será `100*.3=30` unidades. Se colocan 4 copias de ese cuadrado más pequeño dentro del cuadrado anterior, **un cuadrado en cada esquina**.
136
 * `smallestLength`: es un valor entero que determina el largo del lado del cuadrado más pequeño que será dibujado. Por ejemplo, en la Figura 6, `boxes(400, 0.4, 200)` solo dibuja el cuadrado con lados de largo `400`, ya que el tamaño que le seguiría sería `400 * 0.4 = 160`, que es más pequeño que `200`. Por otro lado, `boxes(400, 0.4, 75)` dibuja el cuadrado de tamaño `400` y los cuadrados de tamaño `160`, pero no los siguientes en tamaño, porque serían de tamaño `160 * 0.4 = 64`, que es menor que `75`.
134
 * `smallestLength`: es un valor entero que determina el largo del lado del cuadrado más pequeño que será dibujado. Por ejemplo, en la Figura 6, `boxes(400, 0.4, 200)` solo dibuja el cuadrado con lados de largo `400`, ya que el tamaño que le seguiría sería `400 * 0.4 = 160`, que es más pequeño que `200`. Por otro lado, `boxes(400, 0.4, 75)` dibuja el cuadrado de tamaño `400` y los cuadrados de tamaño `160`, pero no los siguientes en tamaño, porque serían de tamaño `160 * 0.4 = 64`, que es menor que `75`.
137
 
135
 
138
-#### Instrucciones:
136
+#### Instrucciones
139
 
137
 
140
 1. Estudia la función `box` incluida en el archivo `boxes.cpp`. Esta función recibe como argumentos las coordenadas de la esquina superior izquierda, el largo de los lados y el color de una caja. La función dibuja una caja con esas especificaciones.
138
 1. Estudia la función `box` incluida en el archivo `boxes.cpp`. Esta función recibe como argumentos las coordenadas de la esquina superior izquierda, el largo de los lados y el color de una caja. La función dibuja una caja con esas especificaciones.
141
 
139
 
150
 
148
 
151
 ---
149
 ---
152
 
150
 
153
-##Entrega
151
+## Entrega
154
 
152
 
155
-Utiliza "Entrega" en Moodle para entregar los archivos `boxes.cpp` y `main.cpp`. Recuerda utilizar buenas prácticas de programación, incluir el nombre de los programadores y documentar tu programa.
153
+Utiliza "Entrega" en Moodle para entregar los archivos `boxes.cpp` y `main.cpp`. Recuerda utilizar buenas prácticas de programación, incluye el nombre de los programadores, y documenta tu programa.
156
 
154
 
157
 
155
 
158
 ---
156
 ---