Лабораторная работа 3
ПРОГРАММИРОВАНИЕ РАЗВЕТВЛЯЮЩИХСЯ ВЫЧИСЛИТЕЛЬНЫХ ПРОЦЕССОВ
Цель работы: изучение особенностей разработки алгоритмов с разветвляющейся структурой и их реализации с помощью операторов условного перехода.
1. Краткие теоретические сведения
Для записи разветвляющихся алгоритмов используется оператор If, он имеет две формы записи:
однострочную:
If условие Then [оператор1] [Else оператор2];
многострочную:
If условие-1 Then
[ оператор1]
[ElseIf условие-2 Then
[оператор2] ...
[Else
[оператор3]]
End If
В условии записывается логическое выражение, в котором используются операции сравнения. Для создания сложных условий применяются логические операции and (и) и or (или).
Пример. Вычислить значение функции при любых значениях a и b. На первый взгляд решение этой задачи можно описать алгоритмом линейной структуры, однако при условии ab = 0 задача не может быть решена, так как деление на ноль невозможно. Для корректного решения задачи необходимо предусмотреть вывод сообщения, если вычисление y невозможно. В этом случае вычислительный процесс можно описать следующим образом: вычислить y, если ab ≠ 0, или вывести сообщение, если ab = 0.
В ГСА решения этой задачи (рис. 3.1) используется блок проверки условия, имеющий один вход и два выхода по выполнению проверяемого условия – «Да» и «Нет» (в данном примере – это блок 2, в котором проверяется условие ab = 0). В зависимости от результата проверки условия возможны два пути продолжения решения задачи. Каждый из путей называется ветвью, а алгоритм – разветвляющимся.
Как и во всех разветвляющихся алгоритмах в данном примере нарушается ес-тественный порядок следования блоков. Так, за блоком 2 может выполняться блок 3, образуя ветвь 1, или блок 5, образуя ветвь 2; за блоком 4 всегда выполняется блок 6.
Любое изменение естественной (линейной) последовательности выполнения блоков называется переходом. Переходы бывают двух типов: условные и безусловные. Условный переход реализуются с помощью оператора условия (условного оператора).
Для рассматриваемого примера оператор условия для блочной структуры можно записать в виде:
Программный код
Sub V ( )
Dim a As Single, b As Single, y As Single
a=Val(InputBox("a ="))
b=Val(InputBox("b ="))
If a*b=0 Then
MsgBox ("ab=0")
Else y=1/ (a*b)
MsgBox ("y="& y)
End If
End Sub
Если условие выполняется, т. е. ab = 0, то в окне вывода на экран монитора оператором MsgBox выводится сообщение "ab=0", в противном случае, когда ab ≠ 0, вычисляется значение y по формуле y=1/(a*b), которое выводится в стандартном окне вывода.
Вариант программы с линейной формой записи оператора:
Программный код
Option Explicit
Sub V ( )
Dim a As Single, b As Single, y As Single
a=Val(InputBox("a="))
b=Val(InputBox("b="))
Достарыңызбен бөлісу: |