Browse Source

Rafa arreglando algunas oraciones

Rafael Arce Nazario 8 years ago
parent
commit
2279e0a393
2 changed files with 58 additions and 40 deletions
  1. 57
    38
      README.md
  2. 1
    2
      main.cpp

+ 57
- 38
README.md View File

@@ -1,29 +1,29 @@
1 1
 [English](#markdown-header-classes-basket) | [Español](#markdown-header-clases-baloncesto)
2 2
 
3
-#Clases - Baloncesto
3
+# Clases - Baloncesto
4 4
 
5 5
 
6 6
 ![main1.png](images/main1.png)
7 7
 ![main2.png](images/main2.png)
8 8
 ![main3.png](images/main3.png)
9 9
 
10
-[Versión 2016-05-01]
10
+[Versión 2016-05-02]
11 11
 
12 12
 La *programación orientada a objetos* (object oriented programming, OOP) es un paradigma de programación que promueve el diseño de programas en el que distintos objetos interactúan entre sí para resolver un problema.   C++ es uno de los lenguajes de programación que promueve la programación orientada a objetos, permitiendo que los programadores creen sus propias clases desde cero o derivadas de otras clases existentes. Algunos otros lenguajes que promueven OOP son Java, Python, javascript y PHP.  
13 13
 
14
-En OOP, cada objeto encapsula dentro de él ciertas propiedades sobre el ente que está modelando (por ejemplo, un objeto que modela un *punto* encapsula dentro de sí las coordenadas *x* y *y* del punto que representa). Además, cada objeto permite realizar ciertas acciones sobre sí, i.e. contiene sus *métodos*. Por ejemplo, un objeto de clase *punto* puede realizar la acción de cambiar el valor de su coordenada *x*. 
14
+En OOP, cada objeto encapsula dentro de él ciertas propiedades sobre el ente que está modelando (por ejemplo, un objeto que modela un *punto* encapsula dentro de sí las coordenadas *x* y *y* del punto que representa). Además, cada objeto contiene *metodos*, i.e. acciones que puede realizar sobre sus propiedades o sobre otros objetos. Por ejemplo, un objeto de clase *punto* puede realizar la acción de cambiar el valor de su coordenada *x*.
15 15
 
16
-Cuando la clase de objetos que necesitamos utilizar en nuestro programa no ha sido predefinida en el alguna librería, necesitamos declarar e implementar nuestra propia clase. Para esto definimos *clases* que contengan datos con ciertas *propiedades* o *atributos* y acciones que queremos hacer con esos datos por medio de *métodos* o *funciones miembro*. De esta manera, podremos organizar la información y procesos en *objetos* que tienen las propiedades y métodos de una clase. En la experiencia de laboratorio de hoy practicarás el definir una clase e implementar algunos de sus métodos completando un programa que simula un partido de baloncesto entre dos jugadores, mantiene la puntuación del juego y las estadísticas globales de los dos jugadores.
16
+Cuando la clase de objetos que necesitamos utilizar en nuestro programa no ha sido predefinida en el alguna librería, necesitamos declarar e implementar nuestra propia clase. Para esto definimos *clases* que contengan datos con ciertas *propiedades* o *atributos* y acciones que queremos hacer con esos datos por medio de *métodos* o *funciones miembro*. De esta manera, podremos organizar la información y procesos en *objetos* que tienen las propiedades y métodos de una clase. En la experiencia de laboratorio de hoy practicarás la implementación de una clase y algunos de sus métodos, completando un programa que simula un partido de baloncesto entre dos jugadores, mantiene la puntuación del juego y las estadísticas globales de los dos jugadores.
17 17
 
18 18
 
19
-##Objetivos:
19
+## Objetivos:
20 20
 
21 21
 1. Diseñar y definir una clase.
22 22
 
23 23
 2. Implementar métodos de una clase.
24 24
 
25 25
 
26
-##Pre-Lab:
26
+## Pre-Lab:
27 27
 
28 28
 Antes de llegar al laboratorio debes haber:
29 29
 
@@ -41,17 +41,38 @@ Antes de llegar al laboratorio debes haber:
41 41
 
42 42
 
43 43
 
44
-##El juego
44
+## El juego
45
+
46
+El esqueleto de programa que te proveemos simula un partido de baloncesto entre dos jugadores. El programa utiliza OOP y simula el partido creando un objeto de clase BBPlayer para cada jugador e invocando sus métodos. El objeto que representa cada jugador contiene atributos tales como el nombre del jugador y estádisticas de juego, e.g. tiros intentados y anotados. Durante el juego, cada tiro anotado vale dos puntos. El programa incluye funciones  aleatorias y fórmulas para determinar el jugador que intenta el tiro, si anota el tiro y el jugador que coge el rebote.  Durante el partido simulado se mantiene la puntuación de cada jugador y se actualizan los datos para cada jugador. Al final del partido se despliega una tabla con las estadísticas.
45 47
 
46
-El esqueleto de programa que te proveemos simula un partido de baloncesto entre dos jugadores. Todos los tiros anotados reciben dos puntos. Se inicializan los datos con el nombre de cada jugador y sus estadísticas globales en el "torneo": total de juegos jugados, tiros intentados, tiros anotados y rebotes. El programa incluye funciones  aleatorias y fórmulas para determinar el jugador que intenta el tiro, si anota el tiro y el jugador que coge el rebote.  Durante el partido simulado se mantiene la puntuación de cada jugador y se actualizan los datos para cada jugador. Al final del partido se despliega una tabla con las estadísticas.
48
+El algoritmo que simula el juego es el siguiente:
49
+
50
+```
51
+1.  inicializar jugadores
52
+2.  asignar jugadorEnOfensiva aleatoriamente
53
+2.  while (ninguno ha ganado):
54
+3.    simular tiro al canasto
55
+4.    if (anotó):
56
+5.      actualizar estadisticas de quien tiró al canasto
57
+6.      if (puntuación >= 32):
58
+7.        informar que jugadorEnOfensiva ganó
59
+8.      else:
60
+9.        intercambiar jugadorEnOfensiva
61
+10.   else:
62
+11.     actualizar estadisticas de quien tiró al canasto
63
+11.     determinar quien atrapa rebote
64
+12.     actualizar estadisticas de quien atrapó rebote
65
+13.     asignar jugadorEnOfensiva
66
+14. mostrar estadísticas de los jugadores
67
+```
47 68
 
48 69
 ---
49 70
 
50 71
 ### La clase `BBPlayer`
51 72
 
52
-Para esta experiencia de laboratorio, definirás una clase `BBPlayer` que contenga los atributos y métodos que se describen abajo. Como algunas de las funciones que ya están definidas en el código provisto utilizan atributos y métodos de esta clase, es importante que utilices los mismos nombres que te indicamos. El código comentado en la función `main` y en `test_BBPlayer` también te ayudará a determinar el tipo de dato que debe devolver el método y los tipos que deben tener los parámetros y el orden en que se incluyen en la declaración de la función.
73
+Para esta experiencia de laboratorio, definirás una clase `BBPlayer` que contenga los atributos y métodos que se describen a continuación. Como algunas de las funciones que ya están definidas en el código provisto utilizan atributos y métodos de esta clase, es importante que utilices los mismos nombres que te indicamos. El código comentado en la función `main` y en `test_BBPlayer` también te ayudará a determinar el tipo de dato que debe devolver el método y el orden y tipo de sus parámetros.
53 74
 
54
-####Atributos
75
+#### Atributos
55 76
 
56 77
 *  `_name`: guardará el nombre del jugador
57 78
 *  `_shotsTaken`: guardará el número de tiros al canasto intentados durante el torneo
@@ -60,16 +81,16 @@ Para esta experiencia de laboratorio, definirás una clase `BBPlayer` que conten
60 81
 *  `_rebounds`: guardará el número de rebotes durante el torneo
61 82
 *  `_score`: guardará la puntuación del jugador durante el partido
62 83
 
63
-####Métodos
84
+#### Métodos
64 85
 
65 86
 * constructor por defecto (default). *(método incluido en `main.cpp`)*
66
-* `setAll()`: método que asigna valor inicial a todos los atributos de un objeto. Nota que este método está invocado al comienzo de `main` para asignarle valores iniciales al arreglo `P` que es un arreglo de dos objetos de la clase `BBPlayer`.
87
+* `setAll()`: método que asigna valor inicial a todos los atributos de un objeto. Nota que este método está invocado al comienzo de `main` para asignarle valores iniciales al arreglo `P` que es un arreglo de dos objetos de la clase `BBPlayer`.
67 88
 * `name()`: método para adquirir el nombre del jugador.
68
-* `shotPercentage()`: método para calcular el porciento de tiros anotados; se usa para "determinar" si el tiro intentado por un jugador se anota. *(método incluido en `main.cpp`)*
69
-* `reboundsPerGame()`: método para calcular el promedio de rebotes cogidos por juego; se usa para "determinar" si un jugador coge un rebote. *(método incluido en `main.cpp`)*
70
-* `shotMade()`: método que registra que se anotó un tiro, que se intentó un tiro, y actualiza la puntuación del jugador.
71
-* `shotMissed()`: método que registra tiro intentado (pero fallado).
72
-* `reboundMade()`: método que registra un rebote cogido.
89
+* `shotPercentage()`: método para calcular el porciento de tiros anotados; durante el juego se usa para determinar si el tiro intentado por un jugador se anota. *(método incluido en `main.cpp`)*
90
+* `reboundsPerGame()`: método para calcular el promedio de rebotes atrapados por juego; durante el juego se usa para determinar cuál de los jugadores atrapa un rebote. *(método incluido en `main.cpp`)*
91
+* `shotMade()`: método que registra que se anotó un tiro, i.e. incrementa _shotsMade, _shotsTaken y el _score del jugador.
92
+* `shotMissed()`: método que registra tiro fallado, i.e. incrementa solo _shotsTaken del jugador.
93
+* `reboundMade()`: método que registra un rebote atrapado.
73 94
 * `addGame()`: método que registra que se jugó un partido.
74 95
 * `score()`: método para adquirir la puntuación del jugador.
75 96
 * `printStats()`: método para desplegar las estádisticas del jugador. *(método incluido en `main.cpp`)*
@@ -78,36 +99,36 @@ Para esta experiencia de laboratorio, definirás una clase `BBPlayer` que conten
78 99
 
79 100
 ---
80 101
 
81
-##Sesión de laboratorio:
102
+## Sesión de laboratorio:
82 103
 
83
-Tu tarea durante la sesión de laboratorio será el definir la clase `BBPlayer` con los atributos y prototipos de los métodos que se listan arriba. El esqueleto del programa incluye el código para definir algunos de los métodos; otros tendrán que ser definidos.
104
+Tu tarea durante la sesión de laboratorio será el definir la clase `BBPlayer` con los atributos y prototipos de los métodos que se listan arriba. El esqueleto del programa incluye la definición de algunos métodos. Tu debes completar el resto.
84 105
 
85
-El esqueleto del programa también incluye la función `test_BBPlayer` que hace pruebas unitarias a cada una de las funciones del programa. Las pruebas están comentadas y, según vayas definiendo las funciones, las vas descomentando, probando y modificando la función  hasta que la prueba para esa función se pase. Una vez todas las funciones estén listas y hayan pasado las pruebas, se prueba el programa completo removiendo los comentarios que sean necesarios en el código de la función `main`.
106
+El esqueleto del programa también incluye la función `test_BBPlayer` que hace pruebas unitarias a cada una de las funciones del programa. Las pruebas están comentadas y, según vayas definiendo las funciones, debes irlas descomentando, probando y modificando la función  hasta que pase la prueba. Una vez todas las funciones estén listas y hayan pasado las pruebas, probarás el programa completo removiendo los comentarios que sean necesarios en el código de la función `main`.
86 107
 
87 108
 
88
-###Ejercicio 0: Bajar y entender el código provisto
109
+### Ejercicio 0: Bajar y entender el código provisto
89 110
 
90
-####Instrucciones
111
+#### Instrucciones
91 112
 
92 113
 1. Descarga la carpeta `classes-basket` de `Bitbucket` usando un terminal, moviéndote al directorio `Documents/eip`, y escribiendo el comando `git clone http://bitbucket.org/eip-uprrp/classes-basket`.
93 114
 
94
-2. Carga a Qt creator el proyecto `basket01`  haciendo doble "click" en el archivo `basket01.pro` que se encuentra en la carpeta  `Documents/eip/classes-basket` de tu computadora. 
95
- 
96
-3. Este programa correrá en el terminal y  debes seleccionar esa opción desde la ventana de "Projects". Para acceder a esta ventana, seleccionas "Projects" en el menú vertical de la izquierda. Luego en `Build & Run` seleccionas `Run` y luego marcas la caja que dice `Run in terminal`.
115
+2. Carga a Qt creator el proyecto `basket01`  haciendo doble "click" en el archivo `basket01.pro` que se encuentra en la carpeta  `Documents/eip/classes-basket` de tu computadora.
116
+
117
+3. El ejecutable correrá en el terminal y  debes seleccionar esa opción desde la ventana de "Projects". Para acceder a esta ventana, seleccionas "Projects" en el menú vertical de la izquierda. Luego en `Build & Run` seleccionas `Run` y luego marcas la caja que dice `Run in terminal`.
97 118
 
98
-4. Estudia y entiende el código en el archivo `main.cpp`, incluyendo el código que está comentado.
119
+4. Estudia el código en el archivo `main.cpp`, incluyendo el código que está comentado.
99 120
 
100
-###Ejercicio 1: Definir la clase `BBPlayer`
121
+### Ejercicio 1: Definir la clase `BBPlayer`
101 122
 
102
-1. Define la clase `BBPlayer` con las especificaciones que se incluyen arriba. Para cada uno de los métodos que se especifican arriba:
123
+1. Define la clase `BBPlayer` con las especificaciones que se proveen en la sección **La clase BBPlayer**. Para cada uno de los métodos que se especifican en esa sección:
103 124
 
104
-    a. Incluye el prototipo del método en la definición de la clase
125
+    a. Incluye su prototipo en la definición de la clase
105 126
 
106
-    b. Si la función correspondiente a ese método ya está codificada en el programa, remueve los comentarios de las secciones correspondientes a esa función en  `test_BBPlayer`.
127
+    b. Si el método ya ha sido implementado, remueve los comentarios de las secciones correspondientes a esa función en  `test_BBPlayer`.
107 128
 
108
-    c. Si la función correspondiente a ese método no está codificada, define la función y luego remueve los comentarios de las secciones correspondientes a esa función en  `test_BBPlayer`.
129
+    c. Si el método no ha sido implementado, hazlo y luego remueve los comentarios de las secciones correspondientes a esa función en  `test_BBPlayer`.
109 130
 
110
-    d. Corre el programa y verifica que haya pasado las pruebas. Debes obtener una ventana similar a la de la Figura 1. Si no pasa las pruebas, revisa tu código. Repite hasta que tu código haya pasado las pruebas. 
131
+    d. Corre el programa y verifica que haya pasado las pruebas. Debes obtener una ventana similar a la de la Figura 1, i.e. debe contener el mensaje `All unit tests passed!!!` . Si no pasa las pruebas, revisa tu código. Repite hasta que tu código haya pasado todas las pruebas.
111 132
 
112 133
     ---
113 134
 
@@ -117,14 +138,12 @@ El esqueleto del programa también incluye la función `test_BBPlayer` que hace
117 138
 
118 139
     ---
119 140
 
120
-
121
-2. Una vez tengas todas las funciones definidas y probadas, descomenta el código de la función `main` para probar el programa completo. Si el programa funciona correctamente, debes obtener una ventana que comienza de manera similar a la Figura 2 y termina como en la Figura 3.
141
+2. Una vez tengas todas los métodos definidos y probados, descomenta el código de la función `main` para probar el programa completo. Si el programa funciona correctamente, debes obtener una ventana que comienza de manera similar a la Figura 2 y termina como en la Figura 3.
122 142
 
123 143
     ---
124 144
 
125 145
     ![figure2.png](images/figure2.png)
126 146
 
127
-
128 147
     **Figura 2.** Ejemplo del comienzo de la pantalla que debes obtener si el programa funciona correctamente.
129 148
 
130 149
     ---
@@ -141,7 +160,7 @@ El esqueleto del programa también incluye la función `test_BBPlayer` que hace
141 160
 
142 161
 ---
143 162
 
144
-##Entrega
163
+## Entrega
145 164
 
146 165
 Utiliza "Entrega" en Moodle para entregar el archivo `main.cpp`. Recuerda utilizar buenas prácticas de programación, incluir el nombre de los programadores y documentar tu programa.
147 166
 
@@ -168,7 +187,7 @@ Utiliza "Entrega" en Moodle para entregar el archivo `main.cpp`. Recuerda utiliz
168 187
 
169 188
 [English](#markdown-header-classes-basket) | [Español](#markdown-header-clases-baloncesto)
170 189
 
171
-#Classes - Basketball
190
+# Classes - Basketball
172 191
 
173 192
 
174 193
 ![main1.png](images/main1.png)
@@ -319,4 +338,4 @@ Use "Deliverables" in Moodle to hand in the `main.cpp` file. Remember to use goo
319 338
 
320 339
 [2] http://www.musthavemenus.com/category/bar-clipart.html
321 340
 
322
-[3] http://basketball.isport.com/basketball-guides/finding-your-niche-in-basketball
341
+[3] http://basketball.isport.com/basketball-guides/finding-your-niche-in-basketball

+ 1
- 2
main.cpp View File

@@ -172,7 +172,7 @@ int main()
172 172
     // create the two players
173 173
     BBPlayer P[2];
174 174
     P[0].setAll("Chemba", 100, 65, 10, 35);
175
-    P[1].setAll("Wes", 100, 56, 10, 1);
175
+    P[1].setAll("Wes", 100, 65, 10, 35);
176 176
 
177 177
 
178 178
     srand(time(NULL));
@@ -234,4 +234,3 @@ int main()
234 234
 
235 235
     return 0;
236 236
 }
237
-