Básicos de un desarrollador de software embebido C/C++

Básicos de un desarrollador de software embebido C/C++

tecnoingenia / junio 25, 2020

Qué tal, apreciados lectores, quisiera profundizar en algunos conceptos con ustedes a raíz de algo que he notado en experiencias recientes. El asunto es que existen algunos conceptos, ya sean palabras reservadas, métodos, estilos de programación, etc. Que pueden llegar a ser algo atemorizantes para quién apenas se inicia en este mundo de la programación de embebidos, pero que realmente nos facilitan la vida al momento desarrollar, depurar y escalar nuestro código.
Los proyectos que he publicado hasta el momento pueden llegar a ser algo simples en su código, en parte es porque son proyectos que realizo por hobby y esto a veces te lleva a buscar la manera más rápida en lugar de la más óptima.
Por lo anterior me he propuesto a dedicar un poco más de tiempo a estos desarrollos de manera que quien encuentre los proyectos pueda aprender no solo a resolver un problema sino que aprenda a resolverlo de manera profesional y sobre todo que personas que no estén familiarizadas con nuestro trabajo puedan entenderlo sin tener que quebrarse la cabeza en el intento.
Para esto me he propuesto publicar una serie de entradas en las que pretendo explicar de manera sencilla dichos conceptos, empezando con el siguiente.


OPERADOR TERNARIO

Este es un operador que puede llegar a ser muy útil para hacer nuestro código más limpio. Básicamente se trata de una sentencia «if» en un solo renglón. la sintaxis es:
(CONDICIÓN) ? VALOR_IF_TRUE : VALOR_IF_FALSE
Un ejemplo simple podría ser el siguiente, supongamos que tenemos un numero «x» del cual necesitamos saber si es par o impar, podríamos resolverlo de la siguiente manera.
int x = 3;
                 //if        then       else
String paridad = (x%2 == 0) ? "es par" : "es impar";

/*Lo anterior equivale a 

 if(x%2 == 0)
 {
   paridad = "es par";
 }
 else
 {
   paridad = "es impar";
 }

*/
Como ven podemos resumir una condición a una sola linea, ahora bien los valores de IF_TRUE o IF_FALSE pueden ser del tipo que necesitemos asignar.
O bien si quisieramos escribirlo directamente en el puerto serie:
Serial.print("El número es ");
Serial.println((x%2 == 0) ? "par" : "impar");
De esta manera eliminamos la necesidad de variables intermedias.
Otra propiedad de este operador es que se pueden anidar varias condiciones dentro de otra, prodríamos relacionarlo con varias condiciones «if» y «else if».
Un ejemplo práctico podría ser el siguiente, supongamos que tenemos una variable entera llamada «diaSemana» que guarda el día actual de la semana del 1 al 7 (domigo, lunes, etc.) y queremos imprimirlo pero de manera literal.

String diaLiteral = diaSemana == 1 ? "Domingo" :              //if
                    diaSemana == 2 ? "Lunes" :                //else if
                    diaSemana == 3 ? "Martes" :               //else if
                    diaSemana == 4 ? "Miércoles" :            //else if
                    diaSemana == 5 ? "Jueves" :               //else if
                    diaSemana == 6 ? "Viernes" :              //else if
                    diaSemana == 7 ? "Sábado" :               //else if
                                     "Día Invalido";          //else

Serial.print("El día es ");
Serial.println(diaLiteral);

En resumen un operador muy útil para nuestros desarrollos, pero como cualquier otro debemos saber identificar en que partes es conveniente utilizarlo y en cuales no, sobre todo si se van a anidar muchas condiciones, recuerden que un desarrollador pasa más tiempo leyendo código que escribiéndolo, hacer nuestro código fácil de interpretar debe ser una de nuestras principales preocupaciones ya que esto permitirá que nuestro trabajo sea escalable, además de una obligación con nuestro team y con nuestro futuro yo.

En la próxima entrada hablaremos sobre el terror de algunos que se inician en esto, los apuntadores…

Leave a Reply

TecnoIngenia | Blog personal -israel.barreras@tecnoingenia.com