- •Министерство образования и науки
- •1.Этапы подготовки и решения задач на эвм
- •Рассмотрим эти этапы.
- •Основные этапы процесса подготовки и решения задач на эвм
- •2 . Алгоритмизация вычислительных процессов
- •2.1 Графический метод описания алгоритмов
- •Правила применения символов
- •2.2 Виды вычислительных процессов Основные структуры алгоритмов
- •2.2.1. Вычислительный процесс линейной структуры
- •2.2.2. Вычислительный процесс разветвляющейся структуры
- •Разветвление.
- •Множественный выбор
- •2.2.3.Вычислительный процесс циклической структуры.
- •Циклы с известным числом повторений
- •Циклы с неизвестным числом повторений
Разветвление.
Рис. 5
Применяется, когда в зависимости от условия выполняется одно или другое действие.
Причем действие 1 или действие 2 может содержать несколько этапов.
Обход.
Частный случаи разветвления, когда одна ветвь не содержит вообще никаких действий.
Рис. 6
Множественный выбор
А=1 А=2 А=3 ...А=N
…
Рис. 7
Обобщенный случай разветвления, когда, в зависимости от значений переменной А, выполняется одно из некоторых действий.
Пример 2.
-
Вычислить Y =
asin x, если х >2
в cos x если x 2
Пример программы:
inputa,b,x
if x2 then
y=a*sin(x)
else
y=b*cos(x)
end if
print y
end.
Рис. 8
Если при вводе переменной xбудет присвоено значение, большее двух, то будут выполнены блоки 1, 2, 4, 5. В противном случае выполнятся блоки 1, 2, 3, 5.
Пример 3.
-
Вычислить Y =
1, еслиx > 0
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 x0 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=sqr(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
Пример программы, написанной на языке Q BASIC:
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 ab then
a=a2; b=b2
end if
print a,b
end.
Блок-схема задачи приведена на рис. 14
В данном примере использована структура «обход». По линии «нет» никаких действий не производится.
Пример7.
-
Вычислить Y =
+ 1/(x – 1) , если 3Х5
6.5х + 9, если 5X7 или X<3
2 Sin х, если x>7
Рис.15
Пример программы:
inputx
ifx3then
y=6.5+9*x
elseif x5 then
y=sqr(x-1)+1/(x-1)
elseif x7 then
y=6.5+9*x
else
y=2*sin(x)
end if
printy
end
В данном примере в блоках 6 и 8 “Y” вычисляется по одной и той же формуле. С позиций структурного программирования такая структура более просто реализуется на алгоритмическом языке, чем структура, в которой используется один вычислительный блок при вычислении разных условий /x< 3 5 < x7 \. Такой стиль построения алгоритма сохраняет простоту структуры алгоритма, позволяет легко реализовать соответствующую программу, сделать программу легко читаемой.