If you're seeing this message, it means we're having trouble loading external resources on our website.

Si estás detrás de un filtro de páginas web, por favor asegúrate de que los dominios *.kastatic.org y *.kasandbox.org estén desbloqueados.

Contenido principal

Repetición numerada de instrucciones

El mundo está lleno de repeticiones: un científico que repite un experimento 100 veces y registra los resultados, un jardinero que siembra hileras perfectas de cabezas de lechuga a 2 pulgadas de distancia, una impresora 3D que imprime repetidamente capa por capa.
Los programas de computadora también están llenos de repeticiones, pues automatizan y simulan el mundo que nos rodea. Los programadores usan bucles "for" para repetir un conjunto de instrucciones un número específico de veces.

La necesidad de bucles

Imagina que hacemos un programa que muestre la tabla de multiplicación del número 9.
Podemos codificar los 13 primeros múltiplos así:
println(9 * 0);
println(9 * 1);
println(9 * 2);
println(9 * 3);
println(9 * 4);
println(9 * 5);
println(9 * 6);
println(9 * 7);
println(9 * 8);
println(9 * 9);
println(9 * 10);
println(9 * 11);
println(9 * 12);
Eso funciona, pero este enfoque tiene algunos inconvenientes. ¿Qué pasa si queremos mostrar los primeros 100 múltiplos? ¡Esas son otras 87 líneas de código! ¿Qué pasa si decidimos añadir un texto a cada línea? ¡Tendríamos que cambiar 100 líneas de código!
Con un bucle for , podemos decirle a la computadora que repita una instrucción sin que necesitemos repetirla en el código.
Podemos volver a escribir ese código con un bucle for en JavaScript, así:
for (var i = 0; i < 13; i++) {
  println(9 * i);
}
Cada bucle for inicia con un encabezado de 3 partes dentro del paréntesis. El encabezado sigue esta plantilla:
for (inicialización; condición; incremento/decremento)
Se utiliza una variable contador en esas partes. Esa variable da seguimiento a la repetición actual, y típicamente se llama i.
La parte inicialización usualmente le asigna un valor inicial a la variable contador.
En este caso (var i = 0), el valor inicial es 0, porque primero mostramos 9 multiplicado por 0.
La parte condición le indica a la computadora si debe seguir repitiendo o no. La computadora evalúa la condición cada vez, y si la expresión es verdadera, ejecuta las instrucciones interiores. Si no, saldrá del bucle completamente.
En este caso (i < 13), la condición comprueba si la variable contador es menor que 13, porque queremos que nuestro múltiplo final sea 12.
La parte incremento/decremento modifica la variable contador después de cada repetición.
En este caso (i++), simplemente queremos sumar uno a la variable, ya que recorremos los valores enteros de 0 a 12.
Después del encabezado del bucle for, siempre hay instrucciones entre llaves, que la computadora ejecuta cada vez. Las instrucciones a menudo hacen referencia a la variable contador, pero no siempre.
✏️ El siguiente programa muestra los cuadrados de los números de 0 a 5. Intenta cambiarlo para mostrar más cuadrados y mostrar los cubos de cada número.
📝 Mira código similar en: App Lab | Snap | Python

Variaciones del bucle

El bucle más común que verás en programación inicia en 0, parará antes de un cierto número e incrementará en uno cada vez. Sin embargo, al variar el encabezado del bucle, podemos crear bucles que se repiten de muchas otras maneras.
Por ejemplo, este programa utiliza un bucle for para contar hacia abajo, de 10 a 1:
for (var i = 10; i > 0; i--) {
   println(i);
}
Observa las diferencias:
  • En la inicialización, asignamos 10 a la variable contador.
  • En la condición, comprobamos si la variable contador es mayor que 0. Esto significa que la repetición final será cuando la variable contador es 1, y después la computadora saldrá del bucle.
  • En la última parte, restamos 1 de la variable contador.
Aquí hay otro ejemplo, un bucle for que muestra los números pares de 0 a 20:
for (var i = 0; i <= 20; i += 2) {
    println(i);
}
Este bucle inicia en 0, pero difiere de otra manera:
  • La condición comprueba si la variable contador es menor o igual a 20. Esto significa que el bucle muestra 20. Si fuera sólo menor que, pararía en 19.
  • La última parte suma 2 a la variable contador, no 1 como es usual.
La flexibilidad del bucle for significa que podemos programar muchos tipos de repetición con él. Ten en cuenta, que la flexibilidad también hace más fácil cometer errores. Mira si puedes detectar los errores en estos ejemplos.
Comprueba tu comprensión
Este bucle for debe mostrar los números de 1 a 10:
for (var i = 0; i < 10; i++) {
    println(i);
}
Sin embargo, el código no es de todo correcto.
¿Cuál de estos fragmentos de código muestra correctamente los números de 1 a 10?
Elige todas las respuestas adecuadas:
Elige todas las respuestas adecuadas:

Bucles anidados

Un bucle anidado nos permite repetir a lo largo de dos dimensiones.
Exploremos eso con un ejemplo de codificación. Antes hicimos una tabla de multiplicar para el número 9. ¿Qué pasa si necesitamos hacerlo para los demás números de 1-10? ¡Bucles anidados al rescate!
Este código JavaScript utiliza un bucle for anidado para mostrar las tablas de multiplicar para los números 1-10:
for (var i = 1; i <= 10; i++) {
  for (var j = 1; j <= 10; j++) {
    println(i * j);
  }
}
Ejecuta código | 📝 Mira código similar en: App Lab | Snap | Python
El bucle externo inicia en 1, para en 10 y suma 1 cada vez. El bucle interno for hace exactamente lo mismo, pero con un nombre de variable contador diferente. Las instrucciones muestran el producto de las dos variables contador.
Es importante entender el orden en que la computadora ejecuta las instrucciones de bucle. Para cada iteración del bucle externo for, la computadora hará por 10 iteraciones del bucle interno for. En esas primeras 10 iteraciones, la variable de contador externo i será 1 todo el tiempo, y solo la variable interna j cambiará, incrementando de 1 a 10.
Para una explicación más detallada, este vídeo habla sobre una visualización de la computadora que ejecuta el bucle anidado. Puedes jugar con la visualización tú mismo en JSTutor.
Comprueba tu comprensión
En el ejemplo anterior, ¿cuántas veces se llama a println()?
  • Tu respuesta debe ser
  • un entero, como 6
  • una fracción propia simplificada, como 3, slash, 5
  • una fracción impropia simplificada, como 7, slash, 4
  • un número mixto, como 1, space, 3, slash, 4
  • un decimal exacto, como 0, point, 75
  • un múltiplo de pi, como 12, space, start text, p, i, end text o 2, slash, 3, space, start text, p, i, end text

Cuando la computadora termina de ejecutar ambos bucles, ¿qué valores almacenarán las variables i y j?
Escoge 1 respuesta:
Escoge 1 respuesta:

A menudo utilizamos bucles anidados para visualizar y operar en datos que están en filas y columnas.
Imagina un campo con hileras de cabezas de lechuga: cada hilera tiene una cabeza de lechuga plantada repetidamente, y luego las hileras se repiten hasta llenar el campo completo. Una hilera de lechugas es un solo bucle; todo un campo de hileras es un bucle anidado.
✏️El siguiente programa planta un campo de 5 x 5 con muñecos de nieve. Cambia a 5 filas de 10 muñecos, y luego 10 filas de 5 muñecos.
📝 Mira código similar en: App Lab | Snap | Python

Bucles en pseudocódigo

La sintaxis de bucles for varía entre lenguajes, y no todos tienen bucles for. Sin embargo, todos tienen alguna manera de repetir código cierto número de veces.
Este pseudocódigo representa instrucciones repetidas n veces:
REPEAT n TIMES
{
   <instrucciones>
}
Este es el equivalente en pseudocódigo para mostrar los múltiplos de 9, de 1 a 12:
i ← 1
REPEAT 12 TIMES 
{ 
   DISPLAY(9 * i)
   i ← i + 1
}
Como REPEAT no tiene un encabezado de 3 partes, debemos inicializar la variable contador antes del encabezado REPEAT, e incrementar la variable contador al final del cuerpo.
Para otro ejemplo, aquí está el pseudocódigo para mostrar una cuenta regresiva de 10 a 1:
i ← 10
REPEAT 10 TIMES
{
   DISPLAY(i)
      i ← i - 1
}

🙋🏽🙋🏻‍♀️🙋🏿‍♂️¿Tienes alguna pregunta sobre este tópico? Nos encantaría contestarte; ¡simplemente pregunta en el area de preguntas abajo!