¿Cuáles son las diferencias entre un bucle while y un bucle for?
On febrero 17, 2021 by admin¿Cuáles son las diferencias entre un ciclo while y un ciclo for? Me parece que son iguales.
Comentarios
Answer
El ciclo while
se usa generalmente cuando necesitas repetir algo hasta que una condición dada es verdadera :
inputInvalid = true; while(inputInvalid) { //ask user for input invalidInput = checkValidInput(); }
Por otro lado, el bucle for
se usa normalmente cuando necesitas iterar un número dado de veces:
for(var i = 0; i < 100; i++) { ...//do something for a 100 times. }
Puede usarlos indistintamente si lo desea:
inputInvalid = true; for(;;) { if(!inputInvalid) { break; } //ask user for input invalidInput = checkValidInput(); }
O
inputInvalid = true; for(;inputInvalid;) { //ask user for input invalidInput = checkValidInput(); }
Y:
var i = 0; while(i < 100) { //do your logic here i++; }
Comentarios
- Sin embargo, como puede ver, estos usos no estándar producen un código menos elegante y más difícil de leer. Debajo del capó, los diferentes tipos de bucle son todos el mismo goto condicional, así que intente usar el que mejor se adapte sintácticamente a lo que está tratando de lograr.
- En el siguiente código, también puedo decir hacer algo 10 veces. (Llena su argumento como para loop @npinti) var count = 0; while (cuenta < 10) {document.writeln (" en bucle! ") ; contar ++; }
- Tenga en cuenta que en C, puede reescribir su tercer ejemplo como
for(invalidInput = checkValidInput();inputInvalid;invalidInput = checkValidInput()){}
. Pero sí, su punto básico es completamente correcto, y un buclefor
es en realidad solo azúcar de sintaxis. Algunos idiomas lo prescinden por completo. El bucle Cfor
es una bestia extraña, en realidad más unwhile
bastardo a diferencia de lenguajes como Pascal, donde el solo se puede usar para recorrer enteros discretos. - ¿Qué significa (;;)? No puedo encontrar una explicación de for (;;) it.
- @mistichor el bucle for de C / C ++ toma 3 declaraciones for (;;) es un bucle for con 3 declaraciones vacías, el punto y coma separa las declaraciones en blanco .
Respuesta
Hay una diferencia fundamental entre los dos: con una for
bucle, necesita saber de antemano con qué frecuencia se ejecutará el cuerpo del bucle. Esta es una restricción importante, ya que hay muchos problemas en los que simplemente no lo sabes. ¡A veces ni siquiera sabes si ese número es finito en absoluto !
Considere, por ejemplo, un programa que le pide al usuario que ingrese una serie de nombres. Digamos, un sistema de gestión de pacientes para un dentista. ¿Cómo saber de antemano a cuántos pacientes va a ingresar el dentista? ¡No es así! No puede «escribir un for
bucle para eso.
Comentarios
- Hay varias formas de terminar un ciclo for antes, por lo que solo necesita saber el tiempo máximo que tiene la intención de iterar alrededor del ciclo. Además, si ' está dispuesto a hacer un mal uso de la parte condicional del ciclo for, puede hacer que haga cualquier cosa que pueda hacer un ciclo while.
- ¿Cuál idioma estás hablando?En pascal, su argumento tiene algún mérito (codificar un número grande como límite es feo), pero en C puede usar condiciones arbitrarias con
for
. No hay diferencia entrefor(;xxx;)
ywhile(xxx)
. - flecha hacia abajo. El caos es precisamente correcto.
initializer;
seguido dewhile(condition){ ... increment;}
es lo mismo quefor(initializer; condition; increment){ ... }
.
for
es solo azúcar de sintaxis, y admite un subconjunto de casos de uso quewhile
admite. A veces " syntax sugar " se desprecia, pero realmente debería considerarse como una forma de crear un código más limpio y más fácil de entender. .for
es en realidad un buclewhile
en ropa elegante.