Параметры – значения


Это наиболее распространенный и самый простой способ передачи параметров, который имеет следующий вид:

<имя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);

Процедуры

Описание процедур похоже на описание функций. Более того, функции есть разновидность процедур с возвращаемым результатом, который используется в выражении. Функции просто применяют для упрощения составления программ, в машинном языке присутствуют только процедуры. Описание процедуры имеет вид:

Procedure <имя>[(<список параметров>)];

[<описания>;]

<операторы>

End;

Имя и параметры здесь те же, что и в подпрограммах-функциях. Но есть и отличия процедур от функций:

1. С именем процедуры, в отличие от функции, не связано никакое значение, поэтому имени в теле процедуры значение не присваивается и, соответственно, не указывается тип возвращаемого результата.

2. Обращение осуществляется не в выражении, а отдельной строкой, – оператором обращения к процедуре, – с указанием имени и списка фактических параметров. Например, операторы ввода-вывода имеют полное название «операторы обращения к процедурам ввода или вывода». Правда, они составлены с использованием объектно-ориентированного программирования, поэтому первый пункт правил использования подпрограмм к ним не относится.



Дата добавления: 2016-06-29; просмотров: 2428;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.008 сек.