Para qué sirven los condicionales ternarios y como usarlos correctamente, si eres nuevo en desarrollo esta información te será de mucha ayuda, para escribir código limpio y fácil de mantener en el tiempo.
Una de las primeras cosas que aprendemos en desarrollo es el uso de las condicionales, ya que son la forma de dirigir el flujo de nuestra aplicación, así que vamos por el principio y entendamos que son las condicionales.
¿Qué son las condicionales?
Una condicional en programación es la forma que tenemos para dirigir basado en una regla el flujo de la aplicación y de esta manera tomar decisiones con base a los datos que estamos procesando, en diagramas de flujo una condición se representa con el rombo con una entrada hacia la “condición” y dos salidas, una hacia el evento verdadero y otra hacia el evento falso. Por lo que en términos sencillos es una forma de hacer una pregunta en el flujo de la programación y tomar una decisión basado en su respuesta.
En este ejemplo tenemos una variable “dinero” con valor de 700 USD, y nuestra condición es simple, hacemos una pregunta que retornara un valor verdadero o falso (true or false), en este caso ¿Me puedo comprar la nueva switch que vale 300USD? si la respuesta es afirmativa “true”, entonces nos compramos la consola, de lo contrario tendremos que conformarnos con emuladores. Este mismo ejemplo del lado del código se vería así:
let dinero = 700; // variable donde almacenamos el dinero que tenemos
if (dinero >= 300)
{ // condición que pregunta si el dinero es mayor o igual a 300
console.log('Me compro la switch'); // si la condición es verdadera
}
else
{
console.log('Me conformo con emuladores'); // si la condición es falsa
}
// resultado: Me compro la switch
Como se ve en el ejemplo anterior la variable dinero almacena la cantidad de dinero que tenemos y usando la palabra reservada if iniciamos la condición, inmediatamente después del if y dentro de paréntesis ponemos la condición que se va a evaluar, en este caso dinero es mayor o igual que 300, y de nuevo remarcó que estas condiciones serán evaluadas como valores booleanos es decir que su resultado será siempre verdadero o falso. Así que como nuestro dinero es 700 en este caso la situación daría como resultado verdadero (700 es mayor o igual que 300) y el resultado sería positivo. Luego de la condición tenemos un bloque de ejecución encerrado en llaves, ahí tendremos todo el código que se ejecutará si la condición resulta positiva, luego tendremos la palabra reservada else seguido de otro bloque encerrado en llaves que contendrá todo el código que se ejecutará si el resultado de la condición es negativa.
¿Es necesario el else?
No, el else no es necesario, en muchos casos sólo necesitamos ejecutar una acción si la condición es verdadera y no necesitamos hacer nada si la condición es falsa, en esos casos podemos omitir el else y solo dejar el bloque de código que se ejecutará si la condición es verdadera. En el siguiente caso se evalúa si el dinero es mayor o igual a 300 y si es verdadero se ejecuta el código, si es falso no se ejecuta nada.
let dinero = 700; // variable donde almacenamos el dinero que tenemos
if (dinero >= 300) // condición que pregunta si el dinero es mayor o igual a 300
{
console.log('Me compro la switch'); // si la condición es verdadera
}
// resultado: Me compro la switch
Agrupar y concatenar condiciones
En muchos casos necesitamos evaluar más de una condición, para eso usamos los operadores lógicos, que nos permiten agrupar y concatenar condiciones, los operadores lógicos más comunes son el AND (&&) y el OR (||), en el siguiente ejemplo se evalúa si el dinero es mayor o igual a 300 y también si el tiempo para jugar es mayor a 5 horas, si ambas condiciones son verdaderas se ejecuta el código.
let dinero = 700; // variable donde almacenamos el dinero que tenemos
let tiempo_para_jugar = 10; // variable donde almacenamos el tiempo que tenemos para jugar
if (dinero >= 300 && tiempo_para_jugar > 5) // condición que pregunta si el dinero es mayor o igual a 300 y el tiempo para jugar es mayor a 5
{
console.log('Me compro la switch'); // si la condición es verdadera
}
{
console.log('Me compro la switch'); // si la condición es verdadera
}
// resultado: Me compro la switch
Pero aquí entra algo que según lo que he visto representa algo confuso para muchas personas aprendiendo a programar y es el conocer de manera lógica el resultado de operaciones AND y OR para saber aplicarlas correctamente. Aunque a mi me las enseñaron con las tablas de verdad y es lo que siguen usando en la universidad, creo que es más fácil de entender con ejemplos prácticos,y con una reducción a operaciones matemáticas simples que me ayudan a visualizar un resultado.
Tablas de verdad
A | B | A AND B | A OR B |
---|---|---|---|
0 | 0 | 0 | 0 |
0 | 1 | 0 | 1 |
1 | 0 | 0 | 1 |
1 | 1 | 1 | 1 |
Esta tabla de verdad que es la que nos enseñan en la universidad o incluso en el colegio a todos los que estudiamos informática, nos muestra el resultado de las operaciones AND y OR, para este caso A sera nuestra primera condición (dinero >= 300) y B será nuestra segunda condición (tiempo_para_jugar > 5), si ambas condiciones son verdaderas el resultado de la operación AND sera verdadero, si alguna de las dos condiciones es verdadera el resultado de la operación OR será verdadero. podemos ver el valor 0 como falso y el valor 1 como verdadero. Pero entonces para visualizarlo más fácil y no tener que aprenderte las tablas de la verdad puedes pensar en la operación AND como una multiplicación y la operación OR como una suma y tendriamos que si A es verdadero (1) y B también es verdadero (1) el resultado de la operación AND es 11=1 pero si una de las dos es falsa el resultado sin importar el orden será 0 (10=0 y 0*1=0) pero por otro lado si la operación no es AND sino OR lo vemos como una suma y si A es verdadero (1) y B también es verdadero (1) el resultado de la operación OR es 1+1=1 pero si una de las dos es falsa el resultado sin importar el orden sera 1 (1+0=1 y 0+1=1) y solo en el caso de que ambas sean cero el resultado será 0 (0+0=0). Hay un mundo completo en todo lo relacionado a operadores lógicos y condicionales, pero espero desarrollarlo mejor en otro post.
Condicionales ternarios
Los condicionales ternarios son una forma abreviada de escribir una condición, y nos permiten obviar mucho código redundante y ejecutar una condición de manera más limpia y directa. La sintaxis de un condicional ternario es la siguiente:
condicion ? expresion1 : expresion2
En este caso si la condición es verdadera se ejecutará la expresión 1, si la condición es falsa se ejecutará la expresión 2, el ejemplo anterior se vería de la siguiente manera usando un condicional ternario:
let dinero = 700; // variable donde almacenamos el dinero que tenemos
console.log(dinero >= 300 ? 'Me compro la switch' : 'Me conformo con emuladores'); // condicional ternario
// resultado: Me compro la switch
De igual forma que con el if tradicional podemos concatenar y agrupar condiciones usando los operadores lógicos, el siguiente ejemplo evalúa si el dinero es mayor o igual a 300 y también si el tiempo para jugar es mayor a 5 horas, si ambas condiciones son verdaderas se ejecuta el código.
let dinero = 700; // variable donde almacenamos el dinero que tenemos
let tiempo_para_jugar = 10; // variable donde almacenamos el tiempo que tenemos para jugar
console.log(dinero >= 300 && tiempo_para_jugar > 5 ? 'Me compro la switch' : 'Me conformo con emuladores'); // condicional ternario
// resultado: Me compro la switch
Las condicionales ternarias además de ser más limpias y directas, nos permiten escribir código más legible y fácil de mantener, y aunque no es necesario usarlas, es una buena práctica usarlas en casos donde la condición es simple y el resultado es directo, en casos donde la condición es más compleja o el resultado es más extenso es mejor usar el if tradicional. También las usamos mucho para asignar valores a variables basados en una condición, por ejemplo:
let dinero = 700; // variable donde almacenamos el dinero que tenemos
let consola = dinero >= 300 ? 'Me compro la switch' : 'Me conformo con emuladores'; // condicional ternario
console.log(consola); // resultado: Me compro la switch
En este caso al evaluar la condicional ternaria el valor de la variable consola será el resultado de la condición, si es verdadera será “Me compro la switch” y si es falsa será “Me conformo con emuladores”.
Debes tener en cuenta que en las condicionales ternarias no es necesario usar llaves para encerrar el bloque de código que se ejecutará, ya que solo se ejecutará una expresión y no un bloque de código, por lo que es una buena práctica usarlas en casos donde la condición es simple y el resultado es directo. Y adicional a esto puedes ver que una condicional ternaria siempre utiliza un else que es la expresión que se encuentra al final.
Conclusión
Esta ha sido una aproximación a las condicionales y se que aun se me quedan muchas cosas por explicar, pero espero que esta información te sea de ayuda si estás comenzando en el mundo de la programación, y si ya tienes tiempo en esto espero que te haya refrescado la memoria. Ya empezaré a crear un artículo con las cosas que se me quedan por fuera como todos los operadores lógicos y como pueden ser usados para asignar valores de una manera más simple que una condicional ternaria, y como siempre si tienes alguna duda o sugerencia no dudes en dejarme un comentario.