ПОНЯТНО О Visual Basic NET (том 2)

Разбираем многострочный If на примерах


Вспомним недавнюю задачу: Если a не равно 4, выполнить операторы b=3 и Debug.WriteLine(b), а в противном случае - операторы  b=0,  a=b+5  и  с=0. Вот однострочный оператор If, решающий эту задачу:

        If    a <> 4    Then    b = 3 : Debug.WriteLine(b)    Else    b = 0 : a = b + 5 :

c = 0

Однако, часто количество операторов после Then и Else бывает гораздо большим, да и сами эти операторы бывают гораздо более сложными и длинными. В этом случае строка становится неудобочитаемой, да и вообще не умещается на ширине экрана. Для таких случаев создан многострочный (или блочный) оператор If. Вот как решается наша задача с его помощью:

        If a <> 4 Then

            b = 3

            Debug.WriteLine(b)

        Else

            b = 0

            a = b + 5

            c = 0

        End If

Конструкция End If означает просто, что в этом месте оператор If заканчивается.



Часть Else может и отсутствовать. Например,

        If a <> 4 Then

            b = 3

            Debug.WriteLine(b)

        End If

Самое замечательное в блочном If то, что здесь можно одно за другим проверять несколько условий. Проиллюстрирую на примерах.

Задача: В компьютер вводится число a. Компьютер должен:

  • Если a<0, сказать «Число отрицательно».
  • Если a=0, сказать «Вы ввели нуль».
  • Если a>100, сказать «Число большое».
  • В остальных случаях компьютер ничего не должен говорить, а только вычислить и напечатать его квадрат.
  • В любом случае после всего этого компьютер должен сказать «До свидания».

    Вот программа:

        Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

            a = InputBox("Введите число")

            If a < 0 Then

                MsgBox("Число отрицательно")

            ElseIf a = 0 Then

                MsgBox("Вы ввели нуль")

            ElseIf a > 100 Then

                MsgBox("Число большое")

            Else

                Debug.WriteLine(a ^ 2)

            End If


            MsgBox("До свидания!")
        End Sub
    А вот перевод приведенного оператора If на русский:
            ЕСЛИ    a < 0   ТО
                MsgBox("Число отрицательно")
            ИНАЧЕ  ЕСЛИ   a = 0   ТО
                MsgBox("Вы ввели нуль")
            ИНАЧЕ  ЕСЛИ   a > 100   ТО
                MsgBox("Число большое")
            ИНАЧЕ 
                Debug.WriteLine(a ^ 2)
            КОНЕЦ ОПЕРАТОРА
    ElseIf переводят так – «иначе если».
    Многострочный If выполняется так: Сначала проверяется первое условие (a < 0). Если оно не выполняется, то VB переходит к проверке второго условия(a = 0), третьего и так далее. Наткнувшись наконец на условие, которое выполняется, VB выполняет операторы, стоящие после его Then и на этом заканчивает работу, даже если ниже есть условия, которые тоже выполняются. Если не выполняется ни одно из условий, VB выполняет операторы, стоящие за Else. Выполнив многострочный If, компьютер переходит к выполнению следующего оператора (у нас это MsgBox("До свидания!")).
    Проверьте работу этого оператора в пошаговом режиме 4 раза: для отрицательного, нулевого, положительного и большого положительного значения a. Это нужно для того, чтобы убедиться, что каждая из 4 ветвей оператора работает нормально.
    Обратите внимание, что вам нигде не пришлось объяснять компьютеру, что «в остальных случаях» означает на самом деле «между 0 и 100». Все получилось само собой.

    Содержание раздела