SóProvas


ID
2858908
Banca
IF-MT
Órgão
IF-MT
Ano
2018
Provas
Disciplina
Programação
Assuntos

Considere o seguinte fragmento de código escrito em PHP: 


 < ?php

function foo($arg)

{

        echo $arg + 1;

}

$var = 1;

echo "foo($var) = " . foo($var);

? >


Após sua execução, qual é o resultado exibido? 

Alternativas
Comentários
  • D- 2foo(1) =

  • Alguém explica?

  • O echo funciona como ultimo membro de saída. ou seja quando processado a saída e por ele.

    logo quando e pedido para mostrar uma string concatenado com uma função as funções são processadas primeiro.

    <?php

    function foo($arg){

    echo $arg + 1;

    }

    $var = 1;

    echo "foo($var) = "; //output foo(1) = 

    echo foo($var); //output 2

    foo($var); //output 2 (ja que a função faz um echo)

    echo "foo($var) = " . foo($var); //output 2foo(1) = 

    echo foo($var) . "foo($var) = "; //output 2foo(1) = 

    echo "foo($var) = foo($var)"; //output foo(1) = foo(1)

    Pode testar o alga aqui

    http://phptester.net/

  • a function foo não devolve valores (sem instrução return) e não altera o valor do parâmetro.

    a única coisa que essa função faz é "printar" o valor do parâmetro acrescido de um.

    Além disso, a função foo só está sendo chamada uma vez e antes desse echo!

    Assim, a função foo é executada antes deste echo

    echo "foo($var) = " . foo($var);

    Portanto, a saída/resposta começa por (echo $var+1;).

    Em seguida, $var é substituído por 1 em "foo($var) = "

    foo($var); não concatena nada pois não tem return;

    logo 2foo(1) =

  • Pegadinha master nessa questão. O examinador estava inspirado.

    Para não errar, precisamos resolvê-la bem passo a passo, pois assim enxergaremos a ordem exata de execução de cada trecho do código.

    Vamos a resolução:

    1) Para que o comando

    echo "foo($var) = " . foo($var);

    Seja executado, primeiro precisamos resolver a chamada a função foo($var).

    2) Ao executar a função foo($var), é executado o comando

    echo $arg + 1

    Que imprime na tela a string "2".

    Em seguida a função termina SEM RETORNAR NADA

    3) Agora sim o comando 

    echo "foo($var) = " . foo($var);

    Pode ser executado, pois a chamada a função foo($var) já foi resolvida.

    Como a função foo não tinha retorno, o resultado da concatenação de "foo($var) = ". foo($var) é apenas "foo($var) = ", que resulta em: "foo(1) = "

    4) Só que antes, já havia sido impressa na tela a string "2" (passo 2). Portanto, o resultado final impresso na tela é:

    "2foo(1) = "

    Resposta: D

    Prof. Mateus Gregório