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
if
per 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
bool3
per lo que avalua atrue
- S’avalua la expressió
bool1 and bool2
, que avalua afalse
, ja quebool1
ésfalse
- Es verifica si
bool1
ibool2
sóntrue
o el resultat del pas 2 (que avalua atrue
) éstrue
- En resum tindríem
False and True or True
, que avalua aTrue
, ja queand
té més prioritat queor
. - Finalment,
bool4
emmagatzemaTrue
.
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
bool3
per lo que avalua atrue
- S’avalua la expressió
bool2 or not bool3
, que avalua atrue
, ja quebool2
éstrue
- Es verifica si
bool1
i el resultat del pas 2 (que avalua atrue
) sóntrue
- En resum tindríem
False and True
, que avalua aFalse
. - Finalment,
bool4
emmagatzemaFalse
.
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 > 2
avalua atrue
val2 == 0
avalua atrue
true and true
avalua 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
a
emmagatzema7
- Variable
b
emmagatzema8
- Variable
- Utilitza una sentència
if
per 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
bool1
ibool2
. Quan seran iguals, quan seran diferents?not bool1 and not bool2
not (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 false
true or true
false and true
false and false
trueand not true
not false or not true
not false or true
-
Tradueix les següents afirmacions en un programa que mostri una elecció de roba. Utilitza una variable numèrica
temp
per a la temperatura i una variable booleanaplou
per 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).