<<
>>

Процедуры

Ниже приведен пример программной реализации процедуры:

procedure ргос_Щ(); // заголовок процедуры const // раздел описания локальных констант constl = valuel:

type // раздел описания локальных типов typejdl = type_defl;

var // раздел описания локальных переменных var_idl : typejdl: var_id2.

var_id3 : type_def2; begin

// текст процедуры end:

Заголовок процедуры состоит из зарезервированного слова procedure, идентифи­катора процедуры и списка параметров, заключенного в круглые скобки (список параметров не обязателен, можно создавать процедуры без параметров). Парамет­ры, указываемые в заголовке процедуры, называются формальными и предназна­чены для обмена данными между процедурой и основной программой. В списке указывается идентификатор параметра и через двоеточие — его тип. Друг от друга параметры отделяются точкой с запятой: procedure proc_id(paraml:integer:рагаш2:real);

Отметим основные свойства процедуры.

? Количество передаваемых параметров не ограничено.

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

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

proc_id(А.В):

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

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

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

Например, при выполнении следующего фрагмента кода значение гло­бальной переменной А после вызова процедуры МуРгос не изменится и останет­ся равным 5:

var

А : integer;

procedure МуРгосСВ;integer); begin В :=10 : ' end;

A:=5:

MyProc(A) ;

ВНИМАНИЕ----------------------------------------------------------------------------------

При передаче параметров по значению необходимо соблюдать осторожность, так как при передаче больших структур данных возможно переполнение стека.

Второй способ передачи параметров — передача по ссылке. В этом случае в стек заносится не значение параметра, а его адрес. Таким образом, независимо от объема памяти, занимаемого переменной, в стеке будет занято только 4 байт. При передаче параметра по ссылке перед его идентификатором в списке фор­мальных параметров указывается одно из ключевых слов: var или const. В пер­вом случае параметр называется параметром-переменной, во втором — пара­метром-константой. Значения параметров-переменных в тексте процедуры можно изменять, и эти изменения будут передаваться в программу. Таким об­разом, параметры-переменные используются для передачи данных из процеду­ры в вызывающую программу. Например, при выполнении следующего фраг­мента кода значение глобальной переменной А изменится и станет равным 10:

var

А : integer;

procedure MyProc(var В:integer); begin В:=10: end;

A:=5;

MyProc(A);

Значения параметров-констант внутри процедуры изменять нельзя. Попытка присвоить параметру-константе какое-нибудь значение приведет к ошибке ком­пиляции:

[Error] Unit2.pas

<< | >>
Источник: Избачков Ю. С., Петров В. Н.. Информационные системы. 2006

Еще по теме Процедуры:

  1. Схема «Процедуры комфортизации».
  2. Схема «Процедуры комфортизации».
  3. 3. Процедуры банкротства гражданина
  4. ИТАК, ПРОЦЕДУРА КОМФОРТИЗАЦИИ.
  5. ИТАК, ПРОЦЕДУРА КОМФОРТИЗАЦИИ.
  6. 28. Процедура наблюдения
  7. ПРОЦЕДУРЫ И РИТУАЛЫ
  8. Процедуры и техники.
  9. Процедура комфортизации («Послушный» и «непослушный» мозг»).
  10. 3.3. Процедура экспериментирования
  11. § 4. Порядок работы парламента. Законодательная процедура
  12. 5.3. Социометрические процедуры