Подпрограммы. Процедуры в Паскаль
Подпрограмма – это обособленная именованная часть программы, в которой решается определенная подзадача.
Использование подпрограмм дает возможность:
- избежать многократного повторяемого в тексте программы кода;
- упростить структуру программу;
- облегчает отладку программы;
- делает более эффективным процесс модификации программы.
В языке программирования Паскаль подпрограммы делятся на процедуры и функции, в свою очередь подразделяющиеся на две группы: стандартные и определенные пользователем. Стандартные процедуры и функции без предварительного описания могут быть вызваны по их именам (например, процедуры ввода данных 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.
Список фактических параметров может отсутствовать, если в процедуру не передаются какие-нибудь значения. В этом случае формат записи оператора вызова следующий:
имя процедуры