Assinale a alternativa que apresenta o valor correto resulta...

Próximas questões
Com base no mesmo assunto
Q4110115 Programação
Assinale a alternativa que apresenta o valor correto resultante da execução o código em Java abaixo
public class calculo {  static int funcao(int n1, int n2){ return n1+n2; }  static int funcao1(int n1, int n2){ return n1*n2; }  public static void main(String[] args) {  System.out.println(funcao1(funcao(3,5),4)); } }
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Gabarito: D

Fundamento decisivo: O ponto decisivo é a avaliação da chamada aninhada System.out.println(funcao1(funcao(3,5),4)): primeiro se obtém o retorno de funcao(3,5), que é usado como argumento de funcao1, definindo a alternativa correta.

Tema central: chamada aninhada de métodos
Análise das alternativas
A
Errada
12 está em confronto com o fluxo real do código, porque a execução correta produz primeiro 8 e depois 32. Esse valor não corresponde nem ao retorno da chamada interna nem ao resultado final impresso.
B
Errada
15 não decorre das operações definidas nos métodos. Como funcao realiza 3+5=8 e funcao1 usa esse resultado em 8*4=32, 15 não aparece em nenhuma etapa válida.
C
Errada
20 resulta de tratar 5 como argumento direto de funcao1, mas isso contraria a chamada aninhada. O primeiro argumento de funcao1 é o retorno de funcao(3,5), que é 8, e não o literal 5.
D
Certa
O critério é substituir os retornos dos métodos na ordem lógica da chamada aninhada. Pelo código, funcao(int n1, int n2) faz soma, então funcao(3,5)=8; depois funcao1(int n1, int n2) faz multiplicação, logo funcao1(8,4)=32. Esse é o valor efetivamente impresso.
Pegadinha da questão
A confusão real era ignorar a chamada aninhada, trocar a função que soma pela que multiplica ou parar no resultado intermediário 8 sem calcular o valor impresso.
Dica para questões semelhantes
  • Em chamada aninhada, resolva primeiro o método mais interno antes de avaliar o método externo.
  • Identifique no corpo de cada método qual operação ele realmente executa antes de substituir argumentos e retornos.
  • Diferencie resultado intermediário de valor efetivamente impresso pela instrução final.

Clique para visualizar este gabarito

Visualize o gabarito desta questão clicando no botão abaixo