C# -  Calculadora de Empréstimos - EMI (só para novatos)


Este artigo é voltado somente para novatos na linguagem C# e mostra como podemos criar uma aplicação C# para calcular valores de um parcelamento mensal equiparado ou EMI - Equated Monthly Installment - em inglês.

Teoria

Um parcelamento mensal equiparado - EMI - é o valor a ser pago a cada mês para o banco ou qualquer outra instituição financeira, até o montante do empréstimo estar totalmente pago. Trata-se dos juros sobre o empréstimo, bem como parte do valor do principal a ser reembolsado. A soma do valor principal e dos juros é dividido pelo prazo, ou seja, do número de meses em que o empréstimo tem de ser reembolsado. Este montante tem de ser reembolsado mensalmente.

O componente dos juros do EMI seria maior nos primeiros meses sendo reduzido gradualmente quando comparado com o valor do principal. A porcentagem exata alocada para o pagamento do principal depende da taxa de juros. Mesmo que o seu pagamento mensal não mudar, a proporção de capital e juros componentes vai mudar com o tempo. Com cada pagamento sucessivo, você vai pagar mais para o principal e menos em juros.

Resumindo:

"O EMI - é uma quantia fixa paga por um devedor a um credor em uma data específica a cada período. As parcelas mensais equacionadas são usadas para pagar tanto os juros como o principal , de modo que ao longo de um determinado número de tempo, o empréstimo é pago integralmente ".

A fórmula para calcular EMI é :

Onde :

Traduzindo essa fórmula para a linguagem C# e alterando a taxa de juros e período de mensal para anual teremos o seguinte resultado:

EMI = ((p*r/12) (1+r/12)^n) / ((1+r/12)^n - 1 )

Abaixo temos a expressão C# que representa a fórmula acima:

ValorEmprestimo * Math.Pow((taxaJuros/12) + 1, (PeriodoPagamento)) * taxaJuros / 12)
/ (Math.Pow(taxaJuros / 12 + 1, (PeriodoPagamento)) - 1);

Onde:

A montagem desta expressão que representa a fórmula para cálculo do empréstimo EMI usa o seguintes operadores e regra de precedência da linguagem C#:

Em uma expressão a precedência determina a ordem de execução dos operadores. 

Cada operador tem uma precedência definida. Em uma expressão que contém vários operadores que têm níveis diferentes de precedência, a precedência dos operadores determina a ordem na qual os operadores são avaliados.

Na linguagem C# os operadores de multiplicação(*)  e divisão(/) têm prioridades sobre os operadores de adição(+)  e de subtração (-).

Quando dois ou mais operadores tiverem a mesma precedência estão presentes em uma expressão, eles são avaliados com base na associação. Operadores associativos à esquerda são avaliados na ordem da esquerda para a direita.

Por exemplo,  x * y / z é avaliado como (x * y) / z. Operadores associativos à direita são avaliados na ordem da direita para esquerda. Por exemplo, o operador de atribuição é associativo à direita.

z = 78 * (96 - 3 + 45)
Na expressão acima temos 5 operadores :  =, *, (), -, e +
De acordo com a regra de precedência eles serão avaliados na seguinte ordem: (), -, +, *, =.

Logo, para poder determinar a ordem na qual desejamos realizar uma operação, podemos usar o operador parênteses () e agrupar as operações.

Assim :   2 + 8 / 2         terá como resultado o valor 6 pois a operação de divisão de maior precedência;

            (2 + 8) / 2      terá como resultado o valor 5 pois a operação que esta entre parênteses será executada primeiro;

            ( (2+8)*2 - 1) / ( 2*2)  terá como resultado 4.0;

Criando o projeto

Agora vamos criar a aplicação C# usando o Visual Studio 2012 Express for desktop.

Abra o Visual Studio 2012 Express for desktop e clique em New Project selecionando o template Windows Forms Application:

Selecione a linguagem C# e Informe o nome CalculadaoraEMI;

A seguir vamos incluir a partir da ToolBox os seguintes controles no formulário form1.cs:

Disponha os controles conforme o leiaute da figura abaixo:

No evento Click do botão de comando Calcular inclua o código abaixo:

        private void button1_Click(object sender, EventArgs e)
        {
            double ValorEmprestimo = 0;
            double Pagamento = 0;
            double taxaJuros = 0;
            double valorTotalPago =0;
            double valorJurosPago = 0;
            int PeriodoPagamento = 0;
            try
            {
                taxaJuros = Convert.ToDouble(nupTaxaJuros.Value);
                PeriodoPagamento = Convert.ToInt16(Convert.ToDouble(nupPrazo.Value) * 12);
                ValorEmprestimo = Convert.ToDouble(txtValorEmprestimo.Text);
                if (taxaJuros >= 1)
                {
                    taxaJuros = taxaJuros / 100;
                }
                Pagamento = (ValorEmprestimo * Math.Pow((taxaJuros / 12) + 1,(PeriodoPagamento)) * taxaJuros / 12) 
                                    / (Math.Pow(taxaJuros / 12 + 1, (PeriodoPagamento)) - 1);
                valorTotalPago = Pagamento * PeriodoPagamento;
                valorJurosPago = valorTotalPago - ValorEmprestimo;
                txtPagamentoMensal.Text = Pagamento.ToString("N2");
                txtValorTotalPago.Text = valorTotalPago.ToString("N2");
                txtValorJurosPagos.Text = valorJurosPago.ToString("N2");
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

Executando  o projeto podemos ver o resultado na figura a seguir:

Pegue o projeto completo aqui:  CalculadoraEMI.zip

Mat 6:19 Não ajunteis para vós tesouros na terra; onde a traça e a ferrugem os consomem, e onde os ladrões minam e roubam;

Mat 6:20 mas ajuntai para vós tesouros no céu, onde nem a traça nem a ferrugem os consumem, e onde os ladrões não minam nem roubam.

Mat 6:21 Porque onde estiver o teu tesouro, aí estará também o teu coração.

Veja os Destaques e novidades do SUPER DVD Visual Basic 2013 (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??


    Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter

 

Referências:


José Carlos Macoratti