0

Tudo que você precisa saber sobre Lógica Booleana na programação

#Lógica de Programação
Luis Polippo
Luis Polippo

Já é conhecido que, para qualquer coisa que se vá aprender é necessário ter uma boa base. A base da programação é o Algoritmo e a Lógica de Programação. Sabendo bem esses dois assuntos, que sempre andam juntos, a aprendizagem de qualquer linguagem se torna muito mais fácil.

Dito isso, uma parte muito importante do estudo de Algoritmo é a lógica Booleana. Muito usada na programação e, pelo que vejo, uma dificuldade para muitos que estão começando a aprender. Decidi então escrever esse artigo, da forma mais simples possível, para tentar facilitar para os iniciantes na área. Espero que seja útil.

Peço desculpas pelas tabelas no artigo. Fiz o melhor que pude.

 

Afinal O Que é Lógica Booleana


A Álgebra Booleana, também chamada de Lógica Booleana, é uma forma de representar a lógica em equações matemáticas. Falando assim parece algo complexo mas na prática é bem simples.

Imagine a seguinte frase: 

Está Chovendo.

Essa frase é nossa variável. Ela pode ser verdadeira ou ser falsa dependendo do clima.

As variáveis booleanas podem ter o valor verdadeiro ou falso ou ,em linguagem de máquina, 1 e 0 respectivamente.

Os valores Verdadeiro e Falso são conhecidos como valores booleanos ou valores lógicos.

Mas também podemos fazer “contas” com esses valores!


Equações Booleanas


Equações Booleanas são como se fossem contas matemáticas com esses valores lógicos. Mas ao invés de usarmos os operadores de adição, subtração, multiplicação, etc. Nós usamos operadores próprios para as equações booleanas.

Existem 7 operadores lógicos: E(AND), OU(OR), NÃO(NOT), NÃO-E(NAND), NÃO-OU(NOR), OU-EXCLUSIVO(XOR) e NÃO-OU-EXCLUSIVO(XNOR).

Coloquei os nomes em português e entre parênteses os nomes em inglês. Porém a partir de agora usarei somente os nomes em inglês por serem os mais usados.

Vamos ver cada operador.


AND

AND é um dos operadores mais usados.

Cada operador possui uma Tabela-Verdade. Esta tabela mostra os resultados que teremos com cada possibilidade de variável lógica.

Tabela Verdade de AND


A | B | A and B

----------------|----------------|-----------------

Verdadeiro | Verdadeiro | Verdadeiro

Verdadeiro | Falso | Falso

Falso | Verdadeiro | Falso

Falso | Falso | Falso


Nesta tabela a coluna A representa a primeira variável, a coluna B representa e segunda variável e a coluna A and B representa o resultado.

Podemos observar que no caso do operador AND só teremos uma saída Verdadeira quando todas as entradas forem Verdadeiras.

Vamos entender com um exemplo:


HOJE CHOVEU E(AND) ONTEM CHOVEU?


A pergunta acima só será positiva(Verdadeira) se Hoje tiver chovido e Ontem tiver chovido. Em qualquer outra possibilidade a frase será negativa(Falsa).


OR

OR é também um dos operadores mais usados junto com o AND.

Como veremos na tabela verdade, o OR é como se fosse o contrário do AND. Somente terá o resultado Falso se todas as variáveis de entrada forem Falsas


A | B | A or B

---------------|--------------------|---------------

Verdadeiro | Verdadeiro | Verdadeiro

Verdadeiro | Falso | Verdadeiro

Falso | Verdadeiro | Verdadeiro

Falso | Falso | Falso

 

Podemos dizer, também, que o OR terá um resultado Verdadeiro sempre que qualquer uma das variáveis de entrada forem Verdadeiras. Observe a pergunta:


HOJE CHOVEU OU(OR) ONTEM CHOVEU?


A resposta para esta pergunta será Verdadeira se qualquer uma das proposições forem verdadeiras, ou seja, se HOJE CHOVEU for verdade e ONTEM CHOVEU for falso a resposta será Verdadeira. Caso HOJE CHOVEU seja falso e ONTEM CHOVEU seja verdadeiro a resposta será Verdadeira também. A resposta somente será Falsa se tanto HOJE CHOVEU como ONTEM CHOVEU forem falsos.


NOT

O NOT é também um dos mais usados e o mais fácil.

Quando usamos o NOT o valor é invertido, ou seja, se o valor for Verdadeiro ele vira Falso e se for Falso ele vira Verdadeiro. Pode ser usado com uma só variável.


A | NOT A

-------------------|--------------------

Verdadeiro | Falso

Falso | Verdadeiro



O NOT é bem simples.


HOJE CHOVEU?


Se hoje choveu for Verdadeiro o NOT irá transformar em Falso, se for Falso irá transformar em Verdadeiro.


NAND e NOR

NAND e NOR são as negações dos operadores AND e OR, respectivamente.


NAND: É como se tivéssemos feito as operações de AND e a seguir usado o operador NOT no resultado.

Veja a tabela:


A | B | A NAND B

-------------|--------------------|------------------------

Verdadeiro | Verdadeiro | Falso

Verdadeiro | Falso | Verdadeiro

Falso | Verdadeiro | Verdadeiro

Falso | Falso | Verdadeiro


Podemos observar na tabela verdade de NAND que os resultados são exatamente o contrário dos resultados da tabela verdade de AND.


NOR: É como se tivéssemos feito as operações de OR e a seguir usado o operador NOT no resultado.

Veja a tabela:


A | B | A NOR B

--------------------|-----------------------|----------------------

Verdadeiro | Verdadeiro | Falso

Verdadeiro | Falso | Falso

Falso | Verdadeiro | Falso

Falso | Falso | Verdadeiro


Podemos ver que os resultados da tabela verdade de NOR são exatamente o contrário da tabela verdade de OR.


XOR

O operador XOR tem uma lógica um pouco diferente. Nele não vamos observar se o valor será Verdadeiro ou Falso. Vamos observar a similaridade das variáveis de entrada.

Se as variáveis forem diferentes o resultado será Verdadeiro, se forem iguais o valor será Falso.

Vamos entender melhor vendo a tabela:


A | B | A XOR B

-------------------|-------------------|-----------------------

Verdadeiro | Verdadeiro | Falso

Verdadeiro | Falso | Verdadeiro

Falso | Verdadeiro | Verdadeiro

Falso | Falso | Falso


No caso do XOR podemos pensar da seguinte maneira: Se houver somente um valor Verdadeiro o resultado será Verdadeiro. Caso não haja valores verdadeiros ou o valor verdadeiro não seja único(exclusivo) o resultado será Falso.

 

XNOR

O Operador XNOR é o contrário do XOR. É como se tivéssemos feito o XOR e logo em seguida usássemos o operador NOT no resultado.

Nesse operador somente haverá uma saída verdadeira quando os valores de entrada forem iguais.

Veja a tabela:


A B A XNOR B

----------------|-----------------------|-------------------------

Verdadeiro | Verdadeiro | Verdadeiro

Verdadeiro | Falso | Falso

Falso | Verdadeiro | Falso

Falso | Falso | Verdadeiro


Quando as variáveis de entrada forem iguais independentes se tiverem o valor Verdadeiro ou Falso o resultado será Verdadeiro. Caso sejam diferentes o resultado será Falso.

 


Ordem de Precedência


Podemos ter equações booleanas que misturam diversos operadores lógicos e para que ocorra tudo de forma correta precisamos saber a ordem de precedência dos operadores.

Ordem de precedência é a ordem em que devemos “calcular” as equações, ou seja, você deve se lembrar que na matemática básica era necessário fazer a multiplicação e a divisão antes da adição ou subtração e que se algo estive entre parênteses deveria ser calculado primeiro. Então...Isso é a ordem de precedência.

Na lógica booleana temos uma ordem que o operador NOT é sempre resolvido primeiro, seguido do AND e logo após o OR.


Vejamos o exemplo onde vamos supor que A = Verdadeiro e B = falso e temos a equação abaixo:


NOT A OR A AND B


Vamos resolver passo a passo:

Seguindo a ordem de precedência o primeiro que devemos resolver é o NOT. Então como A é verdadeiro, NOT A é falso. A partir daí teremos algo como:


FALSO OR A AND B


Agora fazemos o operador AND. A AND B resulta em FALSO  pois como vimos o operador AND só resulta em verdadeiro quando todas as entradas são verdadeiras. Temos agora a equação:


FALSO OR FALSO


Finalmente chegamos a operação OR  que já sabemos que só é falsa quando todas as entradas são falsas, exatamente como está acontecendo aqui. Então chegamos ao resultado final:


FALSO


 

Lógica Booleana na Programação


Finalmente chegamos a prática dos booleanos no desenvolvimento. Muito raramente haverá algum código que não possua pelo menos uma lógica booleana implementada.

No desenvolvimento de softwares os operadores booleanos são representados por símbolos que podem variar conforme a linguagem de programação. Nesse artigo irei usar os símbolos de &&  para o operador AND, o símbolo de || para o operador OR e o símbolo de ! para o operador NOT. Escolhi estes símbolos por serem os mais comumente usados.


Operadores Condicionais

Antes de continuar vamos lembrar rapidamente os operadores condicionais e seus símbolos usados na programação: Igualdade(==), Diferença(!=), Maior que(>), Maior ou igual que(>=), Menor que(<), Menor ou igual que(<=).

Quando, na programação, usamos o famoso if estamos usando um valor booleano. Como exemplo:

if(variavel1 > variavel2 ){}

Neste caso estamos comparando as duas variáveis. Caso a variavel1 seja maior que a variavel2 ela resultará em um valor Verdadeiro, ou seja, um valor booleano.

Não irei entrar muito a fundo na parte de operadores condicionais por não ser o objetivo do artigo. Mas também não tem muito mistério envolvido.


O If

Para vermos a prática dos booleanos vamos o usar a famosa estrutura condicional if. O if  é usado na programação para testar certas condições e ,caso esta condição seja verdadeira, executar o código que está dentro do bloco de if.

Veja um exemplo:

if(5 > 2){
//código que será executado 
//quando a condição for verdadeira
}

 

Para melhor entendimento, neste artigo, vamos resolver as condições nós mesmos, porém na prática nós devemos montar a condição para que o próprio computador resolva. 

Observe que entre os parênteses, onde se encontra o teste de condição, estamos testando se 5 é maior que(>) 2. 

É como se fizéssemos uma pergunta! O número 5 é maior que o número 2? Obviamente essa resposta é verdadeira, então teremos um valor lógico Verdadeiro.

Agora vamos usar um operador lógico junto com a condição:

 if(!(5 > 2)){
//código que será executado 
//quando a condição for verdadeira
}

Observe agora que, no inicio do teste, foi adicionado o símbolo !, que significa negação, ou seja, “nega ” o valor do resultado. Se antes tínhamos 5 > 2 sendo verdadeiro, agora após o teste de comparação, o resultado será invertido por causa do operador lógico !, tendo o resultado falso e não executando o bloco de código.


MAS NA ORDEM DE PRECEDÊNCIA O OPERADOR !(NOT) NÃO ERA EXECUTADO ANTES DE TODOS?


Sim. Porém temos que entender que há uma ordem entre os operadores Lógicos e uma ordem entre os tipos de operadores.

O !(NOT) é sempre o primeiro operador a ser executado entre os operadores lógicos, porém quando temos uma equação com vários tipos de operadores diferentes damos preferência primeiramente aos Operadores Algébricos(x, /, +, -, ...) , depois ao Operadores Condicionais(> , <, ==, !=,...) e finalmente aos Operadores Lógicos(!, &&, ||). Confira a ordem abaixo:


  1. OPERADORES ALGÉBRICOS
  2. OPERADORES CONDICIONAIS
  3. OPERADORES LÓGICOS


Agora vamos ver como ficaria uma condição de if usando os operadores lógicos &&(AND):

 

If(5 > 2 && 7 < 4){
//Bloco de código executado caso resultado seja Verdadeiro
}

 

Observe que agora temos, além do teste de condição 5 > 2, o teste 7 < 4. Os dois estão ligados pelo operador &&. Vamos descobrir o resultado obtido:


  • 5 > 2 - VERDADEIRO
  • 7 < 4 – FALSO
  • VERDADEIRO && FALSO – FALSO


Como já visto antes, primeiro fazemos os testes condicionais e depois fazemos o teste lógico. Depois dos testes condicionais temos como resultado VERDADEIRO && FALSO. Como visto na tabela verdade, quando usamos o operador && só teremos um resultado VERDADEIRO quando as duas entradas forem verdadeiras. Como não é o caso, o resultado do nosso exemplo foi FALSO.

 

Vejamos agora um exemplo com o operador ||(OR):


If(5==5 || 4 >= 7 ){
//Bloco de código executado se o resultado for Verdade
}


Neste exemplo, como o mesmo do &&, primeiramente fazemos os operadores condicionais e depois o operador lógico.

Vejamos:

  • 5 == 5 – VERDADEIRO
  • 4 >= 7 – FALSO
  • VERDADEIRO || FALSO – VERDADEIRO


Primeiro vemos se 5 é igual(==) 5, por razões obvias o resultado é VERDADEIRO. Depois vemos se 4 é maior ou igual(>=) 7, e temos o resultado FALSO. Agora usando o operador ||(OR) teremos VERDADEIRO || FALSO e, como visto na tabela verdade de OR, somente teremos falso quando todas entradas forem falsas. Então neste caso teremos como resultado o valor VERDADEIRO.

Neste artigo usei muito as palavras VERDADEIRO e FALSO para representar os valores booleanos por uma questão de facilidade de entendimento. Na prática vamos encontrar, geralmente, esses valores com o TRUE ou FALSE.


Continuem Estudando

O estudo de lógica e algoritmos é uma parte fundamental para ser um bom programador. Independente da linguagem de programação sempre iremos usar os fundamentos de lógica para desenvolver. Por esse motivo achei uma boa ideia fazer esse artigo para tentar elucidar dúvidas que, alguém que está começando nesse mundo, possa ter.

Esse é meu primeiro artigo e resolvi escrevê-lo por perceber que, o conhecimento que eu tenho, mesmo que pouco, pode ser usado para ajudar alguém. Inclusive sugiro a todos que puderem, compartilhem conhecimento. Ninguém sabe tão pouco que não possa ensinar e ninguém sabe tanto que não possa aprender. Então espero de verdade ter ajudado alguém e continuam sempre estudando! 

0
11

Comentários (0)

Estudante de Análise e Desenvolvimento de Sistemas e Apaixonado por tecnologia.

Brasil