Browse Source

Minor format changes

Rafael Arce Nazario 9 years ago
parent
commit
a2cd15e341
1 changed files with 41 additions and 39 deletions
  1. 41
    39
      README.md

+ 41
- 39
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
-# Utilizando funciones en C++ - Información de DVDs
3
+# KUtilizando 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ámetro01, ..., tipo parámetro0n)`
60
+`tipo nombre(tipo parámetro_1, ..., tipo parámetro_n)`
61
 
61
 
62
 Por ejemplo,
62
 Por ejemplo,
63
 
63
 
64
-`int ejemplo(int var1, float var2, char &var3)`
64
+```cpp
65
+int ejemplo(int var1, float var2, char &var3)
66
+```
65
 
67
 
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.
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.
67
 
69
 
69
 
71
 
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:
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:
71
 
73
 
72
-`resultado=ejemplo(2, 3.5, unCar);`
74
+```cpp
75
+resultado = ejemplo(2, 3.5, unCar);
76
+```
73
 
77
 
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`.
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`.
75
 
79
 
76
 También puedes usar el resultado de la función sin tener que guardarlo en una variable. Por ejemplo puedes imprimirlo:
80
 También puedes usar el resultado de la función sin tener que guardarlo en una variable. Por ejemplo puedes imprimirlo:
77
 
81
 
78
-`cout << "El resultado de la función ejemplo es:" << ejemplo(2, 3.5, unCar);`
82
+```cpp
83
+cout << "El resultado de la función ejemplo es:" << ejemplo(2, 3.5, unCar);
84
+```
79
 
85
 
80
 o utilizarlo en una expresión aritmética:
86
 o utilizarlo en una expresión aritmética:
81
 
87
 
82
-`y=3 + ejemplo(2, 3.5, unCar);`
83
-
88
+```cpp
89
+y = 3 + ejemplo(2, 3.5, unCar);
90
+```
84
 
91
 
85
 
92
 
86
 ###Funciones sobrecargadas (‘overloaded’)
93
 ###Funciones sobrecargadas (‘overloaded’)
91
 
98
 
92
 Los siguientes prototipos de funciones tienen la misma firma:
99
 Los siguientes prototipos de funciones tienen la misma firma:
93
 
100
 
94
-```
101
+```cpp
95
 int ejemplo(int, int) ;
102
 int ejemplo(int, int) ;
96
 void ejemplo(int, int) ; 
103
 void ejemplo(int, int) ; 
97
 string ejemplo(int, int) ;
104
 string ejemplo(int, int) ;
101
 
108
 
102
 Los siguientes prototipos de  funciones tienen firmas diferentes:
109
 Los siguientes prototipos de  funciones tienen firmas diferentes:
103
 
110
 
104
-```
111
+```cpp
105
 int ejemplo(int) ;
112
 int ejemplo(int) ;
106
 int olpmeje(int) ;
113
 int olpmeje(int) ;
107
 ```
114
 ```
115
+
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.
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.
109
 
117
 
110
 Los siguientes prototipos de funciones son versiones sobrecargadas de la función `ejemplo`:
118
 Los siguientes prototipos de funciones son versiones sobrecargadas de la función `ejemplo`:
111
 
119
 
112
-```
120
+```cpp
113
 int ejemplo(int) ;
121
 int ejemplo(int) ;
114
 void ejemplo(char) ;
122
 void ejemplo(char) ;
115
 int ejemplo(int, int) ;
123
 int ejemplo(int, int) ;
200
 
208
 
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.
209
 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.
202
 
210
 
203
-
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.
211
 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.
205
  
212
  
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é.
213
 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é.
207
-
214
+    
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:
215
     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:
209
 
216
 
210
-    ```
217
+    ```cpp
211
     showMovie
218
     showMovie
212
     showMovies (las dos)
219
     showMovies (las dos)
213
     getMovieName
220
     getMovieName
224
 
231
 
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.
232
 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.
226
 
233
 
227
-
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.
234
 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.
229
 
235
 
230
-
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`.
236
 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`.
232
 
237
 
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.
238
 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.
246
 
251
 
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.
252
 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.
248
 
253
 
249
-
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.
254
 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.
251
 
255
 
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
256
 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
327
 
331
 
328
 ##Functions
332
 ##Functions
329
 
333
 
330
-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.
334
+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
 
335
 
332
 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.
336
 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
 
337
 
335
 
339
 
336
 The first sentence of a function is called the *header* and its structure is as follows:
340
 The first sentence of a function is called the *header* and its structure is as follows:
337
 
341
 
338
-`type name(type parameter01, ..., type parameter0n)`
342
+`type name(type parameter_1, ..., type parameter_n)`
339
 
343
 
340
 For example,
344
 For example,
341
 
345
 
342
-`int example(int var1, float var2, char &var3)`
346
+```cpp
347
+int example(int var1, float var2, char &var3)
348
+```
343
 
349
 
344
 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.
350
 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
 
351
 
347
 
353
 
348
 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:
354
 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
 
355
 
350
-`result=example(2, 3.5, unCar);`
356
+```cpp
357
+result=example(2, 3.5, unCar);
358
+```
351
 
359
 
352
 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`.
360
 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
 
361
 
354
 You can also use the function's result without having to store it in a variable. For example you could print it:
362
 You can also use the function's result without having to store it in a variable. For example you could print it:
355
 
363
 
356
-`cout << "The result of the function example is:" << example(2, 3.5, unCar);`
364
+```cpp
365
+cout << "The result of the function example is:" << example(2, 3.5, unCar);
366
+```
357
 
367
 
358
 or use it in an arithmetic expression:
368
 or use it in an arithmetic expression:
359
 
369
 
360
-`y=3 + example(2, 3.5, unCar);`
370
+```cpp
371
+y = 3 + example(2, 3.5, unCar);
372
+```
361
 
373
 
362
 
374
 
363
 
375
 
369
 
381
 
370
 The following function prototypes have the same signature:
382
 The following function prototypes have the same signature:
371
 
383
 
372
-```
384
+```cpp
373
 int example(int, int) ;
385
 int example(int, int) ;
374
 void example(int, int) ; 
386
 void example(int, int) ; 
375
 string example(int, int) ;
387
 string example(int, int) ;
379
 
391
 
380
 The following function prototypes have different signatures:
392
 The following function prototypes have different signatures:
381
 
393
 
382
-```
394
+```cpp
383
 int example(int) ;
395
 int example(int) ;
384
 int elpmaxe(int) ;
396
 int elpmaxe(int) ;
385
 ```
397
 ```
388
 
400
 
389
 The following function prototypes are overloaded versions of the function `example`:
401
 The following function prototypes are overloaded versions of the function `example`:
390
 
402
 
391
-```
403
+```cpp
392
 int example(int) ;
404
 int example(int) ;
393
 void example(char) ;
405
 void example(char) ;
394
 int example(int, int) ;
406
 int example(int, int) ;
431
 
443
 
432
 1. **Header:** `int example(int var1, float var2=5.0, int var3 = 10)` 
444
 1. **Header:** `int example(int var1, float var2=5.0, int var3 = 10)` 
433
 
445
 
434
-
435
     **Invocation:**
446
     **Invocation:**
436
 
447
 
437
     a. `example(5, , 10)` This function call is **invalid** because it leaves an empty space in the middle argument.
448
     a. `example(5, , 10)` This function call is **invalid** because it leaves an empty space in the middle argument.
453
 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.
464
 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
 
465
 
455
 ---
466
 ---
467
+
456
 ---
468
 ---
457
 
469
 
458
 
470
 
483
     
495
     
484
     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:
496
     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
 
497
 
486
-    ```
498
+    ```cpp
487
     showMovie
499
     showMovie
488
-    showMovies (las dos)
500
+    showMovies (both versions)
489
     getMovieName
501
     getMovieName
490
     getMovieByName
502
     getMovieByName
491
     ```
503
     ```
506
 
518
 
507
 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.
519
 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
 
520
 
509
-
510
 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. 
521
 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
 
522
 
512
 ###Exercise 3
523
 ###Exercise 3
548
 [3] http://www.soft32.com/blog/platforms/windows/keep-your-dvd-collection-up-to-date-with-emdb-erics-movie-database/
559
 [3] http://www.soft32.com/blog/platforms/windows/keep-your-dvd-collection-up-to-date-with-emdb-erics-movie-database/
549
 
560
 
550
 [4] http://www.hometheaterinfo.com/dvdlist.htm
561
 [4] http://www.hometheaterinfo.com/dvdlist.htm
551
-
552
-
553
-
554
-
555
-
556
-
557
-
558
-
559
-