|
@@ -4,7 +4,7 @@
|
4
|
4
|

|
5
|
5
|

|
6
|
6
|
|
7
|
|
-[version 2016.01.29]
|
|
7
|
+[verano2016 - Coralys]
|
8
|
8
|
|
9
|
9
|
|
10
|
10
|
Las expresiones aritméticas son parte esencial de casi cualquier algoritmo que resuelve un problema útil. Por lo tanto, implementar expresiones aritméticas correctamente es una destreza básica en cualquier lenguaje de programación de computadoras. En esta experiencia de laboratorio practicarás la implementación de expresiones aritméticas en C++ escribiendo ecuaciones paramétricas para graficar curvas interesantes.
|
|
@@ -25,18 +25,20 @@ Antes de llegar al laboratorio debes:
|
25
|
25
|
|
26
|
26
|
1. Haber repasado los siguientes conceptos:
|
27
|
27
|
|
28
|
|
- a. implementar expresiones aritméticas en C++
|
|
28
|
+ a. Implementar expresiones aritméticas en C++
|
29
|
29
|
|
30
|
|
- b. tipos de datos nativos de C++ (int, float, double, char)
|
|
30
|
+ b. Los tipos de datos básicos de C++ (int, float, double, char)
|
31
|
31
|
|
32
|
|
- c. usar "type casting" para covertir el valor de una variable a otro tipo dentro de expresiones.
|
|
32
|
+ c. El uso de "type casting" para covertir el valor de una variable a otro tipo, dentro de expresiones.
|
33
|
33
|
|
34
|
|
- d. utilizar funciones y constantes aritméticas de la biblioteca `cmath`
|
|
34
|
+ d. Utilizar funciones y constantes aritméticas de la biblioteca `cmath`
|
35
|
35
|
|
36
|
|
- e. la ecuación y gráfica de un círculo
|
|
36
|
+ e. La ecuación y gráfica de un círculo
|
37
|
37
|
|
38
|
38
|
2. Haber estudiado los conceptos e instrucciones para la sesión de laboratorio.
|
39
|
39
|
|
|
40
|
+3. Haber tomado el quiz Pre-Lab disponible en Moodle.
|
|
41
|
+
|
40
|
42
|
---
|
41
|
43
|
|
42
|
44
|
---
|
|
@@ -52,7 +54,7 @@ Los puntos $$(x,y)$$ que satisfacen esta ecuación son los puntos que forman el
|
52
|
54
|
|
53
|
55
|
$$x^2+y^2=4,$$
|
54
|
56
|
|
55
|
|
-y sus puntos son los pares ordenados $$(x,y)$$ que satisfacen esa ecuación. Una forma paramétrica de expresar las coordenadas de los puntos de el círculo con radio $$r$$ y centro en el origen es:
|
|
57
|
+y sus puntos son los pares ordenados $$(x,y)$$ que satisfacen esa ecuación. Una forma paramétrica de expresar las coordenadas de los puntos del círculo con radio $$r$$ y centro en el origen es:
|
56
|
58
|
|
57
|
59
|
$$x=r \cos(t)$$
|
58
|
60
|
|
|
@@ -85,21 +87,21 @@ Para graficar una curva que está definida usando ecuaciones paramétricas, comp
|
85
|
87
|
---
|
86
|
88
|
|
87
|
89
|
|
88
|
|
-!INCLUDE "../../eip-diagnostic/pretty-plots/es/diag-pretty-plots-01.html"
|
|
90
|
+!INCLUDE "../../eip-diagnostic/pretty-plots/es/diag-pretty-plots-01.html"
|
89
|
91
|
<br>
|
90
|
92
|
|
91
|
|
-!INCLUDE "../../eip-diagnostic/pretty-plots/es/diag-pretty-plots-02.html"
|
|
93
|
+!INCLUDE "../../eip-diagnostic/pretty-plots/es/diag-pretty-plots-02.html"
|
92
|
94
|
<br>
|
93
|
95
|
|
94
|
|
-!INCLUDE "../../eip-diagnostic/pretty-plots/es/diag-pretty-plots-03.html"
|
|
96
|
+!INCLUDE "../../eip-diagnostic/pretty-plots/es/diag-pretty-plots-03.html"
|
95
|
97
|
<br>
|
96
|
|
-!INCLUDE "../../eip-diagnostic/pretty-plots/es/diag-pretty-plots-04.html"
|
|
98
|
+!INCLUDE "../../eip-diagnostic/pretty-plots/es/diag-pretty-plots-04.html"
|
97
|
99
|
<br>
|
98
|
|
-!INCLUDE "../../eip-diagnostic/pretty-plots/es/diag-pretty-plots-05.html"
|
|
100
|
+!INCLUDE "../../eip-diagnostic/pretty-plots/es/diag-pretty-plots-05.html"
|
99
|
101
|
<br>
|
100
|
|
-!INCLUDE "../../eip-diagnostic/pretty-plots/es/diag-pretty-plots-06.html"
|
|
102
|
+!INCLUDE "../../eip-diagnostic/pretty-plots/es/diag-pretty-plots-06.html"
|
101
|
103
|
<br>
|
102
|
|
-!INCLUDE "../../eip-diagnostic/pretty-plots/es/diag-pretty-plots-07.html"
|
|
104
|
+!INCLUDE "../../eip-diagnostic/pretty-plots/es/diag-pretty-plots-07.html"
|
103
|
105
|
<br>
|
104
|
106
|
|
105
|
107
|
---
|
|
@@ -116,11 +118,13 @@ En este ejercicio graficarás algunas ecuaciones paramétricas que generan curva
|
116
|
118
|
|
117
|
119
|
**Instrucciones**
|
118
|
120
|
|
119
|
|
-1. Descarga la carpeta `expressions-prettyplots` de `Bitbucket` usando un terminal, moviéndote al directorio `Documents/eip`, y escribiendo el comando `git clone http://bitbucket.org/eip-uprrp/expressions-prettyplots`.
|
|
121
|
+1. Carga a `QtCreator` el proyecto `PrettyPlots`. Hay dos maneras de hacer esto:
|
120
|
122
|
|
121
|
|
-2. Carga a Qt Creator el proyecto `prettyPlot` haciendo doble "click" en el archivo `prettyPlot.pro` que se encuentra en la carpeta `Documents/eip/expressions-prettyplots` de tu computadora.
|
|
123
|
+ * Utilizando la máquina virtual: Haz doble "click" en el archivo `prettyPlot.pro` que se encuentra en el directorio `home/Documents/eip/expressions-prettyplots` de la máquina virtual.
|
|
124
|
+
|
|
125
|
+ * Descargando la carpeta del proyecto de `Bitbucket`: Utiliza el terminal de la máquina virtual y escribe el comando `git clone http://bitbucket.org/eip-uprrp/expressions-prettyplots` para descargar la carpeta `expressions-prettyplots` de `Bitbucket`. En esa carpeta, haz doble "click" en el archivo `prettyPlot.pro`.
|
122
|
126
|
|
123
|
|
-3. Configura el proyecto y ejecuta el programa marcando la flecha verde en el menú de la izquierda de la interface de Qt Creator. El programa debe mostrar una ventana parecida a la Figura 3.
|
|
127
|
+2. Configura el proyecto y ejecuta el programa marcando la flecha verde en el menú de la izquierda de la interface de Qt Creator. El programa debe mostrar una ventana parecida a la Figura 3.
|
124
|
128
|
|
125
|
129
|
---
|
126
|
130
|
|
|
@@ -130,7 +134,7 @@ En este ejercicio graficarás algunas ecuaciones paramétricas que generan curva
|
130
|
134
|
|
131
|
135
|
---
|
132
|
136
|
|
133
|
|
-4. El archivo `main.cpp` (en Sources) contiene la función `main()` donde estarás añadiendo código. Abre ese archivo y estudia el código.
|
|
137
|
+3. El archivo `main.cpp` (en Sources) contiene la función `main()` donde estarás añadiendo código. Abre ese archivo y estudia el código.
|
134
|
138
|
|
135
|
139
|
QApplication a(argc, argv);
|
136
|
140
|
XYPlotWindow wLine;
|
|
@@ -155,11 +159,11 @@ En este ejercicio graficarás algunas ecuaciones paramétricas que generan curva
|
155
|
159
|
wLine.Plot();
|
156
|
160
|
wLine.show();
|
157
|
161
|
|
158
|
|
- La línea `XYPlotWindow wLine;` crea el objeto `wLine` que será la ventana en donde se dibujará una gráfica, en este caso la gráfica de un segmento. Observa el ciclo `for`. En este ciclo se genera una serie de valores para $$t$$ y se computa un valor de $$x$$ y $$y$$ para cada valor de $$t$$. Cada par ordenado $$(x,y)$$ es añadido a la gráfica del segmento por el método `AddPointToGraph(x,y)`. Luego del ciclo se invoca el método `Plot()`, que "dibuja" los puntos, y el método `show()`, que muestra la gráfica. Los *métodos* son funciones que nos permiten trabajar con los datos de los objetos. Nota que cada uno de los métodos se escribe luego de `wLine`, seguido de un punto. En una experiencia de laboratorio posterior aprenderás más sobre objetos y practicarás cómo crearlos e invocar sus métodos.
|
|
162
|
+ La línea `XYPlotWindow wLine;` crea el objeto `wLine` que será la ventana en donde se dibujará una gráfica, en este caso la gráfica de un segmento. Observa el ciclo `for`. En este ciclo se genera una serie de valores para $$t$$ y se computa un valor de $$x$$ y $$y$$ para cada valor de $$t$$. Cada par ordenado $$(x,y)$$ es añadido a la gráfica del segmento por el método `AddPointToGraph(x,y)`. Luego del ciclo, se invoca el método `Plot()`, que "dibuja" los puntos, y el método `show()`, que muestra la gráfica. Los *métodos* son funciones que nos permiten trabajar con los datos de los objetos. Nota que cada uno de los métodos se escribe luego de `wLine`, seguido de un punto. En una experiencia de laboratorio posterior aprenderás más sobre objetos y practicarás cómo crearlos e invocar sus métodos.
|
159
|
163
|
|
160
|
|
- Las expresiones que tiene tu programa para $$x$$ y $$y$$ son ecuaciones paramétricas para la línea que pasa por el origen y tiene el mismo valor para las coordenadas en $$x$$ y $$y$$. Explica por qué la línea solo va desde 0 hasta aproximadamente 6.
|
|
164
|
+ Las expresiones que tiene tu programa para $$x$$ y $$y$$ son ecuaciones paramétricas para la línea que pasa por el origen y tiene el mismo valor para las coordenadas en $$x$$ y $$y$$. Explica por qué la línea solo va desde 0 hasta aproximadamente 6.
|
161
|
165
|
|
162
|
|
-5. Ahora escribirás el código necesario para graficar un círculo. La línea `XYPlotWindow wCircle;` crea el objeto `wCircle` para la ventana donde se graficará el círculo. Usando como inspiración el código para graficar el segmento, escribe el código necesario para que tu programa grafique un círculo de radio 3 con centro en el origen. Ejecuta tu programa y, si es necesario, modifica el código hasta que obtengas la gráfica correcta. Recuerda que el círculo debe graficarse dentro del objeto `wCircle`. Por esto, al invocar los métodos `AddPointToGraph(x,y)`, `Plot` y `show`, éstos deben ser precedidos por `wCircle`, por ejemplo, `wCircle.show()`.
|
|
166
|
+5. Ahora escribirás el código necesario para graficar un círculo. La línea `XYPlotWindow wCircle;` crea el objeto `wCircle` para la ventana donde se graficará el círculo. Usando como inspiración el código para graficar el segmento, escribe el código necesario para que tu programa grafique un círculo de radio 3 con centro en el origen. Ejecuta tu programa y, si es necesario, modifica el código hasta que obtengas la gráfica correcta. Recuerda que el círculo debe graficarse dentro del objeto `wCircle`. Por esto, al invocar los métodos `AddPointToGraph(x,y)`, `Plot` y `show`, éstos deben ser precedidos por `wCircle`, por ejemplo, `wCircle.show()`.
|
163
|
167
|
|
164
|
168
|
6. Tu próxima tarea es graficar una curva cuyas ecuaciones paramétricas son:
|
165
|
169
|
|
|
@@ -167,7 +171,7 @@ En este ejercicio graficarás algunas ecuaciones paramétricas que generan curva
|
167
|
171
|
|
168
|
172
|
$$y=13 \cos(t) - 5 \cos(2t) - 2 \cos(3t) - \cos(4t)-3.$$
|
169
|
173
|
|
170
|
|
- Si implementas las expresiones correctamente debes ver la imagen de un corazón. Esta gráfica debe haber sido obtenida dentro de un objeto `XYPlotWindow` llamado `wHeart`.
|
|
174
|
+ Si implementas las expresiones correctamente debes ver la imagen de un corazón. Esta gráfica debe haber sido obtenida dentro de un objeto `XYPlotWindow` llamado `wHeart`.
|
171
|
175
|
|
172
|
176
|
7. Ahora graficarás una curva cuyas ecuaciones paramétricas son:
|
173
|
177
|
|
|
@@ -185,20 +189,20 @@ En este ejercicio graficarás algunas ecuaciones paramétricas que generan curva
|
185
|
189
|
|
186
|
190
|
Implementa las expresiones de arriba, cambia la condición de terminación del `for` a `t < 16*M_PI` y observa la gráfica que resulta. Se supone que parezca una mariposa. Esta gráfica debe haber sido obtenida dentro de un objeto `XYPlotWindow` llamado `wButterfly`.
|
187
|
191
|
|
188
|
|
-8. Entrega el archivo `main.cpp` que contiene el código con las ecuaciones paramétricas de las gráficas del círculo, el corazón y la mariposa utilizando "Entrega 1" en Moodle. Recuerda utilizar buenas prácticas de programación, incluir el nombre de los programadores y documentar tu programa.
|
|
192
|
+8. Entrega el archivo `main.cpp` que contiene el código con las ecuaciones paramétricas de las gráficas del círculo, el corazón y la mariposa utilizando "Entrega 1" en Moodle. Recuerda utilizar buenas prácticas de programación, al incluir el nombre de los programadores y documentar tu programa.
|
189
|
193
|
|
190
|
194
|
En [2] y [3] puedes encontrar otras ecuaciones paramétricas de otras curvas interesantes.
|
191
|
195
|
|
192
|
196
|
|
193
|
197
|
### Ejercicio 2
|
194
|
198
|
|
195
|
|
-En este ejercicio escribirás un programa para obtener el promedio de puntos para la nota de un estudiante.
|
|
199
|
+En este ejercicio escribirás un programa para obtener el promedio de puntos para la nota de un estudiante.
|
196
|
200
|
|
197
|
201
|
Supón que todos los cursos en la Universidad de Yauco son de $$3$$ créditos y que las notas tienen las siguientes puntuaciones: $$A = 4$$ puntos por crédito; $$B = 3$$ puntos por crédito; $$C = 2$$ puntos por crédito; $$D = 1$$ punto por crédito y $$F = 0$$ puntos por crédito.
|
198
|
202
|
|
199
|
203
|
**Instrucciones**
|
200
|
204
|
|
201
|
|
-1. Crea un nuevo proyecto "Non-Qt" llamado Promedio. Tu función `main()` contendrá el código necesario para pedirle al usuario el número de A's, B's, C's, D's y F's obtenidas por el estudiante y computar el promedio de puntos para la nota (GPA por sus siglas en inglés).
|
|
205
|
+1. Crea un nuevo proyecto "Non-Qt" llamado Promedio. Tu función `main()` contendrá el código necesario para pedirle al usuario el número de A's, B's, C's, D's y F's obtenidas por el estudiante y computar el promedio de puntos para la nota (GPA por sus siglas en inglés).
|
202
|
206
|
|
203
|
207
|
2. Tu código debe definir las **constantes** $$A=4, B=3, C=2, D=1, F=0$$ para la puntuación de las notas, y pedirle al usuario que entre los valores para las variables $$NumA$$, $$NumB$$, $$NumC$$, $$NumD$$, $$NumF$$. La variable $$NumA$$ representará el número de cursos en los que el estudiante obtuvo $$A$$, $$NumB$$ representará el número de cursos en los que el estudiante obtuvo $$B$$, etc. El programa debe desplegar el GPA del estudiante en una escala de 0 a 4 puntos.
|
204
|
208
|
|