La diferencia fundamental entre las estructuras Do-While y While es:
Do-While: ejecuta las instrucciones internas al menos una (1) primera vez sin evaluar la condición
mientras que en
While: evalúa siempre la condición, antes de ejecutar las instrucciones … por lo que también es necesario entonces definir el valor de condición antes de incluir la estructura.
👆Buena explicación
👆Buena explicación
diagrama de flujo para entener la diferencia de while y do while
Cuando ejecutas el bucle While con la variable decision = 0; esta jamas ejecutara el bucle, debido a que no cumple la condición principal, ser 1.
#include <stdio.h>voidmain(){//Variables int decision =0; int inc =0;//Bucle (condicion) => la condicion se cumple haswhile(decision ==1){//Incrementador inc++;//Salida de datos printf("Ejecucion #%d\n", inc );printf("Si desea continuar presione 1 o calquier otro valor para salir\n");//Ingreso de datosscanf("%d",&decision);}printf("gracias, adios\n");}
a diferencia del Do While que si ejecutas el código con la variable decision = 0, esta si se ejecutará una ves antes de comparar si la condición se cumple.
#include <stdio.h>voidmain(){//Variables int decision =0; int inc =0;//Bucle (condicion)do{//Incrementador inc++;//Salida de datos printf("Ejecucion #%d\n", inc );printf("Si desea continuar presione 1 o calquier otro valor para salir\n");//Ingreso de datosscanf("%d",&decision);}while(decision ==1);printf("gracias, adios\n");}
Cuando ejecuto el programa todo va bien, pero cuando intento salir oprimiendo una letra el código se repite infinitas veces.
¿Por qué ocurre esto?
Puedes compartir tu código, probablemente tienes un error en la validación que hace que entre en un loop.
Yo también tuve ese problema alguna vez, fue un error aleatorio y no lo he vuelto a intentar replicar. Lo volveré a comprobar a ver si repito el fallo.
esta estructura como se dijo es muy simple una vez entiendes While y la única diferencia es que primero ejecuta y luego pregunta la condición si se cumple vuelve a ejecutar y así.