Это наиболее распространенный и самый простой способ передачи параметров, который имеет следующий вид:
<имя1>, <имя2>, …, <имяn>:<имя типа>
Здесь параметр считается локальной переменной в пределах подпрограммы, по нему передается значение данных, то есть он является входным. Изменение этого значения не приводит к изменениям в вызывающем модуле, поэтому здесь фактическим параметром является выражение и как частный случай – константа или переменная. Имя типа должно быть простым или описанным в разделе TYPE во внешнем модуле, поэтому следующая запись неверна:
Function Z(A:array[1..20] of real):real;
Пример: функция вычисления суммы квадратов.
Function SumSqr(x,y:real):real;
Begin
SumSqr:=x*x+y*y
End;
Параметры – переменные
Параметры, иначе называемые передаваемыми по ссылке, имеют следующий вид.
Var <имя1>, <имя2>, …, <имяn>:<имя типа>;
По этому параметру передается адрес данных, то есть он является как входным, так и выходным. Изменение этого значения вызывает изменение фактического параметра, поэтому фактическим параметром может быть только переменная.
|
|
Так как при использовании функций выходным значением является значение самой функции, то этот тип параметров наиболее часто используется в процедурах.
Бестиповые параметры
Кроме двух обычных способов передачи параметров в подпрограммы при их вызове Турбо-Паскаль допускает третий способ передачи, при котором тип параметра не фиксируется. В стандартном Паскале этот тип параметра отсутствует, но там параметрами могут быть функции и процедуры (здесь наблюдается несовместимость с Турбо-Паскалем). Описание параметра имеет следующий вид.
Var <имя1>, …
Так как тип формального параметра не задан, то, строго говоря, он не совместим ни с какой другой переменной, то есть не может входить ни в какие конструкции. Поэтому единственным способом использования таких параметров является определение их типа в теле подпрограммы. Этого можно добиться, применив к ним операцию приведения типа или описав в подпрограмме локальную переменную определенного типа с совмещением ее в памяти с нетипизированным параметром (в этом курсе не рассматриваются).
Обращение к функциям пользователя происходит в выражениях, точно так же, как к стандартным функциям: указанием имени и фактических параметров. Пример использования описанной ранее функции вычисления суммы квадратов:
A:= x+SumSqr(5.3,c+d);