5.2. Lógica condicional
Conforme nuestros programas vayan ganando en complejidad, nuestro código tendrá que tomar ciertas decisiones y realizar acciones que dependan de estas decisiones. Por ejemplo, si estamos programando un juego y el número de vidas del jugador llega a cero, el juego termina. Una aplicación del clima también decide qué imagen mostrarnos en función de sus datos meteorológicos: si está despejado nos mostrará un sol, si está lloviendo nos mostrará unas nubes y lluvia. Todas estas decisiones y las acciones que tomar las podemos plasmar en nuestro código mediante la lógica condicional.
En el tema anterior, al estudiar los bucles for, empezamos a utilizar cierta lógica condicional que determinaba la ejecución del cuerpo de bucle o no. En el test que definíamos en el bucle utilizábamos los operadores de comparación para establecer estas condiciones.
Pensando en abstracto, o en pseudocódigo, podríamos plantear esta lógica de la siguiente manera:
Si el personaje está vivo { Seguir ejecutando el juego } Si el personaje está muerto { Terminar el juego }
Para este tipo de situaciones donde estamos usando una lógica binaria (vivo-muerto, verdadero-falso) podemos usar un tipo de variables que en Javascript denominamos booleanas. Estas variables solo pueden tener dos valores: true o false. Sigamos ampliando nuestro pseudocódigo utilizando una variable booleana para almacenar el estado del personaje:
let vivo = true; // El personaje empieza estando vivo let vidas = 5; // El personaje tiene 5 vidas Si alive == true { Seguir ejecutando el juego } Si alive == false { Terminar el juego }
Ahora podríamos añadir otra condición para establecer cuándo el personaje pasa de estar vivo a estar muerto:
Si vidas <= 0 { vivo = false }
De esta manera tendríamos ya la lógica de nuestro juego. El personaje empieza vivo y con cinco vidas. Mientras esté vivo, el juego se ejecuta. Si el número de vidas llega a 0, el juego se termina.
Podríamos hacer un ejemplo sencillo también para la aplicación del tiempo. En este caso, en lugar de una variable booleana podríamos tener un número asociado a cada tipo de tiempo (0 = soleado, 1 = nublado, 2 = lluvioso):
let weather = 1; Si weather == 0 { dibujaSol(); } Si weather == 1 { dibujaNubes(); } Si weather == 2 { dibujaNubes(); dibujaLluvia(); }
A continuación, veremos cómo implementar este tipo de lógica en nuestros sketches.