Програмування допоміжних алгоритмів
var
i: integer;
{ локальна змінна i буде використовуватись як параметр циклу }
begin
{ тіло процедури задає дії }
p:=1;
for i:=1 to k do p:=p*i;
end;
В деяких випадках потрібно при оголошенні деякої процедури використати посилання на іншу процедуру, яка ще не була оголошена, але яка буде оголошена далі. В такому випадку використовують випереджальне оголошення.
Оголошенням, що випереджає, називається оголошення процедури, що задає директиву forward замість блока описів та блоку операторів. Після цього оголошення процедура повинна бути визначена за допомогою визначального оголошення, тобто такого оголошення процедури, що використовує такий же ідентифікатор процедури, але опускає список формальних параметрів і містить блок описів і блок операторів. Оголошення, що випереджає, і визначальне оголошення повинні знаходитися в одній і тій же частині оголошення процедур і функцій. Між ними можуть бути оголошені інші процедури і функції, і вони можуть викликати процедуру з оголошенням, що випереджає. Таким чином, можлива взаємна рекурсія. Як правило, такий запис процедури використовується саме при взаємній рекурсії.
Оголошення, що випереджає, і визначальне оголошення складають повне оголошення процедури. Вважається, що процедура задана в оголошенні, що випереджає.
ПРИКЛАД оголошення, що випереджає:
procedure first(k: integer; var p: integer): forward;
{випереджальне оголошення}
procedure second(var n: integer; var s:real);
{дана процедура використовує процедуру first,тіло якої буде задано далі}
begin
...
first(n,m); { виклик процедури, що ще не оголошена }
...
end;
procedure first;