Pular para o conteúdo principal

Questão de Arquitetura de Software — Software — FCC 2023

Arquitetura de SoftwareSoftware
Código
fc069688
Banca
FCC
Órgão
TRT - 15ª Região (SP)
Ano
2023
Nível
Superior
Cargo
Analista Judiciário - Área Apoio Especializado - Especialidade Tecnologia da Informação
Um Analista fez um programa Java que permite ao usuário informar o número de anos de serviço de um funcionário e, em seguida, calcula a quantidade total de dias de férias acumuladas com base nas regras estabelecidas: 15 dias de férias para funcionários com até 5 anos de serviço e 15 dias adicionais para cada novo período de até 5 anos.import java.util.Scanner;public class Férias {public static void main(String[] args) {Scanner scanner = new Scanner (System.in);System.out.print ("Informe o número de anos de serviço: ");int anosServico = scanner.nextInt();int diasFerias = calcular (anosServico) ;System.out.println("Dias de férias acumuladas: " + diasFerias);}public static int calcular (int anosservico) {if (anosservico <= 5) {return 15;} else {}}}Para que o programa execute corretamente na forma descrita, no interior do bloco else do método calcular deve ser colocada a instrução
  1. Areturn calcular (anosServico - 5);
  2. Breturn 15 + calcular (anosservico = 15);
  3. Creturn 15 + (anosServico - 5);
  4. Dreturn 15 + calcular (anosServico - 5);
  5. Ereturn anosservico + 15;
Revelar gabarito e comentário

GabaritoD — return 15 + calcular (anosServico - 5);

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”.

Java: Recursão para cálculo de férias acumuladas

Gabarito: letra D. O método calcular deve retornar 15 dias para cada período completo de 5 anos de serviço. Para anos acima de 5, a cada 5 anos adicionais soma-se mais 15 dias, o que é obtido recursivamente com return 15 + calcular(anosServico - 5).

O código fornecido define: funcionários com até 5 anos recebem 15 dias; a cada novo período de até 5 anos, adicionam-se 15 dias. Isso exige recursão (ou loop), e a alternativa D é a única que implementa corretamente a lógica.

Alternativa A — ❌ Incorreta

return calcular(anosServico - 5); — retorna apenas o valor recursivo, sem somar os 15 dias do período atual. Exemplo: para 6 anos, retornaria calcular(1) = 15, mas o correto é 30.

Alternativa B — ❌ Incorreta

return 15 + calcular(anosservico = 15); — a instrução anosservico = 15 atribui 15 ao parâmetro, causando loop infinito (sempre chamará calcular(15)). Além disso, não reduz corretamente os anos.

Alternativa C — ❌ Incorreta

return 15 + (anosServico - 5); — soma 15 ao valor anosServico - 5, o que não representa a acumulação correta. Exemplo: 6 anos → 15 + 1 = 16, mas o correto é 30. Esta alternativa parece uma fórmula linear, mas a regra exige adicionar 15 a cada bloco de 5 anos, e não apenas uma vez.

Alternativa D — ✅ Correta ⟵ GABARITO

return 15 + calcular(anosServico - 5); — para cada faixa de 5 anos além do primeiro, soma 15 e chama recursivamente com o restante. Exemplo: 11 anos → calcular(11) = 15 + calcular(6) = 15 + (15 + calcular(1)) = 15 + 15 + 15 = 45. Lógica perfeitamente alinhada ao enunciado.

Alternativa E — ❌ Incorreta

return anosservico + 15; — simplesmente soma os anos de serviço com 15, sem qualquer recursão ou estrutura condicional. Resultado sem sentido.

NÃO CAIA NESSA!

A banca testa se o candidato entende que a regra exige recursão acumulativa. A alternativa C parece tentadora por usar 15 + (anos - 5), mas isso não repete a soma a cada bloco de 5 anos. Já a alternativa A esquece de adicionar os 15 do período atual. A correta (D) é a única que combina a soma com a chamada recursiva reduzindo corretamente os anos.

Gabarito: letra D.

Link permanente: /questoes/fc069688