|
|
|
|
243
|
|
243
|
|
244
|
En la introducción al tema de funciones viste que, tanto en matemáticas como en algunos lenguajes de programación, una función no puede devolver más de un resultado. En los ejercicios de esta experiencia de laboratorio practicarás cómo usar variables de referencia para poder obtener varios resultados de una función.
|
244
|
En la introducción al tema de funciones viste que, tanto en matemáticas como en algunos lenguajes de programación, una función no puede devolver más de un resultado. En los ejercicios de esta experiencia de laboratorio practicarás cómo usar variables de referencia para poder obtener varios resultados de una función.
|
245
|
|
245
|
|
246
|
-### Ejercicio 1
|
|
|
|
|
246
|
+### Ejercicio 1: Diferencia entre pase por valor y pase por referencia
|
|
|
247
|
+
|
247
|
|
248
|
|
248
|
-En este ejercicio estudiarás la diferencia entre pase por valor y pase por referencia.
|
|
|
249
|
|
249
|
|
250
|
**Instrucciones**
|
250
|
**Instrucciones**
|
251
|
|
251
|
|
252
|
1. Carga a `QtCreator` el proyecto `prettyPlot`. Hay dos maneras de hacer esto:
|
252
|
1. Carga a `QtCreator` el proyecto `prettyPlot`. Hay dos maneras de hacer esto:
|
253
|
|
253
|
|
254
|
- *Utilizando la máquina virtual: Haz doble “click” en el archivo `prettyPlot.pro` que se encuentra en el directorio `home/eip/labs/functions-prettyplots` de la máquina virtual.
|
|
|
255
|
- *Descargando la carpeta de `Bitbucket`: Utiliza un terminal y escribe el comando `git clone http://bitbucket.org/eip-uprrp/functions-prettyplots` para descargar la carpeta `functions-prettyplots` de `Bitbucket`. En esa carpeta, haz doble “click” en el archivo `prettyPlot.pro`.
|
|
|
256
|
-
|
|
|
257
|
-2. Carga a Qt Creator el proyecto `prettyPlot` haciendo doble "click" en el archivo `prettyPlot.pro` que se encuentra en la carpeta `Documents/eip/functions-prettyplots` de tu computadora.
|
|
|
|
|
254
|
+ *Utilizando la máquina virtual: Haz doble “click” en el archivo `prettyPlot.pro` que se encuentra en el directorio `home/eip/labs/functions-prettyplots` de la máquina virtual.
|
|
|
255
|
+ *Descargando la carpeta de `Bitbucket`: Utiliza un terminal y escribe el comando `git clone http://bitbucket.org/eip-uprrp/functions-prettyplots` para descargar la carpeta `functions-prettyplots` de `Bitbucket`. En esa carpeta, haz doble “click” en el archivo `prettyPlot.pro`.
|
258
|
|
256
|
|
259
|
-3. Configura el proyecto y ejecuta el programa marcando la flecha verde en el menú de la izquierda de la interface de `QtCreator`. El programa debe mostrar una ventana parecida a la Figura 3.
|
|
|
|
|
257
|
+2. Configura el proyecto y ejecuta el programa marcando la flecha verde en el menú de la izquierda de la interface de `QtCreator`. El programa debe mostrar una ventana parecida a la Figura 3.
|
260
|
|
258
|
|
261
|
---
|
259
|
---
|
262
|
|
260
|
|
|
|
|
|
266
|
|
264
|
|
267
|
---
|
265
|
---
|
268
|
|
266
|
|
269
|
-4. Abre el archivo `main.cpp` (en Sources). Estudia la función `illustration` y su invocación desde la función `main`. Nota que las variables `argValue` y `argRef` están inicializadas a 0 y que la invocación a `illustration` hace un pase por valor de `argValue` y un pase por referencia de `argRef`. Nota también que a los parámetros correspondientes en `illustration` se les asigna el valor 1.
|
|
|
|
|
267
|
+3. Abre el archivo `main.cpp` (en Sources). Estudia la función `illustration` y su invocación desde la función `main`. Nota que las variables `argValue` y `argRef` están inicializadas a 0 y que la invocación a `illustration` hace un pase por valor de `argValue` y un pase por referencia de `argRef`. Nota también que a los parámetros correspondientes en `illustration` se les asigna el valor 1.
|
270
|
|
268
|
|
271
|
void illustration(int paramValue, int ¶mRef) {
|
269
|
void illustration(int paramValue, int ¶mRef) {
|
272
|
paramValue = 1;
|
270
|
paramValue = 1;
|
|
|
|
|
275
|
<< "The content of paramRef is: " << paramRef << endl;
|
273
|
<< "The content of paramRef is: " << paramRef << endl;
|
276
|
}
|
274
|
}
|
277
|
|
275
|
|
278
|
-5. Ejecuta el programa y observa lo que se despliega en la ventana `Application Output`. Nota la diferencia entre el contenido las variables `argValue` y `argRef` a pesar de que ambas tenían el mismo valor inicial y que a `paramValue` y `paramRef` se les asignó el mismo valor. Explica por qué el contenido de `argValue` no cambia, mientras que el contenido de `argRef` cambia de 0 a 1.
|
|
|
|
|
276
|
+3. Ejecuta el programa y observa lo que se despliega en la ventana `Application Output`. Nota la diferencia entre el contenido las variables `argValue` y `argRef` a pesar de que ambas tenían el mismo valor inicial y que a `paramValue` y `paramRef` se les asignó el mismo valor. Explica por qué el contenido de `argValue` no cambia, mientras que el contenido de `argRef` cambia de 0 a 1.
|
279
|
|
277
|
|
280
|
-### Ejercicio 2
|
|
|
|
|
278
|
+### Ejercicio 2: Creación de función sobrecargada
|
281
|
|
279
|
|
282
|
-En este ejercicio practicarás la creación de una función sobrecargada.
|
|
|
283
|
|
280
|
|
284
|
**Instrucciones**
|
281
|
**Instrucciones**
|
285
|
|
282
|
|
|
|
|
|
317
|
|
314
|
|
318
|
2. Ahora crearás una función sobrecargada `circle` que reciba como argumentos el valor del ángulo $$t$$, la referencia a las variables $$x$$ y $$y$$, y el valor para el radio del círculo. Invoca desde `main()` la función sobrecargada `circle` que acabas de implementar para calcular los valores de las coordenadas $$x$$ y $$y$$ del círculo con radio 15 y dibujar su gráfica. Gráfica el círculo dentro del objeto `wCircle`. Para esto, debes invocar desde `main()` los métodos `AddPointToGraph(x,y)`, `Plot` y `show`. Recuerda que éstos deben ser precedidos por `wCircle`, por ejemplo, `wCircle.show()`.
|
315
|
2. Ahora crearás una función sobrecargada `circle` que reciba como argumentos el valor del ángulo $$t$$, la referencia a las variables $$x$$ y $$y$$, y el valor para el radio del círculo. Invoca desde `main()` la función sobrecargada `circle` que acabas de implementar para calcular los valores de las coordenadas $$x$$ y $$y$$ del círculo con radio 15 y dibujar su gráfica. Gráfica el círculo dentro del objeto `wCircle`. Para esto, debes invocar desde `main()` los métodos `AddPointToGraph(x,y)`, `Plot` y `show`. Recuerda que éstos deben ser precedidos por `wCircle`, por ejemplo, `wCircle.show()`.
|
319
|
|
316
|
|
320
|
-### Ejercicio 3
|
|
|
|
|
317
|
+### Ejercicio 3: Implementar función para calcular las coordenadas de los puntos de la gráfica de una curva
|
321
|
|
318
|
|
322
|
-En este ejercicio implementarás otra función para calcular las coordenadas de los puntos de la gráfica de una curva.
|
|
|
323
|
|
319
|
|
324
|
**Instrucciones**
|
320
|
**Instrucciones**
|
325
|
|
321
|
|