No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Curso de C++ Básico

Curso de C++ Básico

Diana Martínez

Diana Martínez

Ciclos while y do-while

15/18
Recursos

Aportes 19

Preguntas 3

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Un dato interesante es que se puede tener un while(true) usando for, como se ve aca:

#include<iostream>

using namespace std;

int main() {
    for(;;) {
        cout << "Deseas terminar?\n";
        char respuesta;
        cin >> respuesta;
        if (respuesta == 'y') {
            cout << "Bye bye\n";
            break;
        }
    }
}

Tambien en lugar de usar endl, al final de la cadena pueden anadir \n ejemplo: “Mi texto\n”

Diria que usar el while(true) y romper la ejecucion con un break es una mala practica. Lo recomendable seria hacer la comprobación de la respuesta en la condicion, por ejemplo.

char respuesta
while(respuesta != 'y'){
	cout << "Deseas terminar?" << endl;
	cin >> respuesta;
	if(respuesta == 'y'){
		cout << "bye bye";
	}
}	

Aunque a modo de explicación esta bien

Me hubiera gustado un reto sinceramente

Creo que es mejor así el do-while:

do {
<<codigo>>
} while (respuesta != ‘y’);

Para quienes deseen poner en practica los conocimientos del ciclo while y do-while, en este link podrán encontrar diferentes retos a realizas:
https://platzi.com/comunidad/retos-de-programacion-en-cualquier-lenguaje-sexto-nivel-ciclo-while-2/

Hice este código que se ejecuta por la eternidad hasta que el usuario quiera salir, no importa si usa mayúsculas o minúsculas.

    char respuesta;
    for(;;){
        cout << "¿Deseas terminar?[Y/N]: ";
        cin >> respuesta;
        if (respuesta == 'Y' || respuesta == 'y'){
            cout << "Bye bye \n";
            break;
        }else if(respuesta == 'N' || respuesta == 'n'){
            cout << "Continuamos \n";
        }else{
            cout << "Respuesta inválida \n";
        }
    }

Mi codigo usando while
Un while siempre se va a ejecutar hasta que sea verdadero

#include <iostream>
using namespace std;

int main() {
    //this is a comment haha
   while(true){
       char respuesta;

       cout << "Deseas terminar?" << endl;
       cin >> respuesta;

       if(respuesta == 'y'){
           cout << "bye bye";
           break;
       }
   }
    return 0;
}

Es mas un comentario que un aporte. Que genial usar dentro del While un true como booleano nunca se me había ocurrido. Conocía el while pero siempre usando una condición que comparaba valores numéricas.
Buena Clase! Saludos!

Hola amigos, aquí muestro mi versión optimizada:
#include <iostream>
using namespace std;
int main() {
char respuesta=‘n’;
while (respuesta != ‘y’ && respuesta != ‘Y’) {
cout << "Desea continuar ? ";
cin >> respuesta;
}
}

Ciclos while y do-while

Los ciclos while y do-while se diferencias del ciclo for en que solo se evalua una condición la cual puede ser iterada indefinidamente.

Ejemplo de while para mantener ciclo:

#include <iostream>
using namespace std;

int main(){
    
    while (true)
    {
        char respuesta;
        cout << "Desea terminar?" << endl;
        cin >> respuesta;

        if (respuesta == 'y'){
            cout << "bye bye";
            break;
        }
    }
    
}

En este caso creamos un bucle infinito, el cual se termina solo si la variable respuesta vale ‘y’.

El ciclo do-while se diferencia del ciclo while de que este ejecuta minimo una vez el bloque de codigo y despues evalua la condición.

Ejemplo del ejercicio anterior pero con do while:

#include <iostream>
using namespace std;

int main()
{
    do
    {
        char respuesta;
        cout << "Desea terminar?" << endl;
        cin >> respuesta;

        if (respuesta == 'y')
        {
            cout << "bye bye";
            break;
        }
    } while (true);
}

Notas de la clase:https://towering-lancer-935.notion.site/Ciclos-while-y-do-while-caa992c2e3a2485997798e7aa8e47f89
Codigo de la clase:

#include <iostream>
using namespace std;

int main(){
    do{
        char respuesta;
        cout<<"Deseas terminar?"<<endl;
        cin >> respuesta;
        if(respuesta == 'y'){
            cout <<"Bye bye"<<endl;
            break;
        }
    } while(true);
}```

Aquí está el código usado en clase:

#include <iostream>

using namespace std;

int main() {
    do {
        char response;
        cout << "Deseas terminar?" << endl;
        cin >> response;
        if (response == 'y') {
            cout << "bye bye";
            break;
        }
    } while (true);
}

😄

Resulta un tanto complicado sentir seguridad del contenido cuando la misma profesora duda de lo que menciona (el ejemplo de crear una variable char vacía es claro) y se nota incómoda. Recomendaría estructurar mejor las clases y agregar retos.

Otra opción para tener un while con un for pude ser así;

#include <iostream>

using namespace std; 

int main(){
// ingreso de datos 
    char data;
    cout << "Ingresa \"y \"para inicial el programa o \" n \" para saltar el programa: " << endl;
    cin >> data;
    int i = 0;
    for(char j = 'y'; j == data || data != 'n';){
        cout << "ingresa \" n \" para terminar" << endl;
        cin >> data;
    }
    cout << "bye saliste del programa" << endl;

    
}

Reto

Crear un programa que permita obtener el n-ésimo elemento de la serie de fibonacci

Por ejemplo, para n = 8 el programa debería devolver 13

En el caso de usar solamente while, primero se verifica la condicion para entrar al ciclo

#include<iostream>

using namespace std;

int main ()
{
    for(int i = 0; i < 10; i++)
    {
        cout << i << endl;
        while (i < 5) //primero se verifica la condicion para entrar al ciclo
        {
        i += 1;
        cout << "Aqui se ejecuta el proceso while" << endl;
        }
        
    }
}
"Resultados:"
0 // se imprime la variable
Aqui se ejecuta el proceso while //while verifica la condicion para entrar al ciclo, confirmando que es verdadera
Aqui se ejecuta el proceso while
Aqui se ejecuta el proceso while
Aqui se ejecuta el proceso while
Aqui se ejecuta el proceso while // en este punto "i" vale 5 por lo que while verifica que ya no se cumple la condicion y sale del ciclo 
6
7
8
9

Y con Do while primero se ejecuta el ciclo antes de verificar la condicion para entrar en el

#include<iostream>

using namespace std;

int main ()
{
    for(int i = 0; i < 10; i++)
    {
        cout << i << endl;
        do // primero se ejecuta el codigo y despues se verifica la condicion 
        {
        i += 1;
        cout << "Aqui se ejecuta el proceso Do" << endl;
        } 
        while(i < 5); // Aqui se verifica si se debe continuar con el ciclo            
    }

}
"Resultados:"
0 // se imprime la variable 
Aqui se ejecuta el proceso do //do ejecuta el ciclo
Aqui se ejecuta el proceso do
Aqui se ejecuta el proceso do
Aqui se ejecuta el proceso do
Aqui se ejecuta el proceso do // en este punto "i" vale 5 por lo que while confirma que se debe salir del ciclo
6
Aqui se ejecuta el proceso do //do no verifica la condicion para entrar en el ciclo, por lo que se ejecuta el codigo, en este punto "i" vale 7. While confirma de nuevo que se debe salir del ciclo
8
Aqui se ejecuta el proceso do // Al no verificar en primer lugar la condicion para entrar al ciclo, estara entrando y saliendo una y otra vez (en este caso)

Los ciclos (o bucles) while y do while:

#include<iostream>
using namespace std;

int main(){
    int limite = 0;
    int contador = 0;
    bool ciclo = true;
    cout<< endl;

    while (ciclo)
    {
        cout<< "¿Que siga el ciclo While? (1 = No, 0 = Si)";
        cin>> limite;

        contador +=1;
        cout<< contador <<endl;

        if(limite == 0){
            break;
        }
    }

    contador = 0;
    do
    {
        cout<< "¿Que siga el ciclo Do While? (1 = No, 0 = Si)";
        cin>> limite;

        contador +=1;
        cout<< contador <<endl;

        if(limite == 0){
            ciclo = false;
        }
    } while (ciclo);
}

Este en mi codigo

#include <iostream>
using namespace std;

int main() {
    //this is a comment haha
   for(int i = 0; i < 10000; i++){
       char respuesta;

       cout << "Deseas terminar?" << endl;
       cin >> respuesta;

       if(respuesta == 'y'){
           cout << "bye bye";
           break;
       }
   }
    return 0;
}

Les dejo el código:

#include <iostream>

using namespace std;

int main() {
  do {
    char response;
    cout << "Do you wanna leave the program? " << endl;
    cin >> response;

    if (response == 'y') {
      cout << "Bye" << endl;
      break;
    }
  } while (true);
}