Pular para o conteúdo principal

Questão de Programação — PHP — FUNDATEC 2023

ProgramaçãoPHP
Código
qq892781
Banca
FUNDATEC
Órgão
GHC-RS
Ano
2023
Nível
Médio
Cargo
Programador
Observe o código PHP abaixo:<?php$nome = "Jhon";$email = "[email protected]";if (empty(nome) && empty(email) && empty($mensagem)){echo "Por favor, preencha todos os campos.";} else {echo "O formulário foi preenchido corretamente!";}?>Apesar da variável $mensagem não ter sido nem declarada, é apresentada a mensagem “O formulário foi preenchido corretamente!”. Qual das linhas abaixo apresenta uma modificação que corrigiria o comportamento do programa para que apresentasse a mensagem, pedindo o preenchimento dos campos quando algum não estivesse preenchido e que apresentasse a mensagem "O formulário foi preenchido corretamente!" quando todos os campos fossem preenchidos?
  1. Aif (isset(nome) && isset(email) && isset($mensagem))
  2. Bif (!isset(nome) && !isset(email) && isset($mensagem))
  3. Cif (!empty(nome) && !empty(email) && !empty($mensagem))
  4. Dif (!empty(nome)!empty(nome) || !empty(email) || empty($mensagem))
  5. Eif (empty(nome)empty(nome) || empty(email) || empty($mensagem))
Revelar gabarito e comentário

GabaritoE — if (empty($nome) || empty($email) || empty($mensagem))

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

PHP: lógica condicional com empty()

Gabarito: letra E. O código original usa o operador && (E lógico) para verificar se todas as variáveis estão vazias, mas como $nome e $email possuem valores, a condição torna-se falsa e exibe a mensagem de sucesso mesmo com $mensagem não declarada. O comportamento desejado é exibir erro se qualquer campo estiver vazio, o que exige o operador || (OU). A alternativa E substitui corretamente && por ||.

A função empty() em PHP retorna true para variáveis: vazias ("", 0, "0", null, false, array()), não definidas, ou com valor zero. Como $mensagem não foi declarada, empty($mensagem) retorna true. No código original: empty($nome) é false (valor "Jhon"), empty($email) é false (valor "[email protected]"), e empty($mensagem) é true. A expressão false && false && true = false, executando o else e exibindo "O formulário foi preenchido corretamente!", o que está incorreto.

Alternativa A — ❌ Incorreta

if (isset($nome) && isset($email) && isset($mensagem))isset() retorna false para variáveis não definidas (sem emitir warning). Como $mensagem não existe, a condição é false, executando o else (sucesso) mesmo com campos faltando. Não corrige.

Alternativa B — ❌ Incorreta

if (!isset($nome) && !isset($email) && isset($mensagem)) — Para as variáveis dadas, !isset($nome) é false (pois está definida), e !isset($email) também false, e isset($mensagem) é false. A condição é false && false && false = false, executando else (sucesso). Mais uma vez, não tratou a ausência de $mensagem.

Alternativa C — ❌ Incorreta

if (!empty($nome) && !empty($email) && !empty($mensagem)) — Verifica se todos estão preenchidos. Com $mensagem vazia, a condição é true && true && false = false, executando else e exibindo sucesso. O correto seria exibir erro. Inverte a lógica.

Alternativa D — ❌ Incorreta

if (!empty($nome) || !empty($email) || empty($mensagem)) — Com $nome e $email preenchidos, a primeira parte !empty($nome) é true, e como é um ||, toda a expressão é true, exibindo erro. Porém, se todos os campos estivessem preenchidos (incluindo $mensagem), teríamos true || true || false = true, e exibiria erro indevidamente. Não resolve.

Alternativa E — ✅ Correta ⟵ GABARITO

if (empty($nome) || empty($email) || empty($mensagem)) — Se qualquer campo estiver vazio (ou não declarado), a condição é verdadeira e exibe a mensagem de erro. Se todos estiverem preenchidos (todos empty() retornam false), a condição é falsa e exibe sucesso. Corrige o comportamento conforme o enunciado.

NÃO CAIA NESSA!

A banca troca o operador lógico && (E) por || (OU). O candidato pode ser tentado a manter && ou usar !empty(), mas o raciocínio correto é: se algum campo está vazio, deve mostrar erro. Portanto, use || e não &&.

Gabarito: letra E

Link permanente: /questoes/qq892781