VB.NET - Funções Financeiras
O VB.NET apresenta em seu arsenal de classes diversas funções financeiras que podem ser usadas para cálculos financeiros. Aqui estarei apresentando um resumo das principais funções , suas propriedades e uso. |
Vou começar com as funções que retornam parâmetros básicos para um cálculo financeiro.
Ao trabalho...
lPmt
namespace -
Microsoft.VisualBasic.Financial
IPmt(rate, per, nper, pv[, fv[, due]])
rate
(requerido,Double) - a taxa de juros por período.
per (requerido,Double) - o período no qual o
pagamento será computado.
nper
(requerido;Double)
- número total de pagamentos no período.
pv
(requerido;Double)
- o valor atual de uma série de pagamentos futuros.
fv
(opcional;Double)
- o valor futuro ou balanço de caixa de um pagamento final. Se
omitido o valor padrão é zero.
due
(opcional,DueDat
enumeration) - valor que indica quando os pagamentos são
devidos. O valor padrão é
DueDate.EndOfPeriod.
DueDate.EndOfPeriod ou 0 : indica que o pagamento são devidos no final do período de pagamento
DueDate.BegOfPeriod ou 1 : indica que o pagamento são devidos no início do período
Valor de Retorno : retorna um Double representando o valor do pagamento dos juros sobre o capital investido/emprestado para um período de uma anuidade. Uma anuidade é uma série de pagamentos fixos feitos sobre um período de tempo.
Suponha que você tenha emprestado R$ 30.000,00 a uma taxa de juros anual de 11,5% para ser pago em 3 anos com pagamentos feitos no final de cada mês. Vamos calcular o valor do pagamento mensal e total que você dever receber sobre o capital no período.
Para resolver o problema basta aplicar a função : IPmt(rate, per, nper, pv[, fv[, due]])
Vamos então identificar o valor de cada argumento:
rate
- a taxa de juros mensal é obtida dividindo-se a taxa de juros
anual por 12 => 0.115/12
per - o período deverá estar compreendido
entre 1 e 36 ( 3 anos)
nper - o número de pagamentos => 36
pv - o valor atual => 30.000,00
fv - será omitido => 0
due - o pagamento será feito no ínicio de cada
mês => 1
Teremos então : lPmt(0.009583333, 1-36, 36, -30.000, 0, 1)
Sub Main() 'IPmt(rate, per, nper, pv[, fv[, due]]) 'lPmt(0.009583333, 1-36, 36, -30.000, 0, 1) Dim pv, fv, nper As Double Dim rate, Pagamento, Total As Decimal pv = 30000 fv = 0 Rate = 0.115 / 12 nper = 3 * 12 Dim per As Integer For per = 1 To nper Pagamento = IPmt(rate, per, nper, -pv, fv, 1) Console.WriteLine(" mês " & per & " : " & Pagamento) Total = Total + Pagamento Next Console.WriteLine("Total dos juros no período : " & Total) Console.ReadLine() End Sub |
O primeiro pagamento é de r$ 278,10 e o último pagamento é menor que R$ 10,00. O total pago é R$ 5.276,02 sobre o capital.
PPmt
namespace -
Microsoft.VisualBasic.Financial
PPmt(rate,
per,
nper,
pv[,
fv[,
due]])
rate
(requerido,Double) - a taxa de juros por período.
per (requerido,Double) - o período no qual o
pagamento será computado.
nper
(requerido;Double)
- número total de pagamentos no período.
pv
(requerido;Double)
- o valor atual de uma série de pagamentos futuros.
fv
(opcional;Double)
- o valor futuro ou balanço de caixa de um pagamento final. Se
omitido o valor padrão é zero.
due
(opcional,DueDat
enumeration) - valor que indica quando os pagamentos são
devidos. O valor padrão é
DueDate.EndOfPeriod.
Valor de Retorno : retorna um Double representando o pagamento do principal investido/aplicado para um dado período de um anuidade.
Para calcularmos o pagamento do principal para o exemplo anterior usamos a função : PPmt(0.009583333, 1-36, 36, -30.000, 0, 1)
Module Module1 Sub Main() 'PPmt(rate, per, nper, pv[, fv[, due]]) 'lPmt(0.009583333, 1-36, 36, -30.000, 0, 1) Dim pv, fv, nper As Double Dim rate, Pagamento, Total As Decimal pv = 30000 fv = 0 Rate = 0.115 / 12 nper = 3 * 12 Dim per As Integer For per = 1 To nper Pagamento = PPmt(rate, per, nper, -pv, fv, 1) Console.WriteLine(" mês " & per & " : " & Pagamento) Total = Total + Pagamento Next Console.WriteLine("Total do pagamento do principal : " & Total) Console.ReadLine() End Sub End Module |
O pagamento aumenta com o tempo . O valor total será igual ao montante do capital. O valor total incluindo os juros será a soma de lPmt() e PPmt().
Pmt
namespace -
Microsoft.VisualBasic.Financial
Pmt(rate,
nper,
pv[,
fv[,
due]])
rate
(requerido,Double) - a taxa de juros por período.
nper
(requerido;Double)
- número total de pagamentos no período.
pv
(requerido;Double)
- o valor atual de uma série de pagamentos futuros.
fv
(opcional;Double)
- o valor futuro ou balanço de caixa de um pagamento final. Se
omitido o valor padrão é zero.
due
(opcional,DueDat
enumeration) - valor que indica quando os pagamentos são
devidos. O valor padrão é
DueDate.EndOfPeriod.
Valor de Retorno : retorna um Double representando o pagamento(principal e juros) para uma anuidade baseada em um período com pagamentos e taxa de juros fixos.
Module Module1 Sub Main() 'Pmt(rate, nper, pv[, fv[, due]]) 'Pmt(0.009583333, 36 , 30000 , 0 , 1) Dim pv, fv, nper As Double Dim rate, Pagamento, Total As Decimal pv = 30000 fv = 0 Rate = 0.115 / 12 nper = 3 * 12 Dim per As Integer For per = 1 To nper Pagamento = Pmt(rate, nper, -pv, fv, 1) Console.WriteLine(" mês " & per & " : " & Pagamento) Total = Total + Pagamento Next Console.WriteLine("Total recebido no período : " & Total) Console.ReadLine() End Sub End Module |
FV namespace
- Microsoft.VisualBasic.Financial
FV(rate,
nper,
pmt [,
pv
[, due]])
rate
(requerido,Double) - a taxa de juros por período.
nper
(requerido;Double)
- número total de pagamentos no período.
pmt
(requerido;Double)
- o pagamento feito em cada período.
pv
(opcional;Variant)
- o valor atual de um capital ou anuidade.
due
(opcional,DueDat
enumeration) - valor que indica quando os pagamentos são
devidos. O valor padrão é
DueDate.EndOfPeriod.
Valor de Retorno : retorna um Double representando o valor futuro de uma anuidade baseado em um número regular de pagamentos de um valor fixo e uma taxa de juros sobre o período da anuidade.
Vamos supor que você deseja calcular o valor futuro de um investimento com uma taxa de juros de 6,25% , 48 pagamentos mensais de R$ 180,00 , e um valor presente de R$ 12.000,00.
Vamos definir os argumentos para a função : FV(rate, nper, pmt [, pv [, due]])
rate - a taxa de juros =>
0,0625
nper - número de pagamentos => 48
pmt - pagamento feito em cada período => 180,00
pv - valor atual do capital => 12.000,00
due - no início do período => 1 (DueDate.BegOfPeriod)
Abaixo temos o código VB.NET:
Module Module1 Sub Main() 'FV(rate, nper, pmt [, pv [, due]]) 'Vamos supor que você deseja calcular o valor futuro de um investimento 'com uma taxa de juros de 6,25% ANUAL, 48 pagamentos mensais de R$ 180,00 , 'e um valor presente de R$ 12.000,00. Dim pv, valor As Double Dim rate, pmt As Double Dim nper As Integer pmt = 180 rate = 6.25 / 100 nper = 48 pv = 12000 Console.WriteLine("Investimento : " + pv.ToString) Console.WriteLine("Taxa de juros : " + (rate / 12).ToString) Console.WriteLine("No de pagamentos : " + nper.ToString) Console.WriteLine("Valor pgto mensal : " + pmt.ToString) Console.WriteLine("") valor = FV(rate / 12, nper, -pmt, -pv, DueDate.BegOfPeriod) MsgBox("Após " & nper & " meses seus retorno será de : R$ " & valor) Console.ReadLine() End Sub |
NPer namespace
- Microsoft.VisualBasic.Financial
NPer(rate,
pmt
, pv [,
fv [, due]])
rate
(requerido,Double) - a taxa de juros por período.
pmt
(requerido;Double)
- o pagamento feito em cada período.
pv
(opcional;Variant)
- o valor atual de uma série de pagamentos futuros.
fv
(opcional;Double)
- o valor futuro de uma série de pagamentos. Se omitido o valor
padrão é zero.
due
(opcional,DueDat
enumeration) - valor que indica quando os pagamentos são
devidos. O valor padrão é
DueDate.EndOfPeriod.
Valor de Retorno : retorna um Double representando o número de pagamentos periódicos para uma anuidade.
Vamos supor que você tome um empréstimo de R$ 25.000,00 a juros de 11,5% ao ano, e você deseja pagar R$ 450,00 por mês. Vamos calcular qual o número de pagamentos você precisará fazer para quitar o empréstimo.
Usando a função NPer(rate, pmt , pv [, fv [, due]]) teremos :
rate - a taxa de juros do
período => 0,115/12
pmt -
pagamento feito em cada período => 450,00
pv - valor atual do capital => 25.000,00
fv - o valor futuro de uma
série de pagamentos. Se omitido o valor padrão é zero.
due - no
início do período => 1 (DueDate.BegOfPeriod)
O código VB.NET é o seguinte:
Module Module1 Sub Main() 'NPer(rate, pmt , pv [, fv [, due]]) 'Vamos supor que você tome um empréstimo de R$ 25.000,00 a juros de 11,5% ao ano, 'e você deseja pagar R$ 450,00 por mês. Vamos calcular qual o número de pagamentos ' você precisará fazer para quitar o empréstimo. ' Dim pv, fv As Integer Dim rate, pmt As Double Dim Total As Integer fv = 0 pv = 25000 Rate = 0.115 / 12 pmt = 450 Total = NPer(rate, -pmt, pv, fv, DueDate.EndOfPeriod) If Int(Total) <> Total Then Total = Int(Total) + 1 End If Console.WriteLine(" A duração do empréstimo será de : " & Total & " meses") Console.ReadLine() End Sub End Module |
O valor retornado para o exemplo será de 80 meses ou 6 anos e meio. Se o pagamento for aumentado de R$ 450,00 para R$ 500,00 a duração será reduzida para 68 meses.
Rate namespace
- Microsoft.VisualBasic.Financial
Rate(nper,
pmt
, pv [,
fv [, due[, guess]]])
nper
(requerido,Double) - representa o número total de pagamentos no período da
anuidade.
pmt
(requerido;Double)
- o pagamento feito em cada período.
pv
(opcional;Variant)
- o valor atual de uma série de pagamentos futuros.
fv
(opcional;Double)
- o valor futuro de uma série de pagamentos. Se omitido o valor
padrão é zero.
due
(opcional,DueDat
enumeration) - valor que indica quando os pagamentos são
devidos. O valor padrão é
DueDate.EndOfPeriod.
guess (opcional Variant) -especifica um valor estimado que será retornado pela taxa (rate). Se omitido o valor padrão é 0.1 (10 %)
Valor de Retorno : retorna um Double representando a taxa de juros para o período da anuidade.
A seguir um exemplo de código para cálculo da taxa de juros:
Module Module1 Sub Main() 'Rate(nper, pmt , pv [, fv [, due[, guess]]]) Dim Fmt, FVal, Guess, valorFinanciado, valorPagamento, numeroPagamentos, tpPgto, taxa Const ENDPERIOD = 0, BEGINPERIOD = 1 ' Quando o pagamento será feito Fmt = "##0.00" ' Define o formato da porcentagem. FVal = 0 ' ususalmente zero para um financiamento Guess = 0.1 ' 10%. valorFinanciado = InputBox("Quanto deseja financiar ?") valorPagamento = InputBox("Qual o valor do pagamento mensal ?") numeroPagamentos = InputBox("Quer pagar em quantos meses ?") tpPgto = MsgBox("Você vai realizar pagamentos no final do mês ? ", vbYesNo) If tpPgto = vbNo Then tpPgto = BEGINPERIOD Else tpPgto = ENDPERIOD End If taxa = (Rate(numeroPagamentos, -valorPagamento, valorFinanciado, FVal, tpPgto, Guess) * 12) * 100 MsgBox("A taxa de juros é : " & Format(CInt(taxa), Fmt) & " % ") Console.ReadLine() End Sub |
Já deu para sentir que o VB.NET fornece muitos recursos para cálculos financeiros. E não acabou , ainda existem as seguintes funções :
Função | Retorno |
PV() | o valor presente de um investimento |
NPV() | o valor líquido de um investimento baseado em um série de fluxo de caixa periódicos e uma taxa de desconto |
IRR() | A taxa interna de retorno de um investimento |
MIRR() | A taxa interna modificada de retorno para uma série de fluxo de caixa periódicos |
DDB() | A depreciação de um bem para um período de tempo usando um método que você especificar. |
SLN() | A depreciação uniforme de um bem para um período simples |
Então aguarde que voltarei ao assunto...
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:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
C# - Controle Financeiro Pessoal - Macoratti
C# - Calculadora de Empréstimos - EMI - Macoratti
VB .NET - Sistema para Controle Financeiro (Saldo Bancário) - Macoratti
VB .NET - Geração e controle de parcelamentos - Macoratti
ASP .NET Core - Gerenciador de Despesas Pessoais com ... - Macoratti
Calculadora financeira usando VBA - Macoratti
VB .NET - Agendamento de Eventos - Macoratti