No tienes acceso a esta clase

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

Bucle do while

7/13
Recursos

Aportes 68

Preguntas 4

Ordenar por:

Los aportes, preguntas y respuestas son vitales para aprender en comunidad. Regístrate o inicia sesión para participar.

While = Pregunta luego dispara (si es necesario)
Do While = Te pega al menos un tiro, y luego si te pregunta

Absurdo? Quizá, pero si lo entendí :v

Este meme siempre me recuerda la diferencia entre While y Do-While:

Hola!
Voy a dar mis ejemplos de la vida práctica para WHILE y DO WHILE tal como lo pide el prof.
Soy novata en todo esto de la programación. Soy Arquitecta y en algunos proyectos que he estado hemos hecho automatización. Haré mi mejor esfuerzo.
.
.
.
.
WHILE
Un código que esté mandando a cada cierto tiempo la altura del nivel del agua de una cisterna.
La condición sería que los datos sean capturados mientras estén dentro de un rango definido, y sólo cuando este rango no se cumpla, dejar de hacer dicho registro.
.
.
DO WHILE
Un código que encienda la iluminación completa de un auditorio, mientras que en dicho espacio se compruebe que haya al menos unas 20 personas. Sino sólo se encienden las luces de emergencia.

Como sugerencia, la explicación inicial de la diferencia entre while y for , podría estar unas clases más adelante. Las personas sin experiencia en programación no podrán establecer diferencias o similitudes con algo que no conocen (ciclo for). Esto podría generar confusiones.

Adivina un número que la máquina piensa

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int	main (void)
{
	int numero;
	int numeroPensado;
	int intentos;
	long i = time(NULL);

	numeroPensado = i % 11 + 1;
	intentos = 0;

	printf ("He pensado un número del 1 al 10\n");
	do
	{
		intentos++;
		printf ("¿cual dirás que es?\n");
		scanf("%d", &numero);
		if (numero < numeroPensado)
			printf ("Mi número pensado es mayor que %d\n", numero);
		else if (numero > numeroPensado)
			printf ("Mi número pensado es menor que %d\n", numero);
	} while (numero != numeroPensado );
	printf ("¡Enhorabuena! mi numero %d adivinado en %d intentos\n", numeroPensado, intentos);
}

Salida

He pensado un número del 1 al 10
¿cual dirás que es?
5
Mi número pensado es mayor que 5
¿cual dirás que es?
7
Mi número pensado es menor que 7
¿cual dirás que es?
6
¡Enhorabuena! mi numero 6 adivinado en 3 intentos

A modo de resumen y pensando un poco en un caso de uso para diferenciar bien los bucles “while” y “do while”, se me ocurre pensarlos en el caso de un mantenimiento preventivo y uno correctivo.

Supongamos que tengo un sensor que toma la temperatura de un procesador y llegado a cierto limite de temperatura muestra un msj de advertencia en pantalla, donde se puede leer la temperatura, y suena una alarma. y supongamos que este sensor comienza a realizar lecturas cada vez enciendo mi computadora y deja de funcionar cuando la apago.

Aquí tenemos 2 opciones, implementar un ciclo “while” para que solo se ejecuten estas advertencias y alarmas una vez alcanzado el limite establecido de temperatura, para así poder corregir el problema (Mantenimiento correctivo)
O por otro lado, implementar un ciclo “do while” para que cada vez que inicio mi computadora se ejecuten dicha instrucciones. Uno podría pensar que tal vez es algo innecesario, sin embargo en casos en que la temperatura estuviera a niveles por debajo pero muy próximos al limite establecido, se podrían realizar acciones previas a que ocurra el problema, es decir, realizar acciones preventivas para evitar dicho problema (Mantenimiento preventivo)
Espero que el ejemplo sea ilustrativo, y si estoy errado en mi lógica les pido siéntanse libres de corregirme.

Saludos!

La diferencia entre ambos bucles, es que el primero puede que nunca se ejecute, el segundo es que al menos se ejecutará una vez.

😂

#include <stdio.h>
int n = 10;

int main()
{
    do {
        printf("n es igual a %d\n", n);
        n = n-1;
    } while (n>10);

    printf("hemos salido del bucle porque n es igual o menor que 10");
    return 0;
}

Desafío completado, ¡DoWhile is compiled successfully!

#include <stdio.h>
int n = 1000;

int main(){
    do{
        printf("n es igual a %d\n", n);
        n--;

    } while (n > 10);
    
    return 0;
    }```

Éste seria mi caso con do y do-while

Mientras estudio 45 minutos, descanso 10

int minutesStudyin = 45

while (minutesStudyin) {
	rest 10 
}

Hago ejercicio mientras salto cuerda

do {
	Excerse

} while ( jumpCore )

#include <stdio.h>

int n=17;

int main()
{

do
{
    printf("n es igual a %d \n", n);
    n=n-1;
}while (n >10);

printf("El ciclo ha terminado");
return 0;

}

#include <stdio.h>

int n = 20;

int main(){

    do
    {
        printf("n es igual a %d\n", n);
        n = n-1;
    }   while (n > 10);
    return 0; 
}

}

Me quedo de esta forma

#include <stdio.h>
    int n = 10;
    int main()
    {
        do {
            printf("n es igual a %d\n", n);
            n = n-1;
        }
        while (n > 10);
        printf("hemos salido del bucle porque n es igual o menor que 10");
        return 0;
    }

Un ejemplo de while sería ingresar una edad y que mientras la edad sea menor a 18, nos diga que la persona es menor de edad y nos muestre su edad.

Un ejemplo de do while sería un menú que debemos mostrar al menos una vez para saber que opción desea elegir el cliente.

Hola, comparto la solución al reto:

#include <stdio.h>

int n = 10;

int main()
{

    do
    {
        printf("n es igual a %d\n", n);
        n = n
    } while (n > 10);
}

Mi aporte del código do while

#include <stdio.h>

int n = 20;

int main()
{
do
{
printf(“El numero es mayor a 10, hasta ahora…\n”);
printf(“n es igual a %d\n”, n);
n=n-1;
}
while (n>10);
printf(“El ciclo while ha terminado porque n es menor o igual que 10”);
return 0;
}

#include <stdio.h>

int n = 20;

int main(){

    do
    {
        printf("n es igual a %d \n", n);
        n = n-1;
    } while (n>10);
    
    printf("El bucle dowhile termino");

    return 0;

}
#include <stdio.h>

int n;

int main(int argc, char const *argv[])
{

    printf("Where should we start the countdown?");
    scanf("%d", &n);

    do
    {
        printf("%d\n", n);
        n--;
    } while (n > 0);
    
    
    return 0;
}

Este es mi apunte del reto:

#include <stdio.h>

int n = 22;

//Ciclo Do While

int main(){
    do{ //Imprime la siguiente línea
        printf("n es igual a %d \n",n);
        //y resta 1 al valor de n
            n = n-1;
    //mientras n sea mayor o igual a 10
    }while (n >= 10); {
        //y si no se cumple la condición, imprime lo siguiente
        printf("Ahora n es igual a %d, que es menor a 10 \n",  n  );
    }
    return 0;
}
/* Este es mi código del reto */

#include <stdio.h>
int n = 20;
int main(int argc, char const *argv[])
{
do
{
printf(“n es igual a %d\n”, n);
n = n-1;
} while (n > 10);
printf(“Hemos salido del bucle por que n es igual o menor que 10”);

return 0;
}

Mi desafío

#include <stdio.h>

int main() {
    int n = 20;
    do {
        printf("n es igual a %d\n", n);
        n--;
    } while (n > 10);
    printf("Salió del bucle do while");
    
    return 0;
}

:

Codigo reacomodado

#include <stdio.h>

int main()
{
int n = 10;
do
{
printf(“n es igual a %d\n”, n);
n = n-1;
}
while (n > 10);
printf(“hemos salido del bucle porque n es igual o menor que 10”);
return 0;
}

Damas y caballeros, con ustedes el codigo

#include <stdio.h>

int n = 20;

int main()
{
    do
    {
        printf("N es igual a %d \n", n);
        n = n - 1;
        
    } while (n > 10);

    printf("El bucle se ha cerrado, n es igual o menor que diez");

    return 0;
}

Desafío

#include <stdio.h>

int n = 20;

int main()
{
    do
    {
        printf("n es igual a %d\n", n);
        n = n-1;
    } while (n > 10);
    printf("hemos salido del bucle porque n es igual o menor que 10");
    return 0;
}

En doWhile se hace al menos una iteración.

Regresare a comentar, las grandes diferencias entre las estructuras de control como lo son While y Do While

ahí esta dowhile

#include <stdio.h>
int n = 40;

int main()
{
do
{
printf(“n es igual a %d\n”, n);
n–;
/* code /
} while (n>10); // podes ejecutarlo una sola vez
/
code */
printf(“hemos salido del bucle”);
return 0;
}

yo use la analogia de que while es pedir permiso y el do while es pedir perdon xd

Programa imprime los números del 1 al 10 utilizando do while

<#include <stdio.h>

//Programa imprime los números del 1 al 10 utilizando do while

int a=0;

int suma=0;

int main(){
do
{
  suma =(a+1);
  printf ("%d\n", suma);
  a=suma;
} while (suma<10);

}>

Reto

<code>
#include <stdio.h>
int n = 20;
int main()
{
    do
    {
        printf("n es igual a: %d \n", n);
        n--;
    } while (n > 10);
    printf("Hemos salido del bucle do while");
    return 0;
}
<#include <stdio.h>
int num = 11;

int main(){
    do{
        printf("num es igual a %d\n", num);
        num -= 1;
    } while (num>=10);

    printf("Ciclo terminado!");

    return 0;
}>

Recuerden que escribir n = n - 1 se puede reemplazar por n–. Esto haría que su código sea mas prolijo.

#include <stdio.h>
int n = 10;
int main()
{
    do {
        printf("n es igual a %d\n", n);
        n = n-1;
    } while (n > 10)

    printf("hemos salido del bucle porque n es igual o menor que 10");
    return 0;
}

Podemos implementar do While para esperar la salida de dinero una vez el motor haya comenzado a girar para dispensar el mismo.

La diferencia entre WHILE y DO WHILE, es que W inicia ejecutando una comprobación (decisión), mientras que DW se inicia ejecutando código primero y luego comprobando (decisión).
Como has dicho antes @ricardocelis, el código de WHILE podría no llegar a ejecutarse si la condición no se cumple, pero con el código DO WHILE al menos el código se ejecuta una vez.

los cliclos while se van a usae como control de flujo condicionales

Al final del do while inclui System(“pause”), para que el programa siga luego de que toque una tecla y system(“cls”), que me permite limpiar mi pantalla luego de cada operación

#include <iostream>
using namespace std;

int main() {
	int a,b,respuesta,opcion;
	float c,d,resp_flotante;
	bool seguir_bucle = true;
	do
	{
		cout << "Menu Calculadora :"<<endl;
		cout << "1 - Suma "<<endl;
		cout << "2 - Resta"<<endl;
		cout << "3 - Multiplicacion"<<endl;
		cout << "4 - division"<<endl;
		cout << "5 - Salir"<< endl ;
		cout << "Ingrese una opcion : "; cin >> opcion;
		cout << endl ;
		switch(opcion){
		case 1:
			cout << "Ingrese el primer numero: "; cin >> a ;
			cout << endl << "Ingrese el segundo numero: "; cin >> b;
			respuesta = a + b;
			cout << endl <<"El resultado de "<<a<<" + "<<b<<" es : "<<respuesta<<endl;
			break;
		case 2:
			cout << "Ingrese el primer numero: "; cin >> a ;
			cout << endl << "Ingrese el segundo numero: "; cin >> b;
			respuesta = a - b;
			cout << endl <<"El resultado de "<<a<<" - "<<b<<" es : "<<respuesta<<endl;
			break;
		case 3:
			cout << "Ingrese el primer numero: "; cin >> a ;
			cout << endl << "Ingrese el segundo numero: "; cin >> b;
			respuesta = a * b;
			cout << endl <<"El resultado de "<<a<<" x "<<b<<" es : "<<respuesta<<endl;
			break;
		case 4:
			cout << "Ingrese el primer numero: "; cin >> c ;
			cout << endl << "Ingrese el segundo numero: "; cin >> d;
			resp_flotante = c / d;
			cout << endl <<"El resultado de "<<c<<" / "<<d<<" es : "<<resp_flotante<<endl;;
			break;
		case 5:
			cout <<"Hasta la proxima !!"<<endl<<endl;
			seguir_bucle = false;
			break;
		}
		if(opcion >5){
			cout << " Ingrese un numero dentro del rango 1-5 para opciones del menu!"<<endl<<endl;
		}
		system("pause");
		system("cls");
	}while(seguir_bucle);
	return 0;
}

![](

#include <stdio.h>
#define SI 1
#define NO 0


int main()
{
    int hay_un_ladron = 1;
    int minutos_de_busqueda = 0;
    do{
        printf("buscando al ladron\n");
        ++minutos_de_busqueda;
        if(minutos_de_busqueda < 20){
            printf("El ladron fue encontrado\n");
            printf("desplegando armas\n");
            printf("eliminando al ladron\n");
            printf("el ladron ha sido eliminado\n");
            hay_un_ladron = NO;}} while(hay_un_ladron == SI);
    return 0;
}```

Si la variable n vale 20 no se nota la diferencia entre while y do while. Para ver claramente la diferencia se puede inicializar n en 10 en ambos casos.

#include <stdio.h>

int n = 10;

int main()
{
    
    do
    {
        printf("%d \n", n);
        n--;
    } while(n > 10);

    printf("The loop has finished \n");

    return 0;
}

Este ejemplo lo saque del Curso Herramientas del Pensamiento Lógico.
Está en el apartado de Estructuras de Control.
.
E j e m p l o # 3
SACAR PROMEDIO DE CADA 5 CALIFICACIONES DADAS
Explicación:
La sentencia DO WHILE comienza con una acción, que es capturar una calificación, sumarla a la anterior y contabilizarla.
Esta acción se hace repeitr mientras el numero de calificaciones capturadas sea igual o menor a 5 datos. Cuando sean 6 datos, es decir, hasta que es falsa la condición, realiza el promedio y se termina el código.
En este ejemplo se acumulan datos capturados, se realiza la acción de sumarlos y contabilizarlos; y cuando ya no cumplan el criterio, finaliza.
.
.
.
S i n t á x i x :
do
{
expressions;
}
while(expression)
.
.
C ó d i g o :
//promedioconta.c
#include <stdio.h>

main()
{
int calif, conta=0, suma=0;
float promedio;

      do
      {
          printf("%s\n", );
          scanf("%s\n", );
          suma += calif;
          conta ++
      }
      while(conta <=5);
      promedio = (float) suma/conta;
      printf("%s\n", );


      return 0;

}

#include <stdio.h>

int main (){
int n= 0;
printf(“ingrese el valor que desea iterar”);
scanf("%d", &n);

do {

		printf ("el valor es igual: %d\n ",n);
	 	n=n+1;
	} while(n>20);

return 0;

mi consulta es porque siempre me sale el mismo error que es :
[Error] ld returned 1 exit status

El ciclo do while lo implementaría en un drone, para checar su batería y decidir si vuela o se mantiene en reposo avisando para que lo recarguen hasta cierto %, ya que es peligroso si se queda a mitad de misión sin carga.

El ciclo do while permite ejecutar al menos una vez el código y da la respuesta si se le pide, y si el condicional while se cumple, entonces se inicia el bucle.

#include <stdio.h>

int main()
{
    int n = 0;
    printf("How many times do you want to print the sentence: ");
    scanf("%d", &n);
    do
    {
        printf("Cycle number: %d \n",n);
        n--;
    } while (n > 0);
    
    return 0;
}

Aquí esta mi código.

Desafió aceptado profe!

#include <stdio.h>

int n;

int main ()
{
    printf("Ingrese un numero para comprobar:\n");
    scanf("%i",&n);
    do
    {
        printf("n es igual a %d\n",n);
        n = n-1;
    } while (n > 10);
    printf("Hemos salido del bucle porque n es menor o igual a 10\n");
    return 0;
}

Reto conseguido

#include <stdio.h>
int i = 0;


int	main () {
	do {
	    printf("El valor de i es %d \n", i);
	    i++;
	} while(i < 11);
	
	return 0;
}

Desafío completado:

#include <stdio.h>
int n = -10;
int main()
{
    do
    {
        printf("n es igual a %d\n", n);
        n = n - 1;
    } while (n > 10);  
    return 0;    
}
#include <stdio.h>
int n = 20;

int main()
{
    do
    {
        printf(" n es igual a %d\n", n);
        n = n-1;
    } while (n > 10);
    printf("hemos salido del bucle porque n es igual o menor que 10");
    return 0;
    
}
#include <stdio.h>
#include <stdlib.h>
int n = 10;
int main()
{
   do
    {
        printf("n es igual a %d\n", n);
        n = n-1;
    } while(n>10);
    printf("el ciclo Do While a terminado por n es igual o mejor a 10");
    return 0;

}

Acabo de abrir los ojos con la explicación de situaciones donde el do while puede ser muy bien utilizado. En general escucho que no es común usarlo pero no quita el hecho de su funcionalidad, empezando por todo aquello que implique sensores. Bastante interesante 😃

Esta imagen me recuerda la diferencia entre while y do while

<#include <stdio.h>

int main(void) {

int n = 9;
  do
  {

    printf("corre codigo");
    n++;
  }while(n > 10);
  
  return 0;
}>

Me gustó la aclaración entre los escenarios en los que usar while y for, quedó clarísimo.

voy a dar los ejemplos pedidos en la clase:

en while podríamos usarlo en el caso de aparecer aleatoriamente enemigos en un mapa hasta completar una acción.

y el do while lo podríamos incorporar en el ejemplo anterior programando que disminuya el tiempo de la aparición de monstrous mientras el jugador este en el mapa

#include <stdio.h>

int n = 20;

int main()
{
    do
    {
        n = n -1;
         printf("n es igual a %d \n", n);
    } while (n > 10);
    

    
    return 0;
}```

![](

#include <stdio.h>

int n = 20;

int main()
{
    do
    {
        printf("n es igual a %d \n", n);
        n--;
    } while (n > 10);
    printf("El ciclo do while ha terminado");
}

Reto completado: Escoge un número

#include <stdio.h>

int n;

int main()
{
    printf("Selecciona un numero: ");
    scanf("%d",&n);
    do
	{
    	printf("n es igual a %d\n", n);
        n = n-1;
	}
    while (n > 10);
    printf("hemos salido del bucle porque n es igual o menor que 10");
    return 0;  
}```

Mientras los sensores detecten luz, el vidrio de una ventana se empañara de negro.

Preguntar si una alarma ha sido activada mientras haya personas en un auditorio

While 😃

#include <stdio.h>
int n = 15;

int main()
{
  do 
  {
   printf("n es: %i \n", n);
   n = n - 1;
  }while(n >= 10);
   
   printf("n ahora es menor que 10, finaliza el bucle");
 return 0;
}```

Mis ejemplos serían
-While: un acuario que tire agua mientras que el agua este debajo de cierto nivel
-Do while: un acuario en el que se revisen los sensores de agua

#include <stdio.h>
int n = 10;
int main()
{
// se hace almenos una vez
do
{
    printf("n es igual a %d\n", n);
    n = n-1;
} while (n>10);
}
# include <stdio.h>

int n = 20;

int main()
{
    do 
    {
        printf("n es igual a %d \n", n);
        n = n - 1;
    }
    while (n > 10);

    printf("Hemos salido del bucle while \n");

    return 0;
}

Desafío aceptado 😄

#include<stdio.h>

int main(void)
{
	int n = 0;

	do
	{
		printf("%d es menor a 10\n", n);
		n++;
	}while(n < 10);

	printf("Hemos salido del ciclo porque n es igual a 10\n");

	return 0;
}