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, таким образом, чтобы она проверяла корректность исходных данных. Данные корректны, если они являются числовыми. Для этой цели используем оператор IF – THEN.
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.
Предыдущая Следующая В содержание темы