Процедура - фрагмент програми, який має своє ім'я. Якщо в програмі звернемося до імені, в програмі відбувається активізація процедури, що називається викликом процедури.
Після виклику виконуються оператори в процедурі, а по закінченні управління повертається назад в головну програму і виконується оператор, який стоїть за викликом процедури. Опис процедури:
Procedure ім'я_процедури (ім'я_параметра1: тип;
ім'я_параметра2: тип;
var ім'я_параметра3:тип;
.......................):
begin
{тіло процедури} end;
Процедура повертає значення, що визначається, через параметри-змінні, які описуються, як var ім'я_параметра3:тип; в списку параметрів. Параметри, що описуються як ім'я_параметра2: тип; називаються параметрами - значеннями.
Опис функції:
function ім'я_функції (ім'я_параметру) : тип_значення_функції;
begin { тіло функції, в кінці тіла обов'язковий оператор
ім'я_функції:= значення; } end;
Функція завжди визначає тільки одне значення і повертає його до головної програми через своє ім'я. Оператор виклику процедури:
ім'я_процедури(фактичні значення параметрів);
Виклик функції можливий через оператор присвоєння або через параметр процедури або іншої функції:
ім'я_змінної:=ім'я_функції (фактичні значення параметрів);
writeln(ім'я_функції (фактичні значення параметрів));
формальні параметри - це локальні змінні, що використовуються тільки в тілі процедури або функції. Фактичні параметри підставляються під час виклику процедури або функції та замінюють формальні параметри. Для опису параметрів використовується розділ типів користувача: type ім'я_типу=стандартний_тип;
Випреджуючий опис процедур та функцій використовується, коли в програмі необхідно використати процедуру до моменту її опису. Для цього використовується ключове слово FORWARD.
Procedure a( параметри) ; forward;
Procedure b( параметри) ;
Begin
…….
A(P);
End;
Procedure a( параметри) ;
Begin
…….
B(P);
End;
При використанні зовнішніх процедур задається директива компілятора {$L ім'яфайла.OBJ}. Для використання процедур та функцій в головній програмі вони повинні бути об'явлені своїми заголовками та ключовим словом EXTERNAL;
{$L ім'яфайла.OBJ}
Procedure Proc1; EXTERNAL;
Procedure Proc2(X,Y:Byte); EXTERNAL;
Function Func1(X,Y:Byte):word; EXTERNAL;