Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка_Delphi_Ч1.doc
Скачиваний:
7
Добавлен:
02.11.2018
Размер:
2.38 Mб
Скачать

Описание функции

Описание функции по структуре такое же, как и описание процедуры, но вид заголовка несколько иной.

Заголовок функции начинается словом function, а заканчивается описанием типа возвращаемого значения и выглядит следующим образом:

Function <имя функции> (<список формальных параметров>):<тип возвращаемого значения>;

Пример заголовка функции:

Function myFunc (a, b : Real) : String;

В этом примере функция myFunc возвращает стоку символов, а параметрами, которые передаются в процедуру, являются два вещественных числа.

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

Ниже, в качестве примера, дано описание функции, заголовок которой был приведен выше.

Function myFunc (a, b : Real) : String;

var z:real;

begin

z:=a+b;

Result:=floatToStr(z);

end;

В качестве параметров в эту функцию передается два вещественных числа.

В разделе описаний процедуры описана внутренняя переменная z, которая за пределами процедуры недоступна..

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

Вызов функции

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

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

Пример вызова функции StrToFloat.

x := strToFloat( Edit1.text );

Пример вызова функций sin и sqrt.

x := a + sin(x) + sqrt(a+b);

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

Var x,y : Real; str :String;

Begin

x:=1; y:=2;…

str := myFunc ( 2.345, x+y);

showMessage(str);

end;

В этом примере обращение к нашей функции выделено жирным курсивом.

Функция вернет строку символов, значение которой равно ‘5.345’ и это значение будет присвоено переменной str.

      1. Способы передачи параметров в подпрограммы

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

По умолчанию предполагается, что параметры обычных типов, например, Real, Integer, String, передаются по значению, а параметры таких типов как визуальные компоненты, динамические массивы передаются по наименованию. Если возникает необходимость явно указать, что параметр передается по наименованию, то перед именем параметра, или перечнем имен одного типа, пишется слово var.