В процедурном программировании основное внимание уделяется алгоритму, то есть некоторой заданной последовательности действий, выполнение которых приводит к получению результата вычислений. Структуризация алгоритмов привела к выделению отдельных блоков (подпрограмм).
Подпрограммы значительно облегчают программирование, за счет (а) избавления от необходимости многократно повторять в тексте программы аналогичные фрагменты; (б) улучшения структуры программы, облегчая ее понимание при разборе; (в) повышения устойчивости программы к ошибкам программирования и непредвиденным последствиям при модификациях.
Различают два вида подпрограмм - процедуры и функции.
Процедура – это независимая именованная часть программы, которую можно вызвать по имени для выполнения определенных действий. Процедура не может выступать как операнд в выражении. Упоминание в тексте имени процедуры приводит к её активизации и называется вызовом.
Функция – аналогично процедуре, с двумя отличиями: (1) функция передает в точку вызова скалярное значение, (2) имя функции может использоваться в выражении как операнд.
Подпрограммы в Pascal могут обращаться сами к себе. Такое обращение называется рекурсией.
Структура процедур и функций полностью повторяет структуру самой программы, кроме заголовка. Заголовки подпрограмм оформляются следующим образом:
Function <имя_функции> (<список формальных параметров>): <тип результата>;
Все подпрограммы располагаются выше начала основной части программы (перед первым begin).
Рассмотрим примеры подпрограмм:
Задача: Организация ввода координат вектора. Вычислить длину вектора. Для начала определим список формальных параметров: входные и выходные данные. Нам потребуется Размерность векторного пространства (k: byte) и переменная х пользовательского типа vector=array[1..100] of real.
Для ввода координат будем использовать procedure, так как выходных данных будет много (его координаты), а так как длина вектора это число, поэтому используем function.