Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

IF-Then_Select_Case

.pdf
Скачиваний:
5
Добавлен:
13.02.2015
Размер:
404.6 Кб
Скачать

Теоретические сведения

Условный оператор. Оператор If ... Then

В VBA есть два типа операторов If ... Then — линейный и блочный.

Линейный оператор If ... Then используется для того, чтобы выполнить какой-либо один оператор, если некоторое условие будет истинным. Условие является выражением или функцией, истинность которого оценивается.

Синтаксическая конструкция линейного оператора: If <условие> Then <Оператор_1> Else <Оператор_2>

При значении условия True сначала выполняется Оператор_1, следующее за ключевым словом Then, а затем следующий в последовательности оператор. Если условие принимает значение False, то выражение (следующее за словом Then) не выполняется, а выполняется оператор следующий за Else выражение Оператор_2.

В условном операторе If может отсутствовать Else, тогда оператор называется безальтернативным. Если условие принимает значение True, то выполняется Оператор_1, а затем следующий в последовательности оператор. Если условие принимает значение False, а выполняется следующий оператор.

Альтернативный блочный оператор If применяется в тех случаях, когда при выполнении условия необходимо выполнить один набор программных операторов, а при невыполнении — другой. Это реализуется с помощью оператора If ... Then ... Else, синтаксис которого следующий:

If Условие Then

<<Блок программных операторов, выполняемых при значении условия True>>

Else

<<Блок программных операторов, выполняемых при значении условия False>>

End If

Операторы If могут быть вложенными друг в друга. Такое вложение операторов применяется, если нужно проверить какое-либо условие при другом условии, которое является истинным (например, если фамилия Иванов и он тортовый агент) Формат вложенного оператора If следующий

If условие_1 Then If условие_2 Then

Блок операторов 1

Else

Блок операторов 2

End If

End If

При использовании вложенных операторов If важно не перепутать варианты сочетания условий. Нужно помнить правило: альтернатива Else считается принадлежащей ближайшему оператору If , не имеющему ветви Else .

Оператор безусловного перехода по метке Goto

Операторы передачи управления применяются в программе для реализации безусловных алгоритмических конструкций. Они выполняют переход с одного участка программы на любой другой без какого-либо условия. Оператор перехода имеет следующий вид.

Goto Метка

где GоТо — зарезервированное слово VBA; Метка— одна из меток программы (идентификатор).

Метка — это идентификатор, помещаемый слева от программного оператора и отделенный от него двоеточием.

Следует сказать о том, что для получения хорошего стиля программирования следуем избегать применения оператора GоТо, так как в этом случае ухудшается читаемость и понимание программы.

Задача 6 (алгоритм ветвления). Найти наибольшее из трех чисел a,b и c. Составить

программу.

Решение.

Этап 1. Математическая часть.

Дано: три числа a, b, c.

Найти: наибольшее из трех чисел.

3

Данная задача может быть решена тремя методами.

I метод (Метод двойного сравнивания)

Алгоритм на естественном языке:

1.Ввести a, b, c

2.Если a > b And a > c,

то Вывести a – max, шаг 3, иначе

Если b > c,

то Вывести b – max, шаг 3, иначе Вывести с – max, шаг 3,

3.Конец

Составим блок-схему (рис.13)

 

Начало

 

 

 

1

 

 

 

Ввести a, b, c

 

 

 

2

 

 

Да

a > b And a > c

Нет

 

 

 

 

 

 

Вывести

 

Да

b > c

Нет

 

 

 

 

 

 

 

 

а - max

 

 

 

 

 

 

 

Вывести

 

Вывести

 

 

 

 

 

b - max

 

c - max

 

 

 

 

 

 

 

3

Конец

Рис. 13. Метод двойного сравнивания

III метод (Метод последовательного сравнивания)

Алгоритм на естественном языке:

1.Ввести a, b, c

2.Если a > b то

Если a > c,

то Вывести a – max, шаг 4

4

3. Если b > c,

то Вывести b – max, шаг 4 иначе Вывести с – max, шаг 4

4. Конец

Составим блок-схему (рис.14)

Начало

III мето (Метод

 

1

д

 

Ввести a, b, c

 

 

2

 

Да

a > b

Нет

 

 

b > c

Нет

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Да

 

 

 

Да

b > c

Нет

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Вывести

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a - max

Вывести

 

Вывести

 

 

 

 

 

b - max

 

c - max

 

 

 

 

 

 

 

 

 

 

 

 

4

Конец

Рис. 14. Метод последовательно сравнивания

промежуточного сравнивания)

Алгоритм на естественном языке:

1.Ввести a, b, c

2.max = a

3.Если max < b, то max = b

4.Если max < c, то max = c

то Вывести a – max, шаг 4 5. Вывести max

5

Составим блоксхему (рис.15)

Начало

1

Ввести a, b, c

2

max = a

 

 

3

 

 

Да

 

 

 

Нет

 

max < b

 

 

 

 

 

max=b

 

4

 

 

Да

max>c

Нет

 

 

 

max = c

5

Вывести b - max

Конец

Рис. 15. Метод промежуточного сравнивания

Этап 2. Ввод данных в таблицу Excel.

В ячейку А1 вводится значение числа a, в ячейку B1 вводится значение числа b, в ячейку C1 вводится значение числа c.

Этап 3. Определение переменных.

Вводятся: a, b, c. Выводятся (результат): max.

Этап 4. Написание процедуры для метода двойного сравнивания.

На рабочем листе Лист1 при помощи Элементов управления создать элемент

Кнопка (СommandBatton1).

6

Навести курсор мыши на Кнопку в режиме конструктора (на панели Элементы

управления нажата первая кнопка (линейка с треугольником)). Вызвать контекстное меню

ПКМ Выбрать пункт Свойства закладку Alpabetic, в списке свойств выбрать Caption, справа в поле ввода удалить старое название и ввести новое название кнопки Максимальное число.

Навести курсор на Кнопку в режиме конструктора. Вызвать контекстное меню ПКМ. Выбрать пункт Исходный текст. Автоматически попадаем в режим редактора VBA и появляется заголовок Процедуры-События:

Набирать процедуру на месте курсора:

Private Sub CommandButton1_Click() Dim a, b, c As Single

Dim max As Single ’Ввод данных

a = Range("A1").Value

b = Range("B1").Value

c = Range("C1").Value ’Вычисление

If a > b And a > c Then max = a

Else

If b > c Then max = b

Else max = c

End

If

Рис.16

End

If

 

’Вывод результатов в ячейку B4

Range("B4").Value = "Максимальное число = " & max End Sub

Процедура для Метода последовательного сравнивания.

Private Sub CommandButton2_Click() Dim a, b, c As Single

Dim max As Single Dim max1 As String ’Ввод данных

a = Range("A1").Value

b = Range("B1").Value

c = Range("C1").Value ’Вычисление

If a > b Then

If a > c Then max = a

max1 = "a" GoTo 1

7

End If

End If

If b > c Then max = b

max1 = "b" GoTo 1 Else

max = c max1 = "c" End If

’Вывод результатов в ячейку B5

1: Range("B5").Value = " Максимальное число " & max1 & " = " & max End Sub

Процедура для Метода промежуточного сравнивания.

Private Sub CommandButton3_Click() Dim a, b, c As Single

Dim max As Single ’Ввод данных

a = Range("A1").Value

b = Range("B1").Value

c = Range("C1").Value ’Вычисление

max = a

If max < b Then max = b If max < c Then max = c

’Вывод результатов в ячейку B4

Range("B4").Value = " Максимальное число = " & max End Sub

Этап 5. Выполнение.

Перейти на рабочий лист (ViewMicrosoft Excel или Alt+F11). Выйти из режима Конструктора, левой клавишей мыши (ЛКМ) нажать Кнопку. В ячейке В4 появится результат «Максимальное число = 10». (рис.16)

Этап 6. Переименование листа. Навести курсор на закладку Лист1, правой клавишей мыши (ПКМ) вызвать контекстное меню, выбрать пункт Переименовать, удалить старое название листа и с клавиатуры набрать новое

Максимальное_чсило, нажать Enter.

Задачи для самостоятельной работы:

Задача 7. Определить если x [a,b], то вычислить y=[x]. Вывести соответствующее сообщение.

8

 

 

 

ì

 

 

 

 

 

x <

- π

 

 

 

 

 

x -

 

6

,

 

 

 

 

 

 

 

 

 

 

ï

 

 

 

 

 

3x,

 

- π < x £ 0

 

 

 

 

 

 

 

 

 

 

 

Задача 8.

Найти значение функции y в точке x.

ï sin 2x -

 

.

y = í

0.5x

 

 

 

 

 

 

 

 

 

ï e

 

 

,

0 <

x

< 2π

 

 

 

 

ï

 

 

 

 

x ³

2π

 

 

 

 

 

î ln3x,

 

 

 

Задача 9. Числа a, b, c тогда только тогда являются сторонами треугольника , когда существуют такие положительные числа x, y, z, что

ì a =

x +

y

ï

y +

z

í b =

ï

x +

z

î c =

Лабораторная работа № ПР3 «Работа с оператором выбора Selet…Case»

Цель работы: научиться работать с оператором выбора Selet…Case.

Теоретические сведения

Оператор Select…Case позволяет сделать выбор из нескольких альтернативных вариантов в зависимости от значения условного выражения.

Синтаксис его следующий:

Select Case Выражение

Case Значение_1

Оператор, выполняемый при совпадении Значения_1 и

Значения Выражения. Case Значение_2

Оператор, выполняемый при совпадении Значения_2 и Значения Выражения.

. . .

Case Значение_N

Оператор, выполняемый при совпадении Значения_N и

Значения Выражения.

End Select

В операторе Select…Case можно использовать операции отношения. Для этого надо включить в выражение ключевое слово Is или ключевое слово To. Ключевое слово Is дает указание компилятору сравнить значение проверяемой переменной со значением выражения, следующею за ключевым словом Is.

Ключевое слово To задает диапазон значений.

Задача 10 (работа с оператором выбора Selet…Case). Написать

программу, которая запрашивает пользователя номер дня недели и выводит соответствующее сообщение: 1 -> «Начало рабочей недели!», 2-4 -> «Середина рабочей недели!», 5 -> «Окончание рабочей недели!», 6-7 -> «Выходной!». В случае, если пользователь укажет недопустимое число, программа должна вывести сообщение «Ошибка ввода данных». Ниже представлен рекомендуемый вид экрана во время работы программы:

9

Введите номер месяца (число от 1 до 7) -> 2 -> Середина рабочей недели!

Решение.

Этап 1. Математическая часть.

Алгоритмически эта задача решается следующим образом. Блок-схема рис.17.

Эту блок-схему можно реализовать в VBA следующим способом:

Private Sub CommandButton3_Click() ‘Декларация переменных

Dim Nd As Integer

Dim Dn As String 'Ввод данных

Nd = InputBox("Введите номер дня недели: ", "Ввод данных") ‘Проверка корректности ввода даных

If Nd <= 0 Or Nd > 7 Then

MsgBox "Ошибка ввода данных", vbOKOnly+vbCritical, "Не корректный ввод даных!"

GoTo 1

End If 'Вычисления If Nd = 1 Then

Dn = "Начало рабочей недели!" Else

If Nd <= 4 Then

Dn = "Середина рабочей недели!" Else

If Nd = 5 Then

Dn = "Окончание рабочей недели!" Else

Dn = "Выходной!" End If

End If

End If

'Вывод результата

MsgBox Dn, vbOKOnly + vbInformation, "Результат" 1: End Sub

10

Начало

Введите номер дня недели Nd

Нет

Да

 

Nd <1 or Nd >7

 

Не корректный

 

 

 

ввод!

 

 

 

 

Да

Nd = 1

Нет

Да

Nd = 2 to 4

Нет

Да

Nd = 5

Нет

Да

Nd <= 7

Dn = “Начало рабочей недели!

Dn = “Середина рабочей недели!

Dn = “Окончание рабочей недели!

Dn = “Выходной!

Вывести

Dn

Конец

Рис.17

Как видите, здесь встречаются вложенные операторы If…Then это может затруднить составление, набор, отладку и чтение программы. Для таких случаев в VBA существует оператор Select…Case.

(!) Самостоятельно напишите алгоритм на естественном языке.

11

Этап 2. Ввод данных в таблицу Excel.

Ввод данных производится при помощи диалогового окна MgxBox (Приложение 2, п.7.2)

Этап 3. Определение переменных.

Вводятся: Nd (тип Integer) – номер дня недели;

Выводятся (результат): Dn (тип String) – сообщение результат.

Этап 4. Написание процедуры.

На рабочем листе Лист1 при помощи Элементов управления создать элемент

Кнопка (СommandBatton1).

Private Sub CommandButton1_Click() ‘Декларация переменных

Dim Nd As Integer

Dim Dn As String 'Ввод данных

Nd = InputBox("Введите номер дня недели: ", "Ввод данных")

‘Проверка корректности ввода даных If Nd <= 0 Or Nd > 7 Then

MsgBox "Ошибка ввода данных", vbOKOnly+vbCritical, "Не корректный ввод даных!"

GoTo 1

End If 'Вычисления Select Case Nd Case 1

Dn = "Начало рабочей недели!" Case 2 To 4

Dn = "Середина рабочей недели!" Case 5

Dn = "Окончание рабочей недели!" Case Is <= 7

Dn = "Выходной!" End Select

'Вывод результата

MsgBox Dn, vbOKOnly + vbInformation, "Результат" 1: End Sub

Этап 5. Выполнение.

Перейти на рабочий лист (ViewMicrosoft Excel или Alt+F11). Выйти из режима Конструктора, левой клавишей мыши (ЛКМ) нажать Кнопку. Ввод данных показан на рис.18. Вывод данных на рис.19.

12

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]