Подпроцесс с несколькими результатами

Этот вариант подпроцесса применяется, когда в дополнительный алгоритм (дополнительную функцию) выносится участок вычислений с несколькими конечными результатами. Рассмотрим программирование подобных вычислений на конкретной задаче (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.