Pular para o conteúdo principal

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

ProgramaçãoJava
Código
qq890543
Banca
FUNDATEC
Órgão
CIGA-SC
Ano
2023
Nível
Médio
Cargo
Proramador
Analise o código Java abaixo:Imagem associada para resolução da questãoQual o valor armazenado na variável primeiroDigito após a sua execução?
  1. A10
  2. B0
  3. C11
  4. D2
  5. E1
Revelar gabarito e comentário

GabaritoE — 1

Esta resolução diverge do gabarito oficial. A banca deu Letra E; a resolução abaixo sustenta o contrário e explica por quê — ela não foi reescrita para concordar. Acontece nos dois sentidos: há gabarito que cai em recurso e há resolução que erra. Confira na fonte antes de fixar o entendimento.
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”.

Resolução

Gabarito: letra E — a conta chega a O valor armazenado em primeiroDigito é 11, correspondente à alternativa C..

A ideia por trás

O operador ternário é uma forma compacta de escrever um if-else em uma única expressão. Ele tem três partes: uma condição booleana, o valor retornado se a condição for verdadeira e o valor retornado se for falsa. A sintaxe é condicao ? valorSeVerdadeiro : valorSeFalso. Quando há ternários dentro de ternários, a avaliação acontece de dentro para fora: primeiro resolvem-se os mais internos, e o resultado de cada um vira operando do mais externo.

A avaliação segue a regra: se a condição for verdadeira, o resultado é o valor à esquerda dos dois pontos; se for falsa, o resultado é o valor à direita. No caso aninhado, cada ramo pode ser outro ternário, e ele só é avaliado se o ramo for escolhido. Por isso, a ordem importa: primeiro decidimos qual ramo do ternário mais externo será usado, depois avaliamos o ternário desse ramo.

Esta questão cobra exatamente a avaliação de um ternário aninhado: substituir os valores das variáveis e resolver cada condição na ordem correta, de dentro para fora.

O que a questão dá

  • x = 11

  • y = -7

  • z = 1

  • expressão: (x >= y) ? ((x >= z) ? x : z) : ((y >= z) ? y : z)

O que queremos: o valor armazenado na variável primeiroDigito

Passo 1 — Substituir os valores na expressão

Para avaliar a expressão, precisamos trocar as variáveis pelos números que elas representam. Isso evita erros de leitura e permite ver claramente as comparações.

NÃO CAIA NESSA!

Trocar os valores de x, y e z de forma errada, por exemplo, usar x = 10 em vez de 11.

Passo 2 — Avaliar a condição mais externa

A expressão é um ternário aninhado, então começamos pela condição mais externa para decidir qual ramo será avaliado.

Por que esta fórmula: A condição é (x >= y). Com x = 11 e y = -7, temos 11 >= -7, que é verdadeira. Portanto, o ramo verdadeiro é o ternário interno (x >= z) ? x : z.

NÃO CAIA NESSA!

Avaliar o ramo falso por engano, ou esquecer que a condição é verdadeira.

Passo 3 — Avaliar o ternário interno do ramo verdadeiro

Como a condição externa foi verdadeira, agora precisamos avaliar o ternário que está no ramo verdadeiro: (x >= z) ? x : z.

Por que esta fórmula: A condição é (x >= z). Com x = 11 e z = 1, temos 11 >= 1, que é verdadeira. Portanto, o resultado é o valor de x, que é 11.

11\boxed{11}
NÃO CAIA NESSA!

Confundir a ordem dos operandos e retornar z em vez de x, ou avaliar a condição como falsa.

Resposta: O valor armazenado em primeiroDigito é 11, correspondente à alternativa C.

Link permanente: /questoes/qq890543