Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб_3_ИнструкцииПерехода.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
125 Кб
Скачать

Упражнение 4

  1. Изучите оператор варианта Select Case.

  2. Скопируйте код процедуры CaseSelect в модуль, выполните процедуру при различных значениях ячейки A6 и проанализируйте результаты её выполнения.

Упражнение 5

  1. Создать процедуру определения количества проданных товаров в зависимости от цены товаров в соответствии с приведённой ниже таблицей.

    Цена

    Количество проданных товаров

    <=10

    100

    <=15

    80

    <=20

    60

    >20

    50

  2. В созданной процедуре использовать инструкцию If…Then…Else, содержащую ключевое слово ElseIf; использовать функцию InputBox для ввода значений переменной Цена.

  3. Составьте и выполните процедуру в соответствии с заданием, используя инструкцию Select Case с наличием ветви Case  Else.

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

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

GoTo метка

Обязательный аргумент метка может быть текстовым или числовым. Метка заканчивается символом двоеточие(:).

В приведённой ниже процедуре БезУслПереход на экран выводится число 10, если значение r = 1 и строка m20, в противном случае.

Sub БезУслПереход()

Dim r

r = InputBox("Иллюстрация инструкции безусловного перехода")

If r = 1 Then GoTo 10 Else GoTo m20

10:

MsgBox 10

Exit Sub

m20:

MsgBox "m20"

End Sub

Использование GoTo удобно в очень редких случаях, например, когда нам нужно добиваться от пользователя ввода правильного значения неизвестное число раз. Однако использование GoTo считается признаком плохого тона в программировании и категорически не рекомендуется, потому что код становится трудночитаемым. Кроме того использование GoTo противоречит принципам структурного программирования, в некоторых источниках даже даётся такое определение: «Структурное программирование – это программирование без GoTo». Оператор GoTo можно заменить операторами организации циклов, использованием операторов If или Select Case. Например, приведённая ниже процедура УслПереход, реализует тот же алгоритм, что и процедура БезУслПереход:

Sub УслПереход()

Dim r

r = InputBox("Иллюстрация инструкции условного перехода")

If r = 1 Then MsgBox 10 Else MsgBox "m20"

End Sub

Упражнение 6

Скопируйте процедуры БезУслПереход и УслПереход при различных значениях переменной r, выполните и проанализируйте результат.

  1. Операторы перехода к обработчику ошибок On Error

Оператор On Error делает доступным обработчик ошибок и определяет его положение внутри процедуры и используется также для запрета обработки ошибок. Оператор имеет три формата синтаксиса:

On Error GoTo строка

On Error Resume Next

On Error GoTo 0

On Error GoTo строка делает доступным обработчик ошибок, который начинается со строки, определённой меткой строка. При возникновении ошибки управление выполнением программы передаётся на строку кода с меткой строка. Таким образом, происходит активизация обработчика ошибок. Метка строка должна находиться в той же процедуре, что и инструкция On Error.

On Error Resume Next указывает на то, что при возникновении ошибки управление выполнением программы передаётся на оператор, следующий непосредственно за тем, в котором произошла ошибка. Это действие позволяет продолжить выполнение программы, несмотря на возникновение ошибки времени выполнения (run-time error).

On Error GoTo 0 отключает пользовательский обработчик ошибок в данной процедуре. Эта инструкция не указывает метку 0 в качестве начала обработчика ошибки, даже если в процедуре действительно имеется такая метка.

Пользовательские обработчики ошибок позволяют реагировать на ошибки во время работы пользователя, например, когда вместо числа пользователь вводит текстовое данное или вообще не вводит данное.

В процедуре ПримерOnErrorGoto, приведённой ниже, возникает ошибка ввода до тех пор, пока не будет введено численное значение переменной Num; управление передаётся на метку Ошибка, и оператор Resume возвращает управление оператору Num = InputBox("Введите число").

Sub ПримерOnErrorGoto()

Dim Num As Single

On Error GoTo Ошибка

Num = InputBox("Введите число")

MsgBox "Введено число " & Num

Exit Sub

Ошибка:

MsgBox "Число не введено "

Resume

End Sub

В процедуре ПримерOnErrorResumeNext при возникновении ошибки ввода управление передаётся инструкции If, т.е. инструкции, следующей за той, которая вызвала ошибку, на экран выводится сообщение "Число не введено".

Sub ПримерOnErrorResumeNext()

Dim Num As Single

On Error Resume Next

Num = InputBox("Введите число,не равное 0")

If Num <> 0 Then

MsgBox "Введено число " & Num

Else

MsgBox "Число не введено"

End If

On Error GoTo 0

End Sub

В процедуре ПримерOnErrorGoto_0 оператор On Error GoTo 0 отключает пользовательский обработчик ошибок в данной процедуре и может быть использован для восстановления нормальной обработки ошибок перед выходом из процедуры. При возникновении ошибки ввода выводится следующее диалоговое окно, сообщающее о несоответствии типа данного введённому значению (“Пусто” или “Не число”).

Sub ПримерOnErrorGoto_0()

Dim Num As Single

On Error GoTo 0

Num = InputBox("Введите число")

MsgBox "Введено число " & Num

End Sub