Questão de Arquitetura de Software — Software — FCC 2023
Arquitetura de Software›Software
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
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.