В ы с ш е е п р о ф е с с и о н а л ь н о е о б р а з о в а н и е информатика и программироВание осноВы информатики



Pdf көрінісі
бет97/196
Дата09.01.2022
өлшемі4,7 Mb.
#23908
түріУчебник
1   ...   93   94   95   96   97   98   99   100   ...   196
Пример 9.14. Составим алгоритм табулирования сложной функ-
ции двух переменных:
z
a
x b
y
x
a b
y
a b
x
y
x
a b
y
=
+


+


sin
cos ,
( , )
( , );
sin
cos ,
( , )
если
и
если
и
(( , );
a b
1 в остальных случаях





для
x
= x
0
(
h
x
)
x
n
и

= y
0
(
h
y
)
y
n
.
Вычисление  значений  функции
z  для  всех  различных  пар  (x,  y) 
необходимо организовать следующим образом. Сначала при фикси-
рованном значении одного из аргументов, например при
x
= x
0
, вы-
числить  значения
z  для  всех  заданных  y:  y
0
,
y
0
+ h
y
,
  y
0
 
+ 2h
y
,  …,
y
n
.
Затем, изменив значение
x на x
0
+ h
x
, вновь перейти к полному циклу
изменения переменной
y. Данные действия повторить для всех x: x
0
,
x
0
+ h
x
,
 x
0
+ 2h
x
, …,
x
n
.
Для записи алгоритма необходима структура вложенных циклов,
например, с параметром: внешнего — с параметром
x и внутренне-
го — с параметром
y.


142
В данной задаче внешний и внутренний циклы можно поменять
местами,  при  этом  изменится  только  порядок  изменения  аргумен-
тов.
Общее количество значений
 z равно N
z
 
= N
x
N
y
, где
N
x
= [(x
n
- x
0
)/
h
x
]
+ 1, N
y
 
= [(y
n
- y
0
)/
h
y
]
+ 1.
Алгоритм табулирования функции, выполненный по технологии
нисходящего проектирования, представлен на рис. 9.25.
На первом этапе составлена укрупненная схема решения задачи с
выделением операции ввода исходных данных и структуры вложенных
циклов. На втором этапе раскрывается тело внутреннего цикла как
композиция структур ветвления.
Пример 9.15. Найти совершенное число в интервале [2, n]. Со-
вершенное число равно сумме всех своих делителей, включая едини-
цу. Например, 28 — совершенное число, так как 28
= 1 + 2 + 4 + 7 + 14.
В алгоритме для каждого целого
k из заданного интервала будем
определять сумму
S всех его делителей и сравнивать значения S и k.
Если они равны, то анализируемое
k есть искомое совершенное чис-
ло, надо его вывести и закончить поиск, в противном случае — пе-
рейти к следующему целому числу из заданного интервала.
Для реализации такого алгоритма необходима структура вложен-
ных циклов: внешнего, для просмотра заданного интервала, и вну-
треннего, для вычисления суммы (рис. 9.26,
а). Построенный алго-
ритм не является структурированным. Рассмотрим один из способов
приведения циклического алгоритма к структурному виду. Внешний
цикл имеет два условия окончания: исчерпание всех целых чисел из
заданного интервала и выполнение равенства
k
= S. В зависимости
от того, какое условие привело к окончанию цикла, необходимо пред-
Рис. 9.25. Алгоритм табулирования функции двух переменных


143
принять  различные  действия.  Объединим  оба  условия  окончания
цикла в одно:
k
> n или = S. Для принятия окончательного решения
после завершения цикла проверим, какое же условие привело к его
окончанию (рис. 9.26,
б ).
Можно структурировать алгоритм иначе: в цикле с параметром
k
ввести дополнительную переменную
Pr, установив до цикла Pr
= 0.
Как только совершенное число будет найдено, присвоить
Pr значение
этого числа. Окончательное решение в этом случае принимается уже
на основании анализа признака
Pr.
Структура  внутреннего  цикла  для  вычисления  суммы
S  раскры-
вается на втором этапе детализации алгоритма. Поскольку все числа
делятся на единицу, то сначала устанавливается
S
= 1. В цикле с па-
Рис. 9.26. Алгоритм поиска (
а, б) совершенного числа


144
раметром
i, изменяющимся от 2 до [k/2], суммируются все делители
числа
k. В интервале от [k/2]
+ 1 до k - 1 не может быть делителей
числа
k.


Достарыңызбен бөлісу:
1   ...   93   94   95   96   97   98   99   100   ...   196




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет