Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование / WORD / Лекции по ЯП (часть 2).doc
Скачиваний:
98
Добавлен:
15.04.2015
Размер:
2.24 Mб
Скачать
  1. Передача управления при вызовах процедур и функций

  1. Функции: подпрограммы,возвращающие единственный результат

Мы уже знаем, что процедуры могут возвращать любое количество результатов. Функции, в отличие от процедур, возвращают единственный результат.

Создание пользовательской функции

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

  • Заголовок функции начинается с зарезервированного слова function (а не procedure).

function Summa (a, b: Real) : Real;

---------- ----------- ------

| | |

Имя функции | Тип результата

Список

формальных параметров

  • Все параметры функции должны представлять собой параметры-значения.

  • Тип данных, которому принадлежит результат функции, указывается в конце заголовка функции, после списка формальных параметров.

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

Синтаксическая диаграмма:

ОПИСАНИЕ СИНТАКСИСА: Объявление функции

function fname (формальные параметры): ftype:

<раздел локальных описаний>

begin

<тело функции>

end;

Пример:

function Summa(a, b: Real) : Real;

begin

Summa:=a+b;

end;

Интерпретация: После имени fname объявленной функции следует список формальных параметров, заключенный в скобки. Идентификаторы, объявленные в разделе локальных описаний, являются для функции локальными и определены только на время работы функции. При этом формальный параметр не может быть объявлен как локальный идентификатор.

Тело функции описывает манипуляции над данными (которые будут выполнены функцией) с использованием формальных параметров в качестве фиктивных (или "бутафорских") имен, вместо фактических параметров. Когда при выполне­нии функции имеет место обращение к формальному параметру, манипуляции производятся с соответствующим ему фактическим параметром.

Функция возвращает единственный результат, принадлежащий типу ftype. Ре­зультат, возвращаемый функцией, — это значение, которое присваивается fname непосредственно перед возвращением управления основной программе.

Примечание 1: Идентификатор ftype должен представлять собой имя стандарт­ного типа данных (Integer, Real, Boolean или Char), типа-диапазона или пере­числимого типа данных, либо типа-указателя. Turbo Pascal (но не стандартный Pascal) позволяет также использовать в качестве типа результата, возвращаемого функцией, строки и дополнительные числовые типы.

Примечание 2: Если функция не имеет параметров, в данном описании синтак­сиса следует опустить элемент формальные параметры вместе со скобками.

ОПИСАНИЕ СИНТАКСИСА: Вызов функции

fname (фактические параметры);

Пример: Summa(3.0, Z)

Интерпретация: Фактические параметры заключены в скобки. Когда имеет место вызов функции fname, ее первый фактический параметр ассоциируется с первым формальными параметром, второй фактический параметр ассоциируется со вторым формальными параметром и так далее. Идентификатор функции (вызов функции) может при­сутствовать только внутри выражения или в правой части оператора присваивания; после завершения работы функции, воз­вращенный ею результат заменяет ее идентификатор в этом выражении.

Пример: S := Summa(3.0 + Z);

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

Соседние файлы в папке WORD