If...Then
 
Оператор управления потоком для условного ветвления

Синтаксис

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 может быть одной из нескольких форм:
    • условное выражение, например:
x = 5
    • нескольких условий, разделенных логическими битовыми операторами, например:
x >= 5 And x <= 10
    • нескольких условий, разделенных логическими сокращенными операторами, например:
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.

См. также