|
|
|
|
1
|
-#Estructuras de repetición - Juego de palitos
|
|
|
|
|
1
|
+# Estructuras de repetición - Juego de palitos
|
2
|
|
2
|
|
3
|
![main1.png](images/main1.png)
|
3
|
![main1.png](images/main1.png)
|
4
|
![main2.png](images/main2.png)
|
4
|
![main2.png](images/main2.png)
|
5
|
![main3.png](images/main3.png)
|
5
|
![main3.png](images/main3.png)
|
6
|
|
6
|
|
7
|
|
7
|
|
|
|
8
|
+[verano2016 - Coralys]
|
8
|
|
9
|
|
9
|
-Una de las ventajas de utilizar programas de computadoras es que podemos realizar tareas repetitivas fácilmente. Los ciclos como `for`, `while`, y `do-while` son estructuras de control que nos permiten repetir un conjunto de instrucciones. A estas estructuras también se les llama *estructuras de repetición*. En la experiencia de laboratorio de hoy practicarás el uso de ciclos para implementar el juego de "palitos" en C++.
|
|
|
|
|
10
|
+Una de las ventajas de utilizar programas de computadoras es que podemos realizar tareas repetitivas fácilmente. Los ciclos como `for`, `while`, y `do-while` son estructuras de control que nos permiten repetir un conjunto de instrucciones. A estas estructuras también se les llama *estructuras de repetición*. En la experiencia de laboratorio de hoy, practicarás el uso de ciclos para implementar el juego de palitos en C++.
|
10
|
|
11
|
|
11
|
|
12
|
|
12
|
-##Objetivos:
|
|
|
|
|
13
|
+## Objetivos:
|
13
|
|
14
|
|
14
|
1. Diseñar algoritmos para realizar una tarea.
|
15
|
1. Diseñar algoritmos para realizar una tarea.
|
15
|
2. Traducir un algoritmo a pseudocódigo.
|
16
|
2. Traducir un algoritmo a pseudocódigo.
|
|
|
|
|
19
|
|
20
|
|
20
|
Esta experiencia de laboratorio es una adaptación del ejercicio en: http://nifty.stanford.edu/2014/laaksonen-vihavainen-game-of-sticks/handout.html.
|
21
|
Esta experiencia de laboratorio es una adaptación del ejercicio en: http://nifty.stanford.edu/2014/laaksonen-vihavainen-game-of-sticks/handout.html.
|
21
|
|
22
|
|
22
|
-##Pre-Lab:
|
|
|
|
|
23
|
+## Pre-Lab:
|
23
|
|
24
|
|
24
|
Antes de llegar al laboratorio debes haber:
|
25
|
Antes de llegar al laboratorio debes haber:
|
25
|
|
26
|
|
|
|
|
|
27
|
|
28
|
|
28
|
2. Estudiado los conceptos e instrucciones para la sesión de laboratorio.
|
29
|
2. Estudiado los conceptos e instrucciones para la sesión de laboratorio.
|
29
|
|
30
|
|
30
|
-3. Tomado el quiz Pre-Lab que se encuentra en Moodle.
|
|
|
|
|
31
|
+3. Tomado el quiz Pre-Lab, disponible en Moodle.
|
31
|
|
32
|
|
32
|
---
|
33
|
---
|
33
|
|
34
|
|
|
|
|
|
35
|
|
36
|
|
36
|
## Palitos (Game of Sticks)
|
37
|
## Palitos (Game of Sticks)
|
37
|
|
38
|
|
38
|
-
|
|
|
39
|
El juego de los palitos se juega entre dos contrincantes. Al principio del juego hay un montículo de palitos en la mesa. En cada turno, cada jugador retira de 1 a 3 palitos de la mesa. El jugador que recoge el último palito pierde el juego.
|
39
|
El juego de los palitos se juega entre dos contrincantes. Al principio del juego hay un montículo de palitos en la mesa. En cada turno, cada jugador retira de 1 a 3 palitos de la mesa. El jugador que recoge el último palito pierde el juego.
|
40
|
|
40
|
|
41
|
Por ejemplo, un juego de palitos podría transcurrir así:
|
41
|
Por ejemplo, un juego de palitos podría transcurrir así:
|
|
|
|
|
58
|
---
|
58
|
---
|
59
|
|
59
|
|
60
|
|
60
|
|
61
|
-##Sesión de laboratorio:
|
|
|
|
|
61
|
+## Sesión de laboratorio:
|
62
|
|
62
|
|
63
|
En la experiencia de laboratorio de hoy practicarás el uso de ciclos para implementar el juego de palitos.
|
63
|
En la experiencia de laboratorio de hoy practicarás el uso de ciclos para implementar el juego de palitos.
|
64
|
|
64
|
|
65
|
-###Ejercicio 1: Diseñar el algoritmo
|
|
|
66
|
|
65
|
|
|
|
66
|
+### Ejercicio 1 - Diseñar el algoritmo
|
67
|
|
67
|
|
68
|
Diseña un algoritmo para que dos personas puedan jugar el juego de los palitos en la computadora. El algoritmo debe respetar las siguientes restricciones:
|
68
|
Diseña un algoritmo para que dos personas puedan jugar el juego de los palitos en la computadora. El algoritmo debe respetar las siguientes restricciones:
|
69
|
|
69
|
|
|
|
|
|
101
|
```
|
101
|
```
|
102
|
|
102
|
|
103
|
|
103
|
|
104
|
-###Ejercicio 2: Escribir el pseudocódigo
|
|
|
|
|
104
|
+### Ejercicio 2 - Escribir el pseudocódigo
|
105
|
|
105
|
|
106
|
-#### Instrucciones:
|
|
|
|
|
106
|
+#### Instrucciones
|
107
|
|
107
|
|
108
|
-0. Cierra la computadora.
|
|
|
|
|
108
|
+1. Cierra la computadora.
|
109
|
|
109
|
|
110
|
-1. Expresa el algoritmo en pseudocódigo.
|
|
|
|
|
110
|
+2. Expresa el algoritmo en pseudocódigo.
|
111
|
|
111
|
|
112
|
-2. Ejecuta "a mano" el pseudocódigo para capturar errores lógicos. Trátalo con varios casos *extremos* y escribe sus resultados a mano. [Aquí](https://docs.google.com/a/upr.edu/presentation/d/1m-lXCUTKhCZC8vTnmtAXwfxQjIKkSVhTUrcywiZsdbQ/edit?usp=sharing) puedes ver un ejemplo de como hacer "hand-checking" a un algoritmo.
|
|
|
|
|
112
|
+3. Ejecuta a mano el pseudocódigo para capturar errores lógicos. Trátalo con varios casos *extremos* y escribe sus resultados a mano. [Aquí](https://docs.google.com/a/upr.edu/presentation/d/1m-lXCUTKhCZC8vTnmtAXwfxQjIKkSVhTUrcywiZsdbQ/edit?usp=sharing) puedes ver un ejemplo de como hacer "hand-checking" a un algoritmo.
|
113
|
|
113
|
|
114
|
|
114
|
|
115
|
-###Ejercicio 3: Implementar el código
|
|
|
|
|
115
|
+### Ejercicio 3 - Implementar el código
|
116
|
|
116
|
|
117
|
-#### Instrucciones:
|
|
|
|
|
117
|
+#### Instrucciones
|
118
|
|
118
|
|
119
|
-0. Abre la computadora.
|
|
|
|
|
119
|
+1. Abre la computadora.
|
120
|
|
120
|
|
121
|
-1. Implementa el algoritmo en un programa en C++.
|
|
|
|
|
121
|
+2. Implementa el algoritmo en un programa en C++.
|
122
|
|
122
|
|
123
|
**Ayudas:**
|
123
|
**Ayudas:**
|
124
|
|
124
|
|
125
|
-1. Utiliza una variable de tipo `int` para llevar cuenta del jugador. Al final de cada turno, intercambia el jugador asi:
|
|
|
|
|
125
|
+1. Utiliza una variable de tipo `int` para llevar cuenta del jugador. Al final de cada turno, intercambia el jugador así:
|
126
|
|
126
|
|
127
|
```cpp
|
127
|
```cpp
|
128
|
jugador = jugador == 1 ? 2 : 1;
|
128
|
jugador = jugador == 1 ? 2 : 1;
|
|
|
|
|
136
|
|
136
|
|
137
|
2. Piensa en los 3 mandamientos de las estructuras de repetición:
|
137
|
2. Piensa en los 3 mandamientos de las estructuras de repetición:
|
138
|
|
138
|
|
139
|
- a. ¿Cuál es la variable de control del ciclo y que condición será la que mantiene el ciclo iterando?
|
|
|
|
|
139
|
+ a. ¿Cuál es la variable de control del ciclo y qué condición será la que mantiene el ciclo iterando?
|
140
|
|
140
|
|
141
|
- b. ¿A que se inicializa la variable de control del ciclo?
|
|
|
|
|
141
|
+ b. ¿A qué se inicializa la variable de control del ciclo?
|
142
|
|
142
|
|
143
|
c. ¿Cómo se modifica la variable de control del ciclo en cada iteración?
|
143
|
c. ¿Cómo se modifica la variable de control del ciclo en cada iteración?
|
144
|
|
144
|
|
145
|
|
145
|
|
146
|
-###Entregas:
|
|
|
|
|
146
|
+### Entregas
|
147
|
|
147
|
|
148
|
1. Utiliza "Entrega 1" en Moodle para entregar el pseudocódigo del juego de palitos.
|
148
|
1. Utiliza "Entrega 1" en Moodle para entregar el pseudocódigo del juego de palitos.
|
149
|
|
149
|
|
150
|
-2. Utiliza "Entrega 2" en Moodle para entregar el papel donde tu y tu pareja hicieron la ejecución "a mano" del pseudocódigo del juego de palitos.
|
|
|
|
|
150
|
+2. Utiliza "Entrega 2" en Moodle para entregar el papel donde tú y tu pareja hicieron la ejecución a mano del pseudocódigo del juego de palitos.
|
151
|
|
151
|
|
152
|
-3. Utiliza "Entrega 3" en Moodle para entregar un archivo `.cpp` con el programa en C++ para jugar palitos. El programa no debe tener errores de compilación, debe estar debidamente documentado y funcionar "como se supone". Recuerda utilizar buenas prácticas de programación, incluir el nombre de los programadores y documentar tu programa.
|
|
|
|
|
152
|
+3. Utiliza "Entrega 3" en Moodle para entregar un archivo `.cpp` con el programa en C++ para jugar palitos. El programa no debe tener errores de compilación, debe estar debidamente documentado y funcionar como se supone. Recuerda utilizar buenas prácticas de programación, incluye el nombre de los programadores y documenta tu programa.
|
153
|
|
153
|
|
154
|
|
154
|
|
155
|
|
155
|
|
|
|
|
|
157
|
|
157
|
|
158
|
---
|
158
|
---
|
159
|
|
159
|
|
160
|
-##Referencias
|
|
|
|
|
160
|
+## Referencias
|
161
|
|
161
|
|
162
|
[1] http://nifty.stanford.edu/2014/laaksonen-vihavainen-game-of-sticks/handout.html
|
162
|
[1] http://nifty.stanford.edu/2014/laaksonen-vihavainen-game-of-sticks/handout.html
|
163
|
|
163
|
|