7.3    Операторы управления Visual Basic

Операторы управления языка служат для управления работой программы. К ним относятся:

- операторы передачи управления;

- операторы выбора;

- операторы циклов.

7.3.1         Операторы передачи управления

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

GoTo идентификатор

где  GoTo – ключевое слово;

идентификатор – одна из меток программы.

Метка – это идентификатор, помещаемый слева от программного оператора и отделенный от него двоеточием. Например:

m1: Text1.Text = "это метка"

Оператор перехода для перехода к оператору с меткой m1 будет иметь вид:

GoTo m1

Следует сказать о том, что для получения  хорошего стиля программирования следует избегать применения оператора GoTo, так как в этом случае ухудшается читаемость и понимание программы.

7.3.2        Операторы выбора

Операторы выбора используются в программе для реализации условных алгоритмических конструкций, которые вызывают выполнение различных частей программы в соответствии с условиями, существующими на момент выполнения этих операторов. Одним из важных элементов программного оператора выбора является выражение условия, значением которого может быть Истина (True) или Ложь (False).  Такие выражения условия записываются с помощью операторов отношения.

В Visual Basic есть два основных типа операторов выбора: операторы условия If ... Then и переключатели, реализуемые оператором Select Case.

7.3.2.1.            Операторы If . . . Then

В Visual Basic есть два типа операторов  If . . . Then – линейный и блочный.

Линейный оператор If . . . Then используется для того, чтобы выполнить какой - либо один оператор, если некоторое условие будет истинным. Условие является выражением или функцией, истинность которого оценивается. Синтаксическая конструкция линейного оператора имеет две формы - безальтернативную и альтернативную:

Безальтернативная форма: 

 If  условие  Then Выражение

Альтернативная форма:     

 If  условие  Then  Выражение_1  Else Выражение_2

В безальтернативной форме при значении условия True сначала выполняется выражение, следующее за ключевым словом Then, а затем следующий в последовательности оператор. Если условие принимает значение False, то выражение следующее за словом Then не выполняется, а выполняется следующий оператор.

Примеры линейного оператора If . . . Then безальтернативной формы:

If intNamber<3 Then  intResult = 10*2 ‘ Если переменная  _

intNamber содержит значение меньше трех, то переменной _

intResult будет присвоено значение 20 

If optAddition.Value = True  Then  z = x + y

Пример линейного оператора If . . . Then . . . Else:

If intNamber<3 Then  intResult = 10*2   Else  intResult =30

В результате выполнения этого оператора переменной nResult будет присвоено значение 20, если переменная nNamber содержит значение меньше трех,  в противном случае переменной nResult будет присвоено значение 30.

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

If  Условие Then

    Программный оператор 1

    Программный оператор  2

         .     .      .

    Программный оператор   n

End If

Здесь End If указывает на окончание блока  оператора If.

Альтернативный блочный оператор If применяется в тех случаях, когда при выполнении условия необходимо выполнить один набор программных операторов, а при невыполнении - другой. Это реализуется с помощью оператора If . . . Then . . . Else, синтаксис которого следующий:

If  условие  Then

    Блок программных операторов, выполняемых при значении условия True

Else

    Блок программных операторов, выполняемых при значении условия False

End If

Операторы If могут быть вложенными друг в друга. Такое вложение операторов применяется, если нужно проверить какое-либо условие при другом условии, которое является истинным (например, если фамилия Иванов и он торговый агент). Формат вложенного оператора If следующий:

If  условие_1  Then

                If условие_2 Then

                Блок операторов 1

    Else

                Блок операторов 2

                EndIf

EndIf

Пример применения вложенного оператора If:

If   Name = “Иванов   Then

                If  Rang = “Торговый агент” Then

                            Text1.Text = Name & Rang

    Else

Text1.Text=”Агента с указанной фамилией в списке нет”

                EndIf

EndIf

В этом примере условие первого оператора If  проверяет соответствует ли значение переменной Name значению неименованной строковой константы “Иванов”. Если результат этой операции True, то вложенный оператор If сделает проверку, является ли Иванов торговым агентом. В случае истинности результата в текстовое поле будет выведено значение “Иванов торговый агент”. В противном случае – “Агента с указанной фамилией в списке нет”.

При использовании вложенных операторов If важно не перепутать варианты сочетания условий. Нужно помнить правило: альтернатива Else считается принадлежащей ближайшему оператору If, не имеющему ветви Else.

В Visual Basic также предусмотрена конструкция для работы с несколькими операторами If. Несколько операторов If применяются в случаях, когда необходимо рассмотреть еще несколько условий в дополнение к исходному. Для этого служит конструкция If  … Then … ElseIf.  В отличие от вложенных операторов конструкция с несколькими операторами If позволяет проверить дополнительное условие, если исходное условие принимает значение False. Форма записи нескольких операторов If имеет следующую синтаксическую конструкцию:

If выражение_условия_1 Then

Программный оператор 1

ElseIf выражение_условия_2 Then

Программный оператор 2

                Else

                Программный оператор 3

EndIf

 Например:

If  CorrectAnsver.Text >=8 Then

                       Ball.Text = ”Отлично

ElseIf CorrectAnsver.Text >=6 Then

            Ball.Text = “Хорошо

ElseIf CorrectAnsver.Text >=4 Then

            Ball.Text  = “Удовлетворительно”

Else Ball.Text = “Неудовлетворительно”

EndIf

Приведенный код программы определяет количество правильных ответов и выставляет оценку. Он работает следующим образом. Сначала проверяется значение условия в операторе If. Если оно принимает значение True, то выполняется оператор (или блок операторов), следующий непосредственно за ключевым словом  Then, после чего программа перейдет к выполнению оператора, следующего за EndIf. Если первое условие принимает значение False, то программа перейдет к выполнению первого оператора ElseIf, чтобы проверить выполнение его условия. Если оно имеет значение True, то выполнится оператор Ball = 4 и программа перейдет к выполнению оператора, следующего за EndIf. В противном случае эта последовательность действий повторится для следующего оператора ElseIf и так до тех пор, пока не будут проверены все из них.

7.3.3        Переключатели

Переключатели в Visual Basic реализуются оператором Select Case, который позволяет сделать выбор из нескольких альтернативных вариантов в зависимости от значения условного выражения. Синтаксис его следующий:

Select Case  Выражение

Case    Значение_1

                Оператор, выполняемый при совпадении Значения_1 и значения Выражения.

Case    Значение_2

   Оператор, выполняемый при совпадении Значения-2 и значения Выражения.

         .      .        .

Case    Значение_N

    Оператор, выполняемый при совпадении Значения_N и значения Выражения.

End Select

В операторе Select Case можно использовать операции отношения. Для этого надо включить в выражение ключевое слово Is или ключевое слово To. Ключевое слово Is дает указание компилятору сравнить значение проверяемой переменной со значением выражения, следующего за ключевым словом Is. Ключевое слово To задает диапазон значений. Например, следующий код фрагмента программы, использующий оператор Select Case позволяет выставить оценку исходя из общего количества набранных баллов:

Select Case ПравильныйОтвет.Text

Case 8 To 10 ‘ Если сумма баллов в диапазоне 8-10

Балл.Text = "Отлично"

Case 6 To 7 ‘ Если сумма баллов в диапазоне 6-7

Балл.Text = "Хорошо"

Case 4 To 5 ‘ Если сумма баллов в диапазоне 4-5

Балл.Text = "Удовлетворительно"

Case Is < 4       ‘ Если сумма баллов меньше 4

Балл.Text = "Неудовлетворительно"

 End Select

 

Упражнение 8.         

Разработка функции пользователя с проверкой корректности исходных данных

Требуется доработать функцию пользователя, разработанную в упражнении 7,  таким образом, чтобы она проверяла корректность исходных данных. Данные корректны, если они являются числовыми. Для этой цели используем оператор IFTHEN.

1.       Откройте окно редактирования кода для модуля, содержащего функцию НакСумма.

2.       Дополните ее операторами проверки условий корректности. Поместите операторы для вывода сообщений оператору, если данные некорректны. После доработки функции ее код будет следующий:

'Вычисление накопленного значения исходной суммы по формуле

' S=P(1+iT),

' S- накопленное значение

' P - величина ссуды

' i - номинальная процентная ставка

' T - срок в месяцах

' Проверка корректности данных

If (IsNumeric(ИсходнаяСумма) And IsNumeric(Ставка) And _

        IsNumeric(Срок)) = False Then

MsgBox "Ошибка в исходных данных", vbInformation, _

"Вычисление накопленной суммы"

НакСумма = 0

Exit Function

Else

НакСумма = ИсходнаяСумма * (1 + Ставка * Срок / 12)

End If

Здесь применена встроенная функция IsNumeric, которая возвращает значение True, если ее аргумент является числом, и False? Если аргумент не число.

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

Предыдущая    Следующая   В содержание темы
Hosted by uCoz