Conteúdo 19 de 20
Operadores lógicos
Combine e negue condições com E, OU e NÃO, usando tabelas-verdade, agrupamento explícito e curto-circuito para construir regras confiáveis.

O que são operadores lógicos
Operadores lógicos combinam ou negam condições. Enquanto uma comparação responde a uma pergunta — idade >= 16, por exemplo — um operador lógico conecta respostas para representar uma regra maior.
Considere uma inscrição com três perguntas:
- a idade é permitida?
- ainda há vaga?
- o cadastro está bloqueado?
Cada pergunta produz verdadeiro ou falso. A inscrição pode exigir idade permitida E vaga disponível E NÃO estar bloqueada. A lógica deixa de analisar valores isolados e passa a relacionar condições.
Se ainda não estiver confortável com comparações, revise operadores relacionais. São eles que normalmente produzem os valores lógicos combinados nesta aula.
Os três operadores fundamentais
Em pseudocódigo, usaremos palavras para destacar o significado:
| Operador | Pergunta que representa | Quando resulta em verdadeiro |
|---|---|---|
E | todas as condições foram atendidas? | todos os operandos são verdadeiros |
OU | pelo menos uma condição foi atendida? | um ou mais operandos são verdadeiros |
NÃO | a condição deve ser invertida? | o operando original é falso |
Linguagens concretas usam sintaxes diferentes. Python possui and, or e not; JavaScript e C# usam frequentemente &&, || e !. O símbolo muda, mas a pergunta lógica continua sendo o ponto de partida.
Operador E: todos os critérios precisam passar
O operador E, chamado de conjunção, produz verdadeiro apenas quando as duas condições são verdadeiras.
idadePermitida <- idade >= 16
aindaHaVaga <- quantidadeInscritos < 120
requisitosBasicosAtendidos <- idadePermitida E aindaHaVaga
Uma pessoa de 18 anos com vaga disponível atende aos dois critérios. Uma pessoa de 18 anos quando o evento já está cheio não atende à regra completa: uma resposta falsa é suficiente para tornar o E falso.
Use E quando o requisito puder ser lido como “isto e também aquilo”. Documentos entregues E pagamento confirmado; usuário autenticado E permissão concedida; temperatura acima do mínimo E abaixo do máximo.
Operador OU: uma ou mais alternativas bastam
O operador OU, chamado de disjunção inclusiva, produz verdadeiro quando pelo menos uma condição é verdadeira.
possuiIngresso <- codigoIngressoValido
estaNaLista <- nomeEncontradoNaLista
entradaComprovada <- possuiIngresso OU estaNaLista
Há três formas de a expressão ser verdadeira: somente o ingresso é válido, somente o nome está na lista ou ambos são válidos. Esse último caso importa: por padrão, o OU lógico é inclusivo.
Quando a regra aceita exatamente uma alternativa, mas não as duas, trata-se de OU exclusivo, muitas vezes chamado de XOR. “Escolha entrega em casa ou retirada, mas não ambas” é uma regra exclusiva. Ela não deve ser representada como se fosse o OU inclusivo comum.
Operador NÃO: inverter uma condição
O operador NÃO, ou negação, atua sobre uma única condição:
cadastroBloqueado <- falso
podeProsseguir <- NÃO cadastroBloqueado
Se cadastroBloqueado é falso, NÃO cadastroBloqueado é verdadeiro. Se é verdadeiro, a negação é falsa.
Nomes positivos costumam deixar a expressão mais simples. Compare:
NÃO usuarioInativo
usuarioAtivo
As duas formas podem representar a mesma ideia, mas a segunda exige menos tradução mental. A negação é útil; uma sequência de nomes negativos e operadores NÃO é que torna a regra difícil de revisar.
Tabelas-verdade de E, OU e NÃO
Uma tabela-verdade enumera as entradas possíveis e o resultado do operador. E e OU recebem dois operandos, portanto têm quatro combinações. NÃO recebe um, então possui duas.
| A | B | A E B | A OU B |
|---|---|---|---|
| falso | falso | falso | falso |
| falso | verdadeiro | falso | verdadeiro |
| verdadeiro | falso | falso | verdadeiro |
| verdadeiro | verdadeiro | verdadeiro | verdadeiro |
| A | NÃO A |
|---|---|
| falso | verdadeiro |
| verdadeiro | falso |
As tabelas também servem como plano de teste. Se um algoritmo combina duas condições, verificar apenas o caso em que ambas são verdadeiras deixa três combinações sem confirmação.
Como construir uma condição composta
Uma expressão longa fica mais confiável quando nasce de perguntas pequenas e nomeadas. Para a inscrição no evento:
idadePermitida <- idade >= 16
aindaHaVaga <- quantidadeInscritos < 120
cadastroBloqueado <- situacaoCadastro = "bloqueado"
podeInscrever <- idadePermitida E aindaHaVaga E (NÃO cadastroBloqueado)
O processo é:
- comparar cada dado com a regra correspondente;
- guardar cada resposta lógica com um nome informativo;
- negar apenas o critério cujo significado precisa ser invertido;
- combinar as respostas com o conectivo expresso pela regra de negócio.
Esse método também facilita o diagnóstico. Se podeInscrever for falso, é possível inspecionar idadePermitida, aindaHaVaga e cadastroBloqueado separadamente.
Agrupe a intenção com parênteses
Considere uma entrada permitida para quem tem ingresso, ou para quem está na lista e apresentou documento:
podeEntrar <- possuiIngresso OU (estaNaLista E apresentouDocumento)
Agora compare com outra regra:
podeEntrar <- (possuiIngresso OU estaNaLista) E apresentouDocumento
Na primeira, um ingresso válido basta. Na segunda, todas as pessoas precisam apresentar documento. Os mesmos operandos e operadores produzem regras diferentes por causa do agrupamento.
As linguagens definem precedência própria e frequentemente avaliam NÃO antes de E, e E antes de OU. Ainda assim, use parênteses para comunicar a regra, não apenas para corrigir a execução. A ordem completa será estudada na próxima etapa da trilha.
Negar uma regra composta
Negar uma expressão inteira não significa apenas trocar uma palavra. As leis de De Morgan ajudam a reescrever condições:
NÃO (A E B) equivale a (NÃO A) OU (NÃO B)
NÃO (A OU B) equivale a (NÃO A) E (NÃO B)
Exemplo: negar “idade permitida E vaga disponível” significa “idade não permitida OU vaga não disponível”. Basta uma das falhas para negar o conjunto.
Distribuir o NÃO sem trocar E por OU altera a regra. Quando houver dúvida, monte a tabela-verdade das duas expressões e compare linha a linha.
Curto-circuito: o segundo lado pode nem ser avaliado
Muitas linguagens oferecem operadores lógicos condicionais com avaliação de curto-circuito:
- em
A E B, seAfor falso, o resultado já é falso eBpode ser ignorado; - em
A OU B, seAfor verdadeiro, o resultado já é verdadeiro eBpode ser ignorado.
Isso pode proteger uma operação que só é válida após uma verificação:
divisaoValida <- divisor <> 0 E (total / divisor > 10)
Com curto-circuito, se divisor <> 0 for falso, a divisão não é executada. Mas essa garantia depende do operador e da linguagem. Em C#, por exemplo, && e || fazem avaliação condicional, enquanto & e | com booleanos avaliam ambos os lados.
Não esconda ações importantes no segundo operando:
cadastroValido E enviarConfirmacao()
Se a primeira condição for falsa, a função pode não executar. Prefira que condições apenas consultem valores e deixe ações explícitas no fluxo do algoritmo.
Operadores lógicos nem sempre devolvem apenas booleanos
No modelo lógico desta aula, as condições são booleanas e o resultado é interpretado como verdadeiro ou falso. Algumas linguagens dinâmicas também aceitam outros tipos, com regras de truthy e falsy.
Em Python, x and y e x or y retornam o último operando efetivamente avaliado, não obrigatoriamente True ou False. JavaScript também preserva valores de operandos com && e ||.
JavaScript: "" || "padrão" resulta em "padrão"
Python: "ok" and 7 resulta em 7
Esses recursos podem ser úteis, mas não são uma regra universal. Ao aprender lógica e ao escrever regras de negócio, combine comparações explícitas e confirme na documentação da linguagem quais tipos são aceitos, qual valor é retornado e se existe coerção. A revisão de tipos de dados ajuda a separar valor, tipo e interpretação lógica.
Teste todas as combinações relevantes
Para duas condições, comece pelas quatro linhas da tabela-verdade. Para a inscrição, registre primeiro apenas idade e vaga:
| idadePermitida | aindaHaVaga | resultado esperado de E |
|---|---|---|
| falso | falso | falso |
| falso | verdadeiro | falso |
| verdadeiro | falso | falso |
| verdadeiro | verdadeiro | verdadeiro |
Depois acrescente a condição de bloqueio e escolha casos que façam cada parcela decidir o resultado. Um teste manual do algoritmo deve registrar entradas, condições intermediárias e resultado final, não apenas “funcionou”.
Erros comuns
Usar E quando a regra aceita alternativas
Se pagamento por cartão ou Pix é suficiente, exigir os dois torna a condição impossível ou restritiva demais. Traduza a frase de negócio antes de escolher o operador.
Presumir que OU significa exatamente um
O OU comum inclui o caso em que ambas as condições são verdadeiras. Modele o OU exclusivo separadamente quando a simultaneidade for proibida.
Esconder a intenção em uma expressão longa
Comparações nomeadas revelam qual parcela falhou e facilitam testes. Siga as mesmas práticas usadas para escrever pseudocódigo claro.
Criar dupla negação
NÃO naoPossuiPermissao obriga o leitor a inverter a frase duas vezes. Prefira possuiPermissao ou renomeie o estado.
Confiar que o segundo operando sempre executa
Curto-circuito pode impedir uma chamada no lado direito. Não dependa de efeitos colaterais dentro de condições.
Transportar coerções entre linguagens
Valor vazio, zero, ausência e objetos não recebem exatamente a mesma interpretação em toda linguagem. Consulte a documentação do ambiente usado.
Checklist para revisar uma expressão lógica
- Cada operando produz uma condição compreensível?
Erepresenta requisitos simultâneos?OUrepresenta alternativas e aceita ambas ao mesmo tempo?- A negação está aplicada ao trecho correto?
- Os parênteses deixam o agrupamento evidente?
- O resultado esperado foi testado para combinações falsas e verdadeiras?
- O código depende indevidamente da avaliação do segundo operando?
- Tipos, coerção e valor retornado foram confirmados na linguagem escolhida?
Pratique com uma regra de acesso
Um laboratório permite acesso quando a pessoa está cadastrada e possui treinamento válido. Em situações de manutenção, um supervisor também pode entrar, mas ninguém entra se o local estiver interditado.
- Crie
cadastroAtivo,treinamentoValido,ehSupervisorelocalInterditado. - Escreva a regra principal com parênteses.
- Aplique a interdição a todas as alternativas.
- Teste uma pessoa comum apta, uma comum sem treinamento, um supervisor e qualquer pessoa durante interdição.
Uma expressão possível é:
podeEntrar <- ((cadastroAtivo E treinamentoValido) OU ehSupervisor) E (NÃO localInterditado)
Os parênteses deixam claro que a interdição vale tanto para a entrada comum quanto para a exceção do supervisor.
O que você deve guardar
E exige todos os critérios, OU aceita pelo menos um e NÃO inverte uma condição. Expressões confiáveis nascem de perguntas pequenas, nomes claros, agrupamento explícito e testes de todas as combinações importantes.
Curto-circuito, coerção e valor retornado variam entre operadores e linguagens. Use a lógica booleana como base, mas confirme a semântica concreta antes de depender desses detalhes. Agora aprenda como a precedência de operadores organiza expressões com cálculos, comparações e condições.
Referências
- Microsoft Learn — Operadores lógicos boolianos em C#. Acesso em 10 set. 2026.
- Python Documentation — Boolean operations. Acesso em 10 set. 2026.
- MDN Web Docs — Logical AND (
&&). Acesso em 10 set. 2026. - MDN Web Docs — Logical OR (
||). Acesso em 10 set. 2026. - MDN Web Docs — Logical NOT (
!). Acesso em 10 set. 2026.