Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика учебник.doc
Скачиваний:
89
Добавлен:
04.11.2018
Размер:
3.46 Mб
Скачать

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. Фрагмент кода макроса " РеакцияНаПрибыль "

11.3. Варианты реализации циклических алгоритмов

Задание 8. Написать программу расчета и вывода на экран в виде сообщения последовательности нечётных чисел от 1 до 27.

Решение. Для решения этой задачи более всего подходит цикл с заданным числом повторов (см. рис. 6.8):

For Сч= <начальное значение> to <конечное значение> step <шаг>

Next Сч

Применим его:

Sub НечетныеЧисла()

Dim НечЧисло As String 'переменная НечЧисло – строка символов

For k = 1 To 27 Step 2

НечЧисло = НечЧисло & k & " "

Next k

MsgBox "Вот эти нечётные числа:" & _

Chr(10) & НечЧисло

End Sub

В итоге на экран будет выведено сообщение вида:

Рис. 11.5. Результат работы программы " НечетныеЧисла "

Задание 9. Составить программу перевода сантиметров в дюймы (1 дюйм = 2, 51 см) как циклическую с дробным шагом для счетчика.

Решение. Для этой задачи тоже подходит цикл For, но только уже с дробным шагом 2,51 для каждого нового значения сантиметра.

Sub Дюймы_в_см()

Dim ЗначДюйм As Single

Dim Дюйм_см As String

Dim дюйм As Integer

дюйм = 0

For ЗначДюйм = 2.51 To 14 Step 2.51

дюйм = дюйм + 1

Дюйм_см = Дюйм_см & дюйм & " = " & ЗначДюйм & " см" _

& Chr(13)

Next ЗначДюйм

MsgBox "Таблица перевода дюймов в сантиметры:" & _

Chr(13) & ЗначДюйм

End Sub

Рис. 11.6. Текст (код) макроса пересчета сантиметров в дюймы

В итоге на экране – сообщение с таблицей перевода:

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