O que é lógica booleana?
A linguagem das decisões
Toda vez que seu código toma uma decisão, ele usa lógica Booleana: um sistema onde tudo é reduzido a dois valores: verdadeiro ou falso.
A lógica Booleana leva o nome de George Boole (1815–1864), um matemático inglês que formalizou as regras do raciocínio lógico em álgebra. Seu trabalho se tornou a fundação de todo computador digital já construído.
Todo
if, todowhile, todo filtro de consulta ao banco: todos funcionam com lógica Booleana.
Apenas dois valores
Na lógica Booleana, não existe talvez. Não existe "mais ou menos." Não existe 0.5. Existem dois valores:
| Valor | Significado | Em Ruby |
|---|---|---|
| true | Sim, ligado, 1 | true |
| false | Não, desligado, 0 | false |
Um detalhe do Ruby importa cedo: numa condição, só false e nil contam como falso. Todo o resto é truthy, inclusive 0 e "". Essa natureza binária é o que torna computadores possíveis. No nível do hardware, um transistor está ligado (eletricidade flui) ou desligado (não flui). A lógica Booleana mapeia perfeitamente para essa realidade física.
Proposições
Uma proposição é qualquer afirmação que é verdadeira ou falsa: nunca ambas, nunca nenhuma.
# Estas SÃO proposições (têm valor de verdade)
"Ruby é uma linguagem de programação" → verdadeiro
"5 é maior que 10" → falso
"O usuário está logado" → verdadeiro ou falso
# Estas NÃO são proposições (sem valor de verdade)
"Que horas são?" → pergunta, não afirmação
"Feche a porta" → comando, não afirmação
"Esta afirmação é falsa" → paradoxo, sem valor definido
Na programação, proposições se tornam expressões que avaliam para verdadeiro ou falso:
user.admin? # proposição: o usuário é admin?
age >= 18 # proposição: a idade é pelo menos 18?
cart.empty? # proposição: o carrinho está vazio?
As três operações fundamentais
A lógica Booleana tem três operações básicas. Toda expressão lógica já escrita (não importa quão complexa) é construída a partir de combinações dessas três:
| Operação | Símbolo | Ruby | Significado |
|---|---|---|---|
| AND | ∧ | && |
Ambos devem ser verdadeiros |
| OR | ∨ | || |
Pelo menos um deve ser verdadeiro |
| NOT | ¬ | ! |
Inverte verdadeiro para falso e vice-versa |
Pense nelas como os "átomos" da lógica. Assim como toda matéria é construída de átomos, todas as decisões lógicas são construídas de AND, OR e NOT.
# AND: ambas as condições devem ser verdadeiras
user.admin? && user.active?
# OR: pelo menos uma condição deve ser verdadeira
user.admin? || user.moderator?
# NOT: inverte a condição
!user.banned?
Lógica booleana no dia a dia
Você usa lógica Booleana todos os dias sem perceber:
| Decisão do Dia a Dia | Expressão Booleana |
|---|---|
| "Vou sair se estiver ensolarado E quente" | ensolarado && quente |
| "Vou de ônibus OU de trem" | onibus || trem |
| "Vou se NÃO estiver chovendo" | !chovendo |
| "Preciso de passaporte E (visto OU cidadania)" | passaporte && (visto || cidadania) |
Note que o último exemplo usa parênteses para agrupar operações: assim como na matemática. Exploraremos precedência de operadores em uma aula futura.
Por que lógica booleana importa para desenvolvedores Rails
Lógica Booleana não é apenas teoria: é a espinha dorsal de toda aplicação Rails:
Autenticação e autorização
# Este usuário pode editar este post?
user.admin? || (user == post.author && !post.locked?)
Consultas ao banco de dados
# Encontrar usuários ativos e premium
User.where(active: true, premium: true)
# SQL: WHERE active = TRUE AND premium = TRUE
Validações
# Validar presença apenas se publicado
validates :body, presence: true, if: -> { published? && !draft? }
Fluxo de controle
if current_user && current_user.can?(:manage, @course)
render :edit
else
redirect_to root_path
end
Dominar lógica Booleana significa escrever condições mais limpas, queries melhores e menos bugs.
O legado de George Boole
Boole publicou As Leis do Pensamento em 1854: mais de 80 anos antes do primeiro computador eletrônico. Ele mostrou que o raciocínio lógico podia ser expresso como equações matemáticas.
Décadas depois, Claude Shannon (1937) percebeu que a álgebra de Boole podia ser implementada com interruptores elétricos. Essa percepção (de que lógica equivale a circuitos) é a fundação de todo dispositivo digital que você usa hoje.
flowchart TB
A["Álgebra de Boole (1854)"] --> B["Circuitos de Shannon (1937)"] --> C["Transistores (1947)"] --> D["Todo computador, celular e servidor rodando sua aplicação Rails"]
Resumo
| Conceito | Definição |
|---|---|
| Lógica Booleana | Um sistema com dois valores: verdadeiro e falso |
| Proposição | Uma afirmação que é verdadeira ou falsa |
| AND (∧) | Ambos operandos devem ser verdadeiros |
| OR (∨) | Pelo menos um operando deve ser verdadeiro |
| NOT (¬) | Inverte o valor de verdade |
| George Boole | Matemático que formalizou lógica como álgebra (1854) |
| Claude Shannon | Provou que álgebra Booleana mapeia para circuitos elétricos (1937) |
Continue com a aula 2
O operador AND
Explica a tabela verdade do AND, && contra and, o curto-circuito e padrões com AND no Rails.
Com uma conta grátis você também tem os quizzes, seu progresso e suas anotações, e a discussão.