Эта лабораторная работа посвящена управляющим структурам выбора (ветвлениям) в языке VBA: оператору If...Then...Else и блоку Select Case.
Ниже представлено подробное пошаговое руководство по выполнению Задания №1 (Решение квадратного уравнения), Задания №3 (Вариант 1), а также ответы на контрольные вопросы.
——————————
ЧАСТЬ 1. Задание №1: Решение квадратного уравнения на форме
Вам нужно создать графическую форму (UserForm), которая принимает коэффициенты $a$, $b$, $c$, вычисляет дискриминант $D$ и находит корни уравнения.
Шаг 1. Создание интерфейса формы (UserForm)
1. В Excel откройте редактор VBA (Alt + F11).
2. В верхнем меню выберите Insert $⟶$ UserForm.
3. Используя панель инструментов (Toolbox), разместите на форме следующие элементы:
* TextBox1 — для ввода коэффициента $a$.
* TextBox2 — для ввода коэффициента $b$.
* TextBox3 — для ввода коэффициента $c$.
* TextBox4 — для вывода значения Дискриминанта ($D$).
* TextBox5 — для вывода корня X_1 (или сообщения «Нет корней»).
* TextBox6 — для вывода корня X_2.
* CommandButton1 (Кнопка) — измените свойство Caption на «Решить!».
* Подпишите текстовые поля с помощью элементов Label (например, «Введи A», «Введи B», «Введи C», «Дискриминант», «Корни»).
Шаг 2. Программный код для кнопки «Решить!»
Дважды кликните по кнопке «Решить!» на форме и вставьте следующий код:
Private Sub CommandButton1_Click()
' 1. Объявление переменных
Dim a As Double, b As Double, c As Double
Dim D As Double, x1 As Double, x2 As Double
' 2. Проверка ввода (Задание 4: если введена буква вместо числа)
If Not IsNumeric(TextBox1.Text) Or Not IsNumeric(TextBox2.Text) Or Not IsNumeric(TextBox3.Text) Then
MsgBox "Введите число", vbCritical, "Ошибка ввода"
Exit Sub
End If
' 3. Считывание значений из текстовых полей
a = CDbl(TextBox1.Text)
b = CDbl(TextBox2.Text)
c = CDbl(TextBox3.Text)
' Проверка на линейное уравнение (если а = 0)
If a = 0 Then
MsgBox "Коэффициент 'A' не может быть равен 0 для квадратного уравнения!", vbExclamation
Exit Sub
End If
' 4. Вычисление дискриминанта
D = b ^ 2 - 4 * a * c
TextBox4.Text = CStr(D) ' Выводим дискриминант в TextBox4
' 5. Ветвление в зависимости от значения D (с использованием If...Then...Else)
If D < 0 Then
' Если D < 0
TextBox5.Text = "Действительных корней нет"
TextBox6.Text = ""
ElseIf D = 0 Then
' Если D = 0
x1 = -b / (2 * a)
TextBox5.Text = "X = " & CStr(x1)
TextBox6.Text = "Один корень"
Else
' Если D > 0
x1 = (-b + Sqr(D)) / (2 * a)
x2 = (-b - Sqr(D)) / (2 * a)
TextBox5.Text = "X1 = " & CStr(Round(x1, 4))
TextBox6.Text = "X2 = " & CStr(Round(x2, 4))
End If
End Sub
——————————
ЧАСТЬ 2. Задание №3: Решение математической функции (Вариант 1)
Вариант 1 требует вычислить значение функции $z$ в зависимости от введенного $x$:
z = |x|^3, x < 0 -2x + x/1+x, x ∈[0, 1) 3-x/1+x, x ≥ 1
Для этого задания лучше всего создать вторую кнопку (например, CommandButton2) на той же форме или отдельную форму, где будет один TextBox1 для ввода $x$ и один TextBox2 для вывода $z$.
Код для Варианта 1 (с использованием Select Case):