Víctor Guillermo Alarcón Aguirre
Este meme siempre me recuerda la diferencia entre While y Do-While:
Brandon Argel Verdeja Domínguez
Jajajaja muy bueno xD
Reinaldo Mendoza
jajajajaja
Aprende a distinguir con seguridad entre while, do-while y for en C. Aquí verás cuándo aplicar cada bucle, por qué el do-while garantiza al menos una ejecución y cómo aprovechar la ejecución condicional en escenarios reales como robots de mini zumo, lluvia detectada por sensores y transferencia de archivos.
¿Cuándo usar el ciclo while y el ciclo for?
El punto clave es la intención. Usa ciclo for cuando tienes clara la cantidad de elementos a iterar. En cambio, el ciclo while brilla en ejecución condicional: depende de un evento o cambio externo que no conoces de antemano.
Ejemplo con while esperando un evento externo (lluvia, input, sensores, transferencia):
int continuar = 1; while (continuar) { // rutina de búsqueda o transferencia. // si ocurre el evento (lluvia detectada, archivo completo, sensor activado), // actualizar la condición y salir. // continuar = 0; }
En robots de mini zumo, la rutina de búsqueda puede correr en while hasta detectar un objetivo; al detectarlo, el bucle termina y se pasa a la rutina de persecución. Con lluvia, el while se mantiene “escuchando” hasta que el sensor la detecta; entonces se procede a cerrar la ventana. En drivers o entre chips, un while puede mantenerse activo mientras hay transferencia; al concluir, se continúa con el programa.
¿Qué hace diferente al do-while y cuándo conviene?
El do-while invierte el orden: primero ejecuta, luego verifica la condición. En consecuencia, se ejecuta al menos una vez, incluso si la condición no era verdadera al inicio. Esto es ideal cuando debes inicializar o sondear algo antes de poder decidir.
Estructura básica del do-while en C:
do { // trabajo que debe correr al menos una vez. // ejemplo: leer tamaño y progreso de la transferencia // o inicializar sensores y validar respuesta. } while (condicion_de_repeticion);
¿Cómo asegura la inicialización de sensores?
Cuando necesitas estar segura o seguro de que “todo está listo”, el do-while es directo:
Esto evita que el robot actúe con datos inválidos: sin inputs confiables, el mejor código no sirve.
¿Qué casos de uso aplican en robótica y sistemas?
Estas situaciones muestran la lógica de cada bucle y por qué el final puede ser desconocido:
Idea central que debes retener:
Te dejo un desafío práctico: reacomoda tu while a estructura do-while y cuéntame en comentarios tu caso de uso real, ya sea en robótica o software tradicional. ¿Qué diferencias notaste entre do y do-while al implementarlo?
Víctor Guillermo Alarcón Aguirre
Este meme siempre me recuerda la diferencia entre While y Do-While:
Brandon Argel Verdeja Domínguez
Jajajaja muy bueno xD
Reinaldo Mendoza
jajajajaja
Edith Elizabeth Narváez Higuera
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.
Daniel Enrique Astudillo Guzmán
Excelenteeee muchas gracias :D
Edith Elizabeth Narváez Higuera
A tI!
Alejandro Urrea Giraldo
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.
Edith Elizabeth Narváez Higuera
Y si es posible con ejemplos prácticos y/o ejercicios. En la clase#28 del Curso Pensamiento Lógico se da una explicación breve: https://platzi.com/clases/1444-pensamiento-logico/15912-estructuras-de-control-y-palabras-reservadas/
Ricardo Celis
ProfesorMuchas gracias Ale y Edith por el feedback, lo tomaremos en cuenta!
Marcel Nahir Samur
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!
Jesús Ignacio García Fernández
Juan Fernando Moyano Ramírez
Este es un proyecto muy interesante, lo intentare hacer por mi cuenta y te compartire el resultado.
Juan Fernando Moyano Ramírez
Edith Elizabeth Narváez Higuera
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.
Jorge Varas
Gracias
Oscar Jaramillo
😂
Jesús Ignacio García Fernández
La diferencia entre ambos bucles, es que el primero puede que nunca se ejecute, el segundo es que al menos se ejecutará una vez.
Natalia Hernández
#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; }
Andrés Felipe Mosquera Hernández
#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; }
Daniel Leonardo Lopez Valderrama
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; }```
Gabriel Obregón
📘Bucles en Programación
🔄 ¿Qué son los bucles?
🌀 WHILE
⏩ Se repite mientras la condición sea verdadera.
📍 Ejemplo: 🤖 Robot busca objetivo → sigue hasta encontrarlo.
🔹 Usos:
🔁 do-WHILE
⏩ Siempre ejecuta al menos una vez.
📍 Ejemplo: 🤖 Robot prueba sensores → si alguno falla, repite la prueba.
🔹 Uso clave:
➡️ FOR
⏩ Ideal cuando sabes cuántas veces repetir.
📍 Ejemplo: 📝 Calcular calificaciones de todos los estudiantes en una lista.
🔹 Uso clave:
Erick Ricardo Camberos Cerecer
que es iterar?
Leonardo de los angeles Espinoza Hernandez
Hola @ERCC
Iterar se refiere a realizar una cierta acción varias veces.
Saludos!
Luis Lira
En los loops en general el programación se le dice a iterar a hacer una acción un cierto número de veces, por ejemplo, en los bucles vas a encontrar que todos tienen la similitud de ejecutar la misma línea de código n veces, donde n es la cantidad que tú indiques.
Carlos Lefin Henriquez
El ciclo while me parece muy similar al addEventListener de JavaScript. ya que este ejecutara algo, siempre y cuando se detecte algun cambio. Que piensan ustedes?.
Cristian Blandon
¡Hola!
No estoy de acuerdo... El ciclo while no "detecta" cambios ni es como un listener que está todo el tiempo pendiente de si un evento sucede para disparar una función (una única vez por evento).
El ciclo while evalúa una condición (como el ciclo while de JavaScript y de la mayoría de lenguajes) que, mientras sea verdadera, ejecutará el bloque de código (generalmente una cantidad de veces no conocida, hasta que la condición sea falsa).
Ahí dejo mi opinión :)
José Alberto Marcos Laguna
Si lo quieres comparar con un Listener, no sería parecido, sino que sería lo contrario. El Listener detecta un evento y cuando ocurre hace algo. Por el contrario, el ciclo While siempre está ejecutando el bloque de código dentro de la estructura y cuando detecta el cambio (la condición deja de ser verdadera) deja de ejecutar el código dentro de la estructura. Además, claro, de que el Listener no interrumpe el flujo de un programa, cosa que un ciclo sí hace (a menos de que se utilicen hilos, pero eso es otra historia).
Sandra Díaz
Edith Elizabeth Narváez Higuera
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;
}
Jorge Varas
super
Cindy Johanna Herrera Parra
En doWhile se hace al menos una iteración.
Marisol Ospina
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; }
Luz Mary Jimenez
#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;
}
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
Hola, ya he terminado mi version, este es el codigo:
#include <stdio.h> int main() { int numero_secreto = 17; int numero_intentos = 1; int numero_adivinado; printf("Hola, he pensado en un numero secreto \n"); printf("que numero crees que es?? "); scanf("%d",&numero_adivinado); do { if (numero_adivinado > numero_secreto) { printf("Lo siento, pero has apuntado muy alto el numero secreto no es %d, prueba otra vez \n", numero_adivinado); scanf("%d",&numero_adivinado); numero_intentos += 1; } else if (numero_adivinado < numero_secreto) { printf("El numero secreto no es tan pequeño, apunta mas alto: \n"); scanf("%d",&numero_adivinado); numero_intentos += 1; } } while (numero_adivinado != numero_secreto); printf("Felicitaciones, has acertado el numero secreto!!! \n"); printf("el numero total de intentos es: %d", numero_intentos); return 0; }