Visual Basic .NET - Agenda de amortização


 Neste artigo eu vou apresentar um programa bem simples feito na linguagem VB .NET que realiza cálculos para simulação financeira de empréstimos montando uma agenda de amortização.

Você sabia que os tipos de dados básicos não fazem mais parte da linguagem Visual Basic (ou C#) ?

Eles agora são parte da CLR - Common Language Runtime, que é um componente básico do Visual Studio (na verdade, é o núcleo do Visual Studio e é compartilhado por todas as linguagens que podem ser usadas no Visual Studio).

Todos os tipos de dados expõe um método ToString, que retorna o valor da variável (um número ou data) como uma string (cadeia de caracteres) de modo que ele pode ser usado com outras strings no seu código. O método ToString formata números e datas de muitas maneiras, e, é provavelmente um dos métodos mais usados no dia a dia.

Você pode usar o formato padrão de strings para as opções de formatação mais comuns ou usar a máscara de formatação string para especificar uma formatação menos comum.

Para formatar o valor de 9959,95 como um valor em reais, você pode usar o especificador de formato C, que significa Currency(Moeda). Ex:

Dim valor As Single = 9959.95
Dim strValor As String
strValor = valor.ToString("C")

Ou pode usar a máscara string para formatação numérica:

strValor = valor.ToString("R$ #,###.00")

Ambas as declarações irão formatar o valor para R$ 9.959,95. (pois minha localização é Brazil)

O método String.Format

Este método converte o valor de objetos em cadeias de caracteres com base nos formatos especificados e os insere em outra cadeia de caracteres.

Use String.Format se você precisar inserir o valor de um objeto, variável ou expressão na outra cadeia de caracteres. Por exemplo, você pode inserir o valor de uma Decimal valor em uma cadeia de caracteres para exibi-lo ao usuário como uma única cadeia de caracteres controlando a formatação do valor:

Dim precoPorKilo As Decimal = 17.36d
Dim s As String = String.Format("O preço atual é {0:C2} por kilo.", precoPorKilo )

' Resultado se a cultura atual for pt-br: O preço atual é  R$17,36 por kilo.

Os pontos de inserção em colchetes são substituídos pelos valores reais pela função.

Na linha de cima, {0} é um ponto de inserção, que é substituído com o segundo objeto passado para a função (neste exemplo, este objeto é precoPorKilo).

Observe que após o ponto de inserção temos uma vírgula e então uma opção que controla como a string será exibida. {0:C2}

A opção C2 converte o número para o formato currency com duas casas decimais considerando a localização do usuário.

Além de formatação, você também pode controlar o alinhamento e o espaçamento. Abaixo os principais caracteres de formatação usados:

Caractere de
Formatação
Descrição
C ou c Moeda
D ou d Decimal
E ou e Scientific Format
F ou f Fixed-point format
G ou g General Format
N ou n Number Format
P ou p Percentage
R ou r Round-trip
X ou x Hexadecimal format

Para objetos data e hora  os formatos mais usados são:

Caractere de
Formatação
Descrição
D Exibe a data e/ou a hora no formato longo
d Exibe a data e/ou a hora no formato curto
T Exibe a hora no formato longo
t Exibe a hora no formato curto
G Exibe a data e/ou hora
g Exibe a data/hora no formato curto
M ou m Exibe o mês e o dia da data
Y ou y Formata a data como ano e mês

Vejamos a seguir um exemplo prático onde iremos aplicar esses conceitos.

Recursos usados:

Nota: Baixe e use a versão Community 2015 do VS ela é grátis e é equivalente a versão Professional.

Criando o projeto no VS Community

Abra o VS Community 2015 e clique em New Project;

Selecione a linguagem Visual Basic e o template Windows Forms Application;

Informe o nome Agenda_Amortizacao e clique no botão OK;

Altere o nome do formulário form1.vb para frmAgendaAmortizacao.vb.

A partir da ToolBox inclua no formulário os seguintes controles:

Disponha os controles no formulário conforme a figura abaixo:

No menu Project clique em Add Windows Forms;

Selecione a opção About Box e aceite o nome padrão : AboutBox1.vb

Vamos definir o seguinte leiaute para o formulário AboutBox1.vb :

O código gerado para este formulário é visto a seguir:

Public NotInheritable Class AboutBox1
    Private Sub AboutBox1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        ' Define o titulo do formulário
        Dim ApplicationTitle As String
        If My.Application.Info.Title <> "" Then
            ApplicationTitle = My.Application.Info.Title
        Else
            ApplicationTitle = System.IO.Path.GetFileNameWithoutExtension(My.Application.Info.AssemblyName)
        End If
        Me.Text = String.Format("Sobre {0}", ApplicationTitle)
        Me.LabelProductName.Text = My.Application.Info.ProductName
        Me.LabelCopyright.Text = My.Application.Info.Copyright
    End Sub
    Private Sub OKButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OKButton.Click
        Me.Close()
    End Sub
End Class

No menu Sobre inclua o código abaixo para exibir o formulário AboutBox1:

 Private Sub AboutToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AboutToolStripMenuItem.Click
        AboutBox1.ShowDialog()
    End Sub

Agora vamos definir o código do evento Click do botão btnCalcular :

    Private Sub btnCalcular_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCalcular.Click
        'Declara variáveis usadas no projeto
        Dim intNumeroMeses As Integer
        Dim dblPagamentoMensal As Double
        Dim dblTaxaJuros As Double
        Dim intNumeroPagamentos As Integer
        Dim dblPrincipal As Double
        Dim dblConverteJuros As Double    'converte para juros mensal
        Dim intParcelas As Integer = 1         'inicializa
        Dim decSaldoDeduzido As Decimal
        Dim jurosPagos As Decimal
        Dim decNovoSaldo As Decimal
        Dim dblTotalPagamentos As Double
        Dim dblJurosDecimal As Double     'converte os juros para decimal
        'obtém a entrada do usuário
        dblPrincipal = Val(txtPrincipal.Text)
        dblTaxaJuros = Val(txtJuros.Text)
        intNumeroMeses = Val(txtNumeroMeses.Text)
        'verifica os erros
        If txtPrincipal.Text = "" Then
            ErrorProvider1.SetError(txtPrincipal, "Informe o valor do Principal.")
        ElseIf txtJuros.Text = "" Then
            ErrorProvider2.SetError(txtJuros, "Informe a taxa de juros.")
        ElseIf txtNumeroMeses.Text = "" Then
            ErrorProvider3.SetError(txtNumeroMeses, "Informe o numero de meses do empréstimo.")
        End If
        '********************************************************************
        '  Calcula o pagamento mensal usando a fórmula                      *
        '   M = P * i / ( 1 - ( 1 + i ) ^ -n)                               *
        '********************************************************************
        '1. converte a taxa de juros para decimal
        dblJurosDecimal = dblTaxaJuros / 100
        '2. calcula os juros
        dblConverteJuros = dblJurosDecimal / 12
        '3. calcula o numero total de pagamentos (como esta em meses)
        intNumeroPagamentos = intNumeroMeses
        '4. Calcula o pagamento mensal
        dblPagamentoMensal = dblPrincipal * dblConverteJuros / (1 - (1 + dblConverteJuros) ^ -intNumeroPagamentos) 'end monthtly payment  
        'exibe o pagamento mensal 
        lblPagamentoMensal.Text = String.Format("{0:C}", dblPagamentoMensal)
        ' limpa o ListBox
        lbAgendaPagamento.Items.Clear()
        dblTotalPagamentos = intNumeroPagamentos * dblPagamentoMensal 'total de pagamentos
        lblTotalPagamentos.Text = String.Format("{0:C}", dblTotalPagamentos)
        decNovoSaldo = dblPrincipal                                                                 ' inicializa o saldo
        Do While intParcelas <= intNumeroPagamentos
            jurosPagos = decNovoSaldo * dblConverteJuros
            decSaldoDeduzido = dblPagamentoMensal - jurosPagos
            decNovoSaldo = decNovoSaldo - decSaldoDeduzido
            lbAgendaPagamento.Items.Add(intParcelas & ControlChars.Tab & _
            ControlChars.Tab & String.Format("{0:C}", dblPagamentoMensal) & ControlChars.Tab & _
            ControlChars.Tab & String.Format("{0:C}", jurosPagos) & ControlChars.Tab & _
            ControlChars.Tab & String.Format("{0:C}", decSaldoDeduzido) & _
            ControlChars.Tab & ControlChars.Tab & String.Format("{0:C}", decNovoSaldo))
            intParcelas += 1
        Loop
    End Sub

Esse código, embora pareça complexo, é muito simples, e, mostra como realizar cálculos e usar o recurso String.Format.

Agora é só alegria...

Executando o projeto vemos algumas verificações feitas conforme a figura abaixo:

Se você quer um programa mais completo veja o : C# - Controle Financeiro Pessoal (completo com os fontes abertos)

Pegue o projeto completo aqui:   Agenda_Amortizacao.zip

(Disse Jesus aos seus discípulos) : "Se vós fôsseis do mundo, o mundo amaria o que era seu, mas porque não sois do mundo, antes eu vos escolhi do mundo, por isso é que o mundo vos odeia."
João 15:19

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

Quer migrar para o VB .NET ?

Quer aprender C# ??

Quer aprender os conceitos da Programação Orientada a objetos ?

Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?

  Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter

Referências:


José Carlos Macoratti