Pedro recebeu a tarefa de desenvolver um programa que solic...

Próximas questões
Com base no mesmo assunto
Q410820 Programação
Pedro recebeu a tarefa de desenvolver um programa que solicitasse um valor de salário e categorizasse o funcionário por cargo, da seguinte forma:

- Se o valor do salário for menor do que 1.000,00, armazenar na variável cargo o valor "Estagiário";
- Senão, se o valor do salário for maior ou igual a 1.000,00 e menor do que 5.000,00, armazenar na variável cargo o valor "Vendedor";
- Senão, se o valor do salário for maior ou igual a 5.000,00, armazenar na variável cargo o valor "Gerente".

Pedro desenvolveu, então, o programa abaixo utilizando a linguagem Java:

1. public class Empresa {
2. public static void main(String[] args) {
3. String cargo;
4. double salario;
5. salario = Double.parseDouble(JOptionPane.showInputDialog("Digite o valor do salário:"));
6. if (salario < 1000.00) {
7. cargo = "Estagiário";
8. } else if (salario >= 1000.00 && salario < 5000.00) {
9. cargo = "Vendedor";
10. } else {
11. cargo = "Gerente";
12. }
13. }
14. }

Considerando que os números das linhas não fazem parte do código, a lógica do programa não será afetada e nem ocorrerá erro se for
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

A alternativa correta é a D. Para entender o porquê, é importante conhecer a lógica de controle de fluxo em programação, mais especificamente em Java, e como as estruturas condicionais if e else if funcionam.

O programa em questão utiliza uma série de condicionais para determinar o cargo de um funcionário com base em seu salário. A primeira condição verifica se o salário é menor que 1.000,00, e se verdadeiro, atribui o cargo de "Estagiário". Se essa primeira condição falhar (salario < 1000.00 for falso), o programa então avalia a condição do else if, que originalmente verifica se o salário está no intervalo de 1.000,00 a 4.999,99. A última condição (else) é o caso padrão, onde se as outras condições não forem satisfeitas, o funcionário é categorizado como "Gerente".

Ao remover a condição salario >= 1000.00 && da linha 8, ainda assim o programa funcionará corretamente. Isso ocorre porque, se o salário fosse menor que 1.000,00, a condição do primeiro if já teria sido satisfeita e o cargo de "Estagiário" teria sido atribuído. Então, quando o programa chega no else if, já é implícito que o salário é igual ou maior que 1.000,00 (pois não entrou na primeira condição), e só precisamos conferir se ele é menor que 5.000,00 para categorizar como "Vendedor".

Portanto, a condição do else if acaba sendo redundante, e a verificação salario >= 1000.00 pode ser removida sem impactar a lógica do programa, mantendo-o funcional e correto em relação às regras estabelecidas no enunciado. Por isso a alternativa D é a correta.

Clique para visualizar este gabarito

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

Comentários

Veja os comentários dos nossos alunos

a) erro de lógica pois o else da linha 10 será desnecessário

b) erro de sintaxe em "&& < 5000"

c) erro de sintaxe em "else (salario"

d) CORRETA

e) erro de sintaxe em utilizar atribuição com "=="

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo