Описание функции и процедуры

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

 

Function <идентификатор функции> (<списки

параметров>) : <тип значения функции>;

 

Заголовок же процедуры записывается несколько иначе:

 

procedure <идентификатор процедуры>(<списки

параметров>);

 

И в том, и в другом случае <списки параметров> - это перечисление имён переменных с указанием через двоеточие их типа; один список от другого отделяется точкой с запятой. <списки параметров> - это те значения, которые или должны быть или переданы в подпрограмму, или вычислены в подпрограмме. <тип значения функции> - это одно из ключевых слов для обозначения типов переменных или наименование пользовательского типа (смотри лекцию 3). Функция обязана вернуть значение указанного типа.

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

 

function Chr(X: Byte) : Char;

procedure Delay (MS: Word) ;

function Copy(S: String; Index: Integer; Count: Integer) : String;

procedure GetDate(var Year, Month, Day,

DayOfWeek: Word);

Отметим, что списки параметров в заголовках процедур могут отсутствовать. Пример:

 

procedure NoSound;

 

Структура процедур и функций почти повторяет структуру программы. Например, описание процедуры имеет вид:

 

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

const <раздел описания констант>

type <раздел описания типов>

var <раздел описания переменных>

label <раздел описания меток>

<раздел описания процедур и функций>

begin

<тело процедуры - операторный_блок>

end;

и описание функции:

 

function <идентификатор процедуры> ( <списки параметров>) :

<тип значения функции> ;

const <раздел описания констант>

type <раздел описания типов>

var <раздел описания переменных>

label <раздел описания меток>

<раздел описания процедур и функций>

begin

<тело процедуры - операторный блок>

end;

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

 

Function Sum(A, B : real) : real;{ Описание функции суммирования }

Var S : real;

Begin

S:= A+B;

Sum:= S; { Присвоение идентификатору функции значения }

End;

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

 

p:=gradf(x); { gradf - идентификатор функции}

t:=2*grod(w)-7; { grod - идентификатор функции}

 

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

 

Proced1(А,В,С); { оператор вызова процедуры Proced1 }