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

[Sugestão] Erro no código da atividade

Olá,

Na atividade "trabalhando com if" na aula "05.Controle de fluxo com if" do curso "C#:explorando a linguagem" existe um erro no código.

O código atual é:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

class Programa
{
    static void Main(string[] args)
    {    
        double salario = 1500.0;

        if(salario < 2600.0) 
            Console.WriteLine("A sua aliquota é de 15%");
            Console.WriteLine("Você pode deduzir até R$ 350");

        if(salario < 3750.0) 
            Console.WriteLine("A sua aliquota é de 22,5%");
            Console.WriteLine("Você pode deduzir até R$ 636");
    }    
}

Ao executar o código com um valor de salário menor que 2600 será printado os 4 textos, conforme a imagem, mesmo adicionando as chaves, o que seria a resulução do problema, segundo a plataforma.

Resultado atual com salário < 2600

O código correto deveria conter, além das chaves, o else. O código ficaria da seguinte forma:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

class Programa
{
    static void Main(string[] args)
    {
        double salario = 1500.0;

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

Obs. Os valores de dedução também estão errados. Mas entendo que o objetivo seja apenas a didatica. Os valores corretos seriam: Tabela de IRRF de 04/2015 a 12/2022Caso desejem aplicar os valores aproximados, segue o código:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

class Programa
{
    static void Main(string[] args)
    {
        double salario = 1500.0;

        if (salario > 2820.0 && salario <3750.0)
        {
            Console.WriteLine("A sua aliquota é de 15%");
            Console.WriteLine("Você pode deduzir até R$ 350");
        }
        else
        {
            if (salario > 3750.0 && salario < 4660.0)
            {
                Console.WriteLine("A sua aliquota é de 22,5%");
                Console.WriteLine("Você pode deduzir até R$ 636");
            }
        }            
    }
}
2 respostas
solução!

Olá Henrique, tudo bem com você?

Muito legal a sua observação e de fato seria interessante usar um bloco else, ou até mesmo else if para aprimorar a execução desse código! No entanto, só seria possível utilizar esses blocos caso o primeiro bloco if tivesse envolto em chaves, caso contrário, o código não compilaria. Nesse exercício, o propósito era exercitar a sintaxe e o comportamento dos blocos condicionais com ou sem chaves, para análise do código e entender porquê a saída saiu diferente do esperado pelo João!

Ainda assim, parabéns pela dedicação e por ir além, achei muito legal a solução proposta por você para aprimorar o comportamento do código e por ter compartilhado aqui com a gente no fórum o seu parecer sobre o exercício! Como sugestão, apenas reitero o uso o bloco else if, ao invés de aninhar um if dentro de um else.

Lembre-se que você pode sempre contar com o fórum para tirar suas dúvidas e compartilhar sua evolução!

Um grande abraço e bons estudos!

Estou bem tabmém.

Logo abaixo tinha um desafio pedindo exatamente o que eu disse na mensagem, eu não tinha visto rsrs Apliquei o else if, ficou dessa forma:

using System;

class Programa
{
    static void Main(string[] args)
    {
        double salario = 3300.0;

        if (salario >= 1900.0 && salario <= 2800.0)
        {
            Console.WriteLine("O IR é de 7.5%");
            Console.WriteLine("Você pode deduzir até R$142");
        }
        else if (salario >= 2800.01 && salario <= 3751.0)
        {
            Console.WriteLine("O IR é de 15%");
            Console.WriteLine("Você pode deduzir até R$350");
        }
        else if (salario >= 3751.01 && salario <= 4664.0)
        {
            Console.WriteLine("O IR é de 22.5%");
            Console.WriteLine("Você pode deduzir até R$636");
        }

    }
}

Obrigado pelas dicas, abraço!