Процедуры и функции, определенные пользователем 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Процедуры и функции, определенные пользователем



Процедура и функция пользователяначинаются с заголовков вида, соответственно:

Procedure <имя процедуры> [(<параметры>)];

Function <имя функции> [(<параметры>)]: <тип результата>;

Возвращаемое значение формируется одной из равнозначных команд: < имя функции >: = <значение> или Result: = <значение>.

Предопределенная переменная Result может быть использована в качестве операнда (Result:=X+Y; Result:=Result*C).

Для выхода из подпрограммы используется команда Exit.

Параметры в заголовке указываются в виде списка объявлений переменных через запятую, и они могут быть структурированы (массивами, записями, множествами). Передача параметров производится по значению, по ссылке, в виде константы или как выходной параметр.

Параметры, переданные по значению (параметры‑значения), не могут быть изменены процедурой, функцией, а параметры, переданные по ссылке, называются параметрами‑переменными и могут изменить свое значение в подпрограмме. Они описываются в заголовке процедуры, функ­ции после слова Var.

Параметры-константы описываются после слова Const. При по­пыт­ке изменить значение аргумента в подпрограмме будет выдано ком­пилятором сообщение об ошибке.

Выходной параметр описывается после слова Out. Он похож на па­ра­метр‑переменную, но не требует исходного значения от аргумента, при этом память, занимаемая аргументом, очищается. Подпрограмма фор­ми­ру­ет значение этого аргумента.

Не типизированный параметр не содержит указание типа, что означает возможность обработки подпрограммой аргумента любого типа. В этом случае в подпрограмме должны применяться операции приведения (преобразования) типов (п.1.2.9).

Пример. Procedure P(Var X); Begin Real (X):=Real (X)+2.1; End;

Для не типизированного параметра нельзя передавать в качестве аргумента число или не типизированную числовую константу.

Обращение к процедуре или к функции имеет вид:

<имя процедуры или функции > [(<список аргументов через запятую>)]

Параметр с умалчиваемым значением задает значение, которое принимается при отсутствии аргумента в команде вызова подпрограммы. После объявления такого параметра в заголовке подпрограммы указы­вает­ся знак равенства и константное выражение. Такие параметры должны быть последними в списке параметров, и, если один аргумент не указан, то не указываются и все оставшиеся.

Пример:

Fuction Nalog (X: Double, Nds: Double=0.2, Imuh: Double=0.01): Double;

... N:=Nalog(V); //вызов функции с указанием только 1 аргумента вместо 3.

// Ошибочным будет вызов функции вида: N:=Nalog(V,,0.02).

Перегрузка подпрограмм. Если определить несколько одноименных подпрограмм с различным числом или типами параметров и в конце за­го­лов­ков указать слово Overload, то компилятор автоматически вызовет ту подпрограмму, которая соответствует данным аргументам.

Пример двух функции с различными типами параметров:

Function Add (X, Y: Real): Real; Overload; Begin Result:=X+Y; End;

Function Add (X, Y: Integer): Integer; Overload; Begin Result:=X+Y; End;

A=Add (1.3,2.1); //вызов первой функции с вещественными параметрами

A=Add (1,2); //вызов второй функции с целочисленными параметрами

Правила использования параметров и аргументов:

1. Количество неумалчиваемых параметров и аргументов совпадает.

2. Длины строк могут не совпадать, если указана директива {$V‑}.

3. Если типы параметров и аргументов не совпадают, то обязательно указать типы параметров в заголовке.

4. В заголовке можно использовать и указатели.

5. Параметрами могут быть открытые массивы (п.1.1.4.1).

6. Параметры типов массивов, строк и записей должны быть пред­ва­рительно определены через типы пользователя, например:

Type Atype=Array [1..10] Of Real;//объявление типа массив из 10 вещ.чис.

Intype=String[15]; Outtype=String[30]; //объявление типов строк

Procedure S (A:Atype); //заголовок процедуры с параметром типа массив

Function St (S:Intype):OutType;//строковая функция с параметром строки

Пример программы возведения числа в степень:



Поделиться:


Последнее изменение этой страницы: 2017-02-08; просмотров: 320; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 44.193.11.123 (0.005 с.)