- •Ю. В. Любицкий
- •Предисловие
- •Введение
- •Этапы решения вычислительных задач на ЭВМ
- •Алгоритмизация вычислительных процессов
- •Понятие алгоритма
- •Основные свойства алгоритма
- •Формы представления алгоритмов
- •Представление алгоритмов в графическом виде
- •Типы алгоритмических структур
- •Программирование вычислительных задач на языке VBA
- •Линейная структура
- •Разветвляющаяся структура
- •Циклическая структура
- •Заключение
- •Библиографический список
- •Приложение А – Индивидуальные задания для алгоритмов линейной структуры
- •Приложение Б – Индивидуальные задания для алгоритмов разветвляющейся структуры
- •Приложение В – Индивидуальные задания для алгоритмов циклической структуры
- •Вариант 6
- •Составьте программу для расчёта количества изделий, выпускаемого некоторым предприятием в течение каждого месяца года. Программа должна предусматривать вычисление среднего годового значения количества изделий.
- •Вариант 7
- •Вариант 8
- •Рассчитайте суммарные субсидии на производство 1, 3, 5, 7 млн яиц, а также 600, 900, 1 200, 1 500 тонн молока. Определите, размер субсидий для производства какого вида животноводческой продукции больше.
- •Вариант 9
- •Вариант 10
- •Вариант 11
- •Вариант 12
- •Вариант 13
- •Вариант 14
- •Вариант 15
- •Вариант 16
- •Вариант 17
- •Составьте программу для расчёта платы за перевозку экспортных и импортных грузов по железной дороге на расстояние 1 000 км в зависимости от массы груза
- •Составьте программу для расчёта платы за перевозку экспортных и импортных грузов по железной дороге массой 50 тонн в зависимости от расстояния
- •Вариант 19
- •Составьте программу для расчёта платы за перевозку наливных грузов в цистернах общего парка в зависимости от расстояния
- •Вариант 20
- •Вариант 21
- •Вариант 22
- •Вариант 23
- •Вариант 24
- •Вариант 25
- •Вариант 26
- •Вариант 27
- •Вариант 28
- •Вариант 29
12
Программирование вычислительных задач на языке VBA
Линейная структура
Создадим процедуру для расчёта показателей платежеспособности и финансовой устойчивости предприятия.
Денежные средства, расчеты и прочие активы предприятия:
D R S , |
( 1 ) |
где R – расчёты с дебиторами,
S – денежные средства.
Коэффициент срочной ликвидности:
|
S |
(R |
|
R F |
) |
|
|
|||
K S |
100 |
, |
( 2 ) |
|||||||
|
|
|
|
|
||||||
|
T |
DK |
|
|
|
|||||
|
|
|
FP |
|
|
|||||
где F – резерв по сомнительным долгам, |
|
|
|
|
|
|
||||
T – общая сумма расчётов и прочих пассивов, |
|
|||||||||
DK – долгосрочные кредиты, |
|
|
|
|
|
|
|
|
|
|
FP – фонды потребления. |
|
|
|
|
|
|
|
|
|
|
Коэффициент текущей ликвидности: |
|
|
|
|
|
|
||||
KT |
|
|
Z |
D |
, |
( 3 ) |
||||
|
|
|
|
|
|
|
||||
|
T |
DK |
|
FP |
||||||
|
|
|
|
|
где Z – запасы и затраты.
Математическая постановка задачи предполагает реализацию алгоритма линейной структуры – все действия выполняются однократно и последовательно друг за другом.
Используем для построения блок-схемы и в качестве имён переменных в программном коде создаваемой процедуры обозначения экономических характеристик, указанные в формулах (1 ) – ( 3 ).
13
Блок-схему решаемой задачи представим в виде:
Начало
Ввод R, S
D = R + S
Вывод D
Ввод F, T, DK, FP
|
|
|
|
S |
(R |
|
R F |
) |
|
|
K S |
100 |
|||||||
|
|
|
|
|
|
|
|||
|
|
|
T |
DK |
|
FP |
|||
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
Вывод K S |
|||||||
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
||
|
|
Ввод Z |
|
|
|
|
|||
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
KT |
|
|
|
Z |
D |
|||
|
|
|
|
|
|
|
|
|
|
|
|
T |
DK |
|
FP |
||||
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Вывод KT
Конец
Рисунок 6 – Блок-схема задачи линейной структуры
Создадим процедуру для выполнения расчётов. Ввод исходных данных и вывод полученных результатов организуем с помощью диалоговых окон [ 3 ].
Программный код процедуры будет иметь следующий вид (комментарии, указанные после символов апострофа, не являются обязательными и используются только для пояснения выполняемых действий):
Public Sub Показатели_предприятия() 'Объявление типов переменных
Dim R As Single, S As Single, D As Single
Dim F As Single, T As Single, DK As Single
Dim FP As Single, KS As Single, Z As Single, KT As Single
14
'Ввод исходных данных
R = InputBox("Введите расчёты с дебиторами") S = InputBox("Введите денежные средства")
'Вычисление денежных средств, расчётов и прочих активов
D = R + S
'Вывод полученного результата
MsgBox ("Денежные средства, расчёты и прочие активы " & _ "для предприятия равны " & D)
'Ввод исходных данных
F = InputBox("Введите резерв по сомнительным долгам")
T = InputBox("Введите общую сумму расчётов и прочих пассивов") DK = InputBox("Введите долгосрочные кредиты")
FP = InputBox("Введите фонды потребления") 'Вычисление коэффициента срочной ликвидности
KS = (S + (R - R * F / 100)) / (T - DK - FP)
'Вывод полученного результата
MsgBox ("Коэффициент срочной ликвидности равен " & KS) 'Ввод исходных данных
Z = InputBox("Введите запасы и затраты") 'Вычисление коэффициента текущей ликвидности
KT = (Z + D) / (T - DK - FP)
'Вывод полученного результата
MsgBox ("Коэффициент текущей ликвидности равен " & KT)
End Sub
Выполним |
расчёт при |
следующих |
значениях |
исходных данных: |
R |
= |
2 350 тыс. руб., |
S = 5 100 |
тыс. руб., F |
= 10 %, T |
= 7 200 тыс. руб., |
DK |
= |
750 тыс. руб., FP = 375 тыс. руб., Z = 14 200 тыс. руб. |
|
|
В ходе выполнения программного кода на экране монитора последовательно будут появляться диалоговые окна, в поля которых следует вводить исходные данные для вычислений, или в которых будут отображаться полученные результаты (некоторые из этих окон изображены на рисунке 7).
15
Рисунок 7 – Диалоговые окна для ввода исходных данных и вывода полученных результатов
С помощью VBA можно создать новую (пользовательскую) функцию MS Excel, которая будет использоваться аналогично стандартным встроенным функциям, таким как СУММ, СРЗНАЧ и др.
Программный код при создании пользовательской функции обязательно должен быть введён в модуле VBA Module1, Module2 и др. Если создать пользовательскую функцию в модулях Лист или ЭтаКнига, она не будет видна при вводе формул в ячейки рабочего листа.
Создадим пользовательскую функцию MS Excel для расчёта коэффициента текущей ликвидности.
Предварительно нужно создать модуль (Insert → Module), если он не был создан заранее, и активизировать его. Затем выполняются действия Insert → Procedure. В появившемся диалоговом окне вводится имя процедуры, указывается её тип – Function (процедура-функция), определяется область действия функции – Public (рисунок 8):
16
Рисунок 8 – Диалоговое окно для создания процедуры
Ключевое слово Public указывает, что процедура-функция будет доступна для всех других процедур во всех модулях открытых проектов. Если использовать ключевое слово Private, созданная пользовательская функция не будет видна в диалоговом окне Мастер функций при попытках ввести её в формулу.
После нажатия кнопки OK вводим программный код процедуры:
Public Function Текущая_ликвидность(R As Single, S As Single, _
T As Single, DK As Single, FP As Single, Z As Single) As Single Dim D As Single
D = R + S
Текущая_ликвидность = (Z + D) / (T - DK - FP)
End Function
Обратите внимание, что в программном коде процедуры-функции имя процедуры используется в качестве имени переменной, которой будет присваиваться вычисленное в процедуре итоговое значение. После завершения выполнения процедуры-функции она всегда возвращает текущее значение переменной, имя которой совпадает с названием функции.
В круглых скобках после имени процедуры через запятую перечисляются имена переменных (и объявляются их типы), значения которых будут вводиться в диалоговом окне, появляющемся при вызове данной пользовательской функции, и использоваться при выполнении процедуры в качестве исходных данных для расчёта.
17
Воспользоваться созданной пользовательской функцией можно обычным способом:
1)выполнить команды Вставка → Функция или нажать кнопку fx в строке формул;
2)в появившемся диалоговом окне Мастер функций выбрать категорию Определённые пользователем, затем имя нужной функции (рисунок 9);
Рисунок 9 – Диалоговое окно для выбора пользовательской функции
3) в диалоговом окне второго шага Мастера функций ввести значения аргументов функции с клавиатуры или с помощью ссылок на нужные ячейки рабочего листа (рисунок 10).
Рисунок 10 – Диалоговое окно для ввода значений исходных данных