W zasobach BCB, w module math.hpp znajdują się prototypy funkcji, służących do przeprowadzania różnego rodzaju obliczeń finansowych. Funkcje te mogą mieć zastosowanie przy tworzeniu np. aplikacji dla firm. Nawet osoby nie posiadające wiedzy ekonomicznej mogą je bez problemu wykorzystać w skomplikowanych obliczeniach.
| WAŻNE! Żeby używać funkcji zawartych w module math.hpp trzeba najpierw włączyć ten moduł do projektu. Najlepiej będzie zrobić to w pliku nagłówkowym np. Unit1.h w sekcji include: #include <math.hpp> |
Menu |
Wyznaczanie wartości amortyzacji środka trwałego.
Przy obliczaniu wartości amortyzacji środka trwałego trzeba wziąć pod uwagę jego wartość początkową Cost i końcową po amortyzacji Salvage oraz okres użytkowania środka Life, w zadanym przedziale czasu Period. Obliczenia wykonuje się metodą podwójnie malejącego salda - DDB:
__fastcall DoubleDecliningBalance(const Extended
Cost, const Extended Salvage, int Life, int Period);Przykład:
Załóżmy, że kupiłem samochód za 60 000 zł i przewidziałem, że będę go używał przez 10 lat. Po tym czasie wartość rynkowa samochodu wyniesie 8 000 zł. Żeby obliczyć wartość amortyzacji tego samochodu np. po 5 latach użytkowania posłużę się funkcją DoubleDecliningBalance:
| // Plik źródłowy np. Unit1.cpp void __fastcall TForm1::Button1Click(TObject *Sender) { float amortyzacja = DoubleDecliningBalance(60000, 8000, 10, 5); } //-------------------------------- |
Obliczanie przyszłej wartości lokaty.
Do obliczenia przyszłej wartości lokaty służy funkcja FutureValue. Przy jej wyznaczaniu trzeba wziąć pod uwagę wartość kapitału początkowego
PresentValue przy założeniu stałej stopy procentowej Rate w okresie wpłat, płatność rozłożoną w łącznej liczbie okresów NPeriods oraz wpłaty dokonywane okresowo nie ulegające zmianie w czasie trwania operacji finansowej Payment:__fastcall FutureValue(const Extended
Rate, int NPeriods, const Extended Payment, const Extended PresentValue, TPaymentTime PaymentTime);Parametr
PaymentTime jest typem wyliczeniowym, określającym kiedy przypada płatność, możliwe są dwa parametry:Jeżeli Payment i PresentValue przyjmują wartości ujemne, wtedy są traktowane jako pieniądze zwiększające kapitalizację lokaty, natomiast liczby dodatnie zmniejszają kapitalizację (kredyty, spłacane raty z zaciągniętych kredytów, itp.).
Przykład:
Załóżmy, że na początku roku złożyłem w banku na rachunku oszczędnościowym kwotę 10 000 zł, bank zaoferował mi roczną stopę procentową 9,0%. Kapitalizacja miesięczna wynika z podziału stopy procentowej przez okres płatności (12 miesięcy) czyli 9,0% / 12 = 0,75%. Przez cały rok na początku każdego miesiąca wpłacam na konto 500 zł. Po upływie roku stan konta powinien wynieść 16 240 zł 32 gr:
| // Plik źródłowy np. Unit1.cpp void __fastcall TForm1::Button1Click(TObject *Sender) { float x = (9.0 / 12) / 500.0; float lokata = FutureValue(x, 12, -500, -10000, ptStartOfPeriod); } //-------------------------------- |
Wyznaczanie wysokości spłaty odsetek przy znanej stopie procentowej.
Do wyznaczenia wysokości spłaty odsetek można posłużyć się funkcją InterestPayment(). Wysokość odsetek wyznacza się przy znanej stopie procentowej Rate w okresie Period od określonej wysokości kwoty kredytu PresentValue z wykorzystaniem parametru NPeriods będącego całkowitą liczbą spłat kredytu. Okres spłat Period musi być liczbą całkowitą z przedziału od 1 do NPeriods. Parametr FutureValue jest przyszłą wartością, jakiej oczekuje się po ostatniej spłacie. Jeżeli argument ten jest równy zero, oznacza to, że pożyczka zostanie całkowicie spłacona. PaymentTime jest typem wyliczeniowym, określającym kiedy przypadnie płatność i został już opisany w poprzedniej poradzie. Środki wypłacane, np wypłaty z rachunków oszczędnościowych, wyrażone są liczbami ujemnymi, przychody zaś liczbami dodatnimi:
__fastcall InterestPayment(const Extended Rate, int Period, int NPeriods, const Extended PresentValue, const Extended FutureValue, TPaymentTime PaymentTime);
Przykład:
Załóżmy, że na początku roku zaciągnąłem w banku pożyczkę na trzy lata w wysokości 5 000 zł. Bank zaoferował mi roczną stopę w wysokości 18%, więc żeby obliczyć odsetki przypadające w ostatnim roku:
| // Plik źródłowy np. Unit1.cpp void __fastcall TForm1::Button1Click(TObject *Sender) { float odsetki = InterestPayment(0.18, 3, 3, 5000, 0, ptEndOfPeriod); } //-------------------------------- |
Wyznaczanie wysokości miesięcznej stopy procentowej.
W celu wyznaczenia wysokości stopy procentowej posłużymy się funkcją InterestRate(), w taki sposób aby wartość pożyczki PresentValue oraz seria płatności Payment osiągnęły przez okres NPeriods wartość końcową FutureValue. Jeżeli argument jest równy 0, oznacza to, że przyszła wartość pożyczki wynosi 0, tzn. pożyczka zostanie całkowicie spłacona. Parametr PaymentTime jest typem wyliczeniowym, określającym, kiedy przypada płatność i został dokładnie opisany w drugiej poradzie.
__fastcall InterestRate(int NPeriods, Extended Payment, Extended PresentValue, Extended FutureValue, TPaymentTime PaymentTime);
Przykład:
Żeby obliczyć stopę procentową dla trzyletniej pożyczki (36 miesięcy) w wysokości 10 000 zł, przy założeniu, że spłaty na koniec każdego miesiąca wynoszą 300 zł, trzeba postąpić w ten sposób:
| // Plik źródłowy np. Unit1.cpp void __fastcall TForm1::Button1Click(TObject *Sender) { float stopa = 100 * InterestRate(36, -300, 10000, 0, ptEndOfPeriod); } //-------------------------------- |
Wyliczona miesięczna stopa procentowa wynosi: 0,42%.
Żeby wyliczyć roczną stopę procentową wystarczy przemnożyć stopę miesięczną przez liczbę miesięcy w roku, czyli: 0,42% x 12 = 5,04%.