Menu
Coddy logo textTech

Logical Operators Part 4

Parte da seção Fundamentos do Journey de Java da Coddy — lição 26 de 73.

A Lei de De Morgan é uma regra que nos ajuda a simplificar expressões com NOT nelas. Ao trabalhar com expressões lógicas, às vezes precisamos simplificá-las ou rearranjá-las.

Quando você tem not à frente de duas condições unidas por and, você pode dividi-lo em duas partes separadas. O and se torna or, e cada parte recebe seu próprio not:

!(A && B) é o mesmo que (!A) || (!B)

Por exemplo:

// Let's check if a number is NOT (between 1 and 10)
int number = 15;

// These two expressions are equivalent:
boolean result1 = !(number >= 1 && number <= 10);
boolean result2 = !(number >= 1) || !(number <= 10);

System.out.println(result1);  // true
System.out.println(result2);  // true

O oposto também é correto: !(A || B) é o mesmo que (!A) && (!B)

Por exemplo:

// Checking if a person is NOT (a student or employed)
boolean isStudent = false;
boolean isEmployed = false;

// These two expressions are equivalent:
boolean result1 = !(isStudent || isEmployed);
boolean result2 = !(isStudent) && !(isEmployed);

System.out.println(result1);  // true
System.out.println(result2);  // true
challenge icon

Desafio

Iniciante

Você está ajudando uma loja de animais a criar um sistema para determinar se eles podem vender um animal a um cliente.

Inicialize as seguintes variáveis:

  • hasLicense com o valor true
  • hasSpace com o valor false
  • hasExperience com o valor true

Escreva as seguintes expressões lógicas para determinar se:

  • canSellRegularPet: O cliente precisa OU de licença OU de experiência, E deve ter espaço
  • canSellExoticPet: O cliente precisa de licença E experiência, E deve ter espaço
  • cannotSellAnyPet: O cliente não tem licença E não tem experiência, OU não tem espaço
  • result: canSellRegularPet OU canSellExoticPet OU cannotSellAnyPet

Dica: Use os valores das variáveis diretamente em suas expressões. Por exemplo, hasSpace é false, então "deve ter espaço" significa que você usa hasSpace como está (sem !) — a variável já contém o valor real. Use ! apenas quando a condição requer o oposto do que a variável contém, como "não tem licença" → !hasLicense.

Folha de consulta

A Lei de De Morgan ajuda a simplificar expressões lógicas com operadores NOT:

!(A && B) é equivalente a (!A) || (!B)

!(A || B) é equivalente a (!A) && (!B)

Exemplo com AND:

int number = 15;
boolean result1 = !(number >= 1 && number <= 10);
boolean result2 = !(number >= 1) || !(number <= 10);
// Ambas as expressões são equivalentes

Exemplo com OR:

boolean isStudent = false;
boolean isEmployed = false;
boolean result1 = !(isStudent || isEmployed);
boolean result2 = !(isStudent) && !(isEmployed);
// Ambas as expressões são equivalentes

Experimente você mesmo

public class Main {
    public static void main(String[] args) {
        // Inicializa variáveis
        

        // Calcula condições
        boolean canSellRegularPet = 
        boolean canSellExoticPet = 
        boolean cannotSellAnyPet =
        boolean result =

        // Não apague as linhas abaixo
        System.out.println("Can sell regular pet: " + canSellRegularPet);
        System.out.println("Can sell exotic pet: " + canSellExoticPet);
        System.out.println("Cannot sell any pet: " + cannotSellAnyPet);
        System.out.println("Result: " + result);
    }
}
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Fundamentos