Глава 3. Технология программирования линейных процессов
Ознакомление с общими закономерностями технологии создания программных продуктов позволяет перейти к реализации их для стандартных вычислительных процессов.
В ряду вычислительных процессов простейшим является линейный.
Линейный – вычислительный процесс последовательного, однократного выполнения всех запланированных участков вычислений.
Все линейные процессы по структуре и объему планируемых вычислений можно классифицировать на простые, псевдолинейные и сложные (рис. 3.1).
Рис. 3.1. Классификация линейных процессов
Предлагаемая классификация линейных процессов достаточно условна. Она зависит не только от предполагаемого количества исходных, конечных и промежуточных операндов (единицы, сотни). Важны также планируемые над ними операции, возможности их реализации и квалификация пользователя-разработчика.
Простой линейный – вычислительный процесс последовательной однократной обработки единиц (реже десятков) исходных данных арифметическими операциями над ними.
В общем случае простые линейные процессы встречаются достаточно редко. Типичные примеры простых линейных процессов – вычисление площадей элементарных геометрических фигур (прямоугольник, треугольник, круг).
Псевдолинейный – вычислительный процесс последовательной однократной обработки исходных данных арифметическими операциями, включая тригонометрические (трансцендентные) функции.
Псевдолинейность обусловлена тем, что напрямую определить численное значение тригонометрических и трансцендентных функций невозможно, ЭВМ осуществляет их вычисление с помощью конкретных подпроцессов (подпрограмм), если они имеются в ее библиотеках.
В этом случае (подпрограммы вычисления одной или нескольких типовых функций, входящих в расчетную зависимость существуют) вычислительный процесс считается псевдолинейным (линейный процесс с подпроцессом). Типичный пример – вычисление значения стороны непрямоугольного треугольника или расчет функциональной зависимости типа y = 2psin(a/2) – ln(3b).
Для нетиповых функций (отсутствуют в библиотеках ЭВМ) может понадобиться достаточно сложный и, как правило, нелинейный дополнительный подпроцесс, разрабатываемый самим пользователем. Типичный пример – расчет интеграла, осуществляемый циклическим накоплением.
Сложный – вычислительный процесс последовательной однократной обработки значительного количества операндов (десятки, сотни) типовыми операциями над ними.
При формальном обеспечении определяющего требования линейного процесса (однократности использования) программирование таких процессов неэффективно – затраты времени на создание и отладку программы намного превышают время ее решения с помощью калькулятора.
Рассмотрим программирование линейных вычислительных процессов на задаче (3.1) о покраске.
Постановка задачи
Рассчитать количество красителя для покраски цилиндрической ёмкости с диаметром днища 3,2 м и высотой боковой стенки 6780 мм, если известно, что на 1 дм2 окрашиваемой площади требуется красителя. При расчёте предусмотреть получение результатов в килограммах.
Анализ постановки задачи приводит к выводу, что она не определена полностью, поэтому зададимся следующими допущениями:
· резервуар сверху открыт;
· покраске подлежат только внешние поверхности;
· плотность краски составляет 1,4 кг/л.
Следовательно, уточнённый вариант словесной формулировки имеет вид:
Рассчитать массу красителя (кг), необходимого для покраски цилиндрической ёмкости с диаметром днища 3,2 м и высотой боковой стенки 6780 мм. Резервуар полностью открыт сверху. Покраске подлежат наружные поверхности стенок и днища. Расход красителя составляет на 1 дм2 окрашиваемой площади. Плотность красителя 1,4 кг/л.