1-Cuándo usas while, el ciclo primero evalúa la condición. Y si es cierta y solo mientras sea cierta ejecuta el código del loop (los ejemplos están en pseudocódigo no en un lenguaje particular):
i = 3;
while ( i< 5 ) {
....print "Numero " + i
....i++
}
RESULTADO:
Numero 3
Numero 4
Aquí, cuándo entra en el while, la condición se cumple. El código incrementa i en 1 por lo que el ciclo se ejecutará 1 vez mas. Al tercer ciclo, i será 5 y entonces saldrá del loop.
Veamos otro ejemplo simple, modificado del anterior:
i = 6;
while ( i< 5 ) {
....print "Numero " + i
....i++
}
RESULTADO:
Aquí no imprime nada, porque al evaluar la condición, i ya es mayor a 5 desde el inicio. Aquí simplemente se salta el ciclo. Ahora vayamos con do/while:
Ejemplo 1:
i = 3;
do {
....print "Numero " + i
....i++
} while ( i< 5 )
RESULTADO:
Numero 3
Numero 4
Ejemplo 2:
i = 3;
do {
....print "Numero " + i
....i++
} while ( i< 5 )
RESULTADO:
Numero 6
¿Te fijas la diferencia? Do / While ejecuta el ciclo AL MENOS 1 vez; sea la condición verdadera o no desde el inicio. En el caso del primer ejemplo, cuando i=3, funcionan igual. Pero en el segundo ejemplo funcionan distinto; while no imprime porque primero evalúa la condición. do/while imprime 6 desde el inicio y luego decide "no repetir" el loop porque la condición es falsa.
Un ejemplo muy común de do/while es un programa en C++ de linea de comandos, que usa un do/while para imprimir un menú (que responde a ciertas opciones numéricas). Dicho menú tiene una opción de salir. Se imprime el menú al menos la primera vez.
Otro ejemplo es un flujo de código dónde una determinada parte (que se tiene que ejecutar forzosamente) puede ser repetida en función de una condición. Esto solo se logra con do/while; ni while ni for ni foreach pueden hacerlo. Te dejaré los ejemplos en PHP, puedes pasarlos a cualquier otro lenguaje con mucha facilidad:
Sirve para agilizar la programacion, pues en lugar de escribir el codigo varias veces, con el ciclo do - while seguira corriendo el programa mientras se cumpla la condicion que has puesto y cuando llegue al limite se cerrara automaticamente. Es decir si pones:
/suponiendo que declaraste algun escaner o bufferedreader
do{
sout("Desea comprar algo?");
sout("1. Si");
sout(2. No)
sout("---------------------------")
r = input.nextInt();
if (r == 1){
switch (r){
case 1:
sout("Seleccione un producto:");
sout("1. Caca");
sout("2.Chocolates");
sout("3.Bombones");
bla bla bla....
} while(r ==2)
}}
con este programa (suponiendo que esta bien hecho) puedes ofrecerle al cliente tus productos
y permitirle seleccionarlos siempre y cuando el quiera seguirlo haciendo (mientras seleccione el numero 1 que es el si) hasta que termine su compra y presione el numero 2(que es de no).
Una ventaja o mas bien una utilidad que se le da a este tipo de estructura es obligar al usuario a ingresar datos Ãntegros ( un dato con sentido o lógico ).
Por ejemplo. No tendrÃa sentido ingresar una edad negativa , entonces que repita eso mientras la edad sea menos a 0.
Si hay tipos de datos que solo permiten datos sin signo ( uint ) pero como forma de estandarización es una buena estrategia.
Answers & Comments
Verified answer
Aquí te va la respuesta:
1-Cuándo usas while, el ciclo primero evalúa la condición. Y si es cierta y solo mientras sea cierta ejecuta el código del loop (los ejemplos están en pseudocódigo no en un lenguaje particular):
i = 3;
while ( i< 5 ) {
....print "Numero " + i
....i++
}
RESULTADO:
Numero 3
Numero 4
Aquí, cuándo entra en el while, la condición se cumple. El código incrementa i en 1 por lo que el ciclo se ejecutará 1 vez mas. Al tercer ciclo, i será 5 y entonces saldrá del loop.
Veamos otro ejemplo simple, modificado del anterior:
i = 6;
while ( i< 5 ) {
....print "Numero " + i
....i++
}
RESULTADO:
Aquí no imprime nada, porque al evaluar la condición, i ya es mayor a 5 desde el inicio. Aquí simplemente se salta el ciclo. Ahora vayamos con do/while:
Ejemplo 1:
i = 3;
do {
....print "Numero " + i
....i++
} while ( i< 5 )
RESULTADO:
Numero 3
Numero 4
Ejemplo 2:
i = 3;
do {
....print "Numero " + i
....i++
} while ( i< 5 )
RESULTADO:
Numero 6
¿Te fijas la diferencia? Do / While ejecuta el ciclo AL MENOS 1 vez; sea la condición verdadera o no desde el inicio. En el caso del primer ejemplo, cuando i=3, funcionan igual. Pero en el segundo ejemplo funcionan distinto; while no imprime porque primero evalúa la condición. do/while imprime 6 desde el inicio y luego decide "no repetir" el loop porque la condición es falsa.
Un ejemplo muy común de do/while es un programa en C++ de linea de comandos, que usa un do/while para imprimir un menú (que responde a ciertas opciones numéricas). Dicho menú tiene una opción de salir. Se imprime el menú al menos la primera vez.
Otro ejemplo es un flujo de código dónde una determinada parte (que se tiene que ejecutar forzosamente) puede ser repetida en función de una condición. Esto solo se logra con do/while; ni while ni for ni foreach pueden hacerlo. Te dejaré los ejemplos en PHP, puedes pasarlos a cualquier otro lenguaje con mucha facilidad:
<?php
$i = 3;
while ($i < 5) {
echo "Numero " . $i . "<br />\n";
$i++;
}
echo "<br /><br />\n\n";
$i = 6;
while ($i < 5) {
echo "Numero " . $i . "<br />\n";
$i++;
}
echo "<br /><br />\n\n";
$i = 3;
do {
echo "Numero " . $i . "<br />\n";
$i++;
} while ($i < 5);
echo "<br /><br />\n\n";
$i = 6;
do {
echo "Numero " . $i . "<br />\n";
$i++;
} while ($i < 5);
echo "<br /><br />\n\n";
?>
La ventaja es que el ciclo siempre se ejecuta una vez, osea que la condicion parta saber si se ejecuta se realiza al final como su nombre lo dice
do... (codigo que va a hacer)
while... (condicion para verificar si continua en el ciclo)
En todos los demas ciclos lña condicion siempre va al inicio antes de que ejecute cualquier codigo
Saludos
Sirve para agilizar la programacion, pues en lugar de escribir el codigo varias veces, con el ciclo do - while seguira corriendo el programa mientras se cumpla la condicion que has puesto y cuando llegue al limite se cerrara automaticamente. Es decir si pones:
/suponiendo que declaraste algun escaner o bufferedreader
do{
sout("Desea comprar algo?");
sout("1. Si");
sout(2. No)
sout("---------------------------")
r = input.nextInt();
if (r == 1){
switch (r){
case 1:
sout("Seleccione un producto:");
sout("1. Caca");
sout("2.Chocolates");
sout("3.Bombones");
bla bla bla....
} while(r ==2)
}}
con este programa (suponiendo que esta bien hecho) puedes ofrecerle al cliente tus productos
y permitirle seleccionarlos siempre y cuando el quiera seguirlo haciendo (mientras seleccione el numero 1 que es el si) hasta que termine su compra y presione el numero 2(que es de no).
suerte
Hola.
Una ventaja o mas bien una utilidad que se le da a este tipo de estructura es obligar al usuario a ingresar datos Ãntegros ( un dato con sentido o lógico ).
Por ejemplo. No tendrÃa sentido ingresar una edad negativa , entonces que repita eso mientras la edad sea menos a 0.
Si hay tipos de datos que solo permiten datos sin signo ( uint ) pero como forma de estandarización es una buena estrategia.
Saludos.