Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Инструкции принятия решения (оператор условия и оператор выбора)



Инструкции принятия решения позволяют выполнять группы инструкций в зависимости от определенного условия. В VBA для принятия решения используются две инструкции: If …then …else и Select Case.

Инструкция If …then …else

Инструкция If …then …else задает выполнение определенных групп инструкций в зависимости от значения выражения. Ее синтаксис приведен ниже:

If Условие Then Инструкции [Else Инструкции_ Else]

Допускается также использование блоковой формы синтаксиса:

If Условие Then

[Инструкции]

[Else

[Инструкции_else]

End if

Или расширенная блоковая форма синтаксиса:

If Условие Then

[Инструкции]

[Elseif Условие-n Then

[Инструкции_elseif]]

[Else

[Инструкции_elseif_else]]

End if

При этом предложение Elseif…Then может повторяться несколько раз. Синтаксис инструкции If …then …else содержит элементы, представленные в таблице 1

Таблица 1. Элементы синтаксиса инструкции If …then …else

Элемент Описание
Условие Инструкции   Условие 1   Инструкции_elseif   Инструкции_else Инструщии_ elseif_else Обязательный элемент, представляющий логическое выражение, имеющее значение True или False. Если Условие имеет значение Null, то значение Условие считается равным False   Необязательный элемент в блоковой форме, но обязательный — в строчной форме. Этот элемент представляет собой одну или несколько инструкций, разделяемых двоеточиями, которые выполняются, если Условие имеет значение True   Обязательный элемент, аналогичный элементу Условие, если употреблено выражение Elseif   Необязательный элемент — одно или несколько инструкций, которые выполняются, если Условие имеет значение False, а Условие-п — True   Необязательный элемент— одна или несколько инструкций, которые выполняются, если Условие имеет значение False   Необязательный элемент — одно или несколько инструкций, которые выполняются, если ни Условие, ни Условие-n не имеют значение False

Однострочная форма допускает выполнение нескольких инструкций в результате проверки одного условия if…Then. При этом все инструкции должны находиться на одной строке и разделяться двоеточием, как показано в приведенном ниже

примере:

Существуют четыре целых числа, если inta мешьше intв, то к inta прибавить 3 и intb прибавить 7 и intc приравнять сумме inta и intb.

Sub testsub()

Dim inta As Integer, intb As Integer, intc As Integer, _

intd As Integer, intanew As Integer, intbnew As Integer, _

intcnew As Integer

inta = Int(Rnd * 10 + 1): intb = Int(Rnd * 10 + 1)

intc = Int(Rnd * 10 + 1): intd = Int(Rnd * 10 + 1):

If inta < intd Then intanew = inta + 3: intbnew = intb + 7

intcnew = intb + inta

MsgBox "inta=" & inta & Chr(10) & Chr(13) & _

"intb=" & intb & Chr(10) & Chr(13) & _

"intc=" & intc & Chr(10) & Chr(13) & _

"intd=" & intd & Chr(10) & Chr(13) & _

"intanew=" & intanew & Chr(10) & Chr(13) & _

"intbnew=" & intbnew & Chr(10) & Chr(13) & _

"intcnew=" & intcnew

End Sub

Если inta=4, intb=8, intc=1, intd=7, то intanew=7, intbnew=15, intc=12. Если inta=9, intb=8, intc=1, intd=8, то intanew=0, intbnew=0, intc=0.

Существуют четыре целых числа, если inta мешьше intd, то к inta прибавить 3 и intb прибавить 7 и intc приравнять сумме inta и intb, иначе inta прибавить 30 и intb прибавить 70 и intc приравнять сумме inta и intb

Sub testsub1()

Dim inta As Integer, intb As Integer, intc As Integer, _

intd As Integer, intanew As Integer, intbnew As Integer, _

intcnew As Integer

inta = Int(Rnd * 10 + 1): intb = Int(Rnd * 10 + 1)

intc = Int(Rnd * 10 + 1): intd = Int(Rnd * 10 + 1)

If inta < intd Then

intanew = inta + 3

intbnew = intb + 7

intcnew = intb + inta

Else

intanew = inta + 30

intbnew = intb + 70

intcnew = intb + inta

End If

MsgBox "inta=" & inta & Chr(10) & Chr(13) & _

"intb=" & intb & Chr(10) & Chr(13) & _

"intc=" & intc & Chr(10) & Chr(13) & _

"intd=" & intd & Chr(10) & Chr(13) & _

"intanew=" & intanew & Chr(10) & Chr(13) & _

"intbnew=" & intbnew & Chr(10) & Chr(13) & _

"intcnew=" & intcnew

End Sub

Если inta=5, intb=3, intc=7, intd=7, то intanew=8, intbnew=10, intc=8. Если inta=6, intb=10, intc=10, intd=3, то intanew=36, intbnew=80, intc=60.

При выполнении блоковой формы инструкции if также сначала проверяется Условие. Если оно имеет значение True, то выполняются инструкции, следующие за словом then. Если же Условие имеет значение false, то при наличии одного или нескольких условий elseif выполняется последовательная проверка каждого из них.В случае истинности одного из условий осуществляется выполнение следующих за соответствующим предложением then. В том случае, если ни из условий elseif не имеет значение true или предложения elseif отсутствуют, то выполняются инструкции, следующие за else.После выполнения инструкций, следующих за then или else, происходит передача управления на инструкцию, расположенную непосредственно за end if.

Ввести три числа: x, y, z.Если сумма трех попарно различных чисел x, y, z меньше 1, то меньшее из x,y заменить полусуммой y и z, иначе большее из x и z заменить на y4 .

Sub lop177()

Dim x, y, z, s

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

y = Val(InputBox("введите y:"))

z = Val(InputBox("введите z:"))

If (x + y + z) < 1 Then

If x < y Then

x = (y + z) / 2

Else

y = (y + z) / 2

End If

MsgBox "x=" & x & Chr(10) & Chr(13) & _

"y=" & y & Chr(10) & Chr(13) & _

"z=" & z

Else

If x > z Then

x = y ^ 4

Else

z = y ^ 4

End If

MsgBox "x=" & x & Chr(10) & Chr(13) & _

"y=" & y & Chr(10) & Chr(13) & _

"z=" & z

End If

End Sub





Дата публикования: 2014-11-26; Прочитано: 283 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.022 с)...