Глава 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 кг/л.