Сдам Сам

ПОЛЕЗНОЕ


КАТЕГОРИИ







Примеры написания пользовательских функций





program FuncProc;

function BiggerThanTen(I: Integer);

// Выводит на экран сообщение, если 1 больше 10

begin

if I > 10 then

writeln('Funky.');

end;

function IsPositive(I: Integer): Boolean;

// Возвращает True, если 1 больше или равен 0

begin

Result := I >= 0;

end;

var

Num: Integer;

begin

Num := 23;

BiggerThanTen(Num);

if IsPositive(Num) then

writeln(Num, ' Is positive.')

else

writeln(Num, ' Is negative.');

end.

 

Локальная переменная Result (результат) функции IsPositive() имеет специальное назначение. В каждой функции Delphi существует локальная переменная с этим именем, предназначенная для размещения возвращаемого значения.

Вернуть значение из функции можно, присвоив его имени функции внутри кода самой функции. Это стандартный синтаксис языка Delphi, сохранившейся со времен языка Borland Pascal. При присвоении в теле функции ее имени будьте внимательны, поскольку существует принципиальное различие между использованием имени функции слева от оператора присвоения и использованием его в любом другом месте кода. Имя функции слева от знака равенства означает присвоение функции возвращаемого значения, а имя функции в любом другом месте внутри кода функции приведет к ее рекурсивному вызову!

Процедуры

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

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



Процедура - это подпрограмма, имя которой не может использоваться в выражениях в качестве операнда. Процедура состоит из заголовка и тела. По структуре ее можно рассматривать как программу в миниатюре. Когда процедура описана, ее можно вызвать по имени из любой точки программы (в том числе из нее самой!). Когда процедура выполнит свою задачу, программа продолжится с оператора, следующего непосредственно за оператором вызова процедуры. Использование имени процедуры в программе называется оператором вызова процедуры.

Все процедуры и функции языка Delphi подразделяются на две группы: встроенные и определенные программистом.

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

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

Процедуры программиста

Очевидно, что встроенных процедур и функций для решения большинства прикладных задач недостаточно, поэтому приходиться придумывать собственные процедурыи функции. По своей структуре они очень напоминают программу и состоят из заголовка и блока. Заголовок процедуры состоит из зарезервированного слова procedure, имени процедуры и необязательного заключенного в круглые скобки списка формальных параметров. Имя процедуры - это идентификатор, уникальный в пределах программы. Формальные параметры - это данные, которые вы передаете в процедуру для обработки, и данные, которые процедура возвращает (подробно параметры описаны ниже). Если процедура не получает данных извне и ничего не возвращает, формальные параметры (в том числе круглые скобки) не записываются. Тело процедуры представляет собой локальный блок, по структуре аналогичный программе:

procedure <имя процедуры> ( <список формальных параметров> ) ;

const ...;

type ...;

var ...;

begin

<операторы>

end;

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

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

<имя процедуры> ( <список фактических параметров> );

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

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

Приведем пример небольшой программы, использующей процедуру Power для вычисления числа X в степени Y. Результат вычисления процедура Power заносит в глобальную переменную Z.

var

Z: Double;

procedure Power(X, Y: Double); // X и Y - формальные параметры

begin

Z := Exp(Y * Ln(X));

end;

begin

Power(2, 3); // 2 и 3 - фактические параметры.

Происходит возведение 2 в степень 3

end.









Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:


©2015- 2019 zdamsam.ru Размещенные материалы защищены законодательством РФ.