Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Наряду с оператором условного перехода, позволяющим организовать выполнение той или иной группы операторов в зависимости от результатов проверки условия, иногда применяется и оператор безусловного перехода. Оператор безусловногоперехода задает переход на строку внутри процедуры, помеченную меткой.
Синтаксис оператора:
GoTo <имя метки>, где <имя метки> – произвольное имя, отвечающее стандартным правилам именования.
Это же имя должно стоять в начале строки, на которую будет осуществляться переход; при этом имя метки от оператора отделяется двоеточием.
Заметим, что этот оператор в языке программирования VBA является избыточным, поскольку его работа моделируется другими средствами. Кроме того, часто использование этого оператора свидетельствует о “плохом” стиле программирования.
Мы будем использовать оператор безусловного перехода для организации ввода, отвечающего определенным требованиям. В записываемых при этом логических выражениях, помимо арифметических операций, операций отношения, логических операций часто используются функции проверки типов.
Таблица 1 - Функции проверки типов.
Имя функции | Выполняемая проверка |
IsArray (<переменная>) | Является ли <переменная> массивом |
IsData (<переменная>) | Является ли <переменная> датой |
IsEmpty (<переменная>) | Была ли <переменная> описана инструкцией Dim |
IsError (<переменная>) | Является ли <переменная> кодом ошибки |
IsNull (<переменная>) | Является ли <переменная> пустым значением |
IsNumeric (<переменная>) | Является ли <переменная> числовым значением |
IsObject (<переменная>) | Является ли <переменная> объектом |
Поскольку функция InputBox возвращает значение типа String, иногда более удобно анализировать результаты ввода, считая их строковыми величинами.
Некоторые функции обработки строк:
Len (<строка>)
Возвращает длину строки, т.е. количество символов в строке.
Например,
Len (“cat”) возвращает значение, равное 3;
Len (“3451787”) возвращает значение, равное 7;
Len (“Пример № 5”) возвращает значение, равное 10.
Mid (<строка>, <начальная позиция> [, <количество символов>])
Возвращает подстроку строки <строка>, начиная с символа, номер которого <начальная позиция>, длиной в указанное <количество символов>. Если последний аргумент <количество символов> не задан, то функция возвратит подстроку, включающую в себя символы с указанного аргументом <начальная позиция> до конца исходной строки.
Например, если
S = “весенний день”, то
Mid (S, 10, 4) возвращает значение, равное “день”;
Mid (S, 5, 3) возвращает значение, равное “нн”;
Mid (S, 3) возвращает значение, равное “сенний день”
Примеры:
1. Приведем пример программы, в которой оператор безусловного перехода используется в конструкции If – Them – Else. Требуется найти частное от деления числа a на число b, при этом, если водится b=0, должен быть предусмотрен повторный ввод.
Option Explicit
Sub Частное ()
Dim a As Integer, b As Integer
a = InputBox ("Введите делимое", "Ввод значений")
1: b = InputBox ("Введите делитетель", "Ввод значений")
If b = 0 Then
MsgBox "Делитель должен быть отличен от нуля," & Chr(13) & "повторите его ввод"
GoTo 1
End If
MsgBox "Частное от деления: " & a / b, vbExclamation, "Результат"
End Sub
2. Напишем программу, которая заставляла бы пользователя повторять ввод в случаях, когда вводимое значение пустое или не является числом. Если ввод прошел успешно, то введенное число должно выдаваться в окне сообщения.
Option Explicit
Sub Проверка ()
Dim x As Variant
Метка: x = InputBox("Введите любое число", "Ввод числа")
If IsNull(x) Then ‘проверка на пустое значение
GoTo Метка
ElseIf Not IsNumeric(x) Then ‘проверка на число
GoTo Метка
Else
MsgBox "Введенное число =" & x
End If
End Sub
В приведенной программе было использовано вложенное ветвление, последовательно осуществляющее проверку указанных условий. Эта же программа может быть написана по-другому – с использованием оператора ветвления, содержащего сложное логическое условие.
Option Explicit
Sub Проверка ()
Dim x As Variant
Метка: x = InputBox("Введите любое число", "Ввод числа")
If IsNull(x) Or Not IsNumeric(x) Then 'использование сложного логического условия
GoTo Метка
Else
MsgBox "Введенное число =" & x
End If
End Sub
Задания для лабораторной работы:
Каждый студент должен решить обе задачи.
1. С клавиатуры вводятся числа a, b, c, d. Подсчитать значение выражения (a+b)/(c+d). Если c+d=0, заставить пользователя повторить ввод.
2. Написать программу, проверяющую правильность ввода даты (формат ввода: дд.мм.гг):
- введено нужное количество символов;
- дд и мм являются числами;
- 1 £ дд £ 31;
- 1£ мм £12.
В случае неправильного ввода заставить пользователя повторить ввод. Если ввод прошел успешно, то введенная дата должно выдаваться в окне сообщения в виде списка:
День: дд;
Месяц: мм;
Год: гг.
Контрольные вопросы:
1. Что такое оператор безусловного перехода, и для чего он используется?
2. Как выглядит синтаксис оператора безусловного перехода?
3. Какие бывают функции проверки типов, и что они проверяют?
4. Какие есть функции обработки строк, и как выглядит их синтаксис?
5. В чем преимущества перед оператором условного перехода?
Дата публикования: 2015-11-01; Прочитано: 270 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!