Lògica

Just com en Blocs, fer servir el components lògics en Python permet que els jocs reaccionen a l’entrada de l’usuari i a l’estat del joc. Vejam com fer-ho en Python.
Concepte: Variables booleanes
En blocs podíem guardar el valor lògic en una variable, per exemple:

en Python podem fer el mateix amb variables booleanes:
condicio = True
o bé, si volem especificar el tipus de la variable:
condicio: bool = True
Concepte: Expressions if i else

Els blocs if i else eren alguns dels més importants per programar en blocs i les expressions equivalents segueixen sent igual d’importants en Python.
En Python això es pot expressar com:
if condicio:
print("La condició és vertadera")
i
if condicio:
print("La condició és vertadera")
else:
print("La condició és falsa")
En aquests exemples, condicio és un valor booleà (una expressió que avalua a true o false). Com hem vist més maunt, en Blocs, aquestes sovint prenen la forma d’hexàgons allargats:

Concepte: Comparacions
En Blocs, hi havia moltes maneres de comparar dos nombres. En Python, aquestes mateixes comparacions estan disponibles.
| Nom | Símbol | Python |
|---|---|---|
| Igual a | = | value1 == value2 |
| Distint de | ≠ | value1 != value2 |
| Menor que | < | value1 < value2 |
| Menor o igual que | ≤ | value1 <= value2 |
| Major que | > | value1 > value2 |
| Major o igual que | ≥ | value1 >= value2 |
Exemple #1: Comparacions Numèriques
- Repassa els dos exemples a continuació
- Identifica quina comparació s’està fent en el
if - Abans d’executar el codi, identifica què s’imprimirà amb
console.log(si n’hi ha) - Executa els exemples i verifica les teves respostes al pas 3
Exemple #1a: Menor que
num = -5
if num < 0:
print("num és negatiu!")
Exemple #1b: Igual a
num = 1
if num == 1:
print("num és u!")
else:
print("num no és u!")
Observa com el codi anterior utilitza la indentació per separar el codi contingut dins de cada bloc lògic. Això es fa per dues raons principals:
Llegibilitat
Qualsevol persona pot mirar el codi i descifrar fàcilment què forma part de la sentència if i què no, fins i tot si mai ho han vist abans. La indentació proporciona una distinció visual per a on s’executaran diferents sentències.
Funcionalitat
Python utilitza la indentació per determinar què forma part de la sentència if i què no. Això significa que la indentació incorrecta pot provocar errors en el codi.
Aixó és una de les característiques més importants de Python, i és una de les raons per les quals molts programadors el troben fàcil d’aprendre i llegir.
num = 1
if num > 5:
print("num és gran!")
print("això significa que num no és petit")
print("i num no és mitjà")
else:
print("num no és gran!")
print("això significa que num és petit")
print("o num és mitjà")
Tasca #1: Una Comparació Simple
- Crea una variable que emmagatzemi un nombre
- Utilitza una sentència
ifper comprovar si el nombre és menor que 2 - Si la condició és vertadera (en la secció
if), imprimeix “Hola!” a la consola - Si la condició és falsa (en la secció
else), imprimeix “Adéu!” a la consola
Concepte: Operadors Booleans
Els operadors booleans permeten manipular valors booleans.
| Nom | Ordre | Python |
|---|---|---|
| No | 1er | not bool1 |
| I | 2n | bool1 and bool2 |
| O | 3er | bool1 or bool2 |
Just com en matemàtiques, l’ordre de les operacions és important quan hi ha múltiples operadors usant-se alhora. Veurem com aquest ordre pot afectar el resultat d’una expressió.
Exemple #2: Ordre dels Operadors Booleans
Avalua el valor emmagatzemat en la variable bool4 donat el següent codi:
bool1 = False
bool2 = True
bool3 = False
bool4 = bool1 and bool2 or not bool3
Seguint l’ordre de les operacions, el valor assignat a bool4 s’avalua de la següent manera:
- Es nega
bool3per lo que avalua atrue - S’avalua la expressió
bool1 and bool2, que avalua afalse, ja quebool1ésfalse - Es verifica si
bool1ibool2sóntrueo el resultat del pas 2 (que avalua atrue) éstrue - En resum tindríem
False and True or True, que avalua aTrue, ja queandté més prioritat queor. - Finalment,
bool4emmagatzemaTrue.
Aquest resultat pot ser canviat afegint parèntesis:
bool4 = bool1 and (bool2 or not bool3)
Seguint l’ordre de les operacions, el valor assignat a bool4 s’avalua de la següent manera:
- Es nega
bool3per lo que avalua atrue - S’avalua la expressió
bool2 or not bool3, que avalua atrue, ja quebool2éstrue - Es verifica si
bool1i el resultat del pas 2 (que avalua atrue) sóntrue - En resum tindríem
False and True, que avalua aFalse. - Finalment,
bool4emmagatzemaFalse.
Exemple #3: Comparacions Numèriques
- Repassa els dos exemples a continuació
- Identifica quines comparacions s’estan fent en el
if - Abans d’executar el codi, identifica què s’imprimirà amb
console.log(si n’hi ha) - Executa els exemples i verifica les teves respostes al pas 3
Exemple #3a: Major que i Igual a
val1 = 5
val2 = 0
if val1 > 2 and val2 == 0:
print("La condició és vertadera")
Aquesta expressió pot ser avaluada a mà dividint-la en subproblemes més petits. Vejam com seria el procés:
val1 > 2avalua atrueval2 == 0avalua atruetrue and trueavalua atrue- La condició és vertadera, per tant, el missatge s’imprimeix a la consola.
Exemple #3b: Major que o Igual a
num = 5
bool = True
if num > 2 or bool:
print("La condició és vertadera")
Tasca #2: Múltiples Comparacions!
- Crea dues variables per emmagatzemar dos nombres:
- Variable
aemmagatzema7 - Variable
bemmagatzema8
- Variable
- Utilitza una sentència
ifper realitzar dues comparacions sobre aquestes variables:- Primer, comprova que
aés menor que 4 - Després, comprova que
bés distint de 9 - Combina aquestes dues afirmacions utilitzant
or
- Primer, comprova que
- Si la condició és
true, imprimeix “Ho has aconseguit!” a la consola - Si la condició és
false, imprimeix “Intenta-ho de nou!” a la consola
Avaluació
Crea un document i:
-
Respon a les següents preguntes:
- Explica per què les comparacions lògiques permeten que els jocs siguin més reactius a diferents condicions?
- En Python, com pot canviar-se l’ordre en què s’avalua una expressió?
-
Repte: considera les següents expressions per a diferents valors de
bool1ibool2. Quan seran iguals, quan seran diferents?not bool1 and not bool2not (bool1 or bool2)
-
Resol els següents exercicis curts i pega el codi en el document:
-
Quin serà el valor que es mostrarà a la consola si
bool1éstrue? I sibool1ésfalse?if bool1: print("Açó") else: print("Allò")- Completa la següent taula en el resultat de les expressions:
Expressiò Resultat true or falsetrue or truefalse and truefalse and falsetrueand not truenot false or not truenot false or true -
Tradueix les següents afirmacions en un programa que mostri una elecció de roba. Utilitza una variable numèrica
tempper a la temperatura i una variable booleanaplouper a si està plovent o no.- Si la temperatura és inferior a 30 graus, llavors em poso el meu abric d’hivern. En cas contrari, si està plovent, em poso la meva jaqueta impermeable. En tots els altres casos, simplement em posaré una samarreta.
-
Puja el document a l’aula virtual (tasca 2.2.1).