Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

necessidade do else if

estou com uma dúvida referente ao uso do else if... pela lógica apresentada nessa questão fica parecendo que é desnecessário, ou seja se o salário for de 2500 por exemplo, só será exibido a alíquota de 15%.

mas imagino que a questão ficou incorreta, e que o correto seria assim:

if(salário < 2600){
//
}else if(salálio < 3750){
//
}

estou enganado ou a resposta da questão está incompleta?

4 respostas

Bom dia.

A questão está correta. É que leva em conta também a questão da regra do IR, onde você paga aliquota por faixa do salário.

Salário até 2600 paga-se uma aliquota. O valor acima disso, até 3750, paga-se outra aliquota. E assim segue.

No teu caso, com else if, pagaria-se apenas uma aliquota, quando a regra é pagar mais de uma...

não, o conceito é apenas uma alíquota, quem recebe até o teto daquela alíquota não aplica a outra alíquota. Da forma que está na questão se um individuo receber 2500 ele entrará nas duas alíquotas uma vez que o código segue executando.

tenta executar na forma que está na questão alterando o salário para um valor inferior a 2600:

const salario = 2500;
if(salario < 2600.0) {
    console.log("A sua aliquota é de 15%");
    console.log("Você pode deduzir até R$ 350");
}        
if(salario < 3750.0) {
    console.log("A sua aliquota é de 22,5%");
    console.log("Você pode deduzir até R$ 636");
}

Se o conceito é de apenas uma aliquota , pode ser com else if. Mas a regra é com aliquota por faixa.

Base de cálculo (R$) / Alíquota (%) / Parcela a deduzir do IRPF (R$)

Até 1.903,98 / - / -

De 1.903,99 até 2.826,65 / 7,5 / 142,80

De 2.826,66 até 3.751,05 / 15 / 354,80 ...

solução!

Olá Marcos, tudo bem com você?

Você está certíssimo, a base do exercício é apenas para que o aluno veja que quando há mais de uma instrução é necessário utilizar um bloco de código com as chaves

Entretanto, dessa maneira como está desenhada realmente pode trazer essa ambiguidade pois o código não funciona da maneira esperada, e o correto era mesmo utilizar o else-if

Acredito que o instrutor optou dessa forma, pois da seguinte maneira:

if(salario < 2600.0)
    console.log("A sua aliquota é de 15%");
    console.log("Você pode deduzir até R$ 350");        
else if(salario < 3750.0)
    console.log("A sua aliquota é de 22,5%");

Haveria além de erro de conceito, também de compilação, pois o else não estaria relacionado com nada :)

Eu vou estar verificando alguma maneria de fazer uma alteração neste exercício para que não gere essa ambiguidade, mas acredito que o pensamento inicial não foi de um programa correto e sim apenas de conceito

Abraços e Bons Estudos!