Operadores Lógicos - Parte 2
Parte da seção Fundamentos do Journey de PHP da Coddy. Lição 26 de 71.
O operador NOT (!) inverte um valor booleano para o seu oposto. Se algo é true, torna-se false, e vice-versa:
<?php
$isLoggedIn = false;
$showLoginButton = !$isLoggedIn;
var_dump($showLoginButton); // bool(true)
$isLoggedIn = true;
$showLoginButton = !$isLoggedIn;
var_dump($showLoginButton); // bool(false)
?>Você pode combinar múltiplos operadores lógicos em uma única expressão. Quando fizer isso, use parênteses para tornar suas intenções claras:
<?php
$age = 25;
$hasTicket = true;
$isVIP = false;
// Pode entrar se: tem ingresso E (é adulto OU é VIP)
$canEnter = $hasTicket && ($age >= 18 || $isVIP);
var_dump($canEnter); // bool(true)
?>Sem parênteses, && é avaliado antes de ||. No entanto, usar parênteses torna seu código mais fácil de ler e previne erros. Ao combinar operadores, sempre agrupe as condições logicamente para expressar exatamente o que você quer dizer.
Desafio
FácilLeia quatro valores da entrada: um inteiro temperature, uma string isRaining (seja "true" ou "false"), uma string hasUmbrella (seja "true" ou "false"), e uma string hasRaincoat (seja "true" ou "false").
Converta os valores de string para booleanos comparando-os com "true".
Avalie as seguintes três condições e imprima o resultado de cada uma usando var_dump(), cada uma em uma nova linha:
- Verifique se NÃO está chovendo (use o operador
!) - Verifique se a pessoa deve ficar dentro de casa: está chovendo E eles não têm nem guarda-chuva nem capa de chuva (use
!com ambos os itens) - Verifique se a pessoa pode sair confortavelmente: a temperatura é pelo menos 15 E (não está chovendo OU eles têm guarda-chuva ou capa de chuva)
Exemplo:
Se as entradas forem 20, true, false, e true, a saída deve ser:
bool(false)
bool(false)
bool(true)Explicação:
!isRaining→ !true → falseisRaining && !hasUmbrella && !hasRaincoat→ true && true && false → falsetemperature >= 15 && (!isRaining || hasUmbrella || hasRaincoat)→ true && (false || false || true) → true && true → true
Experimente você mesmo
<?php
// Ler valores de entrada
$temperature = intval(fgets(STDIN));
$isRainingStr = trim(fgets(STDIN));
$hasUmbrellaStr = trim(fgets(STDIN));
$hasRaincoatStr = trim(fgets(STDIN));
// TODO: Converter valores de string para booleanos comparando-os com "true"
// TODO: Avaliar e imprimir as três condições usando var_dump():
// 1. Verificar se NÃO está chovendo
// 2. Verificar se a pessoa deve ficar dentro de casa (chovendo E sem guarda-chuva E sem capa de chuva)
// 3. Verificar se a pessoa pode sair confortavelmente
?>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
4Operadores de Comparação e Lógicos
Operadores de ComparaçãoIgualdade e IdentidadeOperadores Lógicos - Parte 1Operadores Lógicos - Parte 2Revisão - Lógica Simples2Variáveis e Tipos de Dados
NúmerosStrings e AspasBooleanosConvenções de NomenclaturaRevisão - Inicialização de VariáveisVariáveis VaziasConcatenação de StringsObtendo Entrada do UsuárioConversão para Diferentes Tipos5Lógica Condicional
Instrução IfIf - ElseO Operador TernárioOperador de Coalescência NulaInstrução SwitchRecapitulação - Tomando Decisões3Operadores Básicos
Operadores AritméticosOperador MóduloOperador de ExponenciaçãoAtribuição CombinadaIncremento/DecrementoPrecedência de OperadoresRevisão - Cálculos SimplesOperadores de StringPratique por conta própria: Compilador de PHP online