Curse of Coding

Ciclos

¡Enhorabuena, has llegado hasta el piso de Ciclos! Ya va siendo momento de aprender funciones que nos van a servir para que nuestro programa termine cuando nosotros queramos.

Si eres observador has notado que todos los programas que hemos desarrollado tienen un inicio > proceso > final, cada vez que tu quieras probar tu programa tienes que reiniciarlo para que vuelva a repetir el proceso. En este tema vamos a aprender cómo hacer que nuestro programa se repita automáticamente y termine cuando nosotros decidamos.

En fundamentos a la programación aprendimos que existen diferentes tipos de ciclos:

While

Hoy vamos a ver cómo implementar estos ciclos en C++ empezando con while, observa el siguiente caso en donde vamos a crear un sistema de mejora de daño:

c++
1#include <iostream>
2using namespace std;
3
4int main() {
5 char response = 's';
6 int damage = 0;
7 char choice;
8
9 while (response == 's') {
10 cout << "¿Isaac tomó un objeto de +1 de daño? (s/n): ";
11 cin >> choice;
12
13 if (choice == 's') {
14 damage++;
15 }
16
17 cout << "¿Deseas continuar explorando el mapa? (s/n): ";
18 cin >> response;
19 }
20
21 cout << endl << "El daño final de Isaac es: " << damage << endl;
22
23 return 0;
24}

Pudiste notar que el programa se repite mientras la condición sea verdadera, en este caso mientras response sea s, este es el corazón de muchos videojuegos, mientras tu personaje siga con vida continúa tomando decisiones y realizando acciones.

Do While

Imagina ahora que nuestra variable response inicie con el valor de n, ¿Cuántas veces crees que se ejecute el programa? La respuesta es 0 veces, porque la condición no se cumple desde el inicio, si necesitamos que el programa se ejecute al menos una vez, necesitamos usar do while.

c++
1#include <iostream>
2using namespace std;
3
4int main() {
5 char response = 's';
6 int damage = 0;
7 char choice;
8
9 do {
10 cout << "¿Isaac tomó un objeto de +1 de daño? (s/n): ";
11 cin >> choice;
12
13 if (choice == 's') {
14 damage++;
15 }
16
17 cout << "¿Deseas continuar explorando el mapa? (s/n): ";
18 cin >> response;
19 } while (response == 's');
20
21 cout << endl << "El daño final de Isaac es: " << damage << endl;
22
23 return 0;
24}

La diferencia entre estos dos ciclos es que while evalúa la condición antes de ejecutar el bloque de código, mientras que do while ejecuta el bloque de código al menos una vez y luego evalúa la condición.

For

Si conoces el número de veces que vas a repetir un bloque de código, puedes usar el ciclo for, generalmente se utiliza cuando queremos recorrer un arreglo.

Al momento de que pierdes la partida, aparece la ventana de derrota y muestra el listado de los objetos que tomaste durante el juego, ¿Te gustaría ver como es que se hace?

c++
1#include <iostream>
2using namespace std;
3
4int main() {
5 string items[4] = { "😇 The Halo", "💰 Sack of Pennies", "🌚 Abel", "😿 Guppy's Head" };
6 char response = 'n';
7
8 do {
9
10 cout << "¿Isaac murió? (s/n): " << endl;
11 cin >> response;
12
13 } while (response == 'n');
14
15 cout << "DEAR DIARY," << endl;
16 cout << "TODAY I DIED." << endl;
17 cout << "I was killed by this thing! => The Bloat." << endl;
18 cout << "IN SOME COLD PLACE" << endl;
19 cout << endl;
20
21 for (int i = 0; i < 4; i++) {
22 cout << "- " << items[i] << endl;
23 }
24
25 cout << endl;
26 cout << "I LEAVE ALL THAT I OWN TO MY CAT GUPPY" << endl;
27
28 return 0;
29}

Así de sencillo es como funcionan los ciclos, nos sirven para realizar tareas repetitivas y ciclar instrucciones bajo una condición.

Sala de desafío #4

El día de hoy traemos a un par de llorones incomprendidos: Jacob & Esau.

Jacob & Esau
red Heartsoul Heart
Jacob & Esau Damage3.75
Jacob & Esau Tears-0.1
vanilla/Jacob & Esau.png
red Heartred Heartred Heart
Jacob & Esau Damage2.75
Jacob & Esau Tears0.277

Desarrolla un programa en C++ que:

Considerando el siguiente menú:

J: Jacob

E: Esau

Jacob: ▊ ▊ ▊ ▊ ▊ ▊

Esau:   ▊ ▊ ▊ ▊

La cantidad de símbolos ▊ dependerá del número de objetos tomado por cada uno.

¿Pudiste completar el desafío de los hermanos? ¡Etiquetame!

SwitchFunciones