- •Введение в vba для приложений ms office
- •1. Базовые элементы языка vba
- •1.1. Алфавит, словарь, идентификаторы
- •1.2. Типы данных
- •1.3. Переменные
- •Dim имяПеременной [As тип] [, имяПеременной [As тип] …
- •1.4. Константы
- •1.5. Операции и операторы vba
- •1.7. Выражения
- •1.8. Приоритеты операций
- •1.9. Оператор присваивания
- •1.10. Структура программы
- •1.11. Правила оформления кода
- •2. Организация ввода – вывода данных
- •2.1. Окно сообщения. Стандартная процедура MsgBox
- •2.2. Окно ввода. Стандартная функция InputBox()
- •InputBox (сообщение [, заголовок] [, умолчание])
- •2.3. Ввод/вывод данных с/на рабочий лист Excel
- •3. Программирование линейных алгоритмов
- •4. Программирование разветвляющихся алгоритмов
- •4.1. Условный оператор If…Then
- •4.2. Условный оператор If…Then…Else
- •4.3. Условный оператор If…Then…ElseIf
- •4.4. Примеры использования оператора условного перехода If
- •5. Программирование циклических алгоритмов
- •5.1. Оператор цикла While…Wend
- •5.2. Оператор цикла For…Next
- •5.3. Табулирование функции
- •6. Литература
5.3. Табулирование функции
Табулирование функции – это вычисление значений функции для некоторого набора значений аргумента.
Пример 5.1. Выполнить табулирование функции y=2x(x+b) для переменной x, значение которой изменяется от начального до конечного значения с постоянным положительным шагом.
Результаты вычисления вывести на рабочий лист Excel.
Таблица соответствия переменных
Обозначение в задании |
Имя переменной |
Тип переменной |
Комментарий |
y |
y |
вещественный |
Результат. Значение функции |
x |
x |
вещественный |
Текущее значение аргумента функции |
b |
b |
вещественный |
Исходное данное. Числовая константа |
Начальное значение x |
XN |
вещественный |
Исходное данное |
Конечное значение x |
XK |
вещественный |
Исходное данное |
Шаг изменения значения x |
DX |
вещественный |
Исходное данное(>0) |
|
N |
целый |
Номер итерации вычисления |
Анализ исходных данных:
Имя переменной |
Недопустимое значение |
Ситуация |
XN, XK |
XN>XK |
Ввод данных |
DX |
0 |
Ввод данных |
Вводимые значения переменных XN, XK и DX удобно проверять с помощью следующего логического выражения
(XK<=XN) Or (DX<=0)
Очевидно, что если это выражение истинно, то введенные данные некорректны.
Графическая схема алгоритма представлена на рис.5.2, результаты тестирования программы – на рис.5.3.
Sub Pr5_1()
Dim y As Single, x As Single, b As Single
Dim XN As Single, XK As Single, DX As Single
Dim N As Byte
'Ввод исходных данных
b = InputBox("Введи значение b")
XN = InputBox("Введи начальное значение х")
XK = InputBox("Введи конечное значение х")
DX = InputBox("Введи шаг изменения х")
'Проверка исходных данных
If (XK<=XN) Or (DX<=0) Then
Cells(1, 1) = "Введены некорректные данные:"
Cells(2, 1) = "XN=" & CStr(XN)
Cells(3, 1) = "XK=" & CStr(XK)
Cells(4, 1) = "DX=" & CStr(DX)
Else
'Выполнение расчетов и вывод результатов
Cells(1, 1) = "№"
Cells(1, 2) = "x"
Cells(1, 3) = "y"
N = 1
x = XN
While x <= XK
y = 2 * x * (x + b)
Cells(1 + N, 1) = N
Cells(1 + N, 2) = x
Cells(1 + N, 3) = y
N = N + 1
x = x + DX
Wend
Cells(1 + N + 1, 1) = "При b=" & CStr(b)
End If
End Sub
Пример 5.2. Выполнить табулирование функции
для переменной x, значение которой изменяется от начального до конечного значения с постоянным положительным шагом.
Результаты вычисления вывести в Excel. Вывести номер формулы вычисления.
Таблица соответствия переменных
Обозначение в задании |
Имя переменной |
Тип переменной |
Комментарий |
y |
y |
вещественный |
Результат. Значение функции |
x |
x |
вещественный |
Текущее значение аргумента функции |
Начальное значение x |
XN |
вещественный |
Исходное данное |
Конечное значение x |
XK |
вещественный |
Исходное данное |
Шаг изменения значения x |
DX |
вещественный |
Исходное данное |
|
N |
целый |
Номер итерации вычисления |
|
f |
целый |
Номер формулы вычисления |
Анализ исходных данных: начальное, конечное значение переменной x и шаг ее модификации, - этого примера аналогичен анализу исходных данных примера 5.1. Однако требуется дополнительный анализ текущего значения аргумента функции, т.к. от его значения зависит выбор функциональной зависимости: по формуле 1, 2 или 3.
Графическая схема алгоритма представлена на рис.5.4, а результаты тестирования программы – на рис.5.5.
Sub Pr5_2()
Dim y As Single, x As Single
Dim XN As Single, XK As Single, DX As Single
Dim N As Byte, f As Byte
'Ввод и проверка исходных данных
XN = InputBox("Введи начальное значение х")
XK = InputBox("Введи конечное значение х")
DX = InputBox("Введи шаг изменения х")
If (XK<=XN) Or (DX<=0) Then
Cells(1, 1) = "Введены некорректные данные:"
Cells(2, 1) = "XN=" & XN: Cells(3, 1) = "XK=" & XK
Cells(4, 1) = "DX=" & DX
Else
'Выполнение расчетов и вывод результатов
Cells(1, 1) = "№": Cells(1, 2) = "x" ' Вывод шапки таблицы
Cells(1, 3) = "y": Cells(1, 4) = "Формула"
N = 1 ' Номер вычислений
For x = XN To XK Step DX ' Вычисления
If x >3 Then
y = x - 1: f = 1 ' По формуле 1
ElseIf x < -3 Then
y = x + 1: f = 2 ' По формуле 2
Else
y = x^2 : f = 3 ' По формуле 3
End If
Cells(1 + N, 1) = N: Cells(1 + N, 2) = x ' Номер вычислений и значение х
Cells(1 + N, 3) = y: Cells(1 + N, 4) = f ' Вывод y и номера формулы
N = N + 1 ' Модификация значения номера вычислений
Next
End If
End Sub
Для программирования циклических действий в приведенных выше примерах используются разные операторы цикла: в примере 5.1 – это оператор While … Wend, а в примере 5.2 – оператор For … Next.