Основы языка программирования Visual Basic: Учебное пособие, страница 11

10.2.4. Функция IIF

Функция IIF имеет следующий синтаксис:

IIF(логическое выражение,выражение1,выражение2)

В отличие от оператора If функция IIF вычисляет два значения, но в зависимости от значения условного выражения возвращает только одно: если значение условного выражения истинно, то функция возвращает значение первого выражения, в противном случае – второго. Выражения могут быть представлены константами или вычисляемыми выражениями. Так, пример, рассмотренный на с. 36, можно записать в таком виде:

y=IIF(x>0,1,0)

          Эта функция проверяет, имеет ли переменная x значение больше 0, и,  если имеет, переменной y присваивается значение 1, в противном случае – значение 0.

Рассмотрим еще несколько примеров.

Пример 1.

Пусть необходимо вычислить значение функций y1 и y2.

y1 = a + ; y2 = a3, если  x > a

y1 = arctg x              , если x <= a,

где  a = b + 1

Входные данные: x, b - вещественного типа

Выходные данные: y1, y2, a, х - вещественного типа

Схема алгоритма:

 


На форме разместим два текстовых поля для ввода значений x и b, командную кнопку и элемент управления "Надпись" для вывода значения переменной y2 (используется свойство Caption этого элемента управ-ления). Программа будет иметь следующий вид:

Private Sub Command1_Click()

Dim x As Single , a As Single, b As Single

Dim y1 As Double, y2 As Double

x=Text1.Text

b=Text2.Text

a=b+1

If x>a Then

 y1=a+Abs(x)

 y2=a^ 3

            Label1.Caption = "При x=" & Str(x) & ", a =" & Str(a) & " : y2=" & Str(y2)

Else

      y1=Atn(x)

End If

MsgBox Format(y1, "0.000"), , " y1 равно"

End Sub

При выполнении условия x<a (6<45+1), форма и диалоговое окно, содержащее значение переменной y1, будут иметь вид:



В противном случае при x>a (45>2+1)) вид формы изменится, а диалоговое окно, предназначенное для вывода значения переменной y1, останется прежним.

Пример 2.

Пусть необходимо вычислить значение функции Y

Входные данные: x - вещественного типа

Выходные данные: Y - вещественного типа

Схема алгоритма:

 


10.2.5. Оператор  Select Case …. End Select

Использование оператора If  становится неудобным, когда вложенность структуры Развилка превышает три. В таких случаях целесообразно применять оператор Select Case …. End Select,который позволяет сделать выбор из произвольного числа вариантов. Синтаксис этого оператора следующий:

Select Case выражение

   Case значение

           <операторы>

   [ Case значение

           <операторы> ]

[Case Else

<операторы >]

End Select

Параметр выражение – любое числовое, строковое, логическое выражение или переменная.

В этом операторе вместо вычисления логического условия выполняется сравнение значения <выражение> с каждой из величин, заданных параметром <значение>. Для блока Case можно указывать не только одно значение, но и несколько, разделенных запятой (например: 2, 3, 4). Можно определять также области сравнения (например: 4 To 6) или воспользоваться относительным сравнением (например: Is > = 9, где Is – ключевое слово). Очередной блок Case выполняется, если ни одно из предыдущих условий не является истинным. В операторе может быть произвольное число блоков Case. Если ни одно из условий не является истинным, то выполняются инструкции Case Else.

Например, оператор Select Case  может использоваться для проверки принадлежности значения случайной величины некоторым заданным значениям. Используем функцию Rndдля получения случайного числа в диапазоне [0;10].

Randomize

Ns =Int(Rnd*10)+1

Select Case Ns

Case 1

Print "Равно 1"

          Case 2,3

           Print "Равно 2 или 3"

                     Case 4 to 6

Print "Больше или равно 4 и меньше или равно 6"

Case Is >=9

                               Print "Больше или равно 9"

Case Else

Print "Ни одно из предыдущих"

          End Select

Следует обратить внимание, что выражение Is >= 9 определяет все значения переменной Ns, которые больше или равны 9. Если совпадения значений не обнаружится, то управление передается команде, которая следует за оператором End Select.

Пример 3.

Разработать информационную технологию, позволяющую в зависимости от значения введенных переменных и знака арифметической операции напечатать поясняющий текст и результат вычисления.

Option Explicit

Private Sub Form_Activate()

Dim a As Integer, b As Integer, s As Single

Dim z As String * 1

Dim stro As String * 10

a = InputBox("Введите a ")

b = InputBox("Введите b ")

1: z = InputBox("Введите знак ")

Select Case z

    Case "+"

        s=a+b

        stro="Складываю! "

    Case "*"

        s=a*b

        stro="Умножаю! "

    Case "–"

        s=a–b

        stro="Вычитаю!  "

 Case "/"

        s=a/b

        stro="Делю! "

Case Else

MsgBox " Введен неверный знак операции – " & z & "Повторите ввод"

GoTo 1

End Select

MsgBox stro & a & z & b & "=" & Format(s,"0.000")

End Sub

10.2.6. Оператор безусловного перехода

Оператор безусловного перехода используется в тех случаях, когда после некоторого оператора следует выполнить не следующий по порядку оператор, а какой-либо другой, расположенный в любом месте активной процедуры. Синтаксис этого оператора следующий:

Goto имя метки или номер строки

          Чтобы обеспечить переход к оператору, перед ним необходимо поставить метку, отделив ее от оператора двоеточием, а в операторе перехода указать имя этой метки. Метка может состоять из символов и цифр. Количество меток не ограничено, но имя должно быть уникальным.

          В блоке объявлений метка описывается следующим образом: