Раздел типов
Если мы хотим передать в подпрограмму отдельный элемент
массива, то в качестве соответствующего ему формального параметра указывается переменная того же типа.
Проблемы возникают, если в подпрограмму необходимо передать весь массив, так как структурный тип массива нельзя указывать в списке формальных параметров. В этом случае тип массива объявляется заранее с помощью раздела TYPE. Например, определим имена типов для вектора
Type
Vect = array[1..10] of real;
Matr = array[1..5,1..8] of real;
В дальнейшем имена типов Vect и Matr можно использовать в разделе описания переменных, например:
Var
X: Vect;
A: Matr;
Объявленные типы указываются также в списке формальных параметров, например:
Function (X: Vect; A: Matr): real;
Если по условию задачи в подпрограмме требуется при разных обращениях обрабатывать массивы с разными размерами, то в разделе TYPE объявляется тип массива с наибольшим размером. Например, при передаче в подпрограмму массивов
Type
Vect = array[1..15] of real;
Тогда по описанию
Var
X, Y: Vect;
в памяти компьютера выделяется максимальная область из 15 ячеек для каждого массива. При обработке массива с меньшим размером, часть выделенной памяти остается неиспользованной. В обращнии к подпрограмме в этом случае необходимо указать размер массива.
Примеры программирования задач с использованием подпрограмм
В приведенных ниже примерах для каждой задачи составим два варианта программы: с использованием процедуры и с использованием функции. На практике выбор того или иного варианта зависит от опыта программиста.
Задача 1
Даны два вектора: