Лабораторная работа. Основы работы в VBA. Алгоритмическая структура - ветвление
3. Логические выражения, логические операции и операции отношения
Логическое выражение, стоящее после оператора If или ElseIf может быть истинным или ложным. В отличии от арифметических выражений логические выражения принимают не числовые значения, а логические значения – "TRUE" (истина) и "FALSE" (ложь).
В логических выражениях можно использовать следующие операции отношений: =, <, >, < =, > =, < > (равно, меньше, больше, меньше либо равно, больше либо равно, не равно).
В логическом выражении допустимы два или несколько условий (операций отношения), которые связываются логическими операциями And, Or, Not (И, ИЛИ, НЕ). Логические операции осуществляют манипуляции над битами. Они возвращают значение "Истина" (не нулевое) и "Ложь" (нулевое) значения. Описание логических операций приведено в таблице 1.
Таблица 1. Логические функции языка VBA
Операция | Название | Логическое выражение | Объяснение |
And | Логическое умножение (И) | А And B | Логическое выражение истинно, когда выполняются оба условия одновременно (истинно А и истинно В). |
Or | Логическое сложение (ИЛИ) | А Or В | Логическое выражение истинно, когда хотя бы одно из условий выполняется (истинно или А или В или оба условия одновременно). |
Not | Логическое отрицание (НЕ) | Not A | Логическое выражение истинно, когда условие A не выполняется (А ложно). |
Xor | Исключающее ИЛИ | А Xor В | Логическое выражение истинно, когда условия А и В не совпадают. |
Eqv | Эквивалент-ность | А Eqv В | Логическое выражение истинно, когда А и В одновременно истинны или одновременно ложны. |
Imp | Импликация | A Imp B | A IMP B принимает значение "ложь", если A истинно, а В ложно, и значение "истина" в других случаях. |
Пример 3. Разработать программу вычисления интервальной функции с использование оператора If…Then, заданной графически на рисунке.
Sub lomanaya_funktsiya()
Dim x As Single
Dim y As Integer
' вводим значение аргумента
x = InputBox("Введите значение аргумента функции х", "Запрос задачи")
' вычисляем значение функции
If (x >= 1 And x < 3) Or (x >= 5 And x < 7) Or (x >= 9 And x < 11) Then
y = 1
ElseIf (x >= 4 And x < 5) Or (x >= 11 And x < 12) Then
y = 2
ElseIf x >= 7 And x < 9 Then
y = -1
ElseIf x >= 3 And x < 4 Then
y = -2
Else
y = 0
End If
' выводим ответ
MsgBox "При x = " & x & " функция равна " & y, , "Ответ задачи"
End Sub
Пример 4. Определить, попадает ли точка с координатами х0, у0 под кривую функции у=sin x, заданную в интервале 0≤x≤.2π
Sub Primer()
Dim x0 As Single, x_radian As Double
Dim y0 As Double, y As Double
x0 = InputBox("Введите х координату точки от 0 до 360 градусов", "Запрос задачи на попадание")
If x0 < 0 Or x0 > 180 Then
x0 = InputBox("Вы ввели неверное число. Повторите ввод", "Повторный запрос")
End If
y0 = InputBox("Введите у координату точки", "Повторный запрос")
' перевод х из градусов в радианы
x = x0 * 4 * Atn(1) / 180
' вычисляем значение функции
y = Sin(x_radian)
If y > y0 Then
MsgBox "Точка лежит под кривой", , "Ответ"
ElseIf y = y0 Then
MsgBox "Точка лежит на кривой", , "Ответ"
ElseIf y < y0 Then
MsgBox "Точка лежит над кривой", , "Ответ"
End If
End Sub