Процедуры и функции в Паскале
Далее описывается объявление и использование функций и процедур в Паскале.Функции объявляются следующим образом:
function <имя_функции> (<список_параметров>): <тип_результата>;
В отличие от констант и переменных, объявление подпрограммы может быть оторвано от ее описания. В этом случае после
объявления нужно указать ключевое слово forward:
function <имя_функции> (<список_параметров>): <тип_результата>; forward
Процедуры в Паскале следует объявлять так:
procedure <имя_процедуры> (<список_параметров>);
Если объявление процедуры оторвано от ее описания, нужно поставить после него ключевое слово forward:
procedure <имя_процедуры> (<список_параметров>); forward;
Описание подпрограммы должно идти после ее объявления. Оно осуществляется по следующей схеме (единой для процедур и
функций):
uses <имена_подключаемых_модулей>;
label <список_меток>;
const <имя_константы> = <значение_константы>;
type <имя_типа> = <определение_типа>;
var <имя_переменной> : <тип_переменной>;
procedure <имя_процедуры>
<описание_процедуры>
function <имя_функции>
<описание_функции>;
begin
{начало тела подпрограммы}
<операторы>
end; (* конец тела подпрограммы *)
пример описания процедуры на Паскале:
procedure err(c:byte; s:string);
var zz: byte;
begin
if c=0 then writeln(s)
else writeln('Ошибка!')
end;
Основное различие между функциями и процедурами в Паскале состоит в количестве возвращаемых ими значений.
Любая функция, завершив свою работу, должна вернуть основной программе (или другой вызвавшей ее подпрограмме) ровно одно
значение, причём его тип нужно явным образом указать уже при объявлении функции.
Для возвращения результата применяется специальная "переменная", имеющая имя, совпадающее с именем самой функции.
Оператор присваивания значения этой "переменной" обязательно должен встречаться в теле функции хотя бы один раз.
Пример написания функции на Паскале:
function min(a, b: integer): integer;
begin
if a>b then min:= b
else min:= a
end;
В отличие от функций, процедуры вообще не возвращают (явным образом) никаких значений.