Лабораторная работа № 12
Тема: Программы с ветвлениями
Условный оператор
Различают однострочный и многострочный условные операторы If:
а) однострочный оператор
If <условие> Then <операторы> [Else <операторы>]
При выполнении оператора If проверяется условие и, если оно истинно, то выполняется действие, указанное после опции Then. Если выражение ложно, то выполняется действие, указанное после опции Else. Затем управление передается на оператор, следующий за оператором If.
После опций Then и Else может быть указано несколько операторов, разделенных двоеточием.
б) многострочный оператор If:
а) простой If <условие> Then <первая группа операторов> [Else <вторая группа операторов>] End If | б) расширенный If <условие> Then <первая группа операторов> [ElseIf <условие> Then <вторая группа операторов> ] [Else <третья группа операторов> ] End If |
Достоинство многострочного оператора If состоит в том, что число операторов в группах не ограничено.
Оператор выбора
Оператор Select Case является оператором выбора. Он обеспечивает переход на ту или иную подпрограмму в зависимости от результатов вычислений. Очень удобен для обработки пунктов меню.
Пример использования оператора Select Case.
Select Case nkl ' nkl - переключающее выражение
Case 1 ‘ условие выборки
<блок операторов 1>
Case 2
<блок операторов 2>
...
Case Else
MsgBox "Неправильный ввод. Введите пункт меню"
Beep ‘ Выдача звукового сигнала
End Select
В опции Case могут использоваться следующие формы:
- число, или список значений, например: Case 1, 3, 5, 8;
- выражение, например (Case 1 Тo 10);
- Is выражение. Ключевое слово Is представляет собой условие, например (Case Is <5).
Задание
1. Вычислите значение разветвляющейся функции согласно варианту задания.
Определите область допустимых значений аргумента и выберите значения коэффициентов а и b таким образом, чтобы границы разрыва функции находились в этой области. Значения переменных a и b, а также переменной х вводите с клавиатуры.
2. Изобразите условия задачи графически согласно варианту задания.
3. Составьте схему алгоритма решения задачи.
4. Решите задачу двумя способами:
- с помощью простого однострочного оператора IF;
- с помощью многострочного оператора IF.
Программа должна сопровождаться текстовыми сообщениями, поясняющими получаемые результаты.
5. Решите задачу с помощью оператора Select Case.
6. Сделайте распечатку одного из вариантов решения задачи.
Указания к решению задачи:
- установите на форму три кнопки. Каждую кнопку используйте для запуска одного из вариантов решения задачи;
- введитезначения переменных a и b;
- введите значение независимой переменной х на первом отрезке и запишите результат;
- повторите вычисления при значениях аргументов на других отрезках области определения функции;
- чтобы результаты вывода информации на форму не пропадали при выходе за границы формы, перед каждым запуском программы ее необходимо очищать оператором Cls.
Варианты заданий
![]() | ![]() | ||
![]() | ![]() | ||
![]() | ![]() | ||
![]() | ![]() | ||
![]() | ![]() | ||
![]() | ![]() | ||
![]() | ![]() | ||
![]() | ![]() |
Пример выполнения задания
Вычислить разветвляющуюся функцию
2x2 - 4x + 5, х<a-b (1)
y= 10sin(x2) + 5cos(x), a-b<=x<=a+b (2)
ex – 17, x>a+b (3)
при а=1, b=2
Решение.
1. Функция определена на всех отрезках. Группа событий полная, следовательно, для решения задачи достаточно сделать две проверки.
2. Условия решения задачи представим графически.
![]() |
3. Составим схему алгоритма решения задачи.
![]() |
4. Текст программы
Option Explicit
Dim a As Single, b As Single, c As Single, d As Single
Dim x As Single, y As Single
-----------------------------------------------------------------------
Private Sub cmdIfPrima_Click()
Rem Разветвляющаяся программа
' решение с использованием однострочного If
Cls
a = Val(InputBox("Введите переменную а "))
b = Val(InputBox("Введите переменную b "))
c = a - b: d = a + b
Print "C="; c, "D="; d
x = Val(InputBox("Введите переменную x "))
If x < c Then y = 2 * x ^ 2 - 4 * x + 5: GoTo M1
If x > d Then y = Exp(x) - 17: GoTo M1
y = 10 * Sin(x ^ 2) + 5 * Cos(x)
M1:
Debug.Print "x="; x, "y="; y
End Sub
-------------------------------------------------------------------------
Private Sub cmdIfSecond_Click()
Rem Разветвляющаяся программа
' решение с использованием многострочного If
Cls
a = Val(InputBox("Введите переменную а "))
b = Val(InputBox("Введите переменную b "))
c = a - b: d = a + b
Print "C="; c, "D="; d
x = Val(InputBox("Введите переменную x "))
If x < c Then
y = 2 * x ^ 2 - 4 * x + 5
ElseIf x >= c And x <= d Then
y = 10 * Sin(x ^ 2) + 5 * Cos(x)
Else
y = Exp(x) - 17
End If
Debug.Print "x="; x, "y="; y
End Sub
------------------------------------------------------------------------
Private Sub cmdSelectCase_Click()
Rem Разветвляющаяся программа
' решение с использованием оператора Select Case
Cls
a = Val(InputBox("Введите переменную а "))
b = Val(InputBox("Введите переменную b "))
c = a - b: d = a + b
Print "C="; c, "D="; d
x = Val(InputBox("Введите переменную x "))
Select Case x
Case Is < c
y = 2 * x ^ 2 - 4 * x + 5
Case Is >= d
y = Exp(x) - 17
Case Else
y = 10 * Sin(x ^ 2) + 5 * Cos(x)
End Select
Debug.Print "x="; x, "y="; y
End Sub
5. Проверка алгоритма
При a=1 и b=2 С=-1, D=3
Для проверки правильности работы алгоритма необходимо три раза запустить программу при значениях аргумента принадлежащих всем трем участкам определения функции, например: x= -2, x=2, x=4. Для проверки правильности полученных результатов необходимо сравнить их с известными значениями функций или вычислить эти выражения другими средствами, например, с помощью математической системы MathCad.
Результаты проверки:
1) x = -2 y = 21
2) x = 2 y = -9.648759
3) x = 4 y = 37.59815
Контрольные вопросы
1. Приведите структуру и поясните принцип работы оператора IF.
2. Приведите структуру и поясните принцип работы расширенного оператора IF.
3. Приведите структуру и поясните принцип работы многострочного оператора IF.
4. Поясните синтаксис оператора Select Case.