Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ответы программирование.doc
Скачиваний:
81
Добавлен:
18.03.2015
Размер:
1.19 Mб
Скачать

10.2. Функция

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

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

- Первое отличие функции в ее заголовке. Он состоит из слова function, за которым следует

имя функции, далее в круглых скобках - список формальных параметров (о формальных

параметрах см. п. 10.3), затем через двоеточие записывается тип функции - тип

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

порядкового, любого вещественного, стандартного типа 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;

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

то это означает, что функция вызывает себя рекурсивно (см. п. 10.6).

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

необходимо использовать значение функции, указать имя функции со списком фактических

параметров, которые должны совпадать по количеству и типам с формальными параметрами

функции, например:

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

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

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

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

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

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

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

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

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

параметры одной категории.

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

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

меняются);

- параметры-переменные (значения этих параметров основной программы подпрограмма может

изменить);

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

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

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

параметра-переменной или параметра-константы - его категорию. Имена параметров могут быть

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

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

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

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

нельзя писать:

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

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

а затем использовать его в заголовке:

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

function Max(A: tArr): Real;

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

фактические вызывающей программы или подпрограммы.