Questão de Programação — Java — FUNDATEC 2023
- Código
- qq890543
- Banca
- FUNDATEC
- Órgão
- CIGA-SC
- Ano
- 2023
- Nível
- Médio
- Cargo
- Proramador
Qual o valor armazenado na variável primeiroDigito após a sua execução?- A10
- B0
- C11
- D2
- E1
Qual o valor armazenado na variável primeiroDigito após a sua execução?GabaritoE — 1
Gabarito: letra E — a conta chega a O valor armazenado em primeiroDigito é 11, correspondente à alternativa C..
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.
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
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.
Trocar os valores de x, y e z de forma errada, por exemplo, usar x = 10 em vez de 11.
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.
Avaliar o ramo falso por engano, ou esquecer que a condição é verdadeira.
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.
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