Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное-пособие-№1.doc
Скачиваний:
17
Добавлен:
09.04.2015
Размер:
969.22 Кб
Скачать

2.2.2. Вычислительный процесс разветвляющейся структуры

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

Разветвляющийся процесс имеет некоторые структурные разновидности:

  1. Разветвление.

Рис. 5

Применяется, когда в зависимости от условия выполняется одно или другое действие. Причем действие 1 или действие 2 может содержать несколько этапов.

  1. Обход.

Частный случаи разветвления, когда одна ветвь не содержит вообще никаких действий.

Рис. 6

  1. Множественный выбор

А=1 А=2 А=3 ...А=N

Рис. 7

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

Пример 2.

Вычислить Y =

asin x если х >2

в cos x если x 2

да

Рис. 8

Пример программы:

inputa,b,x

if x2 then

y=a*sin(x)

else

y=b*cos(x)

end if

print y

end.

Если при вводе переменной xбудет присвоено значение, большее двух, то будут выполнены блоки 1, 2, 4, 5. В противном случае выполнятся блоки 1, 2, 3, 5.

Пример 3.

Вычислить 1, если x > 0

Y = 0, еслиx = 0

-1, если x < 0

В данном примере заданы три различных условия. Если будет введено значение х > 0 , выполнятся блоки 1, 2, 6, 7 /рис. 9/. В противном случае (при невыполнении условиях > 0) еще нельзя определить, какое значение будет присвоено Y, т.к. необходимо разделить случаи:х > 0 и х = 0. Это делается в блоке 3. Только после проверки условия блока 3 становится ясно, какое значение будет присвоено переменной Y. Еслих = 0 , выполняется блок 5, иначе выполняется блок 4. В данном варианте алгоритма проверку условияx < 0 производить не следует, т.к. после блока 3 линия “нет”определяет это условие.

x < 0

x 0

Рис.9

Пример программы:

input x

if x0 then

y=1

elseif x=0 then

y=0

else

y=-1

end if

print y

end.

Пример 4.

Определить, принадлежит ли точка М/х,y/ заштрихованной области Д.

Y

М/х,y/

x

Рис.10

Математическая постановка.

Радиус круга определяется из формулы . В соответствии с этим задача сводится к проверке условия

.

Точка М/х,y/ принадлежит обл.Д, если.

Точка М/х,y/не принадлежит обл.Дв противном случае.

Блок-схема алгоритма решения задачи представлена на рис. 11

Рис.11

Пример программы:

inputx,y

r=sqrt(x2+y2)

if r and r then

print “т.М принадлежит обл D”

else

print“т.М не принадлежит облD”

endif

end.

Примечание. Как отмечалось выше, алгоритм обычно ориентируют на определенный язык программирования. В данном алгоритме проверка условия проведена в двух блоках / 3 и 4 /, т.к. ориентация в данном случае идет на Бейсик стандартный, в котором не реализуется проверка двойного условия.

В языке QBasic, например, это возможно и тогда вместо блоков 3 и 4 можно было бы в алгоритме использовать один блок проверки условия (рис 12). Такое действие реализовано в приведённом алгоритме.

Рис.12

Пример 5.

, если

Вычислить Y = 0.7 – tg X, если

Не определены в противном случае

В данном примере “У” вычисляется в интервале значений х = [3, 9], при значениях х<3 и x>9 значение “У” не вычисляется. В этом случае в алгоритме должна быть предусмотрена печать сообщения об этом. Это может быть такой текст “при данном значении х значение у не вычисляется “, либо просто может быть выведено на печать значение “х,” по величине которого пользователь программы поймет, что вычисления не производились (рис. 13). Для удобства написания программы на языке стандартного Бейсика удобно так оформлять блок – схемы, чтобы вход очередного логического блока был соединен с линией “нет” предыдущего логического блока. Исходя из этого, начнем проверку с условия “х<3”.

Рис. 13

Пример программы, написанной на языке QBASIC:

begin

input x

if x=3 and x=7 then

y=2*(sin(x)2)

elseif x=7 and x then

y=0.7-tan(x)

else

print “y не определён при x=”;x

goto M

end if

print y,x

m: end.

В приведенной программе блоки 2,3 и блоки 3,4 объединены в условие x>=3 и x<=7 и условиеx>=7x<=9.

Программа может быть составлена и без оператора gotoM.

Пример 6.

Даны два числа А и В. Если АВ, вычислить их квадраты и записать новые значения на место прежних. Вывести на печать значения А и В.

В=В2

да

Рис. 14

Программа на Qbasicимеет вид:

input a,b

if ab then

a=a2; b=b2

end if

print a,b

end.

Блок-схема задачи приведена на рис. 14

В данном примере использована структура «обход». По линии «нет» никаких действий не производится.

Пример 7.

+ 1/(x – 1) , если 3Х5

Вычислить У =

6.5х + 9, если 5X7 или X<3

2 Sin х , если x>7

Рис.15

Пример программы:

input x

if x3 then

y=6.5+9*x

elseif x5 then

y=sqr(x-1)+1/(x-1)

elseif x7 then

y=6.5+9*x

else

y=2*sin(x)

end if

printy

end

В данном примере в блоках 6 и 8 “Y” вычисляется по одной и той же формуле. С позиций структурного программирования такая структура более просто реализуется на алгоритмическом языке, чем структура, в которой используется один вычислительный блок при вычислении разных условий /x< 3 5 < x7 \. Такой стиль построения алгоритма сохраняет простоту структуры алгоритма, позволяет легко реализовать соответствующую программу, сделать программу легко читаемой.