
- •9.Окно сообщений
- •Окно сообщений Функция MsgBox
- •Синтаксис функции MsgBox
- •Отображение пиктограммы
- •Отображение кнопок
- •Помещение кнопки в фокус
- •Определение модальности окна сообщения
- •Коды кнопок, возвращаемые функцией MsgBox
- •Размещение сообщения в нескольких строках
- •Пример использования функции MsgBox
- •Пример использования процедуры MsgBox
- •Окно ввода
- •Оператор перехода goto и метки
Оператор перехода goto и метки
Метка представляет собой идентификатор с расположенным за ним символом двоеточия (:). Метками помечают какой-либо оператор, на который в дальнейшем должен быть осуществлен безусловный переход.
Безусловная передача управления на метку производится при помощи оператора GoTo.
Оператор GoTo может осуществлять переход (адресоваться) к меткам, обязательно расположенным в одном с ним теле функции. Синтаксис оператора GoTo:
GoTo метка;
метка : оператор;
Данный оператор - очень мощное и небезопасное средство управления поведением программы. Использовать его нужно крайне осторожно, так как, например, "прыжок" внутрь цикла (обход кодов инициализации) может привести к трудно локализуемым ошибкам. С помощью операторов If и GoTo можно реализовать любой алгоритм, но читать и проводить отладку кода перенасыщенного операторами перехода и метками чрезвычайно трудно. Поэтому в настоящее время использование оператора перехода считается плохим стилем программирования.
Рассмотрим пример применения оператора GoTo, в котором окно ввода выводится на экран до тех пор, пока пользователь не введёт число.
Private Sub txtN_Validate (Cancel As Boolean)
Dim sMessage As String ‘ текст сообщения
Dim sTitle As String ‘ заголовок окна
sMessage = "Введите числовое значение переменной Х”
sTitle = ”Ошибка” ‘ определение значения заголовка окна ввода
Begin: ‘ метка
If Not IsNumeric ( txtN ) Then ‘ если текстовое поле txtN содержит нечисловое значение
txtN = InputBox ( sTitle , sMessage , 5 )
‘ отображает окно ввода и возвращает строку, введённую пользователем
GoTo Begin ‘ переход на метку Begin
End If
End Sub
Как только выполнение программы достигнет оператора GoTo, управление будет передано оператору, следующему за меткой Begin.
Следует отметить, что эту задачу проще и элегантнее можно решить с помощью оператора цикла с предусловием, который будет рассмотрен в следующих лекциях.
Вообще говоря, использование структурного и объектно-ориентированного подходов к программированию позволяет полностью отказаться от применения операторов безусловного перехода. Однако на практике часто бывают случаи, когда GoTo значительно упрощает код программы.