Pedro recebeu a tarefa de desenvolver um programa que solic...
- 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
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