ЛАБОРАТОРНАЯ РАБОТА №2
ПРОГРАММИРОВАНИЕ ЗАДАЧ С РАЗВЕТВЛЯЮЩИМСЯ АЛГОРИТМОМ
Цель работы:
1. Изучение операторов условного перехода.
2. Получение навыков решения задач с разветвляющимся алгоритмом.
ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ
1. Изучить методические указания к лабораторной работе.
2. Подготовить задачу для решения на ПК (постановка задачи, алгоритм, код программы).
3. Запустить Microsoft Excel и подготовить макет таблицы для вывода исходных данных и результата.
4. Запустить редактор VBA.
5. Создать модуль и процедуру для решения поставленной задачи.
6. Запустить процедуру.
7. Распечатать полученные результаты и код программы.
ЛОГИЧЕСКИЕ КОНСТРУКЦИИ
Данная лабораторная работа посвящена изучению способов решения задач с разветвляющейся структурой. Разветвляющаяся структура обычно содержит блок проверки некоторого логического условия, например, X>0; X<A; X≠ 0 и т.п. По результатам проверки выполняется та или иная последовательность действий, называемая ветвью. В дальнейшем под ветвью будем подразумевать один оператор или группу операторов. Разветвляющийся вычислительный процесс, включающий две ветви, называется простым; более двух ветвей – сложным.
Разветвляющийся вычислительный процесс основывается на трех базовых структурах:
1. Развилка;
2. Обход;
3. Многозначное ветвление.
Кроме того, в связи с добавлением «специфического» оператора условных переходов, необходимо отдельно рассматривать еще одну структуру – разветвленную структуру со сложным вычислительным процессом (структуру с вложенными условными операторами).
Для реализации данных структур используются условные операторы If … Then … Else, If … Then, Select Case и Оператор Elseif … Then … Else.
Развилка
Развилка применяется, когда в зависимости от условия необходимо выполнить одну из ветвей: ветвь, если условие истинно (выполняется) или ветвь, если условие ложно (не выполняется). Общий вид структуры развилки представлен на рис. 5.
Рис. 5. Развилка
Для реализации развилки служит оператор If … Then … Else, при этом используется две формы синтаксиса: строчная и блочная.
Строчная форма синтаксиса может быть использована лишь в случае, когда каждая из ветвей максимум состоит из одного оператора. Строчная форма синтаксиса условного оператора имеет вид:
If условие Then ветвь 1 Else ветвь 2.
Блочная форма синтаксиса имеет следующий вид:
If условие Then
ветвь 1
Else
ветвь 2
End if.
Если условие имеет значение истинно, VBA выполняет первый блок операторов (ветвь 1) и, пропустив, все остальные операторы структуры, переходит к строке программного кода, следующей сразу же за ключевым словом End If. А если условие имеет значение ложно, то выполняются операторы (ветвь 2), следующие за ключевым словом Else.
Обход
Обход – частный случай развилки, когда одна ветвь не содержит операторов. В таблице 6 представлены виды обходов и их программная реализация условным оператором, в строчной и блочной форме синтаксиса.
Таблица 6
Виды обходов и их программная реализация
№ п\п | Вид обхода | Форма синтаксиса | Программная реализация |
![]() | Строчная | If условие Then оператор 1 | |
Блочная | If условие Then оператор 1 . . . оператор N End if | ||
![]() | Строчная | If условие Then Else оператор 1 | |
Блочная | If условие Then Else оператор 1 . . . оператор N End if |
Для организации обходов настоятельно рекомендуется использовать первый вид обходов, это сокращает программный код и увеличивает читабельность используемого оператора. Для этого достаточно грамотно указать условие.
Как видно, из таблицы данный вид обхода реализуется оператором If … Then. При этом оператор If … Then выполняет некоторую группу операторов, если условие в рассматриваемом операторе истинно, и не выполняет ничего, если условие принимает значение ложно.
Многозначное ветвление
Многозначное ветвление (рис. 6) – структура, позволяющая, в зависимости от признака I, выполнить одну ветвь из множества предложенных.
Рис. 6. Многозначное ветвление
Оператор Select Case целесообразно использовать, когда приходится проверять одно и то же значение, сравнивая с различными выражениями (условиями).
Синтаксис этого оператора следующий:
Select Case значение
Case условие 1
ветвь1
Case условие 2
ветвь 2
.
.
.
Case условие N
ветвь N
[Case Else]
[ ветвь N+1 ]
End Select.
Параметры, взятые в квадратные скобки, являются необязательными и используются по требованию условия задачи. Параметр «значение » может быть любого числового и строкового типа и в качестве него можно использовать как определенную переменную, так и значение некоторого выражения.
Рассмотрим принцип работы оператора Select Case. В случае если в качестве параметра «значение » указано выражение, сначала оно вычисляется, а затем полученный результат последовательно сравнивается с каждым из условий в операторе Case, начиная с первого условия. Если «значение » удовлетворяет условию, тогда будут выполняться операторы, соответствующей ветви, после чего выполнение программы продолжится, начиная с оператора, следующего за оператором End Select. Если «значение » не удовлетворяет ни одному из условий, начиная с «условие 1 » и заканчивая «условие N », будут выполнены операторы, следующие за ключевым словом Case Else.
В операторе Case, в качестве условия, можно использовать как, проверку с одной переменной, так и проверку на вхождение в определенный ряд. В первом случае необходимо использовать синтаксис:
Case Is « знак проверки» выражение.
Например: Case Is =5 (Case 5), Case Is <15, Case Is >=a+b и т.п..
Во втором случае:
Case начальное значение ряда To конечное значение ряда.
Например: Case 1 To 35 (числовой ряд), Case “ A” To “ F” (символьный ряд).
Кроме того, в одном операторе Case может быть указано несколько условий, которые в этом случае разделяются запятыми.
Например: Case 1 To 10, 15, Is >30.