5. Condicionals

5.2. Lògica condicional

Segons els nostres programes vagin guanyant en complexitat, el nostre codi haurà de prendre certes decisions i dur a terme accions que depenguin d’aquestes decisions. Per exemple, si estem programant un joc i el nombre de vides del jugador arriba a zero, el joc s’acaba. Una aplicació del clima també decideix quina imatge mostrar-nos en funció de les seves dades meteorològiques: si està clar ens mostrarà un sol, si està plovent ens mostrarà uns núvols i pluja. Totes aquestes decisions i les accions que s’han de prendre les podem plasmar en el nostre codi mitjançant la lògica condicional.

En el tema anterior, en estudiar els bucles for, vàrem començar a utilitzar una certa lògica condicional que determinava l’execució del cos de bucle o no. En el test que definíem en el bucle utilitzàvem els operadors de comparació per establir aquestes condicions.

Pensant en abstracte, o en pseudocodi, podríem plantejar aquesta lògica de la manera següent:

Si el personatge està viu {
    Continuar executant el joc
}

Si el personatge està mort {
    Acabar el joc
}

Per a aquesta mena de situacions on estem usant una lògica binària (viu-mort, veritable-fals) podem usar un tipus de variables que en JavaScript denominem booleanes. Aquestes variables només poden tenir dos valors: true o false. Continuem ampliant el nostre pseudocodi utilitzant una variable booleana per emmagatzemar l’estat del personatge:

let viu = true; // El personatge comença estant viu
let vides = 5; // El personatge té 5 vides
Si alive == true {
   Continuar executant el joc
}

Si alive == false {
    Acabar el joc
}

Ara podríem afegir una altra condició per establir quan el personatge passa d’estar viu a estar mort:

Si vides <= 0 {
    viu = false
}

D’aquesta manera tindríem ja la lògica del nostre joc. El personatge comença viu i amb cinc vides. Mentre estigui viu, el joc s’executa. Si el nombre de vides arriba a 0, el joc s’acaba.

Podríem fer un exemple senzill també per a l’aplicació del temps. En aquest cas, en lloc d’una variable booleana podríem tenir un nombre associat a cada tipus de temps (0 = assolellat, 1 = ennuvolat, 2 = plujós):

let weather = 1;
Si weather == 0 {
    dibujaSol();
}
Si weather == 1 {
    dibujaNubes();
}

Si weather == 2 {
    dibujaNubes();
    dibujaLluvia();
}

A continuació, veurem com implementar aquest tipus de lògica als nostres sketches.