Operadores lógicos e de comparação
Antes de introduzirmos os operadores correspondentes em Perl, aqui veremos o básico de álgebra Booleana.
Álgebra Booleana é uma variação da álgebra onde em vez de números temos valores de 'verdade' 0
e 1
,
onde 1
é chamado verdadeiro
e 0
é chamado falso
.
Como na álgebra tradicional há operadores como +
,
*
,
etc.
Os mais básicos são chamados NÃO
,
E
e OU
.
Como já te contamos,
na álgebra Booleana os valores só podem ser Verdadeiro
e Falso
.
Isso significa que eles não só podem ser usados em diferentes operações,
como o resultado dessas operações é sempre Verdadeiro
ou Falso
.
Vejamos como isso funciona.
Verdadeiro e Falso
Não existem valores reservados para Verdadeiro
e Falso
em Perl.
Em Perl,
Verdadeiro
é tudo que não é Falso
,
onde Falso
é tudo que é convertido para 0
: o próprio 0
,
''
(string vazia) e a palavra reservada undef
,
por exemplo,
que indica valores não definidos.
NÃO (NOT)
O operador NÃO
é um operador unário,
o que significa que ele opera em um único valor.
Em Perl,
o operador NÃO
é o símbolo !
.
A tabela-verdade do NÃO
:
x | !x |
0 | 1 |
1 | 0 |
Vejamos o resultado desse operador em diferentes valores.
No exemplo a seguir adicionamos 0
para valores Falsos
para que eles não sejam convertidos em uma string vazia pela função say
.
say !0; say !1 + 0; say !'string that converts to 1' + 0; say !'';
E (AND)
O operador E
é um operador binário, ou seja, que opera em dois valores. Em Perl, o operador E
é o símbolo &&
. A tabela-verdade do E
:
x | y | && |
0 | 0 | 0 |
1 | 0 | 0 |
0 | 1 | 0 |
1 | 1 | 1 |
Vejamos qual o resultado obtido ao usar esse operador em diferentes valores. No exemplo a seguir adicionamos 0
a valores Falsos
para que eles não sejam convertidos em strings vazias pela função say
.
say 1 && 1; say 0 && 1; say 0 && 0; say 'string' && 1;
OU (OR)
O operador OU
também é um operador binário, ou seja, também opera em dois valores. Em Perl, o operador OU
é o símbolo ||
. A tabela-verdade do OU
:
x | y | || |
0 | 0 | 0 |
1 | 0 | 1 |
0 | 1 | 1 |
1 | 1 | 1 |
Vejamos qual o resultado de usar esse operador em diferentes valores. No exemplo a seguir nós adicionamos 0
a valores Falsos
para que não sejam convertidos em strings vazias pela função say
.
say 1 || 1; say 0 || 1; say 0 || 0; say 'string' || 0;
Prioridade
Assim como na álgebra tradicional, na álgebra Booleana os operadores possuem diferentes prioridades, ou seja, alguns são avaliados antes de outros. A ordem dos operadores Booleanos é:
! && ||
Combinações
NÃO
, E
e OU
podem ser combinados em uma única expressão. Você também pode usar parênteses para mudar a ordem das avaliações:
say (1 || 0) && 1
Exercício
Corrija a declaração abaixo introduzindo parênteses para que a operação exiba a string vazia em vez de 1
.
say !1 || 1 && 1
Operadores de comparação
Operadores de comparação também retornam Verdadeiro
e Falso
, mas são usados com números e string. Como o Perl não diferencia números e strings, existem grupos de comparação diferentes para números e strings.
== | != | < | <= | > | >= |
eq | ne | lt | le | gt | ge |
Vamos tentar esse exemplo:
say 1 == 1; say 10 > 2; say 3 <= 3; say 'foo' ne 'bar';