Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
9-11 лек 18-19 ПРОЦЕД И ФУНКЦ.doc
Скачиваний:
6
Добавлен:
23.11.2019
Размер:
146.94 Кб
Скачать

2. Функция

Подпрограмма-функция предназначена для вычисления какого-либо параметра.

У этой подпрограммы два основных отличия от процедуры:

А) Первое отличие функции в ее заголовке. Он состоит из слова function, за которым следует имя функции, далее в круглых скобках - список формальных параметров, затем через двоеточие записывается тип функции - тип возвращаемого параметра.

Функция может возвращать параметры следующих типов:

-любого порядкового,

-любого вещественного,

-стандартного типа string,

-любого указателя, в том числе и типа PChar.

Б) Второе отличие заключается в том, что в теле функции хотя бы раз имени функции должно быть присвоено значение.

Пример. Функция вычисления факториала числа N.

function Factorial(N: Byte): Longint; var Fact: Longint;    i: Byte; begin    Fact := N;    for i : = N-l downto 2 do      Fact: = Fact * i;    Factorial:= Fact end;

Если имя функции внутри ее описания используется не в левой части оператора присваивания, то это означает, что функция вызывает себя рекурсивно.

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

Part:=Sqr(T)/Faktorial(i);

В этом операторе:

Sqr(T) - вызов стандартной функции возведения в квадрат с фактическим параметром Т;

Faktorial(i) - вызов функции, вычисляющей факториал с фактическим параметром i.

3. Формальные и фактические параметры

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

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

В группу формальных параметров включаются однотипные параметры одной категории.

Все формальные параметры можно разбить на четыре категории:

  • параметры-значения (эти параметры в основной программе подпрограммой не меняются);

  • параметры-переменные (эти параметры подпрограмма может изменить в основной программе);

  • параметры-константы (используются только в версии 7.0);

  • параметры-процедуры и параметры-функции (т. е. процедурного типа).

Для каждого формального параметра следует указать имя и, как правило, тип, а в случае параметра-переменной или параметра-константы - его категорию.

Имена параметров могут быть любыми, в том числе и совпадать с именами объектов программы. Необходимо лишь помнить, что в этом случае параметр основной программы с таким именем становится недоступным для непосредственного использования подпрограммой.

Тип формального параметра может быть практически любым, однако в заголовке подпрограммы нельзя вводить новый тип.

Например, нельзя писать

function Max(A: array[1..100] of Real): Real;

Чтобы правильно записать этот заголовок, следует в основной программе ввести тип-массив, а затем использовать его в заголовке:

type tArr = array[1..100] of Real;

function Max(A: tArr): Real;

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]