El Bucle for



Como digimos anteriormente, arduino ejecuta las instrucciones recibidas una a continuación de otra de forma secuencial, pero esta se cuencia se puede modificar con el uso de las estructuras de control de flujo.  Estas estructuras las utilizamos para que arduino, repita una misma instrución o ejecuta una u otra instrucción en función de un resultado. Hay varias estructuras de control, pero aquí solo nos vamos a centrar en el bucle for.

El bucle for es el más difícil de entender de todas las estructuras de control y es por eso que nos vamos a centrar aquí en él.

Su sintaxis es la siguiente:

int i=0;
for (i=n; i<m; i++)
{
   codigo a repetir
}

Vayamos por parte:

    int es un tipo de dato, en este caso se refiere a un número entero, es decir, un número no decimal que puede ser positivo, negativo o cero.
    i es el nombre elegido para una variable, una variable es un "cajón" en la memoria de arduino, donde se a guardar un valor, para que arduino lo use más tarde y si es necesario lo cambie por otro valor.
    = este signo no significa igual, en programación igual se escribe "==".  Este signo significa asignación, se asigna un valor a una variable mediante el signo de asignación.

En resumen la primera línea  se está declarando una variable de tipo entero llamada i a la que se le asigna inicialmente el valor cero.  Como es de tipo entero, no puede contener números decimales, ni letras, etc... solo números enteros.

for es un bucle en el que se va a repetir el código que está entre las llaves un número finito y conocido de veces.

Con i=n siendo n un número entero ya que i solo puede contener números enteros. Con eso le decimos a for en que número empieza la primera vez, puede empezar en cero, en menos 5, en 12 en lo que queramos.

Con i<m siendo m un número entero, ya que i solo puede conetener números enteros. Con eso le decimos a for, que siga repitiendo el código mientra que la variable i sea menor que el número m, cuando la variable i alcance el número m no se producirá más repeticiones. El número m lo elige el programador, es decir, nosotros, eso nos permite controlar el número de repeticiones que queremos que se haga. El signo < se puede cambiar por mayor que, igual mayor o igual, menor o igual, etc.

Por ejemplo si n es 5 y resulta que m es 8, el código entre llaves se repetirá 3 veces, porque cuando i sea igual a 8, ya no sera menor que 8 y entonces no se producirá la repetición.

Con i++ estamos diciendo que cuando compruebe el valor n y el valor m sume una unidad al valor n de forma que si al principio n valia 5, después de que se ejecute el código la primera vez, n pasará de 5 a 6 y arduino coparará 6 con m y si es menor que n volverá a repetir el código y sumará uno al 6 y así hasta que deje de ser menor que m.

Se puede poner i-- con eso en lugar de sumar uno, se resta 1, pero entonces la comparación será mientras que i sea mayor que m

Veamos un ejemplo práctico
En este ejemplo vemos que en el setup, se va a ejecutar la intrucción pinMode 8 veces.  Pero empecemos por el principio.

se declara una variable de tipo entero llamada i y se le asigna el valor 0 en un principio.  Luego se coloca el bucle for, donde se le dice, que cambie el valor de i que es 0 por un 5,  luego le decimos que compruebe que 5 es menor que 13 y si es correcto, que ejecute el pinMode, asignando al pin 5 como una salida, luego finalmente le sume 1 al cinco, con lo cual cambia en la i el valor 5 por el 6 y empezamos de nuevo, compara si 6 es menor que 13 y si es correcto, que ejecute el pinMode, asignando al pin 6 como una salida, luego finalmente le sume 1 al seis, con lo cual cambia en la i el valor 6 por el 7 y empezamos de nuevo.  Cuando la suma de 1 haga que la i pase a valor 13, y compruebe que 13 no es menor que 13 entonce no ejecutará el código y se saldrá de bucle continuando con el programa.

La instrucción for no lleva punto y coma al final. Esto es porque se aplica al bloque de instrucciones que le sigue entre llaves, como es el caso de loop().  La iteración o repetición realiza las instrucciones que siguen a la linea del for, proque al estar entre llaves, están dentro de un bloque de instrucciones.

Las instrucciones que llevan asociadas un bloque de código no lleva punto y coma al final.

En el caso de que el bloque de código solo tenga una instrucción, se pueden omitir las llaves de inicio y final de bloque como ocurren en la función setup, sin embargo podemos ver esta llaves en la función loop.

Se puede poner un for a continuación de otro, sirviendo la primera variable para ambos for.   Tambien se pueden poner un for dentro de otro de forma recursiva, de forma que el for de dentro se ejecutará tantas veces como el for de fuera lo permita.

Esto es todo lo que debemos saber de for, por ahora.