La declaración for se usa para repetir bloques de código. Es el primer paso hacia un código más eficiente y legible.
Sintaxis de la declaración for
La instrucción for toma, como entrada, un contador cuyo incremento y condición final están definidos. Se suele utilizar con listas de variables (array) para realizar operaciones con los datos que contienen?
for(inicialización;condición de parada;incremento){ <lista de instrucciones>; }
En la inicialización se define un número entero que contendrá el contador. La condición de parada será el resultado de una prueba lógica (normalmente un valor límite. Y el incremento será una operación que define cómo evoluciona el contador en cada turno.
En el siguiente ejemplo, el código contará hasta 10, mostrando cada valor en el monitor de serie:
- inicialización: inicializamos un entero i a 0
- condición: el bucle se detendrá cuando alcance el valor 10
- incremento: el contador i evoluciona de 1 a 1 en cada ejecución
void setup() { Serial.begin(9600); } void loop() { for(int i=0;i<=10;i=i+1){ Serial.println(i); } delay(500); //delay for monitor display }
En el siguiente ejemplo, el algoritmo cuenta de 10 a 0.
for(int i=10;i>=0;i=i-1){ Serial.println(i); }
Para la definición del incremento de la variable, es posible establecer cualquier función. Ejemplo:
- i=2*i para contar números pares
- i=2*i+1 para contar números impares
- i=pow(i,2) una función cuadrada
- i++ es igual a i=i+1
- i– es igual a i=i-1
La inicialización puede definirse fuera del bucle for. En este caso, preste atención al nombre y a la inicialización de sus variables. En el siguiente ejemplo, el código contará primero de 0 a 10 y luego de 3 a 10 las siguientes veces.
int index=0; void setup() { Serial.begin(9600); } void loop() { for(index;index<=10;index=index+1){ Serial.println(index); } index=3; delay(500); //delay for monitor display }
Otras sintaxis
Es posible olvidarse de los frenos si el bucle for contiene sólo una instrucción.
for(int i=0;i<=10;i=i+1) Serial.println(i);
A veces es interesante hacer varios bucles en paralelo. Estos se llaman bucles anidados. En el siguiente ejemplo, por cada ejecución del primer bucle, el segundo contará hasta 5.
for(int i=0;i<=10;i=i+1){ for(int j=0;j<=5;j=j+1){ Serial.print(i); Serial.print(F("-")); Serial.print(j); } }
Cosas para recordar
- la instrucción for toma como entrada la inicialización de un contador, una condición de parada y una definición de incremento
- el for puede ser anidado
- el bloque de instrucción está entre llaves {}
- Si la lista de instrucciones está en una línea entonces no hay necesidad de llaves
Asegúrate de que entiendes las matrices, los operadores lógicos y de incremento para usar la declaración de for correctamente. Una vez que hayas dominado esta instrucción, podrás crear algoritmos más eficientemente.