5. Condicionales

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.