Содержание
ВНИМАНИЕ | Для получения макроса, функции, блок-схемы своего варианта пишите на наш электронный адрес proglabs@mail.ru |
Цель работы
Изучить основы VBA: типы данных, правила именования переменных, правила объявления переменных, базовые операторы, реализующие линейный алгоритм. Приобретение навыков написания пользовательских функций и процедур.
Постановка задания
Задание для всех вариантов звучит так (или, возможно, немного изменено, так как могут быть разные издания учебного пособия):
Согласно варианту задания, составьте алгоритм, решите задачу с помощью макроса и функции.
Варианты заданий
№ | Функция |
1 | $Y = \frac{|a \ + \ x|^3}{\ln|x \ + \ a|} + 7 \sqrt{a \ + \ x}$ |
2 | $Y = \frac{a \ + \ b}{x^5 \ + \ x^3} — \frac{\sqrt{a \ + \ x}}{2a}$ |
3 | $Q = \frac{b \ \cdot \ x^2 — s}{e^{s \ \cdot \ x} — 1} + e^{\sqrt{|x|}}$ |
4 | $Y = e^{0.2} + \sqrt[3]{|b \ — \ x|}$ |
5 | $Z = \sqrt[4]{|e^x — \sin(\frac{\Pi \ \cdot \ x}{2})}$ |
6 | $F = \ln(a \ +x^5) + \sin^2{\frac{a}{x}}$ |
7 | $X = \frac{1}{b \ \cdot \ x} + \frac{a}{b^2} \cdot \ln|\frac{x}{a \ \cdot \ x \ + \ b}|$ |
8 | $X = (y \ + \ b)^3 + \frac{\sqrt{y \ + \ b}}{y \ \cdot \ \Pi} + e^y$ |
9 | $Z = 3^{-x} \ \cdot \ \sqrt{x + \sqrt[4]{|x|}}$ |
10 | $Z = \frac{4.187 \ + \ \Pi^2 \ + \ \sin{\frac{x \ \cdot \ \Pi}{7}}}{e^7(\frac{3 \ \cdot \ \Pi}{4} \ + \ x \ \cdot \ \Pi)}$ |
Лабораторная работа №2 предполагает создание блок-схемы, а затем написание программ (функции и макроса) на языке VBA for Excel. При заказе работы своего варианта вы получите аккуратную ГОСТовую блок-схему и качественно написанные и хорошо прокомментированные программы: функцию и макрос.
Образец выполнения (вариант №1)
Условие задания
$Y = \frac{|a \ + \ x|^3}{\ln|x \ + \ a|} + 7 \sqrt{a \ + \ x}$ |
Алгоритм решения задачи
Прежде чем переходить непосредственно к кодированию данной лабораторной работы, нужно провести ее алгоритмизацию. Данный этап является обязательным и ни один профессиональный программист не опускает его в своей работе.
Если внимательно посмотреть на заданную аналитически функцию $Y$, то нетрудно заметить, что есть фрагменты, которые встречаются в записи формулы чаще $1$-го раза.
Как известно из курса школьной математики:
От перемены мест слагаемых сумма не меняется.
Следовательно, суммы $a + x$ и $x + a$ равносильны. То есть сумма $a + x$ встречается целых $3$ раза. Чтобы упростить вычисление заданной функции, введем вспомогательную переменную, отвечающую за эту сумму.
Блок-схема алгоритма
Решение задачи с использованием макроса
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | ' процедура, вычисляющая значение функции Y, при заданных с клавиатуры аргументах (а и х) Sub Formula() ' блок объявления переменных Dim a As Double, x As Double ' входные значения Dim tmp As Double ' вспомогательная переменная для хранения промежуточных результатов Dim Y As Double ' результирующая переменная ' запрашиваем вводом с клавиатуры входные данные a = InputBox("Введите a = ", "Сообщение для пользователя") x = InputBox("Введите х = ", "Сообщение для пользователя") ' получаем вспомогательное значение, которое многократно будет использоваться в последующих вычислениях tmp = a + x ' вычисляем конечное значение функции Y (получаем результат) Y = Abs(tmp) ^ 3 / Log(Abs(tmp)) + 7 * Sqr(tmp) ' выводим результат на экран пользователю через диалоговое окно MsgBox ("Результат вычислений Y = ") & Y End Sub |
Решение задачи с использованием функции
1 2 3 4 5 6 7 8 9 10 11 | ' функция, принимающая на вход 2 параметра и вычисляющая на их основе значение заданной функции Y Function Y(a As Double, x As Double) As Double ' блок объявления переменных Dim tmp As Double ' вспомогательная переменная для хранения промежуточных результатов ' получаем вспомогательное значение, которое многократно будет использоваться в последующих вычислениях tmp = a + x ' вычисляем конечное значение функции Y (получаем результат) Y = Abs(tmp) ^ 3 / Log(Abs(tmp)) + 7 * Sqr(tmp) End Function |
Результаты работы программы
ВНИМАНИЕ | Для получения макроса, функции, блок-схемы своего варианта пишите на наш электронный адрес proglabs@mail.ru |
Добавить комментарий