Глава 5. Технология программирования циклических процессов. арифметические циклы
Циклический– процесс многократного повторения некоторого участка вычислений при изменении хотя бы одной из входящих в него величин.
Математически циклический процесс выражается зависимостью
y i = f( x i ),
т.е. предписывает многократное вычисление функции yi в соответствии с изменением аргумента xi. С точки зрения цикла аргумент xi является входной, а функция yi выходной величинами (данными).
Сформулируем основные определения.
Цикл – повторяющийся участок вычисления.
Тело цикла – совокупность действий, осуществляемых в цикле.
Параметр цикла – входная величина, изменяющая своё значение от цикла к циклу.
Закон изменения параметра цикла – зависимость, связывающая текущее и предыдущее значения параметра цикла.
Условие повторения цикла – зависимость, предписывающая повторение цикла либо выход из него.
Все циклические процессы по способу определения количества повторений (N) разделяются на два класса (рис. 5.1).
Рис. 5.1. Классификация циклов по количеству повторений
Арифметический – циклический процесс, число повторений в котором может быть определено заранее, т.е. не зависит от результатов счёта в теле цикла.
Итерационный – циклический процесс, число повторений в котором зависит от результатов вычислений в теле цикла и не может быть определено заранее.
К арифметическим циклам, как правило, относятся вычисления вида yi = f( x i ), к итерационным – yi = f( yi - 1 ).
Независимо от того, к какому классу относится вычислительный процесс, каждый из них содержит обязательные элементы:
· вход в цикл (формирование начального значения параметра цикла);
· вычисления в теле цикла (расчёт текущего значения функции, формирование нового значения параметра цикла и вспомогательные операции);
· выход из цикла (проверка условия, определяющего повторение вычислений либо их прекращение).
По своему содержанию эти элементы зависят от класса и особенностей цикла, в котором используются.
Рассмотрим варианты организации циклических процессов арифметического типа.
Арифметические циклы характеризуются следующей постановкой задачи:
рассчитать текущие значения функции yi = f ( xi ) при изменении аргумента (параметра цикла) в заданном диапазоне xн xi xк (1 i N) по известному закону x i = j ( x i - 1 ), ( ij = j ( ij – 1 ) ).
При этом количество повторений цикла (N) может быть определено (задано) до начала вычислений.
В соответствии с видом задания (изменения) параметра цикла арифметические циклы классифицируются схемой (рис. 5.2):
Рис. 5.2. Классификация арифметических циклов
Табуляция функции – многократное вычисление значений функции при изменяющихся значениях аргумента.
Результаты табуляции представляются в виде табл. 5.1.
Таблица 5.1
Аргумент | Функция |
xн | yн |
. . . | . . . |
xi | yi |
. . . | . . . |
xn | yn |
Рассмотрим методику программирования арифметических циклов при различных видах изменения аргумента.
Арифметические циклы с аналитическим заданием аргумента
К классу циклических процессов с аналитическим заданием (изменением) аргумента относятся вычислительные процессы вида
yi = f(xi),
в которых аргумент изменяется по заданному закону.
Аналитический– закон изменения параметра цикла вида
x i = j ( x i - 1 ).
Как правило, в качестве такого закона используют простейшую зависимость:
x i = x i - 1 + Dx.
При этом диапазон изменения параметра xi задаётся начальным (xн) и конечным (xк) значениями. Математическая формулировка условия нахождения xi в диапазоне счёта зависит от конкретных численных значений xн, xк и Dx.
При xн<xк и положительных Dx оно запишется как xн xi xк.
При xн>xк и отрицательном Dx получим xн xi xк.
Варианты изменения параметра цикла xi при увеличивающихся значениях искомых yi представлены на рис. 5.3. Стрелки под осями абсцисс определяют направление изменения параметра цикла.
Y Y
xн xi xк xн xi xк
yк yк
Dx положительно Dx отрицательно
yi yi
yн yн
Dx Dx
xн xi xк X xк xi xн X
Рис. 5.3 Варианты изменения параметра цикла
Сформулированные двойные неравенства позволяют выделить из них конкретные элементы цикла:
· начальное значение параметра xi=xн (левая часть неравенства);
· условие повторения цикла (правая часть неравенств) xi xк при положительном Dx ( xi xк при отрицательном Dx ), невыполнение которого приводит к выходу из цикла.
Дополнив полученные элементы входа в цикл и выхода из него конкретной основной зависимостью yi = f ( xi ) и стандартным законом xi = xi-1 + Dx, получим все необходимые компоненты арифметического цикла с аналитическим изменением параметра.
Принадлежность цикла к классу арифметических подтверждается тем, что количество повторений в нём может быть определено заранее по формуле N = ] ( xк - xн ) / Dx [ + 1. Обратные квадратные скобки предписывают от полученного частного учитывать только целую часть.
Рассмотрим программирование задач этого класса на конкретной задаче (5.1) о подоходных налогах.
Постановка задачи
Рассчитать величину подоходного налога на работников предприятия, если известно, что зарплата может изменяться в диапазоне от 2842 до 5500 р. с шагом изменения 300 р., а налог составляет 13 % от зарплаты.