Operadors lògics i de comparació
Abans d'introduir els corresponents operadors de Perl, veiem els conceptes bàsics de l'àlgebra booleana.
L'àlgebra booleana és una variant de l'àlgebra on en comptes de números hi ha els valors 0
i 1
,
on 1
s'anomena cert
i 0
s'anomena fals
.
Igual que a l'àlgebra normal hi ha operacions com +
,
*
,
etc,
les operacions bàsiques a l'àlgebra booleana s'anomenen NOT
,
AND
i OR
.
Com ja sabeu,
a l'àlgebra booleana només tenim els valors cert
i fals
.
Això vol dir que no només s'utilitzen a les diferents operacions,
sinó que el resultat d'aquestes operacions és o bé cert
o bé fals
.
Anem a veure-les d'una en una.
cert i fals
No hi ha valors cert
i fals
a Perl.
A Perl cert
és tot allò que no és fals
,
on fals
és tot allò que converteix a 0
.
Per exemple: el mateix 0
,
''
(cadena buida) o undef
.
NOT
L'operador NOT
és un operador unari,
el que significa que opera sobre un únic valor.
A Perl,
l'operador NOT
és !
.
La taula de la veritat de NOT
és:
x | !x |
0 | 1 |
1 | 0 |
Veiem quins son els resultats d'utilitzar aquest operador sobre diferents valors.
Al següent exemple sumem 0
als valors fals
ja que sinó la funció say
imprimiria la cadena buida.
say !0; say !1 + 0; say !'cadena que es converteix en 1' + 0; say !'';
AND
L'operador AND
és un operador binari, el que significa que opera sobre dos valors. A Perl, l'operador AND
és &&
. La taula de la veritat d'AND
és:
x | y | && |
0 | 0 | 0 |
1 | 0 | 0 |
0 | 1 | 0 |
1 | 1 | 1 |
Veiem quins son els resultats d'utilitzar aquest operador sobre diferents valors.
say 1 && 1; say 0 && 1; say 0 && 0; say 'cadena' && 1;
OR
L'operador OR
és un operador binari, el que significa que opera sobre dos valors. A Perl l'operador OR
és ||
. La taula de la veritat d'OR
és:
x | y | || |
0 | 0 | 0 |
1 | 0 | 1 |
0 | 1 | 1 |
1 | 1 | 1 |
Veiem quins son els resultats d'utilitzar aquest operador sobre diferents valors.
say 1 || 1; say 0 || 1; say 0 || 0; say 'cadena' || 0;
Prioritat
Com a l'àlgebra normal, els operadors de l'àlgebra boolean tenen la seva prioritat, on diferents operadors s'avaluen abans que altres. L'ordre d'avaluació dels operadors booleans és el següent:
! && ||
Combinacions
NOT
, AND
i OR
es poden combinar. També podeu utilitzar parèntesis per canviar l'ordre del flux lògic:
say (1 || 0) && 1
Exercici
Corregiu la següent sentència introduint parèntesis per tal que imprimeixi una cadena buida en comptes de 1
.
say !1 || 1 && 1
Operadors de comparació
Els operadors de comparació també retornen valors cert
i fals
, però s'utilitzen amb números i cadenes. Com que Perl no distingeix entre números i cadenes, hi ha dos grups diferents d'operadors de comparació per a ells.
== | != | < | <= | > | >= |
eq | ne | lt | le | gt | ge |
Proveu aquest exemple:
say 1 == 1; say 10 > 2; say 3 <= 3; say 'foo' ne 'bar';