Содержание
ВНИМАНИЕ | Для получения процедуры, вызываемой через макрос, своего варианта пишите на наш электронный адрес proglabs@mail.ru |
Цель работы
Изучить логические операции и базовые операторы, реализующие алгоритм ветвления.
Постановка задания (условный оператор)
Задание для всех вариантов звучит так (или, возможно, немного изменено, так как могут быть разные издания учебного пособия):
Написать подпрограмму, которая выводит в первом случае в окно сообщения, во втором – в ячейку листа Excel сообщение «Точка с заданными координатами не принадлежит заштрихованной области», если точка, заданная координатами $\{х; у\}$ не принадлежит заштрихованной области, в противном случае вывести сообщение «Точка с заданными координатами принадлежит заштрихованной области».
Варианты заданий
№ | График | № | График |
1 | 6 | ||
2 | 7 | ||
3 | 8 | ||
4 | 9 | ||
5 | 10 |
Образец выполнения (вариант №5)
Условие задания
Алгоритм решения задачи (математическая модель)
Прежде чем переходить непосредственно к кодированию данной лабораторной работы, нужно провести ее алгоритмизацию. Данный этап является обязательным и ни один профессиональный программист не опускает его в своей работе.
В первую очередь нужно провести тщательный анализ заданного фрагмента и попытаться разбить его на тривиальные геометрические примитивы: прямоугольники, квадраты, окружности, ромбы, треугольники и пр.
Очевидно, что заданный фрагмент графика можно расчленить на 2 составные части: левую и правую.
Проведем анализ каждой из частей и попробуем записать математические формулы, описывающие эти графические примитивы.
Фрагмент | Геометр. представление | Математическое описание |
Левый | Часть окружности, которая существует только в 4-ой четверти декартовой системы координат. | $x^2 + y^2 = R^2$ — уравнение окружности с центром в начале координат. Из графика функции видно, что $R = 6$. Так как окружность существует только в 4-ой четверти, то необходимо добавить следующие ограничения:
Так как нам требуется проверить попадание точки внутрь этого фрагмента, то окончательные условия для этого будут такими: $\begin{cases} x^2 + y^2 \leq 6^2, \\ x \leq 0, \\ y \geq 0 \end{cases}$ |
Правый | Часть окружности, которая существует только в 1-ой четверти декартовой системы координат. | $x^2 + y^2 = R^2$ — уравнение окружности с центром в начале координат. Из графика функции видно, что $R = 4$. Так как окружность существует только в 1-ой четверти, то необходимо добавить следующие ограничения:
Так как нам требуется проверить попадание точки внутрь этого фрагмента, то окончательные условия для этого будут такими: $\begin{cases} x^2 + y^2 \leq 4^2, \\ x \geq 0, \\ y \geq 0 \end{cases}$ |
Для того, чтобы точка с заданными координатами попадала в заштрихованную область графика, нам достаточно, чтобы эта точка попала или в левую часть, или в правую часть исходного графика.
➡ Следовательно, получим окончательную версию математической модели, благодаря которой можно проверить попадание точки в заданный интервал:
$\left[ \begin{gathered} \left\{ \begin{gathered} x^2 + y^2 \leq 6^2, \\
x \leq 0, \\ y \geq 0 \end{gathered} \right. \\ \\ \left\{ \begin{gathered}
x^2 + y^2 \leq 4^2, \\ x \geq 0, \\ y \geq 0 \end{gathered} \right.
\\ \end{gathered} \right.$
💡 В теории математики такую запись называют совокупностью систем.
Решение задачи с использованием макроса на VBA
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | ' процедура, проверяющая попадание точки с заданными координатами {x; y} в заштрихованную область Sub Uslovie() ' раздел объявления переменных Dim x As Double ' координата заданной точки по оси абсцисс (Х) Dim y As Double ' координата заданной точки по оси ординат (Y) Dim f1 As Boolean ' равно true, если заданная точка попадает в "левую" часть заштрихованной области Dim f2 As Boolean ' равно true, если заданная точка попадает в "правую" часть заштрихованной области Dim f3 As Boolean ' равно true, если заданная точка попадает в заштрихованную область ' производим автоматическую очистку ячеек таблицы от прошлых результатов (если это не самый 1ый тест макроса) Worksheets("Task1").Range("G5:G6").ClearContents Worksheets("Task1").Cells(8, "F").Value = "" ' запрашиваем координаты точки вводом с клавиатуры x = InputBox("Введите координату точку по оси абсциис (Х): ", "Сообщение для пользователя") Worksheets("Task1").Cells(5, "G") = x y = InputBox("Введите координату точку по оси ординат (Y): ", "Сообщение для пользователя") Worksheets("Task1").Cells(6, "G") = y ' проверка попадания точки с заданными координатами в "левую" часть заштрихованной области f1 = (x <= 0) And (y >= 0) And (x ^ 2 + y ^ 2 <= 6 ^ 2) ' проверка попадания точки с заданными координатами в "правую" часть заштрихованной области f2 = (x >= 0) And (y >= 0) And (x ^ 2 + y ^ 2 <= 4 ^ 2) ' вычисляем результат f3 = f1 Or f2 ' выводим результаты в диалоговое окно и в ячейку листа Excel If (f3 = True) Then Worksheets("Task1").Cells(8, "F") = "Точка принадлежит заданной области" MsgBox ("Точка с заданными координатами принадлежит заштрихованной области") Else Worksheets("Task1").Cells(8, "F") = "Точка не принадлежит заданной области" MsgBox ("Точка с заданными координатами не принадлежит заштрихованной области") End If End Sub |
Результаты работы программы
№ | Тест | Результаты |
1 | Точка с заданными координатами $\{x; y\}$ принадлежит заштрихованной области | |
2 | Точка с заданными координатами $\{x; y\}$ не принадлежит заштрихованной области |
ВНИМАНИЕ | Для получения процедуры, вызываемой через макрос, своего варианта пишите на наш электронный адрес proglabs@mail.ru |
Постановка задания (оператор выбора)
Задание для всех вариантов звучит так (или, возможно, немного изменено, так как могут быть разные издания учебного пособия):
Напишите макрос, решающую задачу в соответствии с вашим вариантом, ввод данных осуществляется из ячеек электронной таблицы. Вывод реализован в ячейки электронной таблицы.
Варианты заданий
№ | Условие задачи |
1 | В ячейку вводятся числа от $1$ до $4$, соответствующее: $1$ – миллиграмм, $2$ – грамм, $3$ – тонна, $4$ — центнер. С помощью диалогового окна считывается масса $М$ в соответствующих единицах измерения и выводится ее значение в килограммах. |
2 | В ячейку вводятся числа от $1$ до $3$, соответствующее: $1$ – радиус, $2$ – диаметр, $3$ – длина окружности. С помощью диалогового окна считывается значение соответствующего элемента окружности и вычисляется ее площадь. Например, если введено «$1$», то считывается значение радиуса, используя которое необходимо вычислить площадь окружности. |
3 | В ячейку вводятся числа от $1$ до $3$, соответствующее: $1$ – окружность, $2$ – прямоугольник, $3$ – трапеция. Нужно вычислить площадь соответствующей фигуры, введя для этого значения необходимых элементов. Например, если введено «$3$», то нужно ввести значение длин оснований трапеции и ее высоту, используя которые вычислить площадь. |
4 | В ячейку вводятся числа от $1$ до $4$, соответствующее: $1$ – синус, $2$ – косинус, $3$ – тангенс, $4$ – котангенс. С помощью диалогового окна считывается значение соответствующей функции для некоторого угла a, для которого необходимо найти значения всех остальных тригонометрических функций. Например, если введено «$1$», то вводится значение , а затем вычисляются значения . |
5 | В ячейку вводятся числа от $1$ до $3$, соответствующее одному из элементов равнобедренного прямоугольного треугольника: $1$ – катет, $2$ – гипотенуза, $3$ – площадь. С помощью диалогового окна считывается значение соответствующего элемента, используя которое вычисляются все остальные элементы. Например, если введено «$1$», то считывается значение катета, а затем находится гипотенуза и вычисляется площадь треугольника. |
6 | В ячейку вводятся числа от $1$ до $3$, соответствующее одному из элементов равностороннего треугольника: $1$ – длина стороны, $2$ – периметр, $3$ – площадь. С помощью диалогового окна считывается значение соответствующего элемента, используя которое нужно вычислить значения остальных элементов. Например, если введено число «$1$», то вводится длина стороны треугольника и с помощью этого значения вычисляются периметр и площадь треугольника. |
7 | В ячейку вводятся числа от $1$ до $4$, соответствующее одному из элементов квадрата: $1$ – длина стороны, $2$ – длина диагонали, $3$ – периметр, $4$ – площадь. С помощью диалогового окна считывается значение соответствующего элемента, с помощью которого вычисляются все остальные элементы. Например, если введено число «$2$», то с клавиатуры вводится длина диагонали квадрата, используя которую необходимо найти длину стороны, периметр и площадь квадрата. |
8 | В ячейку вводятся числа от $1$ до $3$, соответствующее: $1$ – прямой круговой цилиндр, $2$ – конус, $3$ – шар, $4$ – прямоугольный параллелепипед. Нужно вычислить объем соответствующей фигуры, введя для этого значения необходимых элементов. Например, если введено число «$2$», то нужно ввести с клавиатуры высоту конуса и радиус его основания и вычислить объем фигуры. |
9 | В ячейку вводятся числа от $1$ до $4$, соответствующее одному из элементов куба: $1$ – длина ребра, $2$ – длина диагонали боковой грани, $3$ – площадь боковой грани, $4$ – объем. С помощью диалогового окна считывается значение соответствующего элемента, используя которое нужно вычислить значения остальных элементов куба. Например, если введено число «$3$», то с клавиатуры вводится значение площади боковой грани куба, с помощью этого значения нужно вычислить длину ребра, длину диагонали боковой грани и объем куба. |
10 | В ячейку вводятся числа от $1$ до $4$, соответствующее: $1$ – миллиметр, $2$ – сантиметр, $3$ – дециметр, $4$ – километр. С помощью диалогового окна считывается длина $L$ в соответствующих единицах измерения и выводится ее значение в метрах. |
Образец выполнения (вариант №2)
Условие задания
В ячейку вводятся числа от $1$ до $3$, соответствующее: $1$ – радиус, $2$ – диаметр, $3$ – длина окружности. С помощью диалогового окна считывается значение соответствующего элемента окружности и вычисляется ее площадь. Например, если введено «$1$», то считывается значение радиуса, используя которое необходимо вычислить площадь окружности.
Алгоритм решения задачи (математическая модель)
💡 Главное назначение математической модели — показать нам, как связаны между собой следующие величины:
- Радиус — площадь окружности.
- Диаметр — площадь окружности.
- Длина окружности — площадь окружности.
№ | Графическое представление | Математическая формула |
1 | $S_{круга} = PI \cdot R^2$, где $PI$ — константа, равная примерно $3.1415$; | |
2 | $D = 2 \cdot R \rightarrow R = \frac{D}{2}$ $S_{круга} = PI \cdot R^2 = PI \cdot (\frac{D}{2})^2$ $S_{круга} = PI \cdot \frac{D^2}{4}$, где $PI$ — константа, равная примерно $3.1415$; | |
3 | $L = 2 \cdot PI \cdot R \rightarrow R = \frac{L}{2 \cdot PI}$ $S_{круга} = PI \cdot R^2 = \\ = PI \cdot (\frac{L}{2 \cdot PI})^2 = PI \cdot \frac{L^2}{2^2 \cdot PI^2}$ $S_{круга} = \frac{L^2}{4 \ \cdot \ PI}$, где $PI$ — константа, равная примерно $3.1415$; |
➡ Владея этой информацией, мы теперь без труда сможем вычислить площадь окружности (или площадь круга)!
Решение задачи с использованием макроса на VBA
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | ' процедура, вычисляющая площадь круга Sub Calculate() ' раздел объявления переменны Dim userSelect As Integer ' хранит число, соответствующее типу входной информации (радиус, диаметр или длина окружности) Dim R As Double ' хранит радиус окружности Dim D As Double ' хранит диаметр окружности Dim L As Double ' хранит длину окружности Dim S As Double ' хранит результат (площадь круга) Dim PI As Double ' константа ПИ ' производим очистку от прошлых результатов (если это не самый 1ый тест макроса) Worksheets("Task2").Range("J4:J6").ClearContents Worksheets("Task2").Cells(9, "I").ClearContents ' сделано для удобства записи во всех последующих формулах PI = Application.WorksheetFunction.PI ' считываем число, введенное пользователем userSelect = Worksheets("Task2").Cells(8, 9) S = 0 ' если пользователь ошибется с выбором, то площадь круга будет равна 0, что соот-ет недопустимому значению ' анализируем входное пользовательское значение Select Case userSelect Case 1 ' пользователь работает с радиусом окружности R = InputBox("Введите радиус окружности(R): ", "Сообщение для пользователя") Worksheets("Task2").Cells(4, 10) = R S = PI * R ^ 2 Case 2 ' пользователь работает с диаметром окружности D = InputBox("Введите диаметр окружности(D): ", "Сообщение для пользователя") Worksheets("Task2").Cells(5, 10) = D S = PI * D ^ 2 / 4 Case 3 ' пользователь работает с длиной окружности L = InputBox("Введите длину окружности(L): ", "Сообщение для пользователя") Worksheets("Task2").Cells(6, 10) = L S = L ^ 2 / (4 * PI) Case Else MsgBox ("Вы забыли выбрать номер исходного данного, либо номер задан некорректно!") End Select ' выводит результат (площать круга) в ячейку листа Excel Worksheets("Task2").Cells(9, 9) = S End Sub |
Результаты работы программы
№ | Тест | Результаты |
1 | Интерфейс программы (Excel) | |
2 | Задан радиус окружности (R) | |
3 | Задан диаметр окружности (D) | |
4 | Задана длина окружности (L) | |
5 | Ошибочный ввод |
ВНИМАНИЕ | Для получения процедуры, вызываемой через макрос, своего варианта пишите на наш электронный адрес proglabs@mail.ru |
Добавить комментарий