4. ИСПОЛЬЗОВАНИЕ ПОДПРОГРАММ В ТУРБО ПАСКАЛЕ
47
4.4. Формальные и фактические параметры
При описании процедуры (функции) в ее заголовке могут быть указаны параметры
следующих видов:
– параметры-значения;
– параметры-переменные;
– параметры-константы;
– параметры-процедуры;
– параметры-функции.
При записи параметров необходимо помнить:
• число формальных и фактических параметров должно быть одинаково;
• порядок следования и тип фактических параметров должен совпадать с порядком и
типом соответствующих формальных параметров;
• идентификаторы формальных и фактических параметров могут совпадать;
• формальные параметры в языке Турбо Паскаль в заголовке находятся вместе с
описаниями и объявлять их в разделе описаний процедуры(функции) не требуется;
• формальные параметры должны иметь простые или ранее определенные типы.
При передаче в подпрограмму массива его тип объявляют предварительно в разде-
ле описания типов TYPE.
Например.
TYPE TV=ARRAY [1..30] OF INTEGER;
TM=ARRAY [1..20,1..20] OF REAL;
...
PROCEDURE TOP ( A:TM; VAR B: TV ; N: INTEGER);
...
Здесь описаны два типа массивов. TV – для одномерного массива и TM для дву-
мерного массива. Затем в списке формальных параметров для переменных А и В исполь-
зуются эти ранее определенные типы при описании соответственно матрицы и вектора.
Тип переменной N простой и его можно не описывать в разделе описания типов TYPE, а
указать непосредственно в заголовке.
Список параметров, задаваемых в заголовке процедуры или функции, обеспечивает
связь подпрограммы с вызывающей программой. Через него в подпрограмму передаются
исходные данные и возвращается результат (в процедуре). В языке Турбо Паскаль преду-
смотрены два принципиально отличающихся механизма передачи параметров : по значе-
нию и по ссылке.
Параметры-значения
При передаче параметров по значению в стеке, в котором осуществляется выделение
памяти под внутренние (локальные) переменные подпрограммы, выделяется дополнительная
память, в которую копируются значения соответствующих фактических параметров. В вызы-
вающей программе в качестве аргумента подпрограммы для параметра-значения может ис-
пользоваться не только переменная, но и выражение. После завершения работы подпрограм-
мы выделенная этим параметрам память становится недоступной, поэтому передача парамет-
ров по значению не может использоваться в подпрограммах для получения результатов.
В тексте программ процедуры и функции синуса параметрами значениями являют-
ся X и E. Можно выполнить обращение к функции, задав в качестве фактического пара-
метра не переменную, а выражение или константу. Например,