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.

==!=<<=>>=
eqneltlegtge

Proveu aquest exemple:

say 1 == 1;
say 10 > 2;
say 3 <= 3;

say 'foo' ne 'bar';