10. Процедуры и функции
В языке Паскаль имеется две разновидности подпрограмм - процедуры и функции.
Структура любой подпрограммы аналогична структуре всей программы. Подпрограмма должна быть описана до того, как она будет использована в программе или другой подпрограмме.
Все параметры, которые использует подпрограмма, можно разбить на две категории: локальные параметры, объявленные внутри подпрограммы и доступные только ей самой, и глобальные - объявленные в основной программе и доступные как программе, так и всем ее подпрограммам. Обмен информацией между основной программой и подпрограммой может осуществляться только с помощью глобальных параметров.
Подпрограмма может использовать глобальные параметры двояким образом: непосредственно обращаясь к глобальному параметру по его имени или используя механизм формальных параметров. Подпрограмма может непосредственно использовать любые глобальные параметры за исключением тех, которые имеют те же имена, что и ее локальные параметры. Механизм формальных параметров будет рассмотрен в п. 10.3.
10.1. Процедура
Подпрограмма-процедура предназначена для выполнения какой-то закончен-; ной последовательности действий. Любая процедура начинается с заголовка. В отличие от основной программы заголовок в процедуре обязателен. Он состоит из зарезервированного слова procedure, за которым следует идентификатор имени процедуры, а далее в круглых скобках - список формальных параметров:
procedure <имя процедуры>(<список формальных параметров>);
За заголовком могут идти такие же разделы, что и в основной программе В отличие от основной программы процедура завершается не точкой, а точкой с запятой.
Пример. Процедура ввода N целых чисел. Пусть в основной программе определен тип:
type tArr = array[1..100] of Integer;
Процедура может иметь вид:
procedure InpInt(var Mas: tArr; N: Integer); |
{заголовок процедуры со списком формальных параметров проверка N <= 100 - в основной программе} |
var i: Integer; |
{локальный параметр - параметр цикла} |
begin |
|
Writeln ('Ввведите', N, 'целых чисел'); |
|
for I := 1 to N do |
|
Read (Mas[i]) |
|
end; |
|
Для вызова процедуры из основной программы или другой подпрограммы еле дует записать оператор, состоящий из имени процедуры и списка фактических параметров, которые должны совпадать по количеству и типам с формальными параметрами процедуры. Например:
InpInt(M, К);
означает, что вызывается процедура Inplnt для ввода К целых чисел в массив М. Естественно, что в этом случае параметр К целого типа, а М - массив типа tArr.
|