Розгалуження в Visual Basic
Оператори управління порядком виконання команд (галуження) вже застосовувалися в розглянутих прикладах. Вони дозволяють оцінити реальну ситуацію і адекватно реагувати на неї, ухвалюючи рішення про подальші дії. Visual Basic надає для цього ряд функцій і операторів
If...Then
Найчастіше використовується оператор If...Then, який може мати просту однорядкову або блокову структуру.
Однорядковий синтаксис:
If Умова Then Оператор [Else Оператор]
Функціонування оператора такої структури відносне просто. Якщо умова після If істинно, тобто результат рівний True, виконується оператор, вказаний за Then. Якщо ж результат рівний False, то виконується оператор, наступний за ключовим словом Else, якщо таке є:
If A = 7 Then Beep
'оператори
If X < 9 Then Print "False!" Else Print "True!"
У першому прикладі видається звуковий сигнал, якщо змінна A рівна 7. У другому прикладі виводиться текст False!, якщо значення змінної X менше 9; інакше виводиться текст True!.
If Умова Then
[Оператори1]
[ElseIf Умова1 Then
[Оператори2]
Else
[Оператори3]]
End If
Як значення для блоку Case можна указувати не тільки одне значення (1), але і декілька, розділених комою (2, 3). Можна визначати також області порівняння (4 To 6) або скористатися відносним порівнянням (Is >= 9) Замість безпосереднього перевірочного виразу можна використовувати ключове слово Is.
Блок Case Else виконується, якщо жодне з попередніх умов не є істинним.
Якщо умові Select Case відповідає декілька блоків Case, то виконується перший з них:
Private Sub Command1_Click()
Select Case nVariable
Case 0
Print "Рівне 0"
Case -10 Дo 10
Print "Між -10 і 10, крім 0"
End Select
End Sub
У другому блоці Case обробляються значення від -10 до 10, проте значення 0 перехоплюється першим блоком Case. Тому оператори другого блоку Case виконуватимуться, якщо значення умови більше або рівно -10 і менше 0, а також більше 0 і менше або рівне 10.
Цикли
Для багатократного виконання одного або декількох операторів призначені цикли Visual Basic пропонує дві конструкції: цикл For...Next дає можливість встановлювати число проходів циклу, а цикл Do...Loop завершується при виконанні заданої умови.
For...Next
Цикл For...Next є найстарішою і найпростішою конструкцією:
For Лічильник = Начальноє_значеніє Те Конечноє_значеніє [Step Крок] Оператори Next [Лічильник]
На початку виконання циклу значення Лічильник встановлюється в Початкове значення. При кожному проході змінна Лічильник збільшується на 1 або на величину Крок. Якщо вона досягає або стає більш ніж Кінцеве значення, то цикл завершується і виконуються наступні оператори. Різниця між початковим і кінцевим значенням, що ділиться на величину кроку, складає число проходів:
For i = 1 То 10
Print i * 100
Next i
Часто для обчислень усередині циклу використовуються числові змінні:
'(General)(Declaration)
Dim aArray(1997 To 2050)
Private Sub Command1_Click()
For i = LBound(aArray) To UBound(aArray)
Print aArray(i)
Next
End Sub
В даному прикладі виводиться весь вміст масиву.
Для безумовного виходу з циклу використовується оператор Exit For:
For i = 0 To 10
if i = 5 Then Exit For Else Print i
Next i
Do...Loop
Якщо кількість проходів повинна залежати від умови, використовують цикл Do...Loop.
Залежно від позиції умови розрізняють два варіанти циклу Do...Loop.
Цикл, керований на початкуDo [(While | Until) Умова]
[Оператори]
[Exit Do]
[Оператори]
Loop
Цикл з післяумовою
Do
[Оператори]
[Exit Do]
[Оператори]
Loop [(While | Until) Умова]
Якщо умова перевіряється на початку циклу, то він ніколи не виконується у разі невиконання умови. Якщо ж перевірка відбувається в кінці, цикл виконується як мінімум один раз, незалежно від того, виконана умова чи ні.
Тіло циклу виконується невизначене число разів, поки умову не викличе вихід з циклу:
Do Until EOF(#1)
Input #1, SomeData
Loop
Do
X = X + 1
Print "Hello"
Loop While X < 9
Розглянуті варіанти циклів Do...Loop надають розробникові великі можливості організації обчислень, що повторюються.
While...Wend
У Visual Basic цикл While...Wend грає другорядну роль. Він використовується тільки для сумісності з іншими діалектами Basic, а також для сумісності з ранішими версіями Visual Basic, в яких не було оператора Do...Loop.
While Умова
[Оператори]
Wend
Принцип його дії такий же, як і циклу Do...Loop. Тому замість нього простіше використовувати Do...Loop. Крім того, для циклу While...Wend немає оператора дострокового виходу типу Exit.