Skip to content
Tiantan
Articles

¿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

  • Intenta usar ambos para varios " desafíos ". ' verás rápidamente que una construcción de bucle es más adecuada para alguna situación que otras construcciones de bucle. Y en realidad, hay dos tipos de bucles while en algunos lenguajes (como en Javascript) con sus propios casos de uso (especiales). De hecho, ambos o los tres se pueden utilizar para lograr un objetivo, pero solo uno puede hacer el trabajo sin demasiada " sobrecarga " semántica. (lo que facilita su comprensión, por ejemplo).
  • Son básicamente lo mismo. Un bucle for es solo azúcar de sintaxis, y admite un subconjunto de casos de uso que while 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. .
  • ¡Votado más! Ninguna pregunta es demasiado tonta cuando estás aprendiendo.
  • @StevenBurnap: no son básicamente lo mismo. Un lenguaje con solo bucles while y condicionales es Turing-completo, un idioma con solo bucles for no es ' t. Un lenguaje con bucles while puede calcular cualquier µ función recursiva, un lenguaje con bucles for sólo puede calcular funciones primitivas recursivas. Un lenguaje con bucles for solo puede expresar programas que siempre terminan, no puede expresar no terminación.
  • @J ö rgWMittag Bueno, eso depende del bucle for , ahora, no ' t eso. Aunque se podría argumentar que un bucle C for es en realidad un bucle while en ropa elegante.

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 bucle for es en realidad solo azúcar de sintaxis. Algunos idiomas lo prescinden por completo. El bucle C for es una bestia extraña, en realidad más un while 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 entre for(;xxx;) y while(xxx).
  • flecha hacia abajo. El caos es precisamente correcto. initializer; seguido de while(condition){ ... increment;} es lo mismo que for(initializer; condition; increment){ ... }.

Written by admin

Deja una respuesta Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Entradas recientes

  • Usando un balun con un dipolo resonante
  • ¿Cuál es la diferencia entre “ no puede ” y “ no puede ”? [duplicado]
  • En JFK, ¿puede moverse entre terminales en la zona de operaciones en vuelos nacionales?
  • “ Muy apreciado ” o “ muy apreciado ”
  • ¿Qué significa ' ideas abstractas '? [cerrado]

Archivos

  • febrero 2021
  • enero 2021
  • diciembre 2020
  • noviembre 2020
  • Deutsch
  • Nederlands
  • Svenska
  • Norsk
  • Dansk
  • Español
  • Français
  • Português
  • Italiano
  • Română
  • Polski
  • Čeština
  • Magyar
  • Suomi
  • 日本語
  • 한국어

Copyright Tiantan 2021 | Theme by Theme in Progress | Proudly powered by WordPress

Back to top