Browse Source

changes in the sources and updated readme

Jose Ortiz 9 years ago
parent
commit
a70d22160c
1 changed files with 47 additions and 71 deletions
  1. 47
    71
      README.md

+ 47
- 71
README.md View File

1
 [English](#markdown-header-using-functions-in-c-dvd-info) | [Español](#markdown-header-utilizando-funciones-en-c-informacion-de-dvds)
1
 [English](#markdown-header-using-functions-in-c-dvd-info) | [Español](#markdown-header-utilizando-funciones-en-c-informacion-de-dvds)
2
 
2
 
3
-# KUtilizando funciones en C++ - Información de DVDs
3
+# Utilizando funciones en C++ - Información de DVDs
4
 
4
 
5
 ![main1.png](images/main1.png)
5
 ![main1.png](images/main1.png)
6
 ![main2.png](images/main2.png)
6
 ![main2.png](images/main2.png)
48
 ##Funciones
48
 ##Funciones
49
 
49
 
50
 
50
 
51
-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.
51
+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.
52
 
52
 
53
 Las funciones en lenguajes de programación de computadoras son similares. Una función 
53
 Las funciones en lenguajes de programación de computadoras son similares. Una función 
54
 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.
54
 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.
57
 
57
 
58
 La primera oración de una función se llama el *encabezado* y su estructura es como sigue:
58
 La primera oración de una función se llama el *encabezado* y su estructura es como sigue:
59
 
59
 
60
-`tipo nombre(tipo parámetro_1, ..., tipo parámetro_n)`
60
+`tipo nombre(tipo parámetro01, ..., tipo parámetro0n)`
61
 
61
 
62
 Por ejemplo,
62
 Por ejemplo,
63
 
63
 
64
-```cpp
65
-int ejemplo(int var1, float var2, char &var3)
66
-```
64
+`int ejemplo(int var1, float var2, char &var3)`
67
 
65
 
68
 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.
66
 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.
69
 
67
 
71
 
69
 
72
 Si queremos guardar el valor del resultado de la función `ejemplo` en la variable `resultado` (que deberá ser de tipo entero), invocamos la función pasando argumentos de manera similar a:
70
 Si queremos guardar el valor del resultado de la función `ejemplo` en la variable `resultado` (que deberá ser de tipo entero), invocamos la función pasando argumentos de manera similar a:
73
 
71
 
74
-```cpp
75
-resultado = ejemplo(2, 3.5, unCar);
76
-```
72
+`resultado=ejemplo(2, 3.5, unCar);`
77
 
73
 
78
 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`.
74
 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`.
79
 
75
 
80
 También puedes usar el resultado de la función sin tener que guardarlo en una variable. Por ejemplo puedes imprimirlo:
76
 También puedes usar el resultado de la función sin tener que guardarlo en una variable. Por ejemplo puedes imprimirlo:
81
 
77
 
82
-```cpp
83
-cout << "El resultado de la función ejemplo es:" << ejemplo(2, 3.5, unCar);
84
-```
78
+`cout << "El resultado de la función ejemplo es:" << ejemplo(2, 3.5, unCar);`
85
 
79
 
86
 o utilizarlo en una expresión aritmética:
80
 o utilizarlo en una expresión aritmética:
87
 
81
 
88
-```cpp
89
-y = 3 + ejemplo(2, 3.5, unCar);
90
-```
82
+`y=3 + ejemplo(2, 3.5, unCar);`
83
+
91
 
84
 
92
 
85
 
93
 ###Funciones sobrecargadas (‘overloaded’)
86
 ###Funciones sobrecargadas (‘overloaded’)
98
 
91
 
99
 Los siguientes prototipos de funciones tienen la misma firma:
92
 Los siguientes prototipos de funciones tienen la misma firma:
100
 
93
 
101
-```cpp
94
+```
102
 int ejemplo(int, int) ;
95
 int ejemplo(int, int) ;
103
 void ejemplo(int, int) ; 
96
 void ejemplo(int, int) ; 
104
 string ejemplo(int, int) ;
97
 string ejemplo(int, int) ;
108
 
101
 
109
 Los siguientes prototipos de  funciones tienen firmas diferentes:
102
 Los siguientes prototipos de  funciones tienen firmas diferentes:
110
 
103
 
111
-```cpp
104
+```
112
 int ejemplo(int) ;
105
 int ejemplo(int) ;
113
 int olpmeje(int) ;
106
 int olpmeje(int) ;
114
 ```
107
 ```
115
-
116
 Nota que a pesar de que las funciones tienen la misma cantidad de parámetros con mismo tipo `int`, el nombre de las funciones es distinto.
108
 Nota que a pesar de que las funciones tienen la misma cantidad de parámetros con mismo tipo `int`, el nombre de las funciones es distinto.
117
 
109
 
118
 Los siguientes prototipos de funciones son versiones sobrecargadas de la función `ejemplo`:
110
 Los siguientes prototipos de funciones son versiones sobrecargadas de la función `ejemplo`:
119
 
111
 
120
-```cpp
112
+```
121
 int ejemplo(int) ;
113
 int ejemplo(int) ;
122
 void ejemplo(char) ;
114
 void ejemplo(char) ;
123
 int ejemplo(int, int) ;
115
 int ejemplo(int, int) ;
130
 En este último ejemplo la función ejemplo es sobrecargada ya que hay 5 funciones con firma distinta pero con el mismo nombre.
122
 En este último ejemplo la función ejemplo es sobrecargada ya que hay 5 funciones con firma distinta pero con el mismo nombre.
131
 
123
 
132
 
124
 
133
-!INCLUDE "../../eip-diagnostic/DVD/es/diag-dvd-01.html"
134
-
135
-!INCLUDE "../../eip-diagnostic/DVD/es/diag-dvd-02.html"
136
-
137
-
138
 ###Valores por defecto
125
 ###Valores por defecto
139
 
126
 
140
 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.
127
 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.
178
 
165
 
179
 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.
166
 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.
180
 
167
 
181
-
182
-!INCLUDE "../../eip-diagnostic/DVD/es/diag-dvd-03.html"
183
-
184
-!INCLUDE "../../eip-diagnostic/DVD/es/diag-dvd-04.html"
185
-
186
-!INCLUDE "../../eip-diagnostic/DVD/es/diag-dvd-05.html"
187
-
188
-
189
 ---
168
 ---
190
 
169
 
191
 ---
170
 ---
201
 
180
 
202
 ## Sesión de laboratorio
181
 ## Sesión de laboratorio
203
 
182
 
204
-En este laboratorio vamos a utilizar una base de datos de películas DVD mantenida por http://www.hometheaterinfo.com/dvdlist.htm. Esta base de datos contiene 44MB de información de películas que han sido distribuidas en DVD. Alguna de la información almacenada en esta base de datos es: título del DVD, estudio de publicación, fecha de publicación, tipo de sonido, versiones, precio, clasificación, año y  género.  Los campos de la información de cada película son almacenados en texto con el siguiente formato:
183
+En esta sesión de  laboratorio vamos a utilizar una base de datos de películas DVD mantenida por http://www.hometheaterinfo.com/dvdlist.htm. Esta base de datos contiene 44MB de información de películas que han sido distribuidas en DVD. Alguna de la información almacenada en esta base de datos es: título del DVD, estudio de publicación, fecha de publicación, tipo de sonido, versiones, precio, clasificación, año y  género.  Los campos de la información de cada película son almacenados en texto con el siguiente formato:
205
 
184
 
206
 
185
 
207
 `DVD_Title|Studio|Released|Status|Sound|Versions|Price|Rating|Year|Genre|Aspect|UPC|DVD_ReleaseDate|ID|Timestamp`
186
 `DVD_Title|Studio|Released|Status|Sound|Versions|Price|Rating|Year|Genre|Aspect|UPC|DVD_ReleaseDate|ID|Timestamp`
221
 
200
 
222
 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.
201
 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.
223
 
202
 
203
+
224
 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.
204
 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.
225
  
205
  
226
 3. Haz doble "click" en el archivo `movie.h` que contiene los prototipos de las funciones de este proyecto. Ve a `movie.h` e identifica cuál o cuáles funciones son sobrecargadas y describe por qué.
206
 3. Haz doble "click" en el archivo `movie.h` que contiene los prototipos de las funciones de este proyecto. Ve a `movie.h` e identifica cuál o cuáles funciones son sobrecargadas y describe por qué.
227
-    
207
+
228
     Estudia los prototipos de funciones contenidas en `movie.h` de modo que sepas la tarea que realizan y los tipos de datos que reciben y devuelven. Identifica los tipos de datos que recibe y devuelve cada una de las siguientes funciones:
208
     Estudia los prototipos de funciones contenidas en `movie.h` de modo que sepas la tarea que realizan y los tipos de datos que reciben y devuelven. Identifica los tipos de datos que recibe y devuelve cada una de las siguientes funciones:
229
 
209
 
230
-    ```cpp
210
+    ```
231
     showMovie
211
     showMovie
232
     showMovies (las dos)
212
     showMovies (las dos)
233
     getMovieName
213
     getMovieName
244
 
224
 
245
 1. Abre el archivo `main.cpp` y modifica la función `main` para que despliegue en la pantalla las películas en las posiciones 80 hasta la 100.
225
 1. Abre el archivo `main.cpp` y modifica la función `main` para que despliegue en la pantalla las películas en las posiciones 80 hasta la 100.
246
 
226
 
227
+
247
 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.
228
 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
 
229
 
230
+
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`.
231
 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`.
250
 
232
 
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.
233
 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.
264
 
246
 
265
 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.
247
 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.
266
 
248
 
249
+
267
 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.
250
 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.
268
 
251
 
269
 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
252
 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
275
 
258
 
276
 ##Entregas
259
 ##Entregas
277
 
260
 
278
-Utiliza "Entrega" en Moodle para entregar los archivos `main()`, `movie.cpp` y `movie.h` con las invocaciones, cambios, implementaciones y declaraciones que hiciste en los ejercicios 2 y 3. Recuerda utilizar buenas prácticas de programación, incluir el nombre de los programadores y documentar tu programa.
261
+Utiliza "Entrega" en Moodle para entregar los archivos `main.cpp`, `movie.cpp` y `movie.h` con las invocaciones, cambios, implementaciones y declaraciones que hiciste en los ejercicios 2 y 3. Recuerda utilizar buenas prácticas de programación, incluir el nombre de los programadores y documentar tu programa.
279
 
262
 
280
 
263
 
281
 
264
 
282
 ---
265
 ---
266
+
283
 ---
267
 ---
284
 
268
 
285
 ##Referencias
269
 ##Referencias
344
 
328
 
345
 ##Functions
329
 ##Functions
346
 
330
 
347
-In mathematics, a function $$f$$ is a rule that is used to assign to each element $$x$$ from a set called *domain*, one (and only one) element $$y$$ from a set called *range*. This rule is commonly represented with an equation, $$y=f(x)$$. The variable $$x$$ is the parameter of the function and the variable $$y$$ will contain the result of the function. A function can have more than one parameter, but only one result. For example, a function can have the form $$y=f(x_1,x_2)$$ where there are two parameters, and for each pair $$(a,b)$$ that is used as an argument in the function, the function has only one value of $$y=f(a,b)$$. The domain of the function tells us the type of value that the parameter should have and the range tells us the value that the returned result will have.
331
+In mathematics, a function $f$ is a rule that is used to assign to each element $x$ from a set called *domain*, one (and only one) element $y$ from a set called *range*. This rule is commonly represented with an equation, $y=f(x)$. The variable $x$ is the parameter of the function and the variable $y$ will contain the result of the function. A function can have more than one parameter, but only one result. For example, a function can have the form $y=f(x_1,x_2)$ where there are two parameters, and for each pair $(a,b)$ that is used as an argument in the function, the function has only one value of $y=f(a,b)$. The domain of the function tells us the type of value that the parameter should have and the range tells us the value that the returned result will have.
348
 
332
 
349
 Functions in programming languages are similar. A function has a series of instructions that take the assigned values as parameters and performs a certain task. In C++ and other programming languages, functions return only one result, as it happens in mathematics. The only difference is that a *programming* function could possibly not return any value (in this case the function is declared as `void`). If the function will return a value, we use the instruction `return`. As in math, you need to specify the types of values that the function's parameters and result will have; this is done when declaring the function.
333
 Functions in programming languages are similar. A function has a series of instructions that take the assigned values as parameters and performs a certain task. In C++ and other programming languages, functions return only one result, as it happens in mathematics. The only difference is that a *programming* function could possibly not return any value (in this case the function is declared as `void`). If the function will return a value, we use the instruction `return`. As in math, you need to specify the types of values that the function's parameters and result will have; this is done when declaring the function.
350
 
334
 
352
 
336
 
353
 The first sentence of a function is called the *header* and its structure is as follows:
337
 The first sentence of a function is called the *header* and its structure is as follows:
354
 
338
 
355
-`type name(type parameter_1, ..., type parameter_n)`
339
+`type name(type parameter01, ..., type parameter0n)`
356
 
340
 
357
 For example,
341
 For example,
358
 
342
 
359
-```cpp
360
-int example(int var1, float var2, char &var3)
361
-```
343
+`int example(int var1, float var2, char &var3)`
362
 
344
 
363
 would be the header of the function called `example`, which returns an integer value. The function receives as arguments an integer value (and will store a copy in `var1`), a value of type `float` (and will store a copy in `var2`) and the reference to a variable of type `char` that will be stored in the reference variable `var3`. Note that `var3` has a & symbol before the name of the variable. This indicates that `var3` will contain the reference to a character.
345
 would be the header of the function called `example`, which returns an integer value. The function receives as arguments an integer value (and will store a copy in `var1`), a value of type `float` (and will store a copy in `var2`) and the reference to a variable of type `char` that will be stored in the reference variable `var3`. Note that `var3` has a & symbol before the name of the variable. This indicates that `var3` will contain the reference to a character.
364
 
346
 
366
 
348
 
367
 If we want to store the value of the `example` function's result in a variable `result` (that would be of type integer), we invoke the function by passing arguments as follows:
349
 If we want to store the value of the `example` function's result in a variable `result` (that would be of type integer), we invoke the function by passing arguments as follows:
368
 
350
 
369
-```cpp
370
-result=example(2, 3.5, unCar);
371
-```
351
+`result=example(2, 3.5, unCar);`
372
 
352
 
373
 Note that as the function is invoked, you don't include the type of the variables in the arguments. As in the definition for the function `example`, the third parameter `&var3` is a reference variable; what is being sent to the third argument when invoking the function is a *reference* to the variable `unCar`. Any changes that are made on the variable `var3` will change the contents of the variable `unCar`.
353
 Note that as the function is invoked, you don't include the type of the variables in the arguments. As in the definition for the function `example`, the third parameter `&var3` is a reference variable; what is being sent to the third argument when invoking the function is a *reference* to the variable `unCar`. Any changes that are made on the variable `var3` will change the contents of the variable `unCar`.
374
 
354
 
375
 You can also use the function's result without having to store it in a variable. For example you could print it:
355
 You can also use the function's result without having to store it in a variable. For example you could print it:
376
 
356
 
377
-```cpp
378
-cout << "The result of the function example is:" << example(2, 3.5, unCar);
379
-```
357
+`cout << "The result of the function example is:" << example(2, 3.5, unCar);`
380
 
358
 
381
 or use it in an arithmetic expression:
359
 or use it in an arithmetic expression:
382
 
360
 
383
-```cpp
384
-y = 3 + example(2, 3.5, unCar);
385
-```
361
+`y=3 + example(2, 3.5, unCar);`
386
 
362
 
387
 
363
 
388
-###Overloaded Functions
364
+
365
+###Overloaded functions
389
 
366
 
390
 Overloaded functions are functions that have the same name, but a different *signature*.
367
 Overloaded functions are functions that have the same name, but a different *signature*.
391
 
368
 
393
 
370
 
394
 The following function prototypes have the same signature:
371
 The following function prototypes have the same signature:
395
 
372
 
396
-```cpp
373
+```
397
 int example(int, int) ;
374
 int example(int, int) ;
398
 void example(int, int) ; 
375
 void example(int, int) ; 
399
 string example(int, int) ;
376
 string example(int, int) ;
403
 
380
 
404
 The following function prototypes have different signatures:
381
 The following function prototypes have different signatures:
405
 
382
 
406
-```cpp
383
+```
407
 int example(int) ;
384
 int example(int) ;
408
 int elpmaxe(int) ;
385
 int elpmaxe(int) ;
409
 ```
386
 ```
412
 
389
 
413
 The following function prototypes are overloaded versions of the function `example`:
390
 The following function prototypes are overloaded versions of the function `example`:
414
 
391
 
415
-```cpp
392
+```
416
 int example(int) ;
393
 int example(int) ;
417
 void example(char) ;
394
 void example(char) ;
418
 int example(int, int) ;
395
 int example(int, int) ;
425
 In that last example, the function `example` is overloaded since there are 5 functions with different signatures but with the same name.
402
 In that last example, the function `example` is overloaded since there are 5 functions with different signatures but with the same name.
426
 
403
 
427
 
404
 
428
-!INCLUDE "../../eip-diagnostic/DVD/en/diag-dvd-01.html"
429
-
430
-!INCLUDE "../../eip-diagnostic/DVD/en/diag-dvd-02.html"
431
-
432
 ###Values by default
405
 ###Values by default
433
 
406
 
434
 Values by default can be assigned to the parameters of the functions starting from the first parameter to the right. It is not necessary to initialize all of the parameters, but the ones that are initialized should be consecutive: parameters in between two parameters cannot be left uninitialized. This allows calling the function without having to send values in the positions that correspond to the initialized parameters.
407
 Values by default can be assigned to the parameters of the functions starting from the first parameter to the right. It is not necessary to initialize all of the parameters, but the ones that are initialized should be consecutive: parameters in between two parameters cannot be left uninitialized. This allows calling the function without having to send values in the positions that correspond to the initialized parameters.
459
 
432
 
460
 1. **Header:** `int example(int var1, float var2=5.0, int var3 = 10)` 
433
 1. **Header:** `int example(int var1, float var2=5.0, int var3 = 10)` 
461
 
434
 
435
+
462
     **Invocation:**
436
     **Invocation:**
463
 
437
 
464
     a. `example(5, , 10)` This function call is **invalid** because it leaves an empty space in the middle argument.
438
     a. `example(5, , 10)` This function call is **invalid** because it leaves an empty space in the middle argument.
471
 
445
 
472
 2. `int example(int var1=1, float var2, int var3=10)` This header is invalid because you can't place parameters without values between other parameters with default values. In this case, `var2` doesn't have a default value but `var1` and `var3` do.
446
 2. `int example(int var1=1, float var2, int var3=10)` This header is invalid because you can't place parameters without values between other parameters with default values. In this case, `var2` doesn't have a default value but `var1` and `var3` do.
473
 
447
 
474
-
475
-!INCLUDE "../../eip-diagnostic/DVD/en/diag-dvd-03.html"
476
-
477
-!INCLUDE "../../eip-diagnostic/DVD/en/diag-dvd-04.html"
478
-
479
-!INCLUDE "../../eip-diagnostic/DVD/en/diag-dvd-05.html"
480
-
481
 ---
448
 ---
482
 
449
 
483
 ---
450
 ---
487
 DVD stands for "digital versatile disk" or "digital video disk", which is an optical disc format for storing digital information invented by Philips, Sony, Toshiba, and Panasonic in 1995. The DVD offers larger storage capacity than compact disks (CD), but have the same dimensions. DVDs can be used to store any kind of digital data, but are famous for their use in the distribution of movies.
454
 DVD stands for "digital versatile disk" or "digital video disk", which is an optical disc format for storing digital information invented by Philips, Sony, Toshiba, and Panasonic in 1995. The DVD offers larger storage capacity than compact disks (CD), but have the same dimensions. DVDs can be used to store any kind of digital data, but are famous for their use in the distribution of movies.
488
 
455
 
489
 ---
456
 ---
490
-
491
 ---
457
 ---
492
 
458
 
493
 
459
 
494
-## Lab session
460
+## Laboratory session
495
 
461
 
496
-In this lab we'll be utilizing a data base of DVD movies maintained by http://www.hometheaterinfo.com/dvdlist.htm. This data base contains 44MB of information for movies that have been distributed in DVD. Some of the stored information in the database for each DVD is: DVD title, publishing studio, date of publication, type of sound, versions, price, rating, year and genre. The fields of information for each movie are stored in text with the following format:
462
+In this laboratory session we will be using a data base of DVD movies maintained by http://www.hometheaterinfo.com/dvdlist.htm. This database contains 44MB of information for movies that have been distributed in DVD. Some of the stored information in the database for each DVD is: DVD title, publishing studio, date of publication, type of sound, versions, price, rating, year and genre. The fields of information for each movie are stored in text with the following format:
497
 
463
 
498
 `DVD_Title|Studio|Released|Status|Sound|Versions|Price|Rating|Year|Genre|Aspect|UPC|DVD_ReleaseDate|ID|Timestamp`
464
 `DVD_Title|Studio|Released|Status|Sound|Versions|Price|Rating|Year|Genre|Aspect|UPC|DVD_ReleaseDate|ID|Timestamp`
499
 
465
 
518
     
484
     
519
     Study the function prototypes and documentation in `movie.h` so that you understand the task they carry out and the data types they receive and return. For each of the following functions, identify the data types they receive and return:
485
     Study the function prototypes and documentation in `movie.h` so that you understand the task they carry out and the data types they receive and return. For each of the following functions, identify the data types they receive and return:
520
 
486
 
521
-    ```cpp
487
+    ```
522
     showMovie
488
     showMovie
523
-    showMovies (both versions)
489
+    showMovies (las dos)
524
     getMovieName
490
     getMovieName
525
     getMovieByName
491
     getMovieByName
526
     ```
492
     ```
541
 
507
 
542
 4. For the movie in part 3 of this exercise, add the necessary code to the `main` function so that the program displays the name and the rating of the movie.
508
 4. For the movie in part 3 of this exercise, add the necessary code to the `main` function so that the program displays the name and the rating of the movie.
543
 
509
 
510
+
544
 5. For the movie in part 3, add the necessary code to the `main` function so that, using `getMovieInfo`, it displays the name, rating, year and the genre of the movie in one line. Hint: note that the function `getMovieInfo` has parameters that are passed by reference. 
511
 5. For the movie in part 3, add the necessary code to the `main` function so that, using `getMovieInfo`, it displays the name, rating, year and the genre of the movie in one line. Hint: note that the function `getMovieInfo` has parameters that are passed by reference. 
545
 
512
 
546
 ###Exercise 3
513
 ###Exercise 3
565
 
532
 
566
 ##Deliverables
533
 ##Deliverables
567
 
534
 
568
-Use "Deliverables" in Moodle to hand in the files `main()`, `movie.cpp`, and `movie.h` with the function calls, changes, implementations and declarations that you made in Exercises 2 and 3. Remember to use good programming techniques, include the names of the programmers involved, and to document your program.
535
+Use "Deliverables" in Moodle to hand in the files `main.cpp`, `movie.cpp`, and `movie.h` with the function calls, changes, implementations and declarations that you made in Exercises 2 and 3. Remember to use good programming techniques, include the names of the programmers involved, and to document your program.
569
 
536
 
570
 
537
 
571
 
538
 
582
 [3] http://www.soft32.com/blog/platforms/windows/keep-your-dvd-collection-up-to-date-with-emdb-erics-movie-database/
549
 [3] http://www.soft32.com/blog/platforms/windows/keep-your-dvd-collection-up-to-date-with-emdb-erics-movie-database/
583
 
550
 
584
 [4] http://www.hometheaterinfo.com/dvdlist.htm
551
 [4] http://www.hometheaterinfo.com/dvdlist.htm
552
+
553
+
554
+
555
+
556
+
557
+
558
+
559
+
560
+