Álgebra booleana e Tabelas verdade

Hoje vamos estudar uma área matemática muito usada por programadores; a Lógica. Mais precisamente a Álgebra booleana. Vamos conhecer termos como True, False, Operadores lógicos e Tabelas verdade.

Apesar de parecer ser uma área totalmente nova, você verá que ela está presente desde sempre na nossa vida, e que pode ser bem mais simples que a matemática que já conhecemos.

Álgebra booleana

Em matemática, Álgebra é a área que estuda algumas operações (+, -, etc.) e algumas equações numéricas (3 + 2 – 1, por exemplo).

Em aproximadamente 1847, um matemático autodidata chamado George Boole divulgou um estudo que definia um novo tipo de Álgebra, que usava apenas os números 0 e 1. Até então os matemáticos trabalhavam com o que chamamos de base 10, 10 símbolos para representar quaisquer outros, e nessa época a Álgebra de Boole (ou booleana) não foi muito utilizada. Mas quando surgiram máquinas para fazer cálculos, viram que seria mais simples fazê-las trabalhar com 0 ou 1.

Verdadeiro ou Falso

Quando trabalhamos com álgebra matemática, queremos chegar num número como resultado, por exemplo, a equação 5 + 2 – 1 resulta no número 6. Na álgebra booleana, nossos resultados sempre serão 1 ou 0, que também podem ser entendidos como True ou False, do inglês Verdadeiro ou Falso. Ou seja, uma expressão booleana está afirmando se algo é verdadeiro ou falso.

Expressões booleanas

Antes de criarmos uma expressão booleana, vamos declarar algumas preposições, que nada mais são que afirmações que vão fazer parte da nessa equação.

  • Preposição A: Eu visito o blog Quero Ser Programador.
  • Preposição B: Estou lendo sobre equações booleanas.

A partir dessas proposições, podemos usar alguns operadores para descobrir se a sentença inteira é verdadeira ou falsa.

Operador &

“Eu visito o blog Quero Ser Programador & Estou lendo sobre equações booleanas”

Se a preposição A e a preposição B são verdadeiras então a sentença inteira também é verdade, pois essa é a característica do operador & (lê-se normalmente “e”).

Se somente a preposição A for verdadeira (ou seja, “Estou lendo sobre equações booleanas” não é uma verdade) então a sentença inteira será falsa.

Operador |

Vamos pensar agora no operador | (leia “ou”). Veja a sentença abaixo:

“Eu visito o blog Quero Ser Programador | Estou lendo sobre equações booleanas”

Se somente a preposição A for verdadeira, a sentença ainda é verdadeira, pois para o | basta que pelo menos uma das duas preposições sejam true.

Operador XOR

A medida que ficamos mais familiarizados com preposições como as acima, as chamamos apenas por letras. Daqui pra frente vamos falar nas preposições p e q. Mas lembre, você sempre pode substituir essas letras por frases que façam sentido, como fizemos acima. A partir de agora, vamos supor que p é true e q é false.

No operador | vimos que basta que pelo menos uma de duas preposições seja true, para que o resultado também seja true.

No operador XOR temos o conceito de “ou exclusivo”, onde somente uma das preposições pode ser verdadeira. Por exemplo, continuando com p sendo true e q sendo false.

p XOR q => true

Pois uma, e somente uma das preposições é true.

Operador !

Esse operador é lido como “não” ou “negação”, tudo que é true vira false, e vice-versa. Logo, se p é true, !p é false. Se q é false, !q é true. Simples assim.

Precedência de operadores

Ainda com p sendo true e q sendo false, vamos checar a expressão abaixo:

q | !(p & !q) =>
false | !( true & !false ) =>
false | !(true & true) =>
false | !true =>
false | false =>
false

Nela podemos perceber que primeiro resolvemos tudo dentro dos parênteses () (do mais interno ao mais externo, como fazemos na matemática), depois a negação ! e por fim as operações &, |, XOR.

 

Tabelas verdade

Para exercitar um pouco o nosso conhecimento, temos as tabelas verdade, que nada mais é que uma tabela que diz todas as combinações possíveis de equações envolvendo predicados.

p q p & q
true true true
false false false
true false false
false true false

A tabela apresenta duas preposições (p e q) e uma expressão (p & q). Cada linha define que se p é true e q é true então a expressão p & q é true. A tabela praticamente reafirma o que apresentamos anteriormente, já que a unica linha onde a expressão é true, é a que todas as preposições são true.

Veja a segunda tabela a seguir, um pouco mais complexa:

p q p XOR q p | !q
true true true true
false false false true
true false true true
false true true false

Tente montar as seguintes tabelas:

1)

p q p & (!p & q)

2)

p q p & (p & !q)

3)

p q r p xor ( !r & (p | q) )

4)

p q p & !(p & q)

As tabelas completas podem ser encontradas aqui.

Aplicações

Hoje focamos um pouco em teoria sobre lógica matemática, mas esse estudo ajuda muito a programadores escreverem código em várias linguagens de programação.

Como complemento de estudo é importante ressaltar, que os operadores que apresentamos aparecem em livros de lógico com outros símbolos, geralmente. Os operadores & e | são comumente representados por ∧ e v. Aqui apresentamos eles na forma mais comum encontrada nas linguagens de programação.

Se você quiser se aprofundar no estudo de lógica, alguns livros podem ser encontrados nas melhores livrarias, recomendamos esse. Qual dúvida, deixe nos comentários ou entre em contato.