Процедуры
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
Еще по теме Процедуры:
- Схема «Процедуры комфортизации».
- Схема «Процедуры комфортизации».
- 3. Процедуры банкротства гражданина
- ИТАК, ПРОЦЕДУРА КОМФОРТИЗАЦИИ.
- ИТАК, ПРОЦЕДУРА КОМФОРТИЗАЦИИ.
- 28. Процедура наблюдения
- ПРОЦЕДУРЫ И РИТУАЛЫ
- Процедуры и техники.
- Процедура комфортизации («Послушный» и «непослушный» мозг»).
- 3.3. Процедура экспериментирования
- § 4. Порядок работы парламента. Законодательная процедура
- 5.3. Социометрические процедуры