Партнерка на США и Канаду по недвижимости, выплаты в крипто

  • 30% recurring commission
  • Выплаты в USDT
  • Вывод каждую неделю
  • Комиссия до 5 лет за каждого referral

End Sub

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

If условие1 Then

операторы1

ElseIf условие2 Then

операторы2

ElseIf условие3 Then

операторы3

...

[Else

операторыN]

End If

Если первое условие истинно (т. е. логическое выражение условие1 имеет значение Тrие), то выполняется блок операторы1. Если оно ложно, то проверяется второе условие, находящееся после ключевого слова ElseIf. При истинности второго условия (т. е. если логическое выражение условие2 имеет значение Тrие) выполняется блок операторы2, и т. д. Если ни одно из условий не являются истинным, то выполняется блок операторыN, расположенный после ключевого слова Else. Далее выполняется оператор, следующий за служебным словосочетанием End If, вне зависимости от того, какой из блоков (операторы1, операторы2,... или операторыN) выполнен.

Иногда можно пользоваться функцией условием

переменная = IIf(условие, выражение1, выражение2)

В ней условие представляет собой логическое выражение, а выражение1 и выражение2 — арифметические или логические выражения или строки, которые можно рассматривать как выражения.

Функция IIf возвращает в программу значение выражения выражение1 или выражение2 в зависимости от того, какое значение принимает логическое выражение ‑ Тrие или False.

Пример

Public Sub IT4()

Dim intA As Integer

Dim strA As String

intA = 6

strA = IIf(intA Mod 2 = 0, "Четнoe", "Heчeтнoe")

НЕ нашли? Не то? Что вы ищете?

End Sub

Примером может служить выражение К=IIf(Mx<0, 1,-1).

Однако надо помнить, что оба выражения внутри оператора должны всегда иметь решения. Например, если в выражении стоят не конкретные числа, а исполняемые операторы и какая-либо переменная в них определяется начальным условием, то оператор всегда будет выдавать ошибку, так как не сможет вычислить оператор полностью – X=IIf(Y<>0, Z/Y, Z). В данной ситуации программа всегда будет пытаться поделить Z на Y и при равенстве Y нулю будет выводиться ошибка. Это условие обязательно надо писать в нормальной структуре If.

Вторая конструкция принятия решений (или ветвления) – Select Case, называемая оператором выбора:

Sеlесt Саsе выражение

Саsе значение1

операторы1

Саsе значение2

операторы2

[Саsе Е1sе

операторыN]

Еnd Sеlесt

В ней выражение — арифметическое или логическое выражение или строка. Работает оператор выбора следующим образом.

Если выражение принимает значение значение1, то выполняется блок операторов операторы1. Если выражение принимает значение значение2, то выполняется блок операторы2 и т. д. Если выражение не равно ни одному из приведенных значений, то выполняется блок операторыN, находящийся после служебного словосочетания Саsе Еlsе. Далее выполняется оператор, следующий за строкой Еnd Sеlесt, вне зависимости от того, какой из блоков (операторы1, операторы2, ... или операторыN) выполнен.

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

Пример

Public Sub Bыбop ()

Dim x As Integer

x = 1

Select Case 2 * x + 1

Case 1

x = x + 1

Case 2, 3, 4

x = 10

Case Else

x = 20

End Select

x = x Mod 3

End Sub

Циклы в программе

Часто в программах надо повторить часть операторов несколько раз. Для многократного выполнения блока операторов используется один из трех операторов цикла – For … Next:, While … Wend или Dо … Lоор.

Подпись: 

Рис.10. Алгоритм 

цикла For … Next

Часто заранее известно сколько раз надо повторить цикл, например, надо ввести данные в массив из 5 элементов, но бывают случаи, когда число повторений не известно, например, надо найти первую пустую ячейку на листе. Иногда возникают ситуации, когда блок внутри цикла может быть просто обойден (например, первая ячейка пустая).

Цикл For Nехt используется в том случае, когда количество выполнений заданного блока операторов известно заранее. Алгоритм цикла представлен на рис.10. Данная конструкция имеет следующий синтаксис:

For счетчик = начало To конец [Step шаг]

onepaтopы

Next [счетчик]

При положительном значении величины шаг цикл For … Next работает следующим образом.

Переменной счетчик сначала присваивается значение начало. Далее проверяется условие счетчик > конец. Если результатом проверки этого условия является значение Тruе, то происходит окончание работы цикла. При этом операторы цикла операторы ни разу не выполняются.

Если результатом проверки условия счетчик > конец является False, то в этом случае операторы цикла выполняются первый раз. После этого происходит переход на начало цикла. Далее значение переменной счетчик увеличивается на величину шага шаг, после чего снова проверяется условие счетчик > конец. Если результатом является Falsе, то операторы цикла выполняются второй раз, и т. д.

Выполнение цикла оканчивается, когда результатом проверки условия счетчик > конец становится Тruе. По окончании цикла выполняется оператор, следующий за циклом, т. е. за ключевым словом Next.

Пример. Программа расчета факториал числа 6 имеет следующий вид:

Public Sub Фaкториал1()

Dim I As Byte

Dim F As Long

F = 1

For I = 1 To 6 Step 1

F = F * I

Next I

End Sub

Напомним, что факториал целого положительного числа n обозначается n! и (согласно определению) n! равняется произведению целых чисел от 1 до n: n! = 1 *2 * ... *n.

Для результата отводится ячейка, в которую до начала простого цикла записывается 1, в данном случае F=1.

Пример. Второй вариант программы расчета 6!

Public Sub Фaкториал2()

Dim I As Byte

Dim F As Long

F = 1

For I = 6 To 1 Step -1

F = F * I

Next I

End Sub

В случае отсутствия ключевого слова Step шаг изменения переменной счетчик полагается равным единице.

В качестве параметров цикла начало, конец и шаг можно использовать не только числа, но и арифметические выражения. Важно, чтобы к моменту выполнения цикла For … Next все переменные в этих арифметических выражениях имели числовые значения (были определены).

Зачастую требуется досрочно выйти из цикла. В этом случае цикл For … Next записывается в виде

For счетчик = начало To конец [Step шаг]

onepaтopы1

If условие Then Exit For

onepaтopы2

Next [счетчик]

Досрочное окончание цикла обеспечивается оператором, обозначаемым служебным словосочетанием Exit For. Работает цикл следующим образом.

При каждом значении переменной счетчик после выполнения блока операторы1 компьютер рассчитывает значение логического выражения условие. Если это значение равно False, то работа цикла продолжается. В противном случае работа цикла оканчивается: блок операторы2 не выполняется, а осуществляется переход на оператор, следующий за циклом.

Пример. Четвертый вариант программы расчета 6!

Public Sub Фaктopиал4()

Dim I As Byte

Dim F As Long

F = 1

For I = 1 To 13 Step 1

F = F * I

If I = 6 Then Exit For

Next I

End Sub

Часто в примерах встречается задача накопления суммы, которая решается с помощью оператора цикла. Для результата, как и в случае вычисления произведения, отводится ячейка, в которую перед началом простого цикла записывается ноль, например S=0.

Сумма накапливается в ячейке S путем многократного выполнения оператора присваивания S=S + слагаемое, который располагается внутри простого цикла.

Результат получается в ячейке S по окончании работы простого цикла, т. е. печать S и другие действия с S выполняются после оператора Next.

Пример

Найдите сумму слагаемых вида 5х2, для х, изменяющегося от 5 до 15 с шагом 0,3.

Public Sub Sum()

S=0

For x = 5 To 15 Step 0.3

S=S+5*x^2

Next x

End Sub

Существуют два варианта циклов – первый, который мы подробно рассмотрели ранее, выполняется по счетчику, определяемому в операторе.

Второй вариант оператора – перебор всех объектов в коллекции (это все листы книги, ячейки листа или выделенного диапазона и др.). Этот оператор часто используется для работы со всеми листами книги, которые описаны коллекцией «Sheets» или других объектов.

Записывается оператор следующим образом:

For each Sh in ActiveWorkbook.Sheets

Next

Здесь нет в конце имени счетчика, переменная Sh является объектом коллекции.

Цикл применяется в том случае, когда число выполнений операторов цикла заранее неизвестно. Синтаксис этого цикла:

While условие

oпepaторы

Wend

Работа цикла While … Wend начинается с расчета значения логического выражения условие. Если условие = False, то работа цикла заканчивается, т. е. осуществляется переход на оператор, расположенный после ключевого слова Wend. Если условие = Тruе, то выполняются операторы цикла операторы. После этого опять рассчитывается значение логического выражения условие, и т. д.

Пример. Пятый вариант программы расчета 6!

Sub Факториал5()

Dim I As Byte

Dim F As Long

F = 1: I = 1

While I <= 6

F = F * I

I = I + 1

Wend

End Sub

Цикл Do Lоор, как и цикл While Wend, применяется, когда число выполнений операторов цикла заранее неизвестно. Он имеет два варианта оформления – с предусловием и постусловием (рис.11).

Рис.11. Алгоритмы цикла Do … Loop с предусловием
и постусловием, соответственно.

Для проверки условий используются две формы, которые оформляются служебными словами – While (Пока), когда цикл выполняется пока условие «Истина» и Until (До тех пор), в нем цикл выполняется пока условие «Ложь». Это позволяет легко находить варианты условий. Существует четыре разновидности данной конструкции.

Первой разновидностью является цикл Do While Lоор, имеющий следующий синтаксис:

Do While условие

операторы

Loop

Работа цикла Do While Lоор начинается с расчета значения логического выражения условие. Если условие = False, то работа цикла оканчивается, т. е. осуществляется переход на оператор, расположенный после ключевого слова Lоор. Если условие = Тruе, то выполняются операторы цикла операторы. После этого опять рассчитывается значение логического выражения условие, и т. д.

Цикл Do While Lоор эквивалентен рассмотренному ранее циклу While Wend.

Пример. Шестой вариант программы расчета 6!

Sub Факториал6()

Dim I As Byte

Dim F As Long

F = 1: I = 1

Do While I <= 6

F = F * I

I = I + 1

Loop

End Sub

Пример. Программа «шагания» по оси координат:

Sub Stepsl()

Dim x As Single

Dim h As Single

h = 0.5 'величина шага равна 0.5

x = 44 'начальное значение х равно 44

Do While x < 55 'конечное значение х равно 55

x = x + h 'значение х увеличивается на h

Loopdo while… - делай пока выполняется …

End Sub

Упрощенная форма цикла с предусловием и проверкой по While записывается в форме While X<10: X=X+1: Wend

Вторая разновидность конструкции Do Lоор ‑ цикл Do Until Lоор. Синтаксис этого цикла:

Do Until условие

операторы

Lоор

Работа цикла Do Until Lоор начинается с расчета значения логического выражения условие. Если условие = Тruе, то работа цикла оканчивается, т. е. осуществляется переход на оператор, расположенный после ключевого слова Lоор. Если условие = False, то выполняются операторы цикла операторы. После этого опять рассчитывается значение логического выражения условие, и т. д.

Пример. Второй вариант программы «шагания» по оси координат:

Sub Steps2()

Dim x As Single

Dim h As Single

h = 0.5 'величина шага равна 0.5

x = 44 'начальное значение х равно 44

Do Until x >= 55 'конечное значение х равно 55

x = x + h 'значение х увеличивается на h

Loop 'do until… - делай до выполнения

End Sub

Видно, что в циклах Do While Lоор и Do Until Lоор существует ситуация, когда операторы цикла не выполняются ни разу, т. к. условие окончания цикла проверяется перед выполнением этих операторов.

Третья разновидность конструкции Do … Loop ‑ цикл Do  Lоор While ‑ имеет синтаксис

Do

операторы

Loop While условие

Работа цикла Do Lоор While начинается с выполнения операторов цикла операторы. После этого рассчитывается значение логического выражения условие. Если условие = False, то работа цикла оканчивается. В противном случае опять выполняются операторы цикла, и т. д.

Пример. Третий вариант программы «шагания» по оси координат:

Sub Steps3()

Dim x As Single

Dim h As Single

h = 0.5 'величина шага равна 0.5

x = 44 'начальное значение х равно 44

Do

x = x + h 'значение х увеличивается на h

Loop While x < 55 'конечное значение х равно 55

End Sub

Четвертая разновидность конструкции Do … Loop ‑ цикл DoLоор Until ‑ имеет синтаксис

Do

операторы

Loop Until условие

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11