Подпроцесс с несколькими результатами
Этот вариант подпроцесса применяется, когда в дополнительный алгоритм (дополнительную функцию) выносится участок вычислений с несколькими конечными результатами. Рассмотрим программирование подобных вычислений на конкретной задаче (10.3) о суммах и произведениях.
Постановка задачи
Вычислить значение функции:
при изменении размера (n) массива Х до максимального значения 30, а размера (m) массива Y до 50.
Формирование математической модели
Исходные данные
X(n) – одномерный массив;
xi – значение i-го элемента;
– диапазон изменения индекса i, n £ 30;
i = i + 1 – шаг изменения индекса i.
Примем n = 5, зададимся x1=1; x2=1,6; x3=1,8;
x4=15; x5=23;
Y(m) – одномерный массив;
yj – значение j-го элемента;
– диапазон изменения индекса j, m £50;
j = j + 1 – шаг изменения индекса j.
Примем m = 6, зададимся y1=0,6; y2=0,76; y3=0,99; y4=180; y5=67,7; y6=200.
Расчетные зависимости
– сумма элементов массива Х(n);
– произведение элементов массива Х(n);
– сумма элементов массива Y(m);
– произведение элементов массива Y(m);
– искомое значение.
Выбор метода решения
Анализ математической модели показывает, что решение задачи требует двукратного вычисления суммы и произведения элементов массива. В первом случае n элементов массива X, во втором – m элементов массива Y. Такое вычисление удобно выполнить отдельным смешанным процессом, оформленным дополнительным алгоритмом. Так как результат вычислений в дополнительном алгоритме (подпрограмме) – две величины (сумма и произведение), то решение задачи требует использования дополнительной функции, возвращающей более одного результата.
Особенность подпрограмм с несколькими возвращаемыми значениями – использование в них входных и выходных формальных параметров.
Входные формальные параметры – операнды дополнительного алгоритма, значения которых принимаются из основного.
Выходные формальные параметры – операнды дополнительного алгоритма, передающие результаты расчётов в основной.
Для рассматриваемой задачи в качестве входных формальных параметров выберем, например, имя массива Z и его размер k. Тогда в качестве выходных параметров можно использовать SZ (сумма Z) и PZ (произведение Z). Следовательно, в качестве формальных параметров выбраны Z, k, SZ, PZ.
Работа с подпрограммой требует обращения к ней из основного алгоритма. Естественно, что в обращениях используются входные и выходные фактические параметры.
Входные фактические параметры – операнды основного алгоритма, численные значения которых передаются в дополнительный.
Выходные фактические параметры – операнды основного алгоритма, принимающие результаты, переданные из дополнительного.
Таким образом, задавшись именем подпроцесса sp, сформируем два обращения к ней: для расчёта суммы и произведения элементов массива X – sp(X, n, SX, PX), а для тех же вычислений с массивом Y – sp(Y, m, SY, PY). Два начальных параметра в каждом обращении являются входными и определяют имя и размер передаваемого в подпрограмму массива. Остальные являются выходными, предназначенными для получения значений суммы и произведения из подпрограммы.
Следовательно, рациональный метод решения задачи – вычислительный процесс с одним подпроцессом при использовании основного алгоритма с обращениями sp(X, n, SX, PX) и sp(Y, m, SY, PY) и дополнительного алгоритма с формальными параметрами Z, k, SZ, PZ.