Процедури з параметрами
У процедурі можна оголошувати константи, змінні, інші процедури і функції. Розділ опису в процедурах має таку саму структуру, як і в основній програмі.
Оголошені всередині процедури змінні називаються локальними по відношенню до даної процедури. Локальні змінні не доступні поза межами даної процедури. Зміни, які відбуваються з локальними змінними всередині процедури, не впливають на значення змінних з такими самими іменами, які описані поза даною процедурою.
Змінні, які використовуються в процедурі, але описані поза нею, називаються глобальними по відношенню до даної процедури. Будь-які зміни значень глобальних змінних всередині процедури змінюють значення цих змінних поза процедурою.
Приклад програми, в якій використовується принцип локалізації.
Program LOKALIZACIA;
Var A,B: integer;
procedure LOKAL;
var A,X:char;
begin
А:='!';
Х:='?';
В:=В+1;
end;
begin
А:=0;
В:=100;
LOKAL;
writeln('a=',A,' b=',B);
end.
Змінна X — локальна для процедури LOKAL, тому головна програма не може змінити її значення або звернутись до неї.
Змінна В — глобальна для процедури LOKAL, вона відома і в програмі, і в процедурі. Поскільки в процедурі немає іншого оголошення для змінної В, то всі зміни, які відбуваються зі значенням В в процедурі, зберігаються і після виходу з неї.
Змінна А в основній програмі належить до цілого типу, але в процедурі LOKAL є своя власна змінна А, яка належить до типу char. Змінна А з головної програми недоступна в процедурі LOKAL. Всі зміни, які відбуваються зі значенням А в процедурі, втрачають свій зміст при виході з неї.
Отже, в результаті виконання програми LOKAL на екран будуть виведені два числа: а=0 і b= 101.
В Турбо-Паскалі введено розширення мови, завдяки чому в процедурі можуть бути доступними як локальні відносно неї змінні, так і змінні з такими ж іменами, які описані в основній програмі. Для того, щоб реалізувати таку можливість, звернення до змінних в процедурі виконується таким чином. До локальних змінних звернення реалізується просто по їх імені (тобто як в стандартній мові). Для звернення до змінних, які однойменні з локальними, але введені в основній програмі, використовується така форма:
ім'я програми. ім'я змінної
ім'я програми — ім'я програми, яке вказано в заголовку програми "program ..."
ім'я змінної — ідентифікатор змінної, вказаний в розділі опису змінних — "var ...."
З врахуванням цього програму LOKALIZACIA можна перетворити так, щоб в процедурі LOKAL були доступні однойменні змінні, описані як в самій процедурі, так і в основній програмі.
Звернення до процедур і функцій
Program LOKALIZACIA 1;
Var A,B: integer;
procedure LOKAL;
var A,X: char;
begin
A:= '!';
X:= '?';
B:=B+1;
LOKALIZACIAl.A:=LOKALIZACIA1.A+12;
end;
begin
A:=0;
B:=100;
LOKAL;
writeln('a=‘,A,‘b=‘,b);
end.
В результаті виконання програми Lokalizacial на екрані появляться такі значення змінних: а=12 і b=101.
