2012-06-19 23 views
6

Eses si() {} {hacerlo, mientras que();} exactamente igual, mientras que {}

if(a) 
{ 
    do 
    { 
     b(); 
    } 
    while(a); 
} 

exactamente como

while(a) 
{ 
    b(); 
} 

?

+3

posible duplicado de [¿Bucles de prueba en la parte superior o inferior? (while vs. do while)] (http://stackoverflow.com/questions/224059/test-loops-at-the-top-or-bottom-while-vs-do-while) – Niko

+0

Pruébalo :-P http://jsfiddle.net/LvWtY/ –

+0

NO ... no son exactamente lo mismo ... do {..} mientras (a) ... se asegurará de que lo que sea se haga al menos una vez y luego hasta que 'a' no sea verdadero ... while (a) {} ... solo se aplicará cuando 'a' sea verdadero. – Brian

Respuesta

1

Son lo mismo y daré un ejemplo en el que en realidad podría querer utilizar el ciclo "Do-While" en lugar de "while".

do{ 
    x = superMathClass.performComplicatedCalculation(3.14); 
} 
while (x < 1000); 

en contraposición a

x = superMathClass.performComplicatedCalculation(3.14); 
while (x < 1000); 
{ 
     x = superMathClass.performComplicatedCalculation(3.14); 
} 

El argumento para el uso de un do-while se muestra arriba. Suponga que la línea x = superMathClass.performComplicatedCalculation(3.14); no era solo una línea de código y en su lugar tenía 25 líneas de código. Si necesita cambiarlo, al hacerlo, solo lo cambiaría una vez. En el ciclo while deberías cambiarlo dos veces.

Estoy de acuerdo en que los whiles están apagados y deberías evitarlos, pero también hay argumentos a su favor.

0

, pero debería preferir este último.

1

Sí, son lo mismo.
Ha creado una forma muy ilegible de simular el ciclo while con do-while loop + if.

Usted debe leer esto:
Test loops at the top or bottom? (while vs. do while)

Uso mientras bucles cuando se quiere probar una condición antes de la primera iteración del bucle.

Utilice do-while cuando desea probar una condición después de ejecutar la primera iteración del ciclo.

1

Sí, son equivalentes.
Si a es false, b no se ejecutará en absoluto.
Si a es true, b se ejecutará hasta que a se convierta en false.
Esto es igualmente cierto para ambas construcciones.

1

Las construcciones son bastante intercambiables en este caso, pero creo que el ciclo while while es útil en algunos casos, por ejemplo, si se deben mantener algunas variables en todas las iteraciones del ciclo, pero no son necesarias si loop nunca se ejecuta. (Y se supone que puede que no sea.) Por ejemplo

 if (condition) { 
      LargeComplexObject object = new LargeComplexObject(); 
      do { 
       some action 
       ... 
       object.someMethod(); 
       ... 
       more actions 
      } 
      while (condition); 
     } 

Esto puede ser una optimización útil si la inicialización de ese objeto es el tiempo o la memoria intensiva, y se espera que este bucle sólo se disparará en ocasiones y se omitirá en la mayoría de las ejecuciones del método pertinente.Por supuesto, hay otros casos en los que también podría ser útil, básicamente, creo que el if-do-while debería usarse si hay cosas que deberían ejecutarse antes de que comience el ciclo, solo cuando se ingrese el ciclo.

Cuestiones relacionadas