Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по Инф_11-12.docx
Скачиваний:
13
Добавлен:
25.12.2018
Размер:
6.65 Mб
Скачать

Лекция № 9 Управление в программе. Условные операторы языка программирования visual basic

Очень часто при решении тех или иных задач приходится делать выбор в зависимости от условий на момент принятия решения. Например, человек решает, где ему учится:

  • если я окончу школу с золотой медалью, то пойду учится в Белорусский государственный университет;

  • если я окончу школу на 4 и 5, то пойду учится в Белорусский государственный технологический университет;

  • если я окончу школу на 3 и 4, то пойду учится в техникум;

  • а иначе – пойду в армию.

Говорят, что такая задача имеет разветвления и для ее решения необходимо осушествить управление в программе.

Операторы, позволяющие обеспечить выбор варианта решения задачи, в зависимости от некоторого условия называются условными операторами.

Его структура, которую поддерживает VBA, может быть следующей:

If … Then …

If … Then … Else …

Если при проверке условия должен выполняться только один оператор, запись производится в одну строку (строчный If) в виде:

If <условие> Then <оператор>

Например:

If Temperatura<10 Then MsgBox”Надеть куртку”

If <условие> Then <оператор_1> Else <оператор_2>

(если условие выполняется, то выполнить оператор_1, иначе выполнить оператор_2).

Если же при проверке условия должны выполняться сразу несколько операторов, то условный оператор записывается в блочной форме (блочный If) в виде

If <условие> Then

<операторы>

End If

Например:

If Temperatura<10 Then

MsgBox”Надеть куртку”

End If

или при наличии в задаче ветвления в виде

If <условие> Then

<операторы _1>

Else

<операторы_2>

End If

Например:

If Temperatura<10 Then

MsgBox”Надеть куртку”

Else

MsgBox”Надеть ветровку”

End If

Условный оператор If работает следующим образом: если условие после слова If является истинным, выполняется оператор или группа операторов после слова Then, а если условие является ложным, то выполняется оператор или группа операторов после слова Else. В случае же, когда слово Else отсутствует, происходит переход к следующему оператору по тексту программы.

Если необходимо проверить более одного условия, используют вложение операторов If друг в друга. В этом случае после слова Else в первом операторе If необходимо вставить второй оператор If с проверкой второго условия и т.д.

Например:

If <условие_1> Then <оператор_1> Else

If <условие_2> Then <оператор_2> Else <оператор_3>

Для блочных операторов If, то необходимо каждый из них закончить ключевым словом EndIf

If <условие_1> Then

<операторы _1>

Else

If <условие_2> Then

<операторы_2>

Else

<операторы_3>

EndIf

EndIf

При проверке любое условие, в том числе и сложное, может иметь только два значения: True (истина), либо False (ложь).

Для формулировки условия в VB используются следующие логические операции:

> (больше), >= (больше либо равно),

< (меньше), <= (меньше либо равно),

= (равно), <> (не равно)

Например,

a > b

b <= sin(x)

Если необходимо проверить сразу несколько условий, используются операции их объединения:

And (оба условия должны выполняться),

Or (хотя бы одно из условий должно выполняться),

Not (ни одно из условий не должно выполняться)

и некоторые другие. Например, следующее сложное условие

sin(x)>y And a>=5

будет выполнено только тогда, когда выполняются одновременно оба условия sin(x)>y и a>=5. В другом случае следующее сложное условие

cos(x)>y Or x=a

будет выполнено тогда, когда выполняется условие cos(x)>y либо a>=5. Комбинируя условия с операциями and и or, можно составить и более сложные условия.

Пример1: Для x=0,5 n=5,5 y=32 вычислить:

Составим блок-схему алгоритма вычисления задачи.

Создадим командную кнопку и напишем для нее текст процедуры:

Private Sub Command1_Click()

Dim x As Single, y As Single, w As Single, n As Single

x=Val(InputBox(“Введите значение х”))

n=Val(InputBox(“Введите значение n”))

y=Val(InputBox(“Введите значение y”))

z = Sin(x) / Sqr(Abs(x + 1)) - x

MsgBox (("Значение z=" & _ Format(z, “##.##”))

If x < z ^ 2 Then w = Sqr(Abs(x * y)) Else w = n * Log(Abs(x + 2))

MsgBox (("Значение w=" & _ Format(w, “##.##”))

End Sub

Пример2: Вычислить значение функции Y (сложное условие)

.

Private Sub CommandButton1_Click()

Dim x As Single, n As Single, y As Single

'Ввод исходных данных

x = Val(InputBox("Введите x "))

n = Val(InputBox("Введите n"))

'Проверка условий и расчет значений

If x >= 0 And n >= 0 Then y = Sqr(x)

If x < 0 And n < 0 Then y = n * x + 2

'Вывод результата

MsgBox (y)

End Sub

Пример3: Вычислить значение функции Y

.

Private Sub CommandButton1_Click()

Dim x As Single, y As Single

'Ввод исходных данных

x = Val(InputBox("Ввелите x "))

'Проверка условия и расчет значений

If x < 0 Then y = x + 2 Else If x <= 5 Then y = Sqr(5 * x) Else y = x ^ 2

'Вывод результата

MsgBox (y)

End Sub

Пример4. Если х < 5, то y=sin2x, z=cosx2, w=ctgx; если х  5, то y=1-sinx, z=1+cosx, w=arctgx.

Private Sub CommandButton1_Click()

Dim x As Single, y As Single, z As Single, w As Single

'Ввод исходных данных

x = Val(InputBox("Введите значение х"))

'Проверка условий и расчет значений

If x > 5 Then

y = Sin(x)^2

z = Cos(x^2)

w = cos(x)/sin(x)

Else

y = 1 - Sin(x)

z = 1 + Cos(x)

w = Atn(x)

End If

'Вывод результатов

MsgBox (y)

MsgBox (z)

MsgBox (w)

End Sub

Проверка выполнимости некоторых условий в программах используется довольно часто и производится многими операторами, в которых само условие является их частью.

Переключатели

К операторам условного перехода относятся и так называемые переключатели, которые реализуются оператором Select Case.

Данный оператор позволяет сделать выбор из нескольких альтернативных условных вариантов в зависимости от значения условного выражения.

Синтаксис оператора:

Select Case Условное выражение

Case Условие 1

Список операторов 1

Case Условие 2

Список операторов 2

Case Условие n

Список операторов n

Case Else

Список операторов n+1

End Select

Например: выбрать меню завтрака в зависимости от дня недели

Select Case DenNedeli

Case “Понедельник”

MsgBox “Салат из шпината”

Case “Вторник”

MsgBox “Салат из морской капусты”

Case Else

MsgBox “Ничего не предусмотрено”

End Select

В операторе Select Case можно использовать и операции отношений. Для этого в условие включают ключевые слова Is и To.

Is –сравнивает значение проверяемой переменной со значением выражения следующего за ключевым словом Is.

To –задает диапазон значений.

Например: необходимо выбрать оценку исходя из общего количества набранных баллов.

Select Case Ответ.Text

Case 8 To 10 ‘Если сумма баллов в диапазоне 8–10

Балл.Text=”Отлично”

Case 6 To 7

Балл.Text=”Хорошо”

Case 4 To 5

Балл.Text=”Удовлетворительно”

Case Is<4

Балл.Text=” Неудовлетворительно ”

End Select

Оператор GoTo

Оператор GoTo – это оператор безусловного перехода, когда ход выполнения программы без проверки каких-либо условий перепрыгивает на метку в коде.

Например:

GoTo Metka1 ‘имя метки

Metka1:

MsgBox “Едем на метро” ‘ переход на метку

Metka1– это имя метки

Обычно этот оператор не рекомендуют использовать. Поэтому он используется только в случаях крайней необходимости.

Пример выполнения лабораторной работы:

Ввести радиус r и высоту h. Если r>4 и h>4, то вычислить объем цилиндра, иначе площадь боковой поверхности цилиндра.

Интерфейс программы:

  1. Кнопка «Вычислить» на листе Excel вычисляет в зависимости от исходных данных указанные объем цилиндра или его площадь боковой поверхности, и результат выводит на лист Excel.

Private Sub CommandButton2_Click()

Dim r As Single, h As Single

Dim s As Single, v As Single

Const pi = 3.14

r = Worksheets("Иванов2").Cells(3, 3)

h = Worksheets("Иванов2").Cells(4, 3)

If r > 5 And h > 5 Then

s = 2 * pi * r * h

Worksheets("Иванов2").Cells(8, 3) = s

Else

v = pi * r ^ 2 * h

Worksheets("Иванов2").Cells(7, 3) = v

End If

End Sub

  1. Кнопка «Объем фигуры» вычисляет в зависимости от введенного названия фигуры (куб, шар, конус или цилиндр) ее объем.

Private Sub CommandButton3_Click()

Dim r As Single, h As Single

Dim s As Single, v As Single

Dim str As String

Const pi = 3.14

r = Worksheets("Иванов2").Cells(3, 3)

h = Worksheets("Иванов2").Cells(4, 3)

str = InputBox("Введите название фигуры (шар, куб, конус или цилиндр)")

Select Case str

Case "шар"

v = 4 / 3 * pi * r ^ 3

Case "цилиндр"

v = pi * r ^ 2 * h

Case "куб"

v = r ^ 3

Case "конус"

v = 1 / 3 * pi * r ^ 2 * h

Case Else

MsgBox "неправильное название фигуры"

End Select

MsgBox "Объем " & str & "а равен " & v

End Sub

  1. Кнопка «Открыть форму» открывает форму пользователя с элементами управления.

Private Sub CommandButton1_Click()

UserForm1.Show

End Sub

Интерфейс формы:

  1. Кнопка «Вычислить» на форме вычисляет те же характеристики фигуры, только результат выводится в текстовое окно, и исходные данные также вводятся из TextBox.

Private Sub CommandButton1_Click()

Dim r As Single, h As Single

Dim s As Single, v As Single

Const pi = 3.14

r = Val(TextBox1.Text)

h = Val(TextBox2.Text)

If r > 5 And h > 5 Then

s = 2 * pi * r * h

TextBox3.Text = s

Else

v = pi * r ^ 2 * h

TextBox4.Text = v

End If

End Sub

Расчет характеристик заданной фигуры с помощью встроенных функций Excel:

В ячейку С10 введем:

=ЕСЛИ(И(C3>5;C4>5);2*C5*C3*C4;C5*C3^2*C4)