"Saudações, amigo! Eu estava tão empolgado resolvendo problemas de lógica que nem notei você entrar. Aqui está uma para você: se os crocodilos voam, então a neve é branca. Há um crocodilo voador. Qual é a conclusão?"
"Hum... Então concluímos que a neve é branca?"
"Excelente! Você passou no teste de iniciação. Você está pronto para dominar o próximo tópico. Chama-se 'operadores lógicos'. E vamos começar com a lógica booleana. Instintivamente, você já sabe. Você é um robô, afinal . Só precisamos ajustar suas configurações para corresponder à linguagem Java."
"Lógica booleana? Recentemente me falaram sobre o tipo booleano..."
"Sim, há uma conexão direta aqui. Expressões booleanas só podem ser verdadeiras ou falsas. E acontece que esse tipo de lógica é sobre expressões que são verdadeiras ou falsas e combinações de tais expressões. Por exemplo, a expressão 18 < 25 é sempre verdadeiro e 7 < 5 é sempre falso. A expressão (i < 10) depende do valor de i. E se a expressão for avaliada, por exemplo, como verdadeira, então podemos pedir ao programa para fazer algo."
"Ahh, entendi. Expressões booleanas nos permitem não apenas tirar conclusões lógicas, mas também criar bifurcações em programas."
"Exatamente. O principal é aprender a escrevê-los. Por exemplo, em Java você não pode simplesmente escrever a expressão 18 < age <65
. Isso seria sintaticamente incorreto e o programa não compilaria.
"Mas você pode escrever assim:
(18 < age) AND (age < 65)
Claro, nós não usamos a palavra INGLÊS AND
. Em vez disso, você precisa de um operador booleano . Ou seja, 'E' é representado de forma diferente.
"Existem três operadores lógicos em Java: AND
(&&), OR
(||), NOT
(!).
A boa notícia é que você pode usar parênteses para construir expressões lógicas de qualquer complexidade.
A má notícia é que os desenvolvedores Java decidiram usar a notação da linguagem C em vez das palavras and
, or
e not
.
Observe a tela:
operador lógico | Expectativa | Realidade |
---|---|---|
AND (∧) |
and |
&& |
OR (∨) |
or |
|| |
NOT (¬) |
not |
! |
"Na verdade, não é tão ruim... Bem compacto. Quase os decorei."
"Bem, isso é maravilhoso. Aqui estão alguns exemplos de uso de operadores lógicos em Java:
Expressão | Interpretação | Explicação |
---|---|---|
(0 < a) && (a < 100) |
(0 < a) and (a < 100) |
(0 < a) AND (a < 100) |
(!a) && (!b) |
(not a) and (not b) |
(NOT a) AND (NOT b) |
!(!a || !b) |
not((not a) or (not b)) |
NOT((NOT a) OR (NOT b)) |
Exemplos de uso de operadores de comparação e variáveis booleanas
"Lembre-se, amigo, onde quer que você possa escrever uma expressão lógica, você pode escrever uma variável lógica."
"Que tal?"
"Quero dizer que você pode escrever expressões lógicas de maneiras diferentes. Por exemplo:
Código | Explicação |
---|---|
|
Se o valor da idade estiver entre 18 e 65 , a frase "Você pode trabalhar" será exibida. |
|
Criamos uma isYoung variável e movemos a primeira parte da expressão para ela. Simplesmente substituímos age >= 18 por age < 18 . |
|
Criamos uma variável isOld e movemos a segunda parte da expressão para ela. Além disso, age <= 65 foi substituído por age > 65 . |
"Esses três exemplos são equivalentes. Somente no segundo exemplo movemos parte da expressão da if
instrução para uma variável booleana separada ( isYoung
). No terceiro exemplo, movemos a segunda parte da expressão para uma segunda variável ( isOld
). A propósito, o valor padrão de uma variável booleana é false
."
"Vou me lembrar disso. Espero."
aritmética lógica
"Agora vamos passar brevemente pelas operações lógicas. Elas obedecem a regras muito simples e lógicas (como poderia ser diferente!).
"Primeiro, vamos ver como o OR
operador funciona. Também é conhecido como ||
ou disjunção .
Expressão | Resultado |
---|---|
true || true |
true |
true || false |
true |
false || true |
true |
false || false |
false |
"Você pode deduzir agora qual é o resultado da expressão a || b
com base na tabela?"
"Eu vejo!" O valor de uma expressão é true
se pelo menos um termo na expressão for true
. Se ambos forem false
, o resultado será false
.
"Está correto. Já que você é tão inteligente, dê outra olhada na tabela e imagine que false
é 0 e true
é 1. Quando você olha dessa maneira, o ||
comportamento do operador lembra algo da aritmética comum?"
"Hum... Bem, é um pouco como uma adição... Mas quando você faz uma adição, 1 + 1 não é igual a 1."
"Há um sentido em que é igual se estivermos trabalhando apenas com 0 e 1. Mas não se preocupe com isso agora. O importante é que você notou a semelhança entre a operação e a adição. Isso significa que você ||
não Não se surpreenda com o fato de que esta operação é freqüentemente chamada de 'soma lógica'.
"Entendi."
"Agora o AND
, também conhecido &&
como operador de conjunção , entra em cena.
Expressão | Resultado |
---|---|
true && true |
true |
true && false |
false |
false && true |
false |
false && false |
false |
"Pelo que entendi, o resultado de uma expressão é true
somente se ambos os valores que compõem a expressão são true
. Caso contrário, é sempre false
."
"Muito bem, amigo! Você está absorvendo tudo isso como uma esponja. Você vê outra semelhança com a aritmética?"
"Multiplicação!"
"Exatamente. Então aqui temos uma 'multiplicação lógica'".
"Em seguida, olhamos para o NOT
operador, também conhecido como !
, também conhecido como o inverso lógico .
Expressão | Resultado |
---|---|
!true |
false |
!false |
true |
"Bem, tudo é bem simples aqui. O operador muda true
para false
e vice-versa."
"Exatamente. Aqui estão algumas expressões úteis para você:"
Expressão | Resultado |
---|---|
m && !m |
false |
m || !m |
true |
!(a && b) |
!a || !b |
!(a || b) |
!a && !b |
GO TO FULL VERSION