marzo 28, 2024

BitCuco

¡Hola Mundo!

Estructuras de control en Arduino

estructuras de control en arduino

Estructuras de Control en Arduino

Estructuras de control en Arduino

Generalmente requerimos que en un sketch o programa de Arduino la ejecución de cierto código se realice bajo ciertas condiciones o características. Es decir, puede ser que necesitemos que algunas instrucciones se ejecuten o no, bajo ciertas condiciones. Es mas, podrías ser que requerimos que parte del código se ejecute un número determinado de veces o se repita su ejecución bajo ciertas condiciones. Todo lo anterior es posible, gracias a las sentencias o estructuras de control en Arduino.

Este tipo de sentencias son la base de cualquier lenguaje de programación que indique ser estructurado. Algunos ejemplos de lenguajes mas comunes o populares son Java, cualquier lenguaje basado en C, Pascal, Basic, etcétera. También, este tipo de sentencias o estrucutras de control te las puedes encontrar en algunos lenguajes de programación de Robots o controladores lógicos programables con Arduino.

Se considera que con este tipo de programación se logran programas mas eficientes y confiables. Asimismo, puede ser mas fácil encontrar errores de lógica y darle mantenimiento. Debido a que el IDE de Arduino se basa en C, es también un lenguaje de programación estructurado.

estructuras de control en Arduino
Estructuras de control en Arduino

Estructuras de control condicionales en Arduino

Las estructuras de control en Arduino, se utilizan en casos donde se requiere comprobar si cierta condición o condiciones se cumplen (Cierto o True) o no se cumplen (Falso o False). Generalmente, se programa de tal forma que si la condición se cumple se ejecuta cierto código identificado. Es decir, se coloca el código dentro de llaves de apertura y cierre ({, }). Si no se cumple la condición, no se ejecuta el código dentro de las llaves y se ejecuta el que se encuentre después de la llave de cierre o que se indique.

Bloque if

Generalmente, la sentencia condicional mas común es if e if/else. En el caso de usarse sólo if, se valida si la condición es verdadera y se ejecuta el código dentro de las llaves, de no cumplirse, simplemente no se ejecuta. La sintaxis es la siguiente:

if (condición) {
  instrucciones a ejecutar en caso de que sea verdadera
}

Si queremos que en el caso de que no se cumpla la condición se ejecute cierto código en especial, se agrega la sentencia else, como se muestra a continuación:

if (condición) {
  instrucciones a ejecutar en caso de que sea verdadera la condición
}
else {
  instrucciones a ejecutar en caso de que no sea verdadera la condición
}

Si se requieren evaluar diferentes condiciones y ejecutar código especifico para el caso en que se valida cada una, se recurre a else if, como se muestra a continuación:

if (condición1) {
  instrucciones a ejecutar en caso de que sea verdadera la condición1
}
else if (condición2) {
  instrucciones a ejecutar en caso de que no sea verdadera la condición2
}
.
.
.
else if (condiciónN) {
  instrucciones a ejecutar en caso de que no sea verdadera la condiciónN
}
else {
  instrucciones a ejecutar en caso de que no sea verdadera ninguna condición de las anteriores
}

Bloque switch

Otra sentencia de control que permite ejecutar código en particular, al cumplirse diversas condiciones es switch. Con la estructura else if, en cada condición se puede validar una o mas variables diferentes. En el caso de switch, se valida una variable y se indica que hacer en cada caso o valor que pueda tener. Su forma general es:

switch (variable) {
  case valor1:
    instrucciones que se ejecutan si la variable tiene el valor 1
    break;
  case valor2:
    instrucciones que se ejecutan si la variable tiene el valor 2
    break;
  default:
    instrucciones que se ejecutan si la variable no tuvo el valor de los case considerados
}

Primero, con la estructura de control switch, se indica la variable a analizar, en el caso anterior sería variable. En segundo lugar, frente a la palabra case, se indica el valor que se debe considerar en la valoración.

Si la variable tiene ese valor, se ejecutará el código que se encuentre después de los dos puntos. Si la variable no tiene el valor1, se analiza si tiene el valor2. De ser cierto se ejecuta el código después de los dos puntos del segundo caso. De no cumplirse se analizar si tiene el valor del tercer caso, con la misma lógica.

Si no se cumple ningún caso, se ejecutará el código que se encuentre después de la sentencia default. Se debe notar que al final de cada caso y antes de indicar el que sigue se inserta la instrucción break.

Esto debido a que si se cumplió un caso, no vale la pena analizar los casos restantes. La instrucción break genera que se salga de la estructura switch y se ejecute el código que se encuentra después de la lave de cierre.

En el caso de Arduino, sólo se puede usar la estructura de control switch con variables enteras, aunque otros lenguajes de programación si permiten tipos diferentes al entero. También, se recomienda no manejar mas de 10 casos.

Estructuras de control en Arduino Parte 2

Asimismo, estas sentencias ayudan a identificar fácilmente errores de lógica y en un futuro, facilitan el mantenimiento y/o actualización de un programa. Ahora ya puedes desarrollar programas y proyectos con mayor grado de complejidad.

Las estructuras de control nos permiten dar orden al programa y permiten, en el mediano o largo plazo, facilitar el mantenimiento o actualización de un programa. Pero, principalmente, son de gran utilidad en programas donde requerimos condicionar la ejecución de alguna parte del código. Asimismo, permiten especificar si alguna parte del programa se ejecutará una o varias ocasiones.

En esta segunda parte nos enfocaremos a aquellas estructuras de control que permiten indicar que cierto código se ejecutará un número específico de veces. También podremos especificar que se repita la ejecución de ese código si se cumple o no con una o varias condiciones.

Bloque for

La declaración o sentencia for permite ejecutar un grupo de instrucciones un número definido de veces. El código a repetir, como las sentencias ya vistas, se coloca dentro de llaves. No sin antes validar si ya se ejecutó dicho código el número de veces que se indicó.

Es decir, de forma general, se estructura de la siguiente forma:

for (inicialización; condición; expresión)
{
  instrucciones a ejecutar mientras no se cumpla condición;
}

En primer lugar, la inicialización se debe declarar y dar valor a una variable que servirá para contar el número de veces que se ha ejecutado el código dentro de las llaves.

Donde se indica condición se establece el número de veces que ejecutará el código dentro de las llaves, al cumplirse esa cifra se dejará de ejecutar. En la expresión se debe declara el incremento de la variable de conteo, cada que se ejecute el código. No se olvide incluir los ( ; ).

Finalmente, cabe señalar que la única forma de salir de un bucle for, sin que se cumpla la condición, es con la instrucción break;, al igual que otras estructuras de control similares.

estructuras de control

Bloque while

Este tipo de bucle o sentencia de control ejecuta código específico mientras se cumpla cierta condición. Es decir, valora si es verdadera la condición establecida y de cumplirse ejecuta el código dentro de sus llaves.

Si no se cumple la condición, ignora el código dentro de las llaves y ejecutara el que se encuentre inmediatamente después de la llave de cierre }. La forma de utilizar un bucle while es:

while (condición)
{
  código a ejecutarse mientras sea verdadera la condición;
}

Es importante señalar que en condición se valora si una variable de control es verdadera. Es decir, se analiza si tiene cierto valor. Generalmente, esa variable utilizada en la condición se ve afectada o cambia dentro de las llaves del bucle while. En el momento que se deja de cumplir la condición no se ejecuta el código dentro de las llaves.

Bloque do while

Esta sentencia o bucle es similar al bucle while. A diferencia de éste, primero ejecuta el código dentro de las llaves y después valida la condición de ejecución. Su sintaxis es la siguiente:

do
{
c  código a ejecutar mientras la condición sea verdadera;
}
while (condición);

Como se puede ver, en automático se entrará a las llaves y se ejecutará el código que ahí se encuentre. Posteriormente, se valida la condición. Si se cumple se ejecutará de nuevo el programa del bucle. De no cumplirse la condición, se ejecuta la línea de código que se encuentra en la siguiente línea donde se valora la condición.

Al igual que en otras estructuras de control, como el bucle while, generalmente la variable que se evalúa en la condición se modifica dentro de las llaves.

Operadores de comparación en estructuras de control en Arduino.

La publicación anterior y esta tienen en común que para trabajar con los bucles o sentencias de control se debe cumplir una condición.

Es decir, en todas las estructuras de control se realiza una operación de comparación con el fin de saber si una variable es igual a cierto valor o si está por encima o debajo de él. A continuación te comparto esos operadores de comparación:

Operador “igual”:
x == y
En el ejemplo se usa para saber si x tiene exactamente el mismo valor de y.

Operador “no es igual”:
x != y
En el ejemplo se usa para saber si x es diferente o no tiene el mismo valor de y.

Operador “menor que”:
x < y
En el ejemplo se usa para saber si el valor de x es menor al valor de y.

Operador “mayor que”:
x > y
En el ejemplo se usa para saber si el valor de x es mayor al valor de y.

Operador “menor o igual que”:
x <= y
En el ejemplo se usa para saber si el valor de x es igual o menor al valor de y.

Operador “mayor o igual que”:
x >= y
En el ejemplo se usa para saber si el valor de x es igual o mayor al valor de y.

Conclusiones sobre estructuras de control en Arduino.

Con esta segunda parte hemos visto las sentencias o estructuras de control. Nos permiten dar orden a un programa.

Asimismo, ayudarán a su mantenimiento o actualización. También, aprendimos que el ciclo for se usa cuando se desea ejecutar un código específico un número determinado de veces.

A diferencia de los bucles while o do while, estos ejecutarán el código mientras se cumpla la condición. Finalmente, aprendiste los operadores condicionales, usados en las estructuras o bucles de control vistos para saber si se ejecutarán o no.