Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Понятие процедур.docx
Скачиваний:
4
Добавлен:
24.12.2018
Размер:
116.28 Кб
Скачать

Операторы условного перехода:

If…Then, If…ElseIf, Select Case

Оператор условного перехода If…Then

Ключевое слово Then располагается в одной строке с If и выражением условие. Обязательно печатайте End If, иначе VB не поймет, какой оператор должен быть последним в блоке.

Если нужно, чтобы на основании одного условия программа выбирала между двумя альтернативными блоками кода, тогда используйте оператор If…Then…Else (ещё):

If условие Then

(операторы, выполняющиеся, когда условие принимает значение True)

Else

(операторы, выполняющиеся, когда условие принимает значение False)

End If

Пример использования условного перехода If…Then

Private Sub Command1_ Click ()

Image1.Visible = False 'скрыть рисунок J0150861..wmf (свечи),

'который выбирается по пути:C:\Program Files\MS Office\Clipart\ 'PUB60COR\J0150861.wmf

Label1.Caption = Int(Rnd * 10) 'Показать только целую часть числа

Label2.Caption = Int(Rnd * 10)

Label3.Caption = Int(Rnd * 10)

If (Label1.Caption = 7) Or (Label2.Caption = 7) Or (Label3.Caption = 7) Then

Image1.Visible = True

'Если любое число равно 7, то показать картинку и дать сигнал

Beep

End If

End Sub

Оператор условного перехода If…ElseIf

Если нужно проверить, кроме основного, ещё и дополнительные условия, используется ключевое слово ElseIf.

Например, необходимо выполнять определенные операторы только в том случае, когда первое условие не принимает значение True. При этом слово ElseIf в структуре может повторяться любое число раз. Ключевое слово Else необязательно, но если оно присутствует, то должно быть в структуре последним.

Пример:

If objFilm.ExpDate < Date Then

MsgBox "Эта пленка никуда не годится"

ElseIf objFilm.Type = "Слайдовая" Then

Слайдовая = Слайдовая + 1

ElseIf objFilm.Color Then

ЦветнаяНегативная = ЦветнаяНегативная + 1

Else

ЧернобелаяНегативная = ЧернобелаяНегативная + 1

End If

Первый оператор проверяет срок годности пленки, и если он превышен, то выдается сообщение.

Если пленка годная, т. е. первое условие False, то выполняется второй оператор, который проверяет свойство – тип пленки, слайдовая или нет.

Если слайдовая (True), то выполняется следующий оператор: в количество пленок такого типа добавляется единица.

Если же условие не выполняется (False), то выполняется следующая операция – проверка цвета пленки (цветная или нет).

Если цветная (True), то в счетчик цветных негативных добавляется единица.

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

Оператор Select Case

Оператор If…ElseIf хорошо подходит для принятия решений на основе последовательной проверки уменьшающегося количества значений по различным условиям. Если же приходится проверять одно и то же значение в сравнении с различными условиями, то наиболее эффективным, простым в записи и удобочитаемым является оператор Select Case (Case – ящик). Его синтаксис:

Select Case значение

Case критерий1

(операторы, выполняемые, когда значение удовлетворяет критерию 1)

Case критерий2

(операторы, выполняемые, когда значение удовлетворяет критерию 2)

' дополнительные операторы Case

Case Else

(операторы, выполняемые, когда значение не удовлетворяет ни одному из приведенных критериев)

End Select

Если значение свойства не будет удовлетворять ни одному из критериев в операторах Case, то управление перейдет к оператору Case Else, который всегда находится в самом конце структуры Select Case.

Пример оператора условного перехода Select Case:

Select Case objFilm.Type

Case "Слайдовая"

Слайдовая = Слайдовая +1

Case "Цветная негативная"

ЦветнаяНегативная = ЦветнаяНегативная + 1

Case "ЧБ негативная"

ЧБНегативная = ЧБНегативная + 1

Case Else

MsgBox "Неизвестный тип пленки"

End Select

Числовой пример условного перехода с оператором Select Case

  1. Составляется таблица:

Объем продаж, тыс. руб.

Комиссионные, %

  1. 0 - 9999

8

  1. 10000 – 39999

10

  1. 40000 и более

14

  1. Задачу начисления премии решается просто с помощью оператора Select Case:

Option Explicit

Function Премия(Продажа As Single) As Single

Select Case Продажа

Case 0 To 9999

Премия = 0.08 * Продажа

Case 10000 To 39999

Премия = 0.1 * Продажа

Case Is > 40000

Премия = 0.14 * Продажа

End Select

End Function

Sub Main()

Dim Сумма As Single

Сумма = Премия(30000) 'присвоение путем вызова возвращенного значения процедуры Function

MsgBox (CStr(Сумма))

End Sub