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
Bienvenida
Qué aprenderás sobre el control de flujo en C
Toma de decisiones
Estructuras de decisión
Expresión if
If anidados
Expresión switch case
Control de Bucles en C
Bucle while
Bucle do while
Bucle for
Uso de las instrucciones break y continue
Expresión break
Expresión continue
Expresión goto
Cierre
Continúa practicando
Cierre y conclusiones
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Ricardo Celis
Aportes 88
Preguntas 4
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.
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!
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
😂
La diferencia entre ambos bucles, es que el primero puede que nunca se ejecute, el segundo es que al menos se ejecutará una vez.
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.
#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;
}```
#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;
}
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;
}
En doWhile se hace al menos una iteración.
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;
}
#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;
}
É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 = 20;
int main()
{
do
{
printf("%d\n", n);
n = n - 1;
} while (n > 10);
printf(“Hemos salido del bucle!”);
return 0;
}
#include <stdio.h>
int n = 20;
int main()
{
do
{
printf(“n es igual %d\n”, n);
n = n - 1;
} while (n > 10);
printf("Hemos salido del bucle por que N es igual o menor que 10\n");
return 0;
}
#include <stdio.h>
int i = 0; // Probar con i = 20
int main(){
do {
printf("La variable i es %d\n",i);
i = i + 1;
}
while (i < 20);
return 0;
}
#include <stdio.h>
// WHILE
n = 32;
int main ()
{
while (n >= 4){
printf ("n es igual a %d\n", n);
n = n/2;
}
printf("El bucle se rompio, ya que el numero es menor a 4 ");
}
// DO WHILE
int n = 32;
int main ()
{
do {
printf ("n es igual a %d\n", n);
n = n/2;
}
while (n >= 4);
printf("El bucle se rompio, ya que el numero es menor a 4 ");
}
Buen día
Va mi aporte:
#include <stdio.h>
//Do While = Haz Mientras
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 DO WHILE porque N es igual o menor 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("salimos del bucle porque n<=10");
return 0;
}
La diferencia entre el while y el do-while es que se ejecuta el codigo al menos una vez. Mientras que en el while si la condición no se cumple desde el principio no se ejecuta nunca.
Con el for sabes cuando vas a acaber, pero con los while y do-while no sabes cuando se termina le ejecución. Es lo que entendi.
Los ciclos while los usamos como ejecución condicional. Tenemos que poner una ejecución y si se cumple, vamos a ejecuctar las intrucciónes. El ciclo for lo usamos cuando sabemos la cantidad de elementos que vamos a interar.
La versión DO-WHILE
#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, despues de la primera vez");
return 0;
}
#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;
}
#include <stdio.h>
int n = 20;
int main(){
do
{
printf("iniciamos en %d unidades, necesitamos llegar a 10 unidades! \n", n);
n = n - 1;
} while (n>10);
printf("hemos llegado a 10 unidades");
return 0;
}
#include <stdio.h>
int n = 10;
int main()
{
do
{
printf(“Espere…\n”);
n = n - 1;
sleep(1);
}
while (n > 0);
printf("Terminado\n");
return 0;
}
dowhile= para hacer una pregunta por dentro!! y si no se cumple continuar con ese ciclo
Supongamos que queremos medir la cantidad de agua que hay en un tanque, en tiempo real.
#include<stdio.h>
int n=20;
int main()
{
do {
printf(“Hola”);
n=n-1;
}
while(n>10);
return 0;
}
La diferencia del do-while y el while, es que a diferencia del while simple, que piensa y luego actua, el ciclo while actua y luego evalua. Es decir ejecuta al menos una vez el codigo del bucle.
Ejemplo de do-while:
#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;
}
La diferencia es que el do-while, primero ejecuta la acción y luego evalúa la condición, mientras que el while evalúa la condición antes que cualquier cosa.
#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;
}
:
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;
}
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.
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;
}
#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>
#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;
}
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?