Загрузка данных


Эта лабораторная работа посвящена управляющим структурам выбора (ветвлениям) в языке 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):