Skip to content

El tipus booleà ​

En aquesta llicó es presenta el tipus Booleà, quin és el seu ús, quins valors poden tenir els booleans i quines operacions se'ls pot aplicar. Al final, també considerem algunes qüestions d'estíl.

Concepte ​

Segurament, les preguntes més senzilles de contestar són les que només admeten dues respostes: sí o no (és clar que les preguntes que només tenen una resposta encara són més senzilles, però no són gens interessants). Per exemple, la resposta de "La Terra és un planeta?" és sí, i la resposta de "Les balenes són peixos?" és "no" (són mamífers!). Per a la pregunta "L'Anna està embarassada?", no sabem quina és la resposta, però en un moment donat serà sí o serà no, no pot ser "una mica". En canvi, una pregunta com "Quina hora és?" no té com a resposta sí o no.

Igualment, les afirmacions poden ser certes o Falses. Per exemple, l'afirmació "Les pomes són fruites." és certa, però l'afirmació "París és la capital d'Andorra." és falsa. A més, les afirmacions es poden combinar en afirmacions compostes com ara "Les pomes són fruites o París és la capital d'Andorra.".

En programació, és útil disposar de valors que indiquin si la resposta a una pregunta és sí o no, i poder combinar aquests valors amb operadors lògics. Per això, s'utilitza l'Àlgebra de Boole[W]. En l'Algebra de Boole només hi ha dos valors, fals i cert, que es poden combinar amb operadors de negació (no), de disjunció (o) i de conjunció (i).

Valors i operacions ​

En Python, els valors lògics es representen amb el tipus bool (de booleans). Els valors fals i cert es representen amb els literals False i True. Vigileu la majúcula.

Hi ha una operació unària (sobre un sol booleà):

  • la negació, amb l'operador not.

També hi ha dues operacions binàries (és a dir, amb dos operands) fonamentals:

  • la disjunció, amb l'operador or i
  • la conjunció, amb l'operador and.

Les taules de veritat següents mostren, per a cada operació, el resultat de cada possible combinació dels seus operands.

Taula de veritat de la negació:

anot a
FalseTrue
TrueFalse

Taula de veritat de la disjunció:

aba or b
FalseFalseFalse
FalseTrueTrue
TrueFalseTrue
TrueTrueTrue

Taula de veritat de la conjunció:

aba and b
FalseFalseFalse
FalseTrueFalse
TrueFalseFalse
TrueTrueTrue

Així, la disjunció de dos booleans només és falsa si ambdós són falsos, i la conjunció de dos booleans només és certa si ambdós són certs. I, és clar, negar un booleà vol dir triar l'altre.

També es pot comprovar si dos booleans són iguals o si són diferents amb els operadors == i !=. S'utilitzen molt rarament.

Usos ​

Les condicions de les instruccions condicionals i iteratives sempre són booleanes. Per exemple, quan s'escriu

python
if temperatura <= 0: ...  # gela

l'expressió temperatura <= 0 és de tipus booleà. En efecte, tal com ja hem explicat, els operadors relacionals (==, !=, <=, >=, < i >) retornen un valor booleà. Això s'aprecia més clarament quan s'uneixen diverses condicions:

python
if temperatura <= 0 and llum == 0: ...  # gela i és fosc

A més, si cal podem emmagatzemar condicions en variables de tipus booleà. Per exemple, amb

python
gela = temperatura <= 0;

es crea una nova variable booleana anomenada gela, amb valor True o False segons si valor de temperatura és negatiu o zero o bé estrictament positiu. Podeu comprovar que el tipus de gela és booleà avaluant type(gela) a l'intèrpret. Igualment, es pot crear una variable booleana per guardar si és fosc o no, i es poden combinar entre elles:

python
gela = temperatura <= 0
es_fosc = llum == 0
if gela and es_fosc:
    ...

I, evidentment, també es poden crear més variables booleanes fent ús dels seus operadors:

python
gela = temperatura <= 0
es_fosc = llum == 0
anar_amb_compte = gela and es_fosc

Lleis de De Morgan ​

Les lleis de De Morgan son un parell de transformacions lògiques que són essencials en informàtica. Escrita en Python, la primera llei estableix que not (a or b) és equivalent a (not a) and (not b). La segona llei diu que not (a and b) és equivalent a (not a) or (not b). La demostració d'ambdues lleis és ben senzilla utilitzant taules de veritat.

Així, podem veure que el contrari de "gela i és fosc" és "no gela o no és fosc". Compte: no és pas "no gela i no és fosc", el qual és un error molt freqüent.

Per tant, quan tenim un bucle com ara

python
while gela and es_fosc: ...

sabem que sortirem del bucle quan almenys una de les variables gela i es_fosc sigui falsa.

Estil ​

Habitualment, comparar un booleà directament amb True o amb False es considera mal estil. Per exemple, si trobat és un booleà, el fragment

python
if trobat == True: ...

es millor rescriure'l aixi:

python
if trobat: ...

Similarment,

python
if trobat == False: ...

és pitjor estil que

python
if not trobat: ...

També, és confús usar identificadors negats per a les variables booleanes. Per exemple, és molt més senzill entendre la condició gela que not no_gela.

Utilitzar condicionals per inicialitzar booleans revela ser un noob de la programació sense coneixement dels booleans. Us hauríeu d'acostumar a no escriure res com

python
if temperatura <= 0:         # 💩
    gela = True
else:
    gela = False

i, en canvi, escriure-ho amb bon estil, així:

python
gela = temperatura <= 0      # 💜

Finalment, si voleu evitar la còlera dels déus de la programació, no escriviu mai bestieses com ara fals = True 🤣.

Jordi Petit, Salvador Roura
Lliçons.jutge.org
© Universitat Politècnica de Catalunya, 2026

lliçons.jutge.org