Формирование математической модели. Исходные данные Зн = 2842 р. начальная (минимальная) зарплата; Зк = 5500 р. конечная (максимальная) зарплата; DЗ = 300 р. шаг
Исходные данные
Зн = 2842 р. | начальная (минимальная) зарплата; |
Зк = 5500 р. | конечная (максимальная) зарплата; |
DЗ = 300 р. | шаг изменения зарплаты; |
пн = 13 % | процент налога. |
Расчётные зависимости
Зн Зi Зк | [р. р. р.] | диапазон изменения зарплаты; |
Зi = Зi-1 + DЗ | [р.=р.+р.] | закон изменения зарплаты; |
Нaлi = Зi пн / 100% | [р.=р. % / %] | величина подоходного налога; |
N = ](Зк - Зн) / DЗ [ + 1 | [ед.=(р.-р.)/р.] | количество повторений. |
Выбор метода решения
Анализ полученной математической формулировки позволяет сделать выводы:
· решение задачи требует многократного вычисления подоходного налога Налi, однозначно зависящего от величины зарплаты Зi, следовательно, процесс является циклическим, а параметр цикла есть Зi;
· диапазон изменения параметра цикла задан зависимостью Зн Зi Зк, что позволяет сформулировать начальное значение параметра Зi=Зн и условие повторения цикла Зi Зк, невыполнение которого приводит к выходу из него;
· закон изменения параметра цикла имеет вид Зi = Зi-1 + DЗ, т.е. является аналитическим;
· количество повторений цикла N можно определить до начала счёта по стандартной формуле.
Следовательно, в качестве метода решения необходимо использовать циклический процесс арифметического типа с аналитическим изменением параметра.
Составление алгоритма
Возможны две методики составления алгоритма циклического процесса арифметического типа:
Вариант 1 а) Сформировать первое текущее значение параметра (аргумента) цикла (xi); б) проверить полученное значение (xi) на соответствие диапазону счета. Если условие не выполняется – выйти из цикла. Если выполняется – сохранить естественный порядок вычислений – перейти к пункту в); в) вычислить текущее значение искомой функции ( yi = f ( xi ) ); | Вариант 2 а) Сформировать первое текущее значение параметра (аргумента) цикла (xi); б) рассчитать текущее значение искомой функции ( yi = f ( xi ) ); в) зафиксировать текущие значения аргумента и функции (xi , yi ); г) сформировать новое текущее значение параметра цикла (xi=xi-1+Dx); |
г) зафиксировать текущие значения аргумента и функции (xi , yi ); д) сформировать новое текущее значение параметра цикла (xi=xi-1+Dx); е) перейти к пункту б). | д) проверить полученное значение (xi) на соответствие диапазону счета. Если условие повторения цикла выполняется – нарушить естественный порядок выполнения – перейти к пункту б), в противном случае – выйти из цикла. |
Анализ представленных методик позволяет сделать выводы:
· первый вариант выполняет формальное требование проверки всех текущих значений параметра цикла (xi) на соответствие диапазону счета;
· второй вариант предполагает ненужность проверки первого значения xi, т.к. для него условие повторения цикла должно выполняться автоматически;
· по месту проведения проверки параметра цикла (xi) на соответствие диапазону изменения первый вариант формирует цикл с предусловием, второй – с постусловием.
Алгоритмы, реализующие для рассматриваемой задачи каждую из методик, представлены схемами на рис. 5.4 и 5.5.
ü Внимание! Формирование тела цикла в любой из схем происходит при выполнении условия повторения цикла. При этом в цикле с предусловием сохраняется естественный порядок выполнения блоков, а в цикле с постусловием – нарушается.
Алгоритмы содержат все необходимые элементы циклического процесса:
· вход в цикл (блоки 4);
· тело цикла (блоки 6, 7, 8);
· выход из цикла (блок 5 рис. 5.4; блок 9 рис. 5.5).
Расчёт количества повторений N может быть осуществлён вне тела цикла в любом месте алгоритма.
Схема алгоритма цикла с предусловием (рис. 5.4) может стать более компактной, если функции трех блоков (4, 5, 8) передать одному блоку «начало цикла». Модифицированный алгоритм представлен схемой на рис. 5.6. Он реализует стандартную структуру цикла с параметром. При этом блок «начало цикла» формирует начальное значение параметра цикла и проверяет его на соответствие диапазону изменения.
Если условие выполняется – сохраняет естественный порядок вычислений (предписывает однократное выполнение тела цикла), а затем вычисляет новое значение параметра и предписывает его очередную проверку на соответствие заданному диапазону.
При невыполнении проверяемого условия – управление передается блоку, следующему за телом цикла.
ü Внимание! Алгоритмы цикла с параметром совмещают два стандартных элемента циклического процесса – вход в цикл и выход из него (блок 4). Тело цикла образуют блоки 5 и 6.
Представленные схемы выполнены в стандартном (унифицированном) изображении. Они наглядны, но недостаточно информативны, т.к. не позволяют понять логику переходов при проверке условий.
Этого недостатка лишены развёрнутые изображения алгоритмов (рис. 5.7).
Программирование задачи
Анализ алгоритмов, реализующих циклы с пред- и пост-условиями, позволяет сделать вывод, что их программирование (выполнение блоков проверки условия) возможно с использованием укороченного оператора условной передачи управления вида if( усл_выр ) goto m.
Однако современный стиль программирования не рекомендует использование оператора безусловной передачи управления. Поэтому составление программ требует использования специальных конструкций языка Си/Си++ – операторов цикла.
Рис.5.4.Цикл Рис.5.5.Цикл Рис.5.6.Цикл
с предусловием с постусловием с параметром
Рис. 5.7. Развёрнутые изображения циклов:
а – с предусловием, б – с постусловием, в – с параметром
Операторы цикла
Операторы цикла – конструкции, позволяющие реализовать любую из полученных схем алгоритма – цикл с предусловием, цикл с постусловием, цикл с параметром.
В Си/Си++ существуют три оператора цикла. Каждый из них соответствует основному требованию структурирования – имеет один вход и один выход.