Оператор управления потоком для условного ветвления
Синтаксис
If expression Then [statement(s)] [Else [statement(s)]] [End If]
или
If expression Then : [statement(s)] [Else [statement(s)]] : End If
или
If expression Then
[statement(s)]
[ ElseIf expression Then ]
[statement(s)]
[ Else ]
[statement(s)]
End If
Описание
If...Then - это способ принятия решений. Это механизм для
выполнения кода, только если выполняется условие равно true, и может
предоставить альтернативный код для выполнения на основе нескольких условий.
expression может быть одной из нескольких форм:
- условное выражение, например:
- нескольких условий, разделенных логическими битовыми
операторами, например:
- нескольких условий, разделенных логическими
сокращенными операторами, например:
y <> 0 AndAlso x \ y = 1
(в этом случае, "
x \ y = 1" будет вычисляться, только если "
y <> 0"
равно True)
- любое числовое выражение, в этом случае значение ноль
(0) представляет False, а ненулевое значение представляет True
Многострочный и однострочный
If могут быть вложенными.
В последнем случае, дополнительный
End If может быть полезен
для контроля, где вложенный
If начинается и кончается.
В диалектах
-lang fb и
-lang fblite ,
двоеточие (
:) может использоваться вместо новых строк для создания
многострочного блока
If на одной линии.
Пример
'' Вот простая игра "Угадай число", использующая if...then для
принятия решения.
Dim As Integer num, guess
Randomize
num = Int(Rnd * 10) + 1 'Создаем
случайное число между 1 и 10...
Print "guess the number between 1 and 10"
Do 'Start a loop
Input "Guess"; guess 'Ввод
числа от пользователя
If guess > 10 OrElse guess < 1 Then 'Догадка
пользователя находится вне диапазона
Print "The number can't be greater then 10 or less than 1!"
ElseIf guess > num Then 'Догадка
пользователя слишком высока
Print "Too high"
ElseIf guess < num Then 'Догадка
пользователя слишком низка
Print "Too low"
ElseIf guess = num Then 'Пользователь
угадал правильное число!
Print "Correct!"
Exit Do 'Выйти
из цикла
End If
Loop 'Вернуться к началу цикла
Различия диалектов
- В диалектах -lang qb и -lang fblite,
переменные, объявленные внутри блока If..Then
имеют расширенный процедурный scope
как в QB
- В диалектах -lang fb и -lang deprecated,
переменные, объявленные внутри блока If..Then
видны только внутри блока и не могут использоваться вне его.
- В диалекте -lang qb, если есть
новая линия или однострочный комментарий (') непосредственно после THEN,
тогда IF будет многострочный. Двоеточие, Rem
или любой другой оператор будет приводить к однострочному IF.
- В диалектах -lang fb и -lang fblite ,
если есть новая линия или однострочный комментарий ('), двоеточие (:),
или заявление Rem непосредственно после THEN,
тогда IF будет многострочный. Любая другая инструкция приведет к однострочному IF.
Отличия от QB
- END IF не поддерживалась в однострочном IF в QBASIC.
См. также