Los Bucles en Arduino

Comencemos con el hecho de que ya se ha encontrado con bucles de todos modos: este es, por supuesto, el bucle principal de cualquier programa.聽loop ().聽Un bucle es aproximadamente un marco, el c贸digo dentro del cual se ejecuta de arriba a abajo y se repite desde el principio hasta que llega al final.聽Este comportamiento contin煤a mientras se cumpla alguna condici贸n.聽Hay dos bucles principales con los que trabajaremos, estos son for y聽while.


Bucle For.

Bucle For, este bucle tambi茅n est谩 en otros lenguajes de programaci贸n, pero en C ++ tiene una configuraci贸n muy flexible. Cuando se crea, el bucle toma tres 芦valores禄 (configuraciones): inicializaci贸n, condici贸n y cambio. Un ciclo for generalmente contiene una variable que cambia a lo largo del ciclo, podemos usar su valor cambiante para nuestros propios fines. Una variable es local al bucle si se crea durante la inicializaci贸n.

  • Inicializaci贸n : aqu铆 es donde generalmente se asigna el valor inicial de la variable de ciclo. Por ejemplo: int i = 0;
  • Condici贸n : aqu铆 especifica la condici贸n bajo la cual se ejecuta el ciclo. Tan pronto como se viola la condici贸n, el ciclo termina. Por ejemplo: i < 100;
  • Cambio : esto indica el cambio en la variable de ciclo en cada iteraci贸n. Por ejemplo: i ++;

Combinemos los tres puntos anteriores en un ejemplo:

for ( int i = 0; i < 100; i ++ ) {  
  // cuerpo del ciclo
}

En el cuerpo del bucle, podemos usar el valor de la variable i, que tomar谩 valores de 0 a 99 durante el ciclo, despu茅s del cual finaliza el ciclo. 驴C贸mo usarlo? Recordemos la lecci贸n anterior sobre matrices y consideremos el siguiente ejemplo:

// crea una matriz con 100 celdas
byte myArray [ 100 ] ;
for ( int i = 0; i < 100; i ++ ) {  
  // llena todas las celdas con 25
  myArray [ i ] = 25;
}

El bucle for muy a menudo trabaja con matrices. Puede, por ejemplo, agregar todos los elementos de una matriz para encontrar la media aritm茅tica:

// crea una matriz de datos
byte myVals [] = { 5, 60, 214, 36, 98, 156 } ;
// variable para almacenar la suma
// aseg煤rese de inicializar a 0
int suma = 0;
for ( int i = 0; i < 6; i ++ ) {  
  // suma toda la matriz en suma
  suma + = myVals [ i ] ;
}
// dividir la suma por el n煤mero de elementos
// 隆y obt茅n la media aritm茅tica!
suma / = 6;
// 隆Tienes 94!

En cuanto a las caracter铆sticas de uso de for en el lenguaje C ++: cualquiera de sus configuraciones es opcional, es decir, se puede omitir para algunos algoritmos especiales. Por ejemplo, no deseamos crear una variable de bucle, pero usaremos otra variable existente para esto. Pero no olvide que los separadores de configuraci贸n (punto y coma) deben estar presentes en su lugar , 隆incluso si no hay configuraciones!

// tenemos alg煤n tipo de variable
int 铆ndice = 0;
for ( ; 铆ndice < 60; 铆ndice + = 10 ) {  
  // el 铆ndice de la variable toma valores
  // 0, 10, 20, 30, 40, 50
}

En un bucle for, puedes hacer varios contadores, varias condiciones y varios incrementos, separ谩ndolos mediante el operador de coma, ver un ejemplo:

// declara i y j
// suma i + 1 y j + 2
for ( byte i = 0, j = 0; i < 10; i ++, j + = 2 ) {  
  // i cambio de 0 a 9
  // y j cambia de 0 a 18
}

Adem谩s, es posible que el ciclo no tenga ninguna configuraci贸n, y dicho ciclo puede considerarse eterno, cerrado:

for ( ;; ) {  
  // corre para siempre ...
}

El uso de bucles cerrados no es muy bienvenido, pero a veces es una forma muy conveniente de capturar un valor, o dejar que el programa se cuelgue cuando ocurre un error. Pero, como sabemos, nada es eterno, por lo que a煤n puede salir del bucle usando el operador break.


Operador break.

Operador break (Ingl茅s 芦break禄) le permite dejar el ciclo antes de lo programado, puede usarlo por condici贸n o de cualquier manera conveniente. Por ejemplo, salir del ciclo antes de lo programado cuando se alcance un cierto valor:

for ( int i = 0; i < 100; i ++ ) {  
  // abandona el bucle al llegar a 50
  if ( i == 50 ) break ;  
}

Aqu铆 hay un ejemplo para salir del bucle, dejemos el bucle 芦eterno禄 cuando se presiona el bot贸n:

for ( ;; ) {  
  if ( bot贸n presionado ) break ;  
}

Salir del bucle no es la 煤nica herramienta interesante, tambi茅n existe el operador de salto: continue.


Operador continue.

Operador continue (芦Continuar禄 en ingl茅s) finaliza la iteraci贸n del ciclo actual antes de lo programado y pasa a la siguiente. Por ejemplo, completemos una matriz como lo hicimos anteriormente, pero omitamos un elemento:

// crea una matriz con 100 celdas
byte myArray [ 100 ] ;
for ( int i = 0; i < 100; i ++ ) {  
  // si i es 10, omite
  if ( i == 10 ) continue ;  
  
  // llena todas las celdas con 25
  myArray [ i ] = 25;
}

Por lo tanto, el elemento con 铆ndice 10 no recibir谩 el valor 25, la iteraci贸n terminar谩 antes de la operaci贸n de asignaci贸n.


Bucle while.

Bucle while (Ingl茅s 芦mientras禄), tambi茅n llamado ciclo con una condici贸n previa, se ejecuta siempre que la condici贸n especificada sea verdadera. Si la condici贸n es inmediatamente incorrecta, el ciclo ni siquiera comenzar谩 a funcionar y se omitir谩 por completo. Se declara de manera muy simple: la palabra clave while, luego la condici贸n entre par茅ntesis, y ahora el cuerpo del ciclo:

int i = 0;
while ( i < 10 ) {  
  i ++;
}

Huummm, 驴este ejemplo te suena familiar? As铆 es, este es un an谩logo completo del ciclo. for con ajustes ( int i = 0; i < 10; i ++ ). La 煤nica diferencia es que en la 煤ltima iteraci贸n i asumir谩 diez, ya que el valor nueve del ciclo permitir谩 la ejecuci贸n.

Otra opci贸n interesante que se puede encontrar en la inmensidad del c贸digo de otras personas. Funciona bas谩ndose en el hecho de que la l贸gica trata cualquier n煤mero que no sea cero como true:

byte a = 5;
while ( a-- ) {  
  // se ejecutar谩 5 veces
}

El bucle while tambi茅n es conveniente usarlo como un bucle eterno, por ejemplo, esperando la ocurrencia de un evento (presionar un bot贸n):

// se ejecuta hasta que se presiona el bot贸n
while ( bot贸n no presionado ) ; 

Hasta que se cumpla la condici贸n, el c贸digo no ir谩 m谩s all谩, se atascar谩 en este bucle. Como ya entendiste, el operador if no es necesario aqu铆, debe especificar el valor l贸gico, incluso puede hacer esto:

while ( true ) ; 

隆Es un bucle sin fin! Si no prevemos break, por supuesto鈥

Adem谩s de un bucle con una condici贸n previa, tambi茅n hay un bucle con una condici贸n posterior, el llamado hacer mientras; do while.


Bucle Do While.

Hacer mientras  – 芦do while芦, el trabajo de este ciclo es completamente an谩logo al ciclo while con la excepci贸n de que aqu铆 la condici贸n se establece despu茅s del ciclo, es decir el ciclo se ejecutar谩 una vez como m铆nimo, luego verificar谩 la condici贸n, no al rev茅s. Ejemplo:

do { 
  // cuerpo del ciclo
} while ( condici贸n ) ;  

驴D贸nde aplicarlo? En cualquier lugar, mientras escribe sus propios programas, sentir谩 d贸nde es m谩s conveniente utilizar este o aquel ciclo.


Deja un comentario