МегаПредмет

ПОЗНАВАТЕЛЬНОЕ

Сила воли ведет к действию, а позитивные действия формируют позитивное отношение


Как определить диапазон голоса - ваш вокал


Игровые автоматы с быстрым выводом


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


Целительная привычка


Как самому избавиться от обидчивости


Противоречивые взгляды на качества, присущие мужчинам


Тренинг уверенности в себе


Вкуснейший "Салат из свеклы с чесноком"


Натюрморт и его изобразительные возможности


Применение, как принимать мумие? Мумие для волос, лица, при переломах, при кровотечении и т.д.


Как научиться брать на себя ответственность


Зачем нужны границы в отношениях с детьми?


Световозвращающие элементы на детской одежде


Как победить свой возраст? Восемь уникальных способов, которые помогут достичь долголетия


Как слышать голос Бога


Классификация ожирения по ИМТ (ВОЗ)


Глава 3. Завет мужчины с женщиной


Оси и плоскости тела человека


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


Отёска стен и прирубка косяков Отёска стен и прирубка косяков - Когда на доме не достаёт окон и дверей, красивое высокое крыльцо ещё только в воображении, приходится подниматься с улицы в дом по трапу.


Дифференциальные уравнения второго порядка (модель рынка с прогнозируемыми ценами) Дифференциальные уравнения второго порядка (модель рынка с прогнозируемыми ценами) - В простых моделях рынка спрос и предложение обычно полагают зависящими только от текущей цены на товар.

Создание функций пользователя средствами VBA





Продолжая выполнение лабораторной работы, создадим функции пользователя, реализующие вычисления функций F1V(x,a,…), F2V(x,a,…), F3V(x,a,…), а также функцию, реализующую вычисление F(x), средствами VBA.Рассмотрим последовательность действий, выполняемых при создании пользовательских функций и включения их в библиотеку функций программы Excel.

Для создания новой функции, включаемой в библиотеку функций программы Excel, следует:

1. В меню "Сервис" выбираем команду "Макрос"и далее выполняем команду "Редактор Visual Basic". Открывающееся при этом окно программы Microsoft Visual Basicпоказано на рис. 3.

 
 

 

 


Рис. 3. Окно программы Microsoft Visual Basic

2. В окне программы Microsoft Visual Basicвыбираем меню "Insert"(Вставка). В этом меню выбирается и выполняется команда Module (Модуль). В результате выполнения этой команды в проект рабочей книги включается папка "Modules" (Модули), в которой создается первый модуль - "Module1".Рабочее поле модуля открывается под полем проекта (Project - VBAProject) и является полем редактора, в котором будут создаваться пользовательские функции и процедуры.

3. В меню "Insert"(Вставка) окна Microsoft Visual Basic выбираем команду "Procedure…"(Процедура). Открывается окно "Add Procedure" (Вставить процедуру).

 

 

 


Рис. 4

В поле Name (Имя) вводим имя создаваемой функции. Например, F1V.

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

4. В группе Type (Тип) выбираем переключатель, определяющий тип создаваемой процедуры. Тип Sub (Подпрограмма) может быть использован для создания процедур, выполняющих какие-либо действия и не передающих в основную программу числовые значения. Тип процедуры Function (Функция) используется для определения подпрограмм, результатом выполнения которых является одно числовое или логическое значение, передаваемое (возвращаемое) в основную программу через имя функции.

В рассматриваемом примере выбираем переключатель типа Function.

5. В поле Scope (Область действия) выбираем переключатель Public (Общедоступный), обеспечивая тем самым доступность функции пользователя из любых других книг.

6. После нажатия кнопки ОК в поле редактора вносятся две строки заготовки функции:

Public Function F1V()

 

End Function

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

Public Function F1V(x, a, b)

F1V = a + Exp(b * x)

End Function

8. Для проверки работоспособности созданной функции F1V, используя "Мастер функций", запишем обращение к ней в ячейку С12. Для этого в окне первого шага "Мастера функций" в поле "Категория:" выбираем категорию "Определенныепользователем". Выбор функции F1Vи нажатие кнопки ОК открывает ДО для определения параметров обращения. На рис. 4 показан результат определения ссылок в полях окна второго шага "Мастера функций".

Следует обратить внимание на то, что ссылки на параметры А и В должны быть абсолютными. Этим обеспечивается возможность"протягивания" формулы для вычисления значений функции F1Vв ячейках от С12 до С32.

 
 

 

 


Рис. 5

9. Повторяя действия пунктов от 2 до 8, создаем функции F2VиF3V, реализующие соответственно функции для вычисления второй, третьей ветвей функции средствами алгоритмического языка Visual Basic. Ниже приведены тексты этих функций.

Public Function F2V(x, a, b)

F2V=(a+b*x)/(1+x)

End Function

Public Function F3V(x, a, b)

F3V = a / (b * x)

End Function

В записи выражений, реализующих функции F2V и F3V, следует обратить внимание на последовательность выполнения операций. Эта последовательность определяется приоритетами выполняемых операций и расстановкой круглых скобок.

Рассмотрим порядок выполнения операций по записи оператора для вычисления функции F2V

Первой выполняется операция умножения b на х. Второй выполняется операция сложения , в результате выполнения которой вычисляется значение числителя. Третьей операцией выполняется вычисление знаменателя (1 + х) и лишь после этого выполняется операция деления значения ( ) на (1 + х).

Неправильная расстановка скобок в записи выражений является наиболее часто встречающейся ошибкой.

10. Реализовав в модуле функции F1V, F2V, F3Vи заполнив соответствующие столбцы таблицы, выполним проверку правильности вычислений. Для этого сравним значения F1V, F2V, F3V, записанные в столбцах таблицы седьмой лабораторной работы, со значениями, записанными в аналогичных столбцах лабораторной работы №6.

11. Следующим шагом в выполнении лабораторной работы будет реализация разветвляющейся функции F(x) средствами программы Excel. В ячейку Е12 введём формулу, реализующую алгоритм вычисления разветвляющейся функции (рис.1). Нажмём кнопку "=" в строке формул и вызовем окно мастера функций. В списке функций или в окне "Мастер функций - шаг 1 из 2" в категории "Логические" выбираем функцию "ЕСЛИ".

 
 

 

 


Рис. 6. ДО "Мастер функций", обеспечивающее выбор функции

12. Открывается ДО функции "ЕСЛИ", для реализации 1-го, 2-го и 3-го блоков алгоритма блок-схемы

 
 

 


Рис. 7. ДО логической функции ЕСЛИ

13. В строку ввода "Логическое выражение", вводим выражение "A12<$B$10",соответствующую условию"Х < α". Для этого последовательно выполняем следующие действия:

- активизируем поле ввода строки "Логическое выражение";

- УМ в поле ячейки А12, ЩЛК. В поле ввода формируется ссылка на ячейку А12,в которую записано значение Хнач;

- вводим с клавиатуры символ "<";

- УМв поле ячейки В10, в которой записано значение параметра α, ЩЛК и F4. Формируется абсолютная ссылка на ячейку: $B$10.

- При вычислении этого выражения для значения Х равного Хнач. Если Хнач < α, то справа от поля ввода появляется значение "ИСТИНА";

- активизируем поле ввода строки "Значение_если_истина"ивводим в это поле выражение, обеспечивающее вычисление первой ветви функции: $B$9+exp($D$9*A12), соответствующее функции

F1V = a + Exp(b * x);

- в результате в ДО "ЕСЛИ"получаем оформленные поля ввода "Логическое выражение" и "Значение_если_истина".

 
 

 

 


Рис.8. Окно формирования полей ввода функции ЕСЛИ. Определение условия и функции первой ветви.

14. Закончив набор формулы в поле "Значение_если_истина" переводим текстовый курсор в поле ввода "Значение_если_ложь". Щелчком ЛКМ по слову ЕСЛИ в поле "Имя" строки формул открываем новое окно мастера формул для функции ЕСЛИ. Это окно используется для определения функций второй и третьей ветвей.

15. В поле "Логическое выражение" второго окна ЕСЛИ (в соответствии с алгоритмом рис. 1 блок 3)вводим условие "Х<=β", которому соответствует выражение

A12<=$D$10

- активизируем поле ввода строки "Значение_если_истина"ивводим в это поле выражение, обеспечивающее вычисление второй ветви функции: ($B$9+$D$9*A12)/(1+A12), соответствующее функции

F2V=(a+b*x)/(1+x)

- активизируем поле ввода строки "Значение_если_истина"ивводим в это поле выражение, обеспечивающее вычисление третьей ветви функции: $B$9/($D$9*A12), соответствующее функции

F3V = a / (b * x)

Окончательный вид формул, записываемых во втором окне мастера формул функции ЕСЛИ приведён на рис. 9.

16. Протягиваем формулу, записанную в ячейку Е12 по столбцу. Определяем по значениям аргумента Х точки перехода от одной верви функции к другой и сравниваем значения функции F(x) со значениями в столбцах функций F1V, F2V, F3V.

17. Если результаты сравнения положительны, переходим к записи функций QRF и QRF1 для вычисления значений разветвляющейся функции. Эти функции представляют два варианта реализации алгоритма, блок-схема которого приведена на рис. 1.

 
 

 

 


Рис. 9. Вид окна функции ЕСЛИ, реализация второй и третьей ветвей

18. Если результаты сравнения положительны, переходим к записи функций QRF и QRF1 для вычисления значений разветвляющейся функции. Эти функции представляют два варианта реализации алгоритма, блок-схема которого приведена на рис. 1.





©2015 www.megapredmet.ru Все права принадлежат авторам размещенных материалов.