Menu
Coddy logo textTech

Operadores Lógicos Parte 3

Parte da seção Fundamentals do Journey de C da Coddy — lição 23 de 63.

Ao verificar múltiplas condições, o programa para de verificar assim que conhece a resposta final. Isso é chamado de avaliação de curto-circuito.

Por exemplo:

int x = 0;
int y = 5;
int result = (x != 0) && (y / x > 2);

Aqui x é igual a 0, portanto, não avaliará y / x > 2. Se invertêssemos a ordem:

int result = (y / x > 2) && (x != 0);

Isso resultará em um erro porque y será dividido por 0, o que é indefinido em C. Portanto, é uma boa prática pensar bem nas operações, para que você possa obter um código correto e eficaz, mas sem erros.

Esta técnica é usada para otimizar a avaliação de expressões lógicas. Por exemplo:

int a = 0;
int b = 2;
int c = 3;
int d = 5;
int result = (a > 0 && b < 2) || (c < -5 && d < 10);

Neste exemplo, b < 2 e d < 10 não serão avaliados porque a > 0 e c < -5 são ambos falsos.

challenge icon

Desafio

Fácil

Crie um programa para decidir se é um bom dia para a produção de energia por painéis solares

Inicialize estas variáveis:

  • isSunny com o valor 1 (true)
  • windSpeed com o valor 5.4
  • temperature com o valor 23
  • solarPanelOutput com o valor 9
  • isCloudy com o valor 0 (false)

Crie uma expressão lógica que verifique TODAS estas condições:

  • Está ensolarado
  • A velocidade do vento é menor que 10
  • A produção do painel solar é menor que 15
  • A temperatura está acima de 20 OU não há nuvens

Imprima "Good day for solar energy" se todas as condições forem atendidas, caso contrário, imprima "Not ideal for solar energy".

Folha de consulta

A avaliação de curto-circuito interrompe a verificação das condições assim que o resultado final é determinado, otimizando a avaliação de expressões lógicas.

Com && (AND), se a primeira condição for falsa, a segunda não será avaliada:

int x = 0;
int result = (x != 0) && (y / x > 2);  // y/x won't be evaluated

Com || (OR), se a primeira condição for verdadeira, a segunda não será avaliada:

int result = (a > 0 && b < 2) || (c < -5 && d < 10);
// If a > 0 is false, b < 2 won't be evaluated
// If the first part is true, the second part won't be evaluated

A ordem importa - coloque condições que possam causar erros (como divisão por zero) após as verificações de segurança:

// Safe: checks x != 0 first
int result = (x != 0) && (y / x > 2);

// Unsafe: might divide by zero
int result = (y / x > 2) && (x != 0);

Experimente você mesmo

#include <stdio.h>

int main() {
    // Inicializar variáveis
    int isSunny = 1;
    float windSpeed = 5.4;
    int temperature = 23;
    int solarPanelOutput = 9;
    int isCloudy = 0;
    
    // Criar a expressão lógica
    int isGoodDay = 
    
    // Não altere abaixo
    if (isGoodDay) {
        printf("Good day for solar energy\n");
    } else {
        printf("Not ideal for solar energy\n");
    }
    
    return 0;
}
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 Fundamentals