[Arduino] Referencia: Condicionales
Condicional abreviado o ternario
condition ? true : false; A==5 ? dispara(): espera(); // Si A vale 5 se ejecuta dispara(), si no espera()
Ventajas e inconvenientes del operador condicional ternario. En la siguiente tabla resumimos las ventajas e inconvenientes del operador condicional ternario comparándolo con el if tradicional.
Condicional ternario | If tradicional |
---|---|
Permite la escritura compacta, permitiendo ahorrar escritura de código. | Obliga a escribir más sentencias para conseguir el mismo resultado. |
Resulta más difícil de leer, entender y depurar | Resulta más fácil de leer, entender y depurar |
No todos los programadores lo usan, algunos ni siquiera lo conocen. | Todos los programadores lo usan y lo conocen. |
Se admite en la sintaxis de los lenguajes en lugares donde no se admite la sentencia if | No es válido en ciertas ubicaciones donde sólo se admiten expresiones, pero puede hacerse la evaluación antes del punto donde sea necesario el condicional. |
Criticado por algunos expertos, adorado por otros | Uso y aceptación cuasi-universal |
Condicional if
if (variable < 10) { // accion A, se ejecuta si variable es menor de 10 } if (variable < 10) { // accion A, se ejecuta si variable es menor de 10 } else { // accion B, se ejecuta si variable es mayor o igual a 10 } if (variable < 10) { // accion A, se ejecuta si variable es menor de 10 } else if (variable >= 100) { // accion B, se ejecuta si variable es mayor o igual a 100 } else { // accion C, se ejecuta si variable es mayor o igual a 10 y menor de 100 }
Condicional switch/case of
switch (variable) { case 1: // accion A, se ejecuta si variable vale 1 break; case 2: // accion B, se ejecuta si variable vale 2 break; default: // caso por defecto (opcional), se ejecuta en cualquier otro caso }
switch (variable) { case 1: case 2: // accion A, se ejecuta si variable vale 1 o 2 break; case 3: // accion B, se ejecuta si variable vale 3 break; default: // caso por defecto (opcional), se ejecuta en cualquier otro caso }