Операторы, которые направляют поток выполнения.
Описание
Операторы управления потоком контролируют выполнение программы от одного
оператора к другому; они определяют, какие операторы должны выполнены и
когда, на основе условий. Условие всегда является некоторым выражением,
результат которого истина (
TRUE) или ложь(
FALSE).
Большинство операторов управления потоком направляют или не направляют поток
кода на основе условий (за исключением оператора
Do..Loop
, который имеет опциональное условие). Кроме того все операторы управления
потоком могут быть вложенными, то есть, они могут иметь другие операторы
управления потоком в пределах своего блока.
Операторы управления потоком существуют в трех вариантах: передача
управления, ветвление и циклы. Операторы передачи управления потоком
переносят выполнение на другие участки кода. Операторы ветвления потока
управляют определенными операторами или блоками операторов на основе
условий. Операторы циклов управляют потоком выполнения многократно во время
или до тех пор, пока условие выполняется.
Операторы передачи
Эти операторы используются для условной или безусловной , временной или
постоянной передачи выполнения. Вариант "
ON"
условно выбирает пункт передачи управления из списка текстовых меток.
Выполнение может быть передано на различные области, если они не пересекают
локальные массивы , строки определенной длины или определения объектов.
Goto
Безусловная передача выполнения на другое место в коде,
определенное текстовой меткой. Выполнение возобновляется на первом операторе
после метки.
GoSub
Безусловная и временная передача выполнения другому месту
в коде, определенная текстовой меткой. Выполнение возобновляется на первом
операторе после метки. Выполнение на этом участке прекращается и
возвращается к его оригинальному местоположению, если встречается ключевое
слово
Return. Заявления
GoSub
могут быть вложены, то есть, многократные заявления
GoSub
могут быть выполнены перед первым соответствующим
Return,
но для всех
GoSub всегда должно быть
соответствующее
Return.
On Goto
Передача выполнения к определенному месту в коде, которое
определяется из списка меток на основе значения выражений
On Gosub
Временная передача выполнения к определенному месту в
коде, которое определяется из списка меток на основе значения выражений
Операторы ветвления
Эти операторы используются для выполнения одного из многих блоков заявления.
If..End If
Выполняет блок операций , если выражение оценивается как
истина (
TRUE). Если выражение оценивается как
ложное (
FALSE) , то выполняется следующий блок
операций при наличии оператора
ElseIf
. Если выражение в
ElseIf
оценивается как ложное (
FALSE) , то
выполняется блок операций при наличии оператора
Else.
Select..End Select
Выполняет один из ряда блоков операторов. Этот оператор
ветвления пытается выполнить условие на основе одного или нескольких CASE
заявлений. Выражения CASE проверяются в том порядке, в котором они даны.
Блок после CASE выполняется , если выражение(я) связанное с CASE
удовлетворяет условию. Как и в случае с операторами
If..End If,
существует опциональное CASE ELSE по умолчанию, которое выполнится, если ни
одно из условий CASE не будет выполнено. Так же как и с операторами циклов,
блок выполнения может быть прерван с помощью ключевого слова
Exit.
Операторы циклов
Эти заявления используются для выполнения блока операторов неоднократно. В
заявлении блока, одна из итераций цикла может быть пропущена с помощью
ключевого слова
Continue. Сам же
цикл может быть преждевременно прерван с помощью ключевого слова
Exit.
Независимо от того прерван ли цикл или завершен по условию, выполнение
программы начинается с первого оператора после его блока.
While..Wend
Выполняет блок операторов, пока некоторое выражение
истинно. Выражение вычисляется и проверяется перед блоком выполнения, но
после ключевого слова WHILE.
For..Next
Как
While..Wend,
но больше подходит для циклов, выполняющихся определенное количество раз.
Этот цикл инициализирует так называемый итератор с начальным значением,
который проверяется при каждой итерации (прохождении цикла). Если итератор
сравнивается на предмет меньше или равно выражению, то выполняется блок
операторов и увеличивается итератор. Цикл также можно настроить таким
образом, чтобы итератор уменьшался. В таком случае он будет сравниваться на
предмет больше или равно. Итераторами могут быть числовые типы данных, как
Integer
или
Double, или определяемые
пользователем типы. Определяемые пользователем типы должны реализовываться
Оператором For.
Do..Loop
Наиболее универсальный цикл по передаче управления. Этот
цикл может выполнять блок операторов, пока или до тех пор, пока выражение
принимает значение истина(true). Также может задержать проверку условия на
одну итерацию (самый первый раз),полезно, когда блок операторов необходимо
выполнить по крайней мере один раз. Наконец этот цикл может не иметь
условий, в этом случае он превращается в бесконечный цикл.