Смекни!
smekni.com

«информатика» (стр. 2 из 6)

`результаты расчета передаются в текстовое окно «Наращенная сумма»

`оба фрейма становятся недоступными (доступ возможен к командным кнопкам «Построение графика» и «Расчет показателя»)

Dim i As Single ` годовая процентная ставка

Dim r As Single ` годовой взнос ренты

Dim p As Single ` число платежей в год

Dim n As Integer ` число периодов наращения

If Text1.Text = “” Or Val(Text1.Text) = 0 Then ` если нулевые или пустые параметры

Call MsgBox(«Не заданы параметры расчета», vbExclamation, «Ошибка при задании параметров») ` вывести сообщение

Text1.SetFocus ` перевести курсор в текстовое окно Text1

Exit Sub

End If

If Text2.Text = “” Or Val(Text2.Text) = 0 Then

Call MsgBox(«Не заданы параметры расчета», vbExclamation, « Ошибка при задании параметров»)

Text2.SetFocus

Exit Sub

End If

If Text3.Text = “” Or Val(Text3.Text) = 0 Then

Call MsgBox(«Не заданы параметры расчета «, vbExclamation, « Ошибка при задании параметров»)

Text3.SetFocus

Exit Sub

End If

If Text4.Text = “” Or Val(Text4.Text) = 0 Then

Call MsgBox(«Не заданы параметры расчета «, vbExclamation, « Ошибка при задании параметров»)

Text4.SetFocus

Exit Sub

End If

i = Val(Text1.Text) ` Val(string) – возвращает числовую составляющую

строки

r = Val(Text2.Text) ` присвоение переменным значений введенных

p = Val(Text3.Text) ` параметров из текстовых окон

n = Val(Text4.Text)

Text10.Text = s(i, r, p, n) ` в текстовое окно передать результаты расчета показателя

Frame1.Enabled = False ` фрейм недоступен

Frame2.Enabled = False ` фрейм недоступен

Command1.Enabled = True ` командная кнопка доступна

Command2.Enabled = True ` командная кнопка доступна

Picture1.Cls ` очистка PictureBox

Label1.Enabled = False ` метка недоступна

Label2.Enabled = False ` метка недоступна

Label3.Enabled = False ` метка недоступна

Label4.Enabled = False ` метка недоступна

Label6.Enabled = False ` метка недоступна

Label7.Enabled = False ` метка недоступна

Label8.Enabled = False ` метка недоступна

Label9.Enabled = False ` метка недоступна

Label10.Enabled = False ` метка недоступна

Label5.Caption = «Наращенная сумма» ` установка метки

End Sub

Private Sub Command2_Click()

‘После нажатия кнопки «Построение графика» становится доступным фрейм «Построение графика», остальные элементы формы становятся недоступными

Frame1.Enabled = False ` фрейм недоступен

Frame2.Enabled = True ` фрейм доступен

Text5.SetFocus ` перевести курсор в текстовое окно Text5

Command1.Enabled = False ` командная кнопка недоступна

Command2.Enabled = False ` командная кнопка недоступна

Label6.Enabled = True ` метка доступна

Label7.Enabled = True ` метка доступна

Label8.Enabled = True ` метка доступна

Label9.Enabled = True ` метка доступна

Label10.Enabled = True ` метка доступна

Label5.Caption = «» ` очистка текста метки

End Sub

Private Sub Text5_Change()

Dim i As Integer

Dim KeyAscii As Integer

For i = 1 To Len(Text5.Text)

KeyAscii = Asc(Mid(Text5.Text, i, 1))

If Not ((KeyAscii >= 48 And KeyAscii <= 57) Or KeyAscii = 46) Then

Text5.Text = “”

Exit Sub

End If

Next

End Sub

Private Sub Text5_KeyPress(KeyAscii As Integer)

If KeyAscii = 13 Then

Text6.SetFocus

End If

End Sub

Private Sub Text6_Change()

Dim i As Integer

Dim KeyAscii As Integer

For i = 1 To Len(Text6.Text)

KeyAscii = Asc(Mid(Text6.Text, i, 1))

If Not ((KeyAscii >= 48 And KeyAscii <= 57) Or KeyAscii = 46) Then

Text6.Text = “”

Exit Sub

End If

Next

End Sub

Private Sub Text6_KeyPress(KeyAscii As Integer)

If KeyAscii = 13 Then

Text7.SetFocus

End If

End Sub

Private Sub Text7_Change()

Dim i As Integer

Dim KeyAscii As Integer

For i = 1 To Len(Text7.Text)

KeyAscii = Asc(Mid(Text7.Text, i, 1))

If Not ((KeyAscii >= 48 And KeyAscii <= 57) Or KeyAscii = 46) Then

Text7.Text = “”

Exit Sub

End If

Next

End Sub

Private Sub Text7_KeyPress(KeyAscii As Integer)

If KeyAscii = 13 Then

Text8.SetFocus

End If

End Sub

Private Sub Text8_Change()

Dim i As Integer

Dim KeyAscii As Integer

For i = 1 To Len(Text8.Text)

KeyAscii = Asc(Mid(Text8.Text, i, 1))

If Not ((KeyAscii >= 48 And KeyAscii <= 57) Or KeyAscii = 46) Then

Text8.Text = “”

Exit Sub

End If

Next

End Sub

Private Sub Text8_KeyPress(KeyAscii As Integer)

If KeyAscii = 13 Then

Text9.SetFocus

End If

End Sub

Private Sub Text9_Change()

Dim i As Integer

Dim KeyAscii As Integer

For i = 1 To Len(Text9.Text)

KeyAscii = Asc(Mid(Text9.Text, i, 1))

If Not ((KeyAscii >= 48 And KeyAscii <= 57) Or KeyAscii = 46) Then

Text9.Text = “”

Exit Sub

End If

Next

End Sub

Private Sub Text9_KeyPress(KeyAscii As Integer)

If KeyAscii = 13 Then

Command4.SetFocus

End If

End Sub

Private Sub command4_Click()

`производится проверка на заполненность текстовых окон (если окно незаполненно, то происходит выдача сообщения и курсор переводится в соответствующее текстовое окно)

`очистка объекта PictureBox от предыдущего графика

`построение графика в объекте PictureBox (масштабирование объекта PictureBox, рисование координатных осей и графика)

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

`фреймы делаются недоступными (доступ возможен только к командным кнопкам «Построение графика» и «Расчет показателя»)

Dim i As Single ` годовая процентная ставка

Dim r As Single ` годовой взнос ренты

Dim p As Integer ` число платежей в год

Dim n As Integer ` число периодов обращения

Dim m As Integer ` счетчик цикла

Dim st As Single ` счетчик цикла

Dim minfx As Single ` функции

Dim maxfx As Single ` функции

Dim minx As Single ` минимальное значение аргумента

Dim maxx As Single ` максимальное значение аргумента

Dim step_t As Double ` шаг построения графика

If Text5.Text = “” Or Val(Text5.Text) = 0 Then

Call MsgBox(«Не заданы параметры расчета «, vbExclamation, « Ошибка при задании параметров «)

Text5.SetFocus

Exit Sub

End If

If Text6.Text = “” Or Val(Text6.Text) = 0 Then

Call MsgBox(«Не заданы параметры расчета», vbExclamation, « Ошибка при задании параметров «)

Text6.SetFocus

Exit Sub

End If

If Text7.Text = “” Or Val(Text7.Text) = 0 Then

Call MsgBox(«Не заданы параметры расчета», vbExclamation, « Ошибка при задании параметров «)

Text7.SetFocus

Exit Sub

End If

If Text8.Text = “” Or Val(Text8.Text) = 0 Then

Call MsgBox(«Не заданы параметры расчета», vbExclamation, « Ошибка при задании параметров «)

Text8.SetFocus

Exit Sub

End If

If Text9.Text = “” Or Val(Text9.Text) = 0 Then

Call MsgBox(«Не заданы параметры расчета», vbExclamation, « Ошибка при задании параметров «)

Text9.SetFocus

Exit Sub

End If

Picture1.Cls ` очистка элемента PictureBox

i = Val(Form1.Text5.Text) ` Val(string) – возвращает числовую составляющую

r = Val(Form1.Text6.Text) ` строки

p = Val(Form1.Text7.Text) ` присвоение переменным значений введенных

n = Val(Form1.Text8.Text) ` параметров из текстовых окон

`зададим систему координат формы

`для чего найдем максимальное и минимальное значение принимаемое

`функций на отрезке

'начальное значение выбираем произвольное

minfx = s(i, r, p, n) ` минимальное значение функции

maxfx = s(i, r, p, n) ` максимальное значение функции

minx = 0 ` минимальное значение аргумента

maxx = 0 ` максимальное значение аргумента

step_t = Val(Text9.Text) ` присвоим переменной значение шага графика

For st = 0 To n Step step_t ` вычислим min и max значение функции

If minfx > s(i, r, p, st) Then ` вычисли минимальное значение функции

minfx = s(i, r, p, st)

minx = st

End If

If maxfx < s(i, r, p, st) Then ` вычислим максимальное значение функции

maxfx = s(i, r, p, st) ‘

maxx = st ‘

End If ‘

Next st

`задание пользовательской системы координат в окне изображения

Picture1.Scale (0.1, maxfx)-(n, 0.1) ` установка масштаба

Picture1.DrawWidth = 2 ` толщина точки равна 2

`рисуем ось X

Picture1.Line (0, 0 + 0.01 * maxfx)-(n, 0 + 0.01 * maxfx), RGB(0, 255, 0) ` при рисовании оси Х задается отступ от края объекта PictureBox на 0.01 * maxfx для лучшей видимости координатной оси

`рисуем ось Y

Picture1.Line (0 + 0.01 * n, 0)-(0 + 0.01 * n, maxfx), RGB(0, 255, 0) ` при рисовании оси Х задается отступ от края объекта PictureBox на 0.01 * maxfx для лучшей видимости координатной оси

Picture1.DrawWidth = 1 ` толщина точки равна 1

Picture1.CurrentX = minx ` задание координат пера

Picture1.CurrentY = s(i, r, p, minx) `задание координат пера

Picture1.DrawWidth = 8 ` толщина точки равна 8

Picture1.Pset (Picture1.CurrentX, Picture1.CurrentY) ` рисование точки в начале графика

Picture1.DrawWidth = 1 ` толщина точки равна 1

Picture1.CurrentX = 0 ` задание координат пера

Picture1.CurrentY = s(i, r, p, 0) ` задание координат пера

`рисование графика

For m = 0 To n Step step_t

Picture1.DrawWidth = 5 ` толщина точки равна 5

Picture1.Pset (Picture1.CurrentX, Picture1.CurrentY) ` рисование точек построения графика

Picture1.DrawWidth = 1 ` толщина точки равна 1

Picture1.Line –(m, s(i, r, p, m)) ` рисование графика

Next m

Label11.Caption = maxfx ` значение метки – сумма наращенного платежа

Label12.Visible = True ` метка доступна

Frame1.Enabled = False ` фрейм недоступен

Frame2.Enabled = False ` фрейм недоступен

Command1.Enabled = True ` командная кнопка доступна

Command2.Enabled = True ` командная кнопка доступна

Label1.Enabled = False ` метка недоступна

Label2.Enabled = False ` метка недоступна

Label3.Enabled = False ` метка недоступна

Label4.Enabled = False ` метка недоступна

Label6.Enabled = False ` метка недоступна

Label7.Enabled = False ` метка недоступна

Label8.Enabled = False ` метка недоступна

Label9.Enabled = False ` метка недоступна

Label10.Enabled = False ` метка недоступна

End Sub

`функция для расчета финансового показателя

Public Function s(ByVal i As Single, ByVal r As Single, ByVal p As Single, ByVal n As Single) As Single

On Error GoTo err1 `в случае ошибки – перейти на метку err1

s = r * ((1 + i / 100) ^ n – 1) / (p * ((1 + i / 100) ^ (1 / p) – 1)) ` функция наращения по формуле p-срочной ренты

On Error GoTo 0

Exit Function ` выйти из функции

err1: ` обработка ошибки

If Err.Number = 6 Then ` если ошибка – переполнение, вывести на экран сообщение

Dim Msg As String

Msg = «Ошибка при вычислении!»

MsgBox Msg, , «Переполнение»

Err.Clear ` очистка поля ошибки

End If

End ` завершение работы проекта

End Function

1.3.РАБОТА ПРИЛОЖЕНИЯ.

Расчетная формула:

S=r*((1+i/100)^n-1)/(p*[(1+i/100)^(1/p)-1]),

Где n – число периодов наращения;

i – годовая процентная ставка;

S – наращенная сумма;

r – годовой взнос ренты;

m – число начислений процентов в год;

p – число платежей в год.

Пример. Для обеспечения некоторых будущих расходов соз­дается фонд. Средства в фонд, поступают в виде постоянной го­довой ренты постнумерандо в течение пяти лет. Размер разово­го платежа – 4 млн. руб. На поступившие взносы начисляются проценты по ставке 18,5% годовых. Платежи выплачиваются поквартально: R/p=1 млн. руб., общее число платежей составит 20.

S= 4*(1,1855-1)/{4*[(1+0,185)1/4-1]}=28,9 млн. Руб.

1.3.1.РАСЧЕТ ПОКАЗАТЕЛЯ.

Рисунок№3

1.3.2.ПОСТРОЕНИЕ ГРАФИКА.

Рисунок№4

1.3.3.ПРИМЕР ОКНА СООБЩЕНИЯ.