logo
Информатика учебник

11.2. Варианты реализации разветвляющихся алгоритмов

С этого момента надо работать только в среде редактора VBA. Текст программ вводится в окно Code, после чего запускается на выполнение, если по ходу ввода программы компилятор VBA не выдавал сообщений о синтаксических ошибках. Впрочем, ошибки могут быть обнаружены и позже - на стадии выполнения.

Задание 5. Составить программу, определяющую принадлежность человека к определённой социальной группе по его возрасту.

Пусть Возраст – целочисленная переменная. Программа должна предлагать ввести возраст и по нему выдавать сообщения "Дошкольник", "Школьник", "Студент", "Специалист" или "Пенсионер".

Решение. Предлагается такой код программы:

Sub СоциальнаяГруппа()

Dim Возраст As Integer

Возраст = InputBox("Укажите, пожалуйста, ваш возраст:")

If Возраст < 7 Then

MsgBox "Ты ещё дошкольник."

ElseIf Возраст < 17 Then

MsgBox "Ты уже школьник!"

ElseIf Возраст < 23 Then

MsgBox "Вы - студент."

ElseIf Возраст < 55 Then

MsgBox "О, специалист со стажем!"

Else

MsgBox "Пенсионер, Вы заслужили отдых!"

End If

End Sub

Рис. 11.3. Фрагмент кода макроса "СоциальнаяГруппа"

Задание 6. Измените программу так, чтобы вводился не возраст, а год рождения. Возраст же должен каждый раз вычисляться от текущего года.

Задание 7. В VBA есть очень удобный оператор Select Case (выбор). Его общий вид (формат) таков:

Select Case <значение>

Case <условие1>

<группа операторов1>

Case < условие2>

< группа операторов2>

. . . . . . . . .

Case < условиеN>

< группа операторовN>

End Select

Принцип его работы прост. Сначала вычисляется значение, затем оно последовательно сравнивается с условиями. Как только значение удовлетворит очередное условие, тут же выполняется соответствующая группа операторов и программ выходит из оператора Select Case и выполняет уже те операторы, что идут вслед за End Select.

Применим этот оператор к решению задачи о выполнении плана предприятием.

Пусть плановая величина прибыли равна 100 миллионов. Как будет реагировать программа на разные значения прибыли?

Предлагается такой текст программы:

Sub РеакцияНаПрибыль()

Dim Прибыль As Single

Прибыль = InputBox ("Какова общая прибыль предприятия за месяц (млн.руб.)?")

Select Case Прибыль

Case Is = 100

MsgBox "Молодцы, но нельзя ли побольше?"

Case Is < 100

MsgBox "Негоже! В чём дело?"

Case Is > 100

MsgBox "Молодцы, здорово! Будем премировать!"

End Select

End Sub

Рис. 11.4. Фрагмент кода макроса " РеакцияНаПрибыль "