¿Qué es el bucle for?

La instrucción for, también llamada bucle for debido a su comportamiento, es una instrucción muy usada en programación para repetir la ejecución de un conjunto de instrucciones un número conocido de veces.

También es una instrucción muy útil a la hora de recorrer arrays.

Imagina que tienes 10 números que quieres mostrar por pantalla a través del monitor serie. Puedes usar una instrucción Serial.print 10 veces para mostrar los 10 números ¿Y si fuesen 1000 números? Sería una locura, ¿verad? Mejor puedes usar un bucle for y utilizar una única instrucción Serial.print.

Otro ejemplo, imagina que quieres leer el estado de todos los pines digitales de tu Arduino Uno. Puedes usar la función digitalRead por cada pin, o puedes usar un bucle for que ejecuta una solo instrucción por cada pin. Mucho más rápido, desde luego.

Sintaxis de la instrucción for

La sintaxis de la instrucción for es la siguiente:

for (inicialización; condición; incremento) {
  // instrucciones que se repiten
}

Normalmente el bucle for se ayuda de un índice, que no es otra cosa que una variable númerica, suele ser de tipo int.

El indice actúa como contador para que el bucle se repita un número concreto de veces.

Teniendo esto en cuenta, vamos a evaluar los tres elementos que ves entre paréntesis en el for:

  • Inicialización: Se refiere a la inicialización del índice. Supongamos que el indice es un entero que comienza en 0, pues es aquí donde se indica: int i = 0;
    El nombre del índice puede ser cualquier cosa que cumpla con las reglas de identificadores del lenguaje.
  • Condición: Se trata de una condición lógica que devuelve resultado true o false. Si el resultado es verdadero el bucle se repite, por el contrario, si el resultado es falso el bucle para. Para construir esta condición se puede usar cualquier conjunto de operadores de comparación y operadores lógicos.
    Normalmente en la condición suele estar implicado el índice. Por ejemplo: i<10. En este caso el bucle se repetirá si el índice es menor que 10. En cualquier otro caso el bucle se para.
  • Incremento: El incremento, como su nombre indica, incrementa (i++) (o decrementa, también es posible) el valor del índice.
    Puesto que el indice actúa como contador tiene sentido que aumente su valor para saber cuántas repeticiones lleva el bucle y cuántas le faltan para terminar.

Falta una última cosa. Como puedes comprobar, después de los paréntesis hay unas llaves que se abren y cierran: {}. Eso es el cuerpo del for. Todas las instrucciones que escribas entre esas llaves se ejecutarán tantas veces como lo determine el bucle for.

Ejemplo de bucle for

Se que la teoría a veces puede ser confusa, por eso lo mejor es que veamos un ejemplo completo para que no te queden dudas sobre el funcionamiento de la instrucción for.

A continuación he creado un pequeño sketch que te mostrará el funcionamiento del for de una forma bastante sencilla:

void setup(){
  Serial.bebin(9600);
}

void loop(){
  for(int i=0; i<10; i++){
    Serial.println(i);
  }
}

¿Cuál crees que será la salida generada en el monitor serie si no tenemos en cuenta que la función loop también se repite?

0
1
2
3
4
5
6
7
8
9

Esa es la salida, ¿Por qué?

Repasemos la teoría. Primero el for inicializa el índice, en este caso así:

int i = 0;

Por tanto, el primero valor de i será 0. Hasta ahí todo correcto.

¿Qué pasa ahora con la condición?

i<10;

Para que el bucle se repita i tiene que ser menor que 10. Inicialmente es 0, por lo tanto se cumple y la instrucción que se encuentra dentro del cuerpo del for se ejecuta pintando un 0 en el monitor serie:

Serial.println(i);

¿Cuál es el siguiente paso? El incremento, que en este caso es así:

i++

Es decir, incrementa el valor del índice en una unidad. Ahora i ya no tiene valor 0, sino que tiene valor 1.

La inicialización ya no se vuelve a ejecutar, ese paso solo se hace una vez al inicio, por lo que i no volverá a tener valor 0. Lo que se ejecuta ahora es la condición. El indice i ahora vale 1, pero sigue siendo menor que 10, por lo que el bucle continúa con su ejecución y vuelve a ejecutar la instrucción que hay entre llaves:

Serial.println(i);

Como ahora el índice es 1, ese será el valor que se pinte en el monitor serie.

Y el bucle continúa incrementando de nuevo en una unidad el índice. Ahora i vale 2, que sigue siendo menor que 10, por lo que también se pintará.

¿En qué momento terminará el bucle for? Cuando i tenga valor 9 y se haga un nuevo incremento. En ese punto pasará a valer 10 y la condición ya no se cumplirá, por lo que el valor 10 no se mostrará en el monitor serie, terminando la ejecución del bucle for en ese instante.

¿Lo ves más claro ahora? Espero que si.

Utilizaremos muchas veces el bucle for en diferentes tutoriales en esta misma web, por lo que podrás practicar todo lo que quieras.


No hemos podido validar tu suscripción.
¡Se ha realizado tu suscripción!

Newsletter

Suscríbete para que te avise cuando publique nuevo contenido.

Usamos Brevo como plataforma de marketing. Al hacer clic a continuación para enviar este formulario, consiente que la información proporcionada sea transferida a Brevo para su procesamiento de acuerdo con sus términos de uso