Foros del Web » Programando para Internet » Javascript »

¿Qué falla en el bucle?

Estas en el tema de ¿Qué falla en el bucle? en el foro de Javascript en Foros del Web. Buenas, estoy haciendo un bucle, que sume los números que se introducen en los prompts, y he hecho esto: Cita: for (i = 0; i ...
  #1 (permalink)  
Antiguo 18/03/2014, 20:51
Avatar de raptor96  
Fecha de Ingreso: diciembre-2007
Ubicación: aranjuez
Mensajes: 102
Antigüedad: 16 años, 4 meses
Puntos: 1
¿Qué falla en el bucle?

Buenas, estoy haciendo un bucle, que sume los números que se introducen en los prompts, y he hecho esto:

Cita:
for (i = 0; i == 0;) {
alert("La suma total es: " + Respuesta + ".");
Resultado = prompt("¿Qué más quieres sumar?");
Suma = parseInt(Respuesta) + parseInt(Resultado);
Respuesta = toString(Suma);
}
No sé que está mal, me sale después del segundo object window...

Gracias de antemano.
  #2 (permalink)  
Antiguo 19/03/2014, 02:05
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: ¿Qué falla en el bucle?

Código Javascript:
Ver original
  1. for (i = 0; i == 0;) {


for (<indice>;<condición>;<incremento>)

Tres digamos "parametros"
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 19/03/2014, 02:55
Avatar de marlanga  
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 3 meses
Puntos: 206
Respuesta: ¿Qué falla en el bucle?

No es necesario poner tres parámetros. De hecho, no es necesario poner ninguno, bastaría con poner los dos punto y comas. for (;;){} formando un bucle infinito. Las lógica para parar el bucle iría dentro del "cuerpo" del bucle.
Los puntos y comas dividen el for en tres zonas: La primera sirve para inicializar variables, todas las que quieras, separadas por comas. Se ejecutará una sola vez, justo al principio.
Código Javascript:
Ver original
  1. for (var i=0, n=array.length, j=0;;){}

La segunda es una comparación booleana, y se ejecuta al principio de cada vuelta del bucle for. Es una expresión booleana (TRUE O FALSE) Mientras esté a true, el FOR seguirá ejecutándose.
Código Javascript:
Ver original
  1. for  for (var i=0, n=array.length;i<n && j!=5;){}

La tercera zona sirve para ejecutar instrucciones en cada vuelta del bucle, después de ejecutarse la comparación booleana anterior, y antes de ejecutar el contenido del for. Típicamente sirve para asignar valores a las variables de la primera parte para que el booleano de la segunda parte devuelva un false en algún momento, para que deje de ejecutarse el bucle del for. Para ejecutar varias instrucciones, sepáralas con comas. Pero por poder, puede ejecutar cualqueir cosa.
Código Javascript:
Ver original
  1. for  for (var i=0, n=array.length, j=10;i<n && j!=5; i++, j--){}

Tampoco es estrictamente necesario que el FOR tenga "cuerpo", es decir, código entre sus llaves "{" y "}". Por ejemplo, un for que eleva al cubo cualquier array de números, si tener "cuerpo":
Código Javascript:
Ver original
  1. var arr=[1,2,3,4,5,6,7,8,9,10];
  2. for (var i=0, n=arr.length; i<n; arr[i]=Math.pow(arr[i++],3));
  #4 (permalink)  
Antiguo 19/03/2014, 03:25
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: ¿Qué falla en el bucle?

Gran explicación @marlanga

Así funciona:

Código Javascript:
Ver original
  1. var Respuesta=0;
  2. for (i = 0; i == 0;) {
  3. alert("La suma total es: " + Respuesta + ".");
  4. var Resultado = prompt("¿Qué más quieres sumar?");
  5. Respuesta = parseInt(Respuesta) + parseInt(Resultado);
  6. }
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Etiquetas: falla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:15.