Kaynağa Gözat

README-es.md edited online with Bitbucket

Jose R Ortiz Ubarri 8 yıl önce
ebeveyn
işleme
1d3ae3a233
1 değiştirilmiş dosya ile 34 ekleme ve 29 silme
  1. 34
    29
      README-es.md

+ 34
- 29
README-es.md Dosyayı Görüntüle

@@ -7,7 +7,7 @@
7 7
 
8 8
 Una buena manera de organizar y estructurar los programas de computadoras es dividiéndolos en partes más pequeñas utilizando funciones. Cada función realiza una tarea específica del problema que estamos resolviendo.
9 9
 
10
-Haz visto que todos los programas en C++ deben contener la función `main` que es donde comienza el programa. Probablemente ya haz utilizado funciones como `pow`, `sin`, `cos`  o `sqrt` de la biblioteca de matemática `cmath`. Dado que en casi todas las experiencias de laboratorio futuras estarás utilizando funciones pre-definidas, necesitas aprender cómo trabajar con ellas. Más adelante aprenderás cómo diseñarlas y validarlas. En esta experiencia de laboratorio harás búsquedas y desplegarás información contenida en una base de datos de DVDs para practicar la creación de funciones simples y la invocación de funciones pre-definidas. 
10
+Haz visto que todos los programas en C++ deben contener la función `main` que es donde comienza el programa. Probablemente ya has utilizado funciones como `pow`, `sin`, `cos`  o `sqrt` de la biblioteca de matemática `cmath`. Dado que en casi todas las experiencias de laboratorio futuras estarás utilizando funciones pre-definidas, necesitas aprender cómo trabajar con ellas. Más adelante aprenderás cómo diseñarlas y validarlas. En esta experiencia de laboratorio harás búsquedas y desplegarás información contenida en una base de datos de DVDs para practicar la creación de funciones simples y la invocación de funciones pre-definidas. 
11 11
 
12 12
 
13 13
 ##Objetivos:
@@ -20,7 +20,7 @@ Haz visto que todos los programas en C++ deben contener la función `main` que e
20 20
 
21 21
 ##Pre-Lab:
22 22
 
23
-Antes de llegar al laboratorio  debes:
23
+Antes de llegar al laboratorio debes:
24 24
 
25 25
 1. Haber repasado los siguientes conceptos:
26 26
 
@@ -28,13 +28,13 @@ Antes de llegar al laboratorio  debes:
28 28
 
29 29
     b. la manera de invocar funciones en C++
30 30
 
31
-    c. la diferencia entre  parámetros pasados por valor y por referencia
31
+    c. la diferencia entre parámetros pasados por valor y por referencia
32 32
 
33 33
     d. cómo devolver el resultado de una función.
34 34
 
35 35
 2. Haber estudiado los conceptos e instrucciones para la sesión de laboratorio.
36 36
 
37
-3. Haber tomado el quiz Pre-Lab que se encuentra en Moodle.
37
+3. Haber tomado el quiz Pre-Lab, disponible en Moodle.
38 38
 
39 39
 
40 40
 ---
@@ -46,12 +46,12 @@ Antes de llegar al laboratorio  debes:
46 46
 ##Funciones
47 47
 
48 48
 
49
-En matemática, una función $$f$$ es una regla que se usa para asignar a cada elemento $$x$$ de un conjunto que se llama *dominio*, uno (y solo un) elemento $$y$$ de un conjunto que se llama *campo de valores*. Por lo general, esa regla se representa como una ecuación, $$y=f(x)$$. La variable $$x$$ es el parámetro de la función y la variable $$y$$ contendrá el resultado de la función. Una función puede tener más de un parámetro pero solo un resultado. Por ejemplo, una función puede tener la forma $$y=f(x_1,x_2)$$ en donde hay dos parámetros y para cada par $$(a,b)$$ que se use como argumento de la función, la función tiene un solo valor de $$y=f(a,b)$$. El dominio de la función te dice el tipo de valor que debe tener el parámetro y el campo de valores el tipo de valor que tendrá el resultado que devuelve la función.
49
+En matemática, una función $$f$$ es una regla que se usa para asignar a cada elemento $$x$$ de un conjunto llamado *dominio*, uno (y solo un) elemento $$y$$ de un conjunto llamado *campo de valores*. Por lo general, esa regla se representa como una ecuación, $$y=f(x)$$. La variable $$x$$ es el parámetro de la función y la variable $$y$$ contendrá el resultado de la función. Una función puede tener más de un parámetro pero solo un resultado. Por ejemplo, una función puede tener la forma $$y=f(x_1,x_2)$$ en donde hay dos parámetros y para cada par $$(a,b)$$ que se use como argumento de la función, la función tendrá un solo valor de $$y=f(a,b)$$. El dominio de la función te dice el tipo de valor que debe tener el parámetro y el campo de valores dice el tipo de valor que tendrá el resultado que devuelve la función.
50 50
 
51 51
 Las funciones en lenguajes de programación de computadoras son similares. Una función 
52
-tiene una serie de instrucciones que toman los valores asignados a los parámetros y realiza alguna tarea. En C++ y en algunos otros lenguajes de programación, las funciones solo pueden devolver un resultado, tal y como sucede en matemáticas. La única diferencia es que una función en programación puede que no devuelva valor (en este caso la función se declara `void`). Si la función va a devolver algún valor, se hace con la instrucción `return`. Al igual que en matemática tienes que especificar el dominio y el campo de valores, en programación tienes que especificar los tipos de valores que tienen los parámetros y el resultado que devuelve la función; esto lo haces al declarar la función.
52
+tiene una serie de instrucciones que toman los valores asignados a los parámetros y realiza alguna tarea. En C++ y en algunos otros lenguajes de programación, las funciones solo pueden devolver un resultado, tal y como sucede en matemáticas. La única diferencia es que una función en programación puede que no devuelva un valor (en este caso la función se declara `void`). Si la función va a devolver algún valor, se hace con la instrucción `return`. Al igual que en matemática tienes que especificar el dominio y el campo de valores, en programación tienes que especificar los tipos de valores que tienen los parámetros y el resultado que devuelve la función; esto lo haces al declarar la función.
53 53
 
54
-###Encabezado de una función:
54
+###El encabezado de una función:
55 55
 
56 56
 La primera oración de una función se llama el *encabezado* y su estructura es como sigue:
57 57
 
@@ -61,7 +61,7 @@ Por ejemplo,
61 61
 
62 62
 `int ejemplo(int var1, float var2, char &var3)`
63 63
 
64
-sería el encabezado de la función llamada `ejemplo`, que devuelve un valor entero. La función recibe como argumentos un valor entero (y guardará una copia en `var1`), un valor de tipo `float` (y guardará una copia en `var2`) y la referencia a una variable de tipo  `char` que se guardará en la variable de referencia `var3`. Nota que `var3` tiene el signo `&` antes del nombre de la variable. Esto indica que `var3` contendrá la referencia a un caracter.
64
+sería el encabezado de la función llamada `ejemplo`, que devuelve un valor entero. La función recibe como argumentos un valor entero (y guardará una copia en `var1`), un valor de tipo `float` (y guardará una copia en `var2`) y la referencia a una variable de tipo  `char` que se guardará en la variable de referencia `var3`. Nota que `var3` tiene el signo `&` antes del nombre de la variable. Esto indica que `var3` contendrá la referencia a un carácter.
65 65
 
66 66
 ###Invocación
67 67
 
@@ -69,7 +69,7 @@ Si queremos guardar el valor del resultado de la función `ejemplo` en la variab
69 69
 
70 70
 `resultado=ejemplo(2, 3.5, unCar);`
71 71
 
72
-Nota que al invocar funciones no incluyes el tipo de las variables en los argumentos. Como en la definición de la función `ejemplo` el tercer parámetro `&var3` es una variable de referencia, lo que se está enviando en el tercer argumento de la invocación es una *referencia* a la variable `unCar`. Los cambios que se hagan en la variable `var3` están cambiando el contenido de la variable `unCar`.
72
+Nota que al invocar funciones no incluyes el tipo de las variables en los argumentos como en la definición de la función `ejemplo`. El tercer parámetro `&var3` es una variable de referencia, esto significa que lo que se está enviando en el tercer argumento de la invocación es una *referencia* a la variable `unCar`. Los cambios que se hagan en la variable `var3` están cambiando el contenido de la variable `unCar`.
73 73
 
74 74
 También puedes usar el resultado de la función sin tener que guardarlo en una variable. Por ejemplo puedes imprimirlo:
75 75
 
@@ -117,12 +117,12 @@ int ejemplo(int, char) ;
117 117
 
118 118
 Todas las funciones de arriba tienen el mismo nombre, `ejemplo`, pero distintos parámetros.  La primera y segunda función tienen la misma cantidad de parámetros, pero los argumentos son de distintos tipos.  La cuarta y quinta función tienen argumentos de tipo `char` e `int`, pero en cada caso están en distinto orden.
119 119
 
120
-En este último ejemplo la función ejemplo es sobrecargada ya que hay 5 funciones con firma distinta pero con el mismo nombre.
120
+En este último ejemplo la función `ejemplo` es sobrecargada ya que hay cinco funciones con firmas distintas pero con el mismo nombre.
121 121
 
122 122
 
123
-###Valores por defecto
123
+###Valores predeterminados
124 124
 
125
-Se pueden asignar valores por defecto ("default") a los parámetros de las funciones comenzando desde el parámetro más a la derecha. No hay que inicializar todos los parámetros pero los que se inicializan deben ser consecutivos: no se puede dejar parámetros sin inicializar entre dos parámetros que estén inicializados. Esto permite la invocación de la función sin tener que enviar los valores en las posiciones que corresponden a parámetros inicializados.
125
+Se pueden asignar valores predeterminados ("default") a los parámetros de las funciones comenzando desde el parámetro que está más a la derecha. No hay que inicializar todos los parámetros pero los que se inicializan deben ser consecutivos: no se puede dejar parámetros sin inicializar entre dos parámetros que estén inicializados. Esto permite la invocación de la función sin tener que enviar los valores en las posiciones que corresponden a parámetros inicializados.
126 126
 
127 127
 **Ejemplos de encabezados de funciones e invocaciones válidas:**
128 128
 
@@ -132,7 +132,7 @@ Se pueden asignar valores por defecto ("default") a los parámetros de las funci
132 132
 
133 133
     a. `ejemplo(5, 3.3, 12)` Esta invocación asigna el valor 5 a `var1`, el valor 3.3 a `var2`, y el valor 12 a `var3`. 
134 134
 
135
-    b. `ejemplo(5, 3.3)`  Esta invocación envía valores para los primeros dos parámetros y el valor del último parámetro será el valor por defecto asignado en el encabezado. Esto es, los valores de las variables en la función serán: `var1` tendrá 5, `var2` tendrá 3.3, y `var3` tendrá 10.
135
+    b. `ejemplo(5, 3.3)`  Esta invocación envía valores para los primeros dos parámetros y el valor del último parámetro será el valor predeterminado asignado en el encabezado. Esto es, los valores de las variables en la función serán: `var1` tendrá 5, `var2` tendrá 3.3, y `var3` tendrá 10.
136 136
 
137 137
 2. **Encabezado:** `int ejemplo(int var1, float var2=5.0, int var3 = 10)`  Aquí se  inicializa `var2` a 5 y `var3` a 10.
138 138
     
@@ -140,9 +140,9 @@ Se pueden asignar valores por defecto ("default") a los parámetros de las funci
140 140
 
141 141
     a. `ejemplo(5, 3.3, 12)` Esta invocación asigna el valor 5 a `var1`, el valor 3.3 a `var2`, y el valor 12 a  `var3`. 
142 142
 
143
-    b. `ejemplo(5, 3.3)` En esta invocación solo se envían valores para los primeros dos parámetros, y el valor del último parámetro es el valor por defecto.  Esto es, el valor de `var1` dentro de la función será 5, el de `var2` será 3.3 y el de `var3` será 10.
143
+    b. `ejemplo(5, 3.3)` En esta invocación solo se envían valores para los primeros dos parámetros, y el valor del último parámetro es el valor predeterminado.  Esto es, el valor de `var1` dentro de la función será 5, el de `var2` será 3.3 y el de `var3` será 10.
144 144
 
145
-    c. `ejemplo(5)` En esta invocación solo se envía valor para el primer parámetro, y los últimos dos parámetros tienen valores por defecto.  Esto es,  el valor de `var1` dentro de la función será 5, el de `var2` será 5.0 y el de `var3` será 10.
145
+    c. `ejemplo(5)` En esta invocación solo se envía valor para el primer parámetro, y los últimos dos parámetros tienen valores predeterminados.  Esto es,  el valor de `var1` dentro de la función será 5, el de `var2` será 5.0 y el de `var3` será 10.
146 146
 
147 147
     
148 148
 
@@ -159,7 +159,7 @@ Se pueden asignar valores por defecto ("default") a los parámetros de las funci
159 159
 
160 160
 **Ejemplos de encabezados de funciones inválidos:**
161 161
 
162
-1. `int ejemplo(int var1=1, float var2, int var3)` Este encabezado es inválido porque los valores por defecto solo se pueden asignar comenzando por el parámetro más a la derecha.
162
+1. `int ejemplo(int var1=1, float var2, int var3)` Este encabezado es inválido porque los valores predeterminados sólo se pueden asignar comenzando por el parámetro más a la derecha.
163 163
 
164 164
 2. `int ejemplo(int var1=1, float var2, int var3=10)` Este encabezado es inválido porque no se pueden poner parámetros sin valores en medio de parámetros con valores por defecto. En este caso  `var2` no tiene valor pero `var1` y `var3` si.
165 165
 
@@ -169,7 +169,7 @@ Se pueden asignar valores por defecto ("default") a los parámetros de las funci
169 169
 
170 170
 ##Películas DVD y base de datos DVD
171 171
 
172
-DVD son las siglas para “digital versatile disk” o “digital video disk” que en español significa disco versátil digital o disco de video digital. Este  es un formato de disco óptico para almacenamiento digital  inventado por Philips, Sony, Toshiba, y Panasonic en 1995.  Los DVD ofrecen capacidad de almacenamiento mayor que los discos compactos (CD), pero tienen las mismas dimensiones.  Los DVD pueden ser utilizados para almacenar cualquier dato digital, pero son famosos por su uso en la distribución de películas en los hogares.
172
+DVD son las siglas para “digital versatile disk” o “digital video disk” que en español significa disco versátil digital o disco de video digital. Este es un formato de disco óptico para almacenamiento digital  inventado por Philips, Sony, Toshiba, y Panasonic en 1995.  Los DVD ofrecen una capacidad de almacenamiento mayor que los discos compactos (CD), pero tienen las mismas dimensiones.  Los DVD pueden ser utilizados para almacenar cualquier dato digital, pero son famosos por su uso en la distribución de películas en los hogares.
173 173
 
174 174
 
175 175
 ---
@@ -177,16 +177,16 @@ DVD son las siglas para “digital versatile disk” o “digital video disk”
177 177
 ---
178 178
 
179 179
 
180
-!INCLUDE "../../eip-diagnostic/DVD/es/diag-dvd-01.html"
180
+!INCLUDE "../../eip-diagnostic/DVD/es/diag-dvd-01.html"
181 181
 <br>
182 182
 
183
-!INCLUDE "../../eip-diagnostic/DVD/es/diag-dvd-03.html"
183
+!INCLUDE "../../eip-diagnostic/DVD/es/diag-dvd-03.html"
184 184
 <br>
185 185
 
186
-!INCLUDE "../../eip-diagnostic/DVD/es/diag-dvd-11.html"
186
+!INCLUDE "../../eip-diagnostic/DVD/es/diag-dvd-11.html"
187 187
 <br>
188 188
 
189
-!INCLUDE "../../eip-diagnostic/DVD/es/diag-dvd-12.html"
189
+!INCLUDE "../../eip-diagnostic/DVD/es/diag-dvd-12.html"
190 190
 <br>
191 191
 
192 192
 ---
@@ -209,11 +209,13 @@ Airplane! (Paramount/ Blu-ray/ Checkpoint)|Paramount||Discontinued|5.1 DTS-HD|LB
209 209
 
210 210
 ###Ejercicio 1
211 211
 
212
-El primer paso en esta experiencia de laboratorio es familiarizarte con las funciones que ya están definidas en el código. Tus tareas requerirán que imites lo que hacen estas funciones, así que es importante que entiendas como se invocan, declaran y definen.
212
+El primer paso en esta experiencia de laboratorio es familiarizarte con las funciones que ya están definidas en el código. Tus tareas requerirán que imites lo que hacen estas funciones, así que es importante que entiendas cómo se invocan, declaran y definen.
213 213
 
214 214
 **Instrucciones**
215 215
 
216
-1.  Carga a Qt el proyecto `DVDInfo`  haciendo doble "click" en el archivo `DVDInfo.pro` que se encuentra en la carpeta `Documents/eip/Functions-DVDInfo` de tu computadora. También puedes ir a `http://bitbucket.org/eip-uprrp/functions-dvdinfo` para descargar la carpeta `Functions-DVDInfo` a tu computadora.
216
+1.  Carga a `QtCreater` el proyecto `DVDInfo`. Hay dos maneras de hacer esto: 
217
+       *Utilizando la máquina virtual:  Haz doble “click” en el archivo `DVDInfo.pro` que se encuentra en el directorio `home\eip\labs\functions-dvdinfo` de la máquina virtual. 
218
+       *Descargando la carpeta del proyecto de `Bitbucket`: Utiliza un terminal y escribe el comando `git clone http://bitbucket.org/eip-uprrp/functions-dvdinfo` para descargar la carpeta `functions-dvdinfo` de `Bitbucket`. En esa carpeta, haz doble “click” en el archivo `DVDInfo.pro`. 
217 219
 
218 220
 2. Configura el proyecto. El archivo `main.cpp` tiene la invocación de las funciones que usarás en los siguientes ejercicios.  En los archivos `movie.h` y `movie.cpp` se encuentra la declaración y definición de las funciones que vas a invocar.
219 221
  
@@ -232,7 +234,7 @@ El primer paso en esta experiencia de laboratorio es familiarizarte con las func
232 234
 
233 235
 ----
234 236
 
235
-!INCLUDE "../../eip-diagnostic/DVD/es/diag-dvd-06.html"
237
+!INCLUDE "../../eip-diagnostic/DVD/es/diag-dvd-06.html"
236 238
 <br>
237 239
 
238 240
 
@@ -246,9 +248,9 @@ En este ejercicio modificarás la función `main` y algunas de las funciones pre
246 248
 
247 249
 2. Ahora modifica  la función `main` para que despliegue en la pantalla solo las películas que contengan “forrest gump” en el título.
248 250
 
249
-3. Modifica nuevamente la función `main` para que despliegue en la pantalla solo la película en la posición  75125 usando composición de funciones y la función `showMovie`.
251
+3. Modifica nuevamente la función `main` para que despliegue en la pantalla solo la película en la posición 75125 usando la composición de funciones y la función `showMovie`.
250 252
 
251
-4. Para la película en la parte  3 de este ejercicio, modifica la función `main` para que solo despliegue el nombre y el rating de la película.
253
+4. Para la película en la parte 3 de este ejercicio, modifica la función `main` para que solo despliegue el nombre y el rating de la película.
252 254
 
253 255
 5. Modifica la función `getMovieInfo` que se encuentra en el archivo `movie.cpp` para que también reciba por referencia el nombre de la película y le asigne un valor. Recuerda que también debes modificar el prototipo de esta función que se encuentra en `movie.h`.
254 256
 
@@ -256,17 +258,17 @@ En este ejercicio modificarás la función `main` y algunas de las funciones pre
256 258
 
257 259
 ###Ejercicio 3
258 260
 
259
-Las funciones cuyos prototipos están en `movie.h` están implementadas en el archivo `movie.cpp`. En este ejercicio  vas a utilizar los archivos `movie.h`, `movie.cpp`, y `main.cpp` para definir e implementar funciones adicionales. Al implementar las funciones, recuerda utilizar buenas prácticas de programación y documentar tu programa.
261
+Las funciones cuyos prototipos están en `movie.h` están implementadas en el archivo `movie.cpp`. En este ejercicio vas a utilizar los archivos `movie.h`, `movie.cpp`, y `main.cpp` para definir e implementar funciones adicionales. Al implementar las funciones, recuerda utilizar buenas prácticas de programación y documentar tu programa.
260 262
 
261 263
 **Instrucciones**
262 264
 
263 265
 1. Estudia las funciones que ya están implementadas en `movie.cpp` para que te sirvan de ejemplo para las funciones que vas a crear. 
264 266
 
265
-2. Implementa una función `getMovieStudio` que reciba una cadena de caracteres ("string") con la info de una película y devuelva el nombre del estudio de la película. Recuerda añadir el prototipo de la función en el archivo `movie.h`. Invoca la función `getMovieStudio` desde `main()` para desplegar el nombre y el estudio de la película en la posición 75125 y así demostrar su funcionamiento.
267
+2. Implementa una función llamada `getMovieStudio` que reciba una cadena de caracteres ("string") con la info de una película y devuelva el nombre del estudio de la película. Recuerda añadir el prototipo de la función en el archivo `movie.h`. Invoca la función `getMovieStudio` desde `main()` para desplegar el nombre y el estudio de la película en la posición 75125 y así demostrar su funcionamiento.
266 268
 
267 269
 3. Implementa una función sobrecargada `getMovieInfo` que devuelva el nombre del estudio además del nombre, rating, año y género. Invoca la función `getMovieInfo` desde `main()` para desplegar el nombre,  estudio, rating, año y género de la película en la posición 75125 y así demostrar su funcionamiento.
268 270
 
269
-4. Implementa una función `showMovieInLine` que **despliegue** la información de una película que despliega `showMovie` pero en una sola línea. La función debe tener un parámetro de modo que reciba el "string" de información de la película. Invoca la función `showMovieInLine` desde `main()` para desplegar la información de la película en la posición 75125 y así demostrar su funcionamiento.
271
+4. Implementa una función `showMovieInLine` que **despliegue** la información que despliega `showMovie` pero en una sola línea. La función debe tener un parámetro de modo que reciba el "string" de información de la película. Invoca la función `showMovieInLine` desde `main()` para desplegar la información de la película en la posición 75125 y así demostrar su funcionamiento.
270 272
 
271 273
 5. Implementa una función `showMoviesInLine` que **despliegue** la misma información que despliega `showMovies`  (todas las películas en un rango de posiciones) pero en una sola línea por película. Por ejemplo, una invocación a la función sería
272 274
 `showMoviesInLine(file, 148995, 149000);`. Invoca la función `showMoviesInLine` desde `main()` para desplegar la información y así demostrar su funcionamiento.
@@ -300,3 +302,6 @@ Utiliza "Entrega" en Moodle para entregar los archivos `main.cpp`, `movie.cpp` y
300 302
 ---
301 303
 
302 304
 ---
305
+
306
+
307
+