Подпрограммы. Процедуры в Паскаль

Подпрограмма – это обособленная именованная часть программы, в которой решается определенная подзадача.

Использование подпрограмм дает возможность:

  • избежать многократного повторяемого в тексте программы кода;
  • упростить структуру программу;
  • облегчает отладку программы;
  • делает более эффективным процесс модификации программы.

В языке программирования Паскаль подпрограммы делятся на процедуры и функции, в свою очередь подразделяющиеся на две группы: стандартные и определенные пользователем. Стандартные процедуры и функции без предварительного описания могут быть вызваны по их именам (например, процедуры ввода данных writeln, удаления элементов из множества Exclude, функция определения длины строки Length и др.). Пользовательские подпрограммы, самостоятельно разработанные и описанные программистом, также вызываются по имени, однако они должны быть предварительно описаны.

Рассмотрим использование процедур и функций пользователя в программах.

Процедуры пользователя в Паскаль

Процедура в Паскаль выполняет некоторую завершенную последовательность действий и, в отличии от функции, не возвращает в основную программу результатов своей работы.

Процедура состоит из заголовка, началом которого является ключевое слово procedure, и, аналогичного по своей структуре обычной программе, тела процедуры. Рассмотрим формат описания пользовательской процедуры:

  • procedure имя(список формальных параметров);
  • раздел описаний
  • begin
  • операторы
  • end;

В заголовке, после ключевого слова procedure, следует уникальное, в пределах программы, имя процедуры, затем располагается список формальных параметров не являющийся обязательным. Для каждого элемента списка указывается тип данных, например:

  • procedure AddSquare(a: integer; b: real);
  • begin
  • writeln(a * a + b * b);
  • end;

Для вызова процедуры из основной программы используется оператор вызова процедуры, который имеет следующий вид:

имя процедуры(список фактических параметров)

Фактические параметры подставляется вместо соответствующих формальных параметров, поэтому количество элементов в том и другом списках должно совпадать. Соответствие устанавливается на основе положения параметров в списках. Например, вызов процедуры AddSquare из примера выше может выглядеть следующим образом:

  • begin
  • var a: integer := 10;
  • var b: real := 2.5;
  • AddSquare(a, b);
  • end.

Список фактических параметров может отсутствовать, если в процедуру не передаются какие-нибудь значения. В этом случае формат записи оператора вызова следующий:

имя процедуры