Questão de Programação — Linguagens de programação — FGV 2024
Programação›Linguagens 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∗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:
ALinha 3: var $x;
BLinha 3: global $x;
CLinha 1: var $x = -1;
DLinha 1: global $x = -1;
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:
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.
1Variável definida fora da função
2Dentro da função: não é visível
3Solução: declarar global $x;
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.