Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
52
Добавлен:
07.06.2015
Размер:
2.04 Mб
Скачать

3.4.3. Финансовые функции

В языке Visual Basic есть больше десятка встроенных финансово-математических (или просто финансовых) функций. Приведём описания лишь трёх из них. Это функции Рmt, РV и Rate (каждая из них — функция трёх аргументов).

1. Функция Рmt(ratе, преr, рv) возвращает величину периодического взноса в банк, который должен выплачивать клиент этого банка, чтобы в определённый срок вернуть банку взятые у него деньги (кредит);

ratе (1-й аргумент функции Рmt) - это банковская процентная ставка, относящаяся к периоду выплаты (ставка — по англ. ratе). Например, если клиент выплачивает взнос ежемесячно, а банк берёт 12 % годовых, то значение ratе равно 0.01;

преr (2-й аргумент функции Рmt) - это общее число периодов выплат (от англ. питber оf реriods). Например, если, кредит взят на два года, а выплаты ежемесячные, то значение преr равно 24;

рv (3-й аргумент функции Рmt) - это величина кредита (или приведённой стоимости - по англ. рresent valие) - сумма в рублях или иных единицах, которую клиент взял в банке.

2. Функция РV(rate, nper, pmt) имеет дело с теми же величинами, что и функция Рmt, но возвращает величину приведённой стоимости (кредита) при заданной величине периодической выплаты ртt (от англ. рaumentвыплата).

3. Аналогично функция Ratе(nper, ртt, рv) имеет дело с теми же величинами, что и функция Рmt, но возвращает величину банковской процентной ставки, относящейся к периоду выплаты.

На рис. 3.8 приведено окно приложения, единственное назначение которого - демонстрация работы трёх вышеперечисленных функций.

Рис. 3.8. Окно приложения, демонстрирующее работу финансовых

функций Рmt, РV и Rate

Программный код этого приложения следующий:

Код 3.11

Private Sub Command1_Click()

End

End Sub

Private Sub пуск_Click()

Dim Выплата As Currency, Кредит As Currency, Прирост As Single

Print "Pmt - Выплата; pv - Кредит;";

Print "nper - Число платежей; rate - Прирост."

Print

p = InputBox("Ввести проц. ставку кредита", , "Ввод")

k = InputBox("Ввести количество периодов", , "Ввод")

c = InputBox("Ввести величину кредита", , "Ввод")

Выплата = Pmt(p, k, c): Выплата = CInt(Выплата * 10) / 10

Text1.Text = "Ежемесячные выплаты составят " _

& Str(Выплата) & "р."

'Применение функции Pmt.

Print "rate = 0.01;nper = 120;pv = 150000"

Print "Pmt(rate,nper,pv)="; Выплата

Print

Кредит = PV(0.01, 120, -2500)

'Применение функции PV.

Print "rate = 0.01;nper = 120;mpt = - 2500"

Print "PV(rate,nper,mpt) ="; Кредит

Print

Прирост = Rate(120, -2500, 150000)

'Применение функции Rate.

Print "nper =1 20;pmt = - 2500;pv=150000"

Print "Rate(nper,mpt,pv) ="; Прирост

Для «печати» результатов работы программы на экранной форме в данной программе использована встроенная процедура Visual basic, которая называется методом Рrint. (Более подробно речь об этом методе будет идти в подразд. 5.2.)

Пример 3.12

С помощью представленных финансовых функций можно сделать следующее приложение.

На экранной форме четыре текстовых поля и три командные кнопки. Текстовые поля предназначены для ввода или вывода следующих величин:

1) годового банковского прироста стоимости (в процентах);

2) числа периодических (например, ежемесячных) выплат;

3) суммы полученного у банка кредита (приведённой стоимости);

4) величины одной выплаты.

1-ю, 3-ю и 4-ю величину этого списка можно находить с помощью представленных выше финансовых функций, если остальные величины этого списка известны.

Для этой цели и служат командные кнопки. Для каждой из них написана отдельная процедура-событие (Прирост_Click, Кредит_Сlick и Выплата _Сlick). Щелчок каждой из этих кнопок после ввода трёх чисел в три текстовых поля вызывает появление четвёртого числа в текстовом поле, оставшемся незаполненным.

На рис. 3.9 показана работа данного приложения - нахождение значения годового прироста при известных значениях числа выплат (24), суммы кредита (120000 руб.) и величины ежемесячной выплаты (6000 руб.)

Рис. 3.9. Окно работающего приложения «Кредит в Сбербанке»

Программный код для этого приложения состоит из объявления типов четырех переменных и описания трех процедур-событий:

Код 3.12

Dim r Аs Single, n As Integer, v As Currency, p As Currency

/ Процедура нахождения ежемесячной выплаты:

Private Sub Выплата_Click()

г= Val(Техt1.Техt)

n= Val(Техt2.Техt)

v= Val(Техt3.Техt)

r = r / 1200: р = -Рmt(r,n,v)

Техt4.Техt = Str(р)

Еnd Sub

Процедура нахождения суммы кредита:

Private Sub Кредит_Сlick()

г= Val(Техt1.Техt)

n= Val(Техt2.Техt)

p= Val(Техt4.Техt)

r = r / 1200: р = -p: v=pv(r,n,p)

Техt3.Техt = Str(v)

Еnd Sub

Процедура нахождения величины прироста:

Private Sub Прирост_Сlick()

N = Val(Техt2.Техt)

V = Val(Техt3.Техt)

P = Val(Техt4.Техt)

P = -p: r = 1200*Rate(n,p,v)

Техt1.Техt = Str(r)

Еnd Sub

Выражения как функции

По своей сути арифметические выражения ничем не отличаются от функций. Так же как и функции, они возвращают значения, а входящие в них константы, переменные, другие выражения можно считать их аргументами.

Например, арифметическое выражение А * (В + С/В) можно считать функцией умножения с двумя аргументами. Первый аргумент - это переменная А, а второй - это выражение (В + С/В), которое, в свою очередь, можно считать функцией сложения двух аргументов: В и С/Л (В - переменная, а С/В - функция деления).

Нетрудно сообразить, что любое арифметическое выражение - это сложная функция. И в большинстве случаев (как в приведённом примере) это функция двух аргументов. Функцию двух аргументов часто называют бинарной функцией.

Известно, что в Бейсике функция обозначается так:

ИмяФункции(СписокАргументов)

Такое обозначение называется префиксным, так как ИмяФункции записывается перед Аргументами, является префиксом (приставкой).

Если функция бинарная, то для упрощения записи во многих языках принято использовать не префиксное, а инфиксное обозначение, при котором ИмяФункции записывается между двумя её Аргументами:

Аргумент1 ИмяФункции Аргумент2

Именно так записываются арифметические и логические выражения в Бейсике и во многих других языках программирования.

Обычное, привычное для вас инфиксное обозначение А * (В + С/В) можно, конечно, представить и в префиксном виде:

* (А, + (В, /(С, В))).

Но такая форма записи, особенно когда выражение сложное, содержит большое количество скобок. Они очень затрудняют понимание этого выражения.

Но не надо забывать, что инфиксная запись требует строгого соблюдения правила старшинства операций. Именно эти правила помогают иногда резко сократить число скобок. Например, вместо того чтобы писать

(((А + (В * С)) – (В/Е)) + Р),

мы пишем

А + В * С – В/Е + Р.

Но иногда скобки необходимы:

(А + В)/(С – В),

такую «дробь» без скобок не запишешь!

А иногда скобки ставят даже тогда, когда они и не нужны, просто чтобы не запутаться. Например, в записи

Str(X^2+Y^2)*(2*N)

вторая пара скобок не нужна, но она и не повредит правильному пониманию того, какое действие за каким следует. А вот первая пара скобок необходима!

Соседние файлы в папке Задания и примеры