Pular para o conteúdo principal

Questão de Programação — Linguagens de programação — FGV 2024

ProgramaçãoLinguagens de programação
Código
fg098531
Banca
FGV
Órgão
TJ-MS
Ano
2024
Nível
Superior
Cargo
Técnico de Nível Superior - Analista de Sistemas Computacionais - Analista de Sistemas
Murilo, analista de sistemas, escreveu um código em PHP, que incluía o trecho a seguir:Linha 1: $x = -1;Linha 2: function funcao($y, $z) {Linha 3:Linha 4: $retorno = x∗x*y + 3*$z;Linha 5:Linha 6: return $retorno;Linha 7: }Linha 8:Linha 9: echo funcao(3,5);Ele pretendia que, ao executá-lo, fosse exibido o valor 12. Para isso, Murilo alterou uma linha do código.A linha alterada ficou da seguinte maneira:
  1. ALinha 3: var $x;
  2. BLinha 3: global $x;
  3. CLinha 1: var $x = -1;
  4. DLinha 1: global $x = -1;
  5. ELinha 3: global $x = -1.
Revelar gabarito e comentário

GabaritoB — Linha 3: global $x;

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 – Escopo de Variáveis

Gabarito: letra B. Para que a função funcao acesse a variável $x definida fora dela, é necessário declará-la como global dentro da função. Sem isso, $x é tratada como variável local não definida, resultando em valor 0 (ou aviso) e produzindo saída 15, não 12. A linha global $x; insere a variável global no escopo, fazendo o cálculo (-1)*3 + 3*5 = 12.

O problema central é que, em PHP, variáveis definidas fora de uma função não são automaticamente visíveis dentro dela. Para acessá-las, usa-se global $nome_da_variavel; ou o array $GLOBALS['x']. O código original:

$x = -1;
function funcao($y, $z) {
    $retorno = $x*$y + 3*$z;
    return $retorno;
}
echo funcao(3,5);

A variável $x na função é uma variável local não inicializada, que em PHP assume o valor 0 (com aviso). Assim, 0*3 + 15 = 15. Para obter 12, $x precisa valer -1 e ser acessível. A solução é adicionar global $x; dentro da função.

  1. 1Variável definida fora da função
  2. 2Dentro da função: não é visível
  3. 3Solução: declarar global $x;
  4. 4Cálculo: (-1)*3 + 3*5 = 12
LEVEL · soulevel.com.br

Alternativa A — ❌ Incorreta

var $x; na linha 3. A palavra var é obsoleta em PHP para propriedades de classe, não tem efeito dentro de uma função. A variável $x continua local e não referenciada.

Alternativa B — ✅ Correta ⟵ GABARITO

global $x; na linha 3 torna a variável global $x (com valor -1) acessível dentro da função. O cálculo resulta em -3 + 15 = 12.

Alternativa C — ❌ Incorreta

var $x = -1; na linha 1. var não altera o escopo; a variável permanece global, mas dentro da função ela ainda não é global sem declaração. Além disso, var é inapropriado nesse contexto.

Alternativa D — ❌ Incorreta

global $x = -1; na linha 1. global é uma palavra-chave que só pode ser usada dentro de funções, e não permite atribuição direta. Causa erro de sintaxe.

Alternativa E — ❌ Incorreta

global $x = -1; na linha 3. Mesmo erro: global dentro da função não aceita atribuição. A sintaxe correta é global $x; e depois $x = -1; se necessário.

NÃO CAIA NESSA!

A banca explora a confusão entre escopo local e global. O candidato pode pensar que $x já é acessível por ser definida antes da função, mas em PHP isso não ocorre. É essencial lembrar que variáveis globais só são visíveis em funções se explicitamente importadas com global ou $GLOBALS.

Link permanente: /questoes/fg098531