При использовании пользовательских процедур или функций все переменные, используемые в программе делятся на:
ü глобальные – описанные в основной программе («видны» и в основной программе и в процедуре (функции)),
ü локальные – описанные в процедуре или функции («живут» только во время работы процедуры или функции).
! На начальном этапе использования пользовательских процедур в программе рекомендуется использовать различные имена переменных в процедуре и основной программе.
Пример 2: Дано предложение. Вводится 5 символов. Заменить каждый символ на подчеркивание и рассчитать количество его повторов в предложении. Использовать одну процедуру для подсчета количества символов и замены.
program primer2;
var s:string;
t:char;
k,i:integer;
procedure Z (f:char; var st:string; var n:integer);
var i:integer;
begin
n:=0;
for i:=1 to length(st) do
if st[i]=f then n:=n+1;
for i:=1 to length(st) do
if st[i]=f then st[i]:='_';
end;
BEGIN
write('Исходное предложение: ');
readln(s);
for i:=1 to 5 do
begin
write('Введите символ: ');
readln(t);
Z (t,s,k);
writeln('Символ ',t,' повторяется ',k,' раз.');
end;
writeln('Получившееся предложение: ',s);
END.
В скобках указываются те параметры, которые должны передаваться из основной программы в процедуру (без слова var) и те параметры, которые возвращаются процедурой (задаются или изменяются внутри процедуры – после слова var). Например, для подсчета количества символов и их замены, необходим исходный параметр типа char, изменяемый параметр (строка – string) и изменяемый параметр для вывода количества повторов (integer). Имя тех переменных, которыми они будут обозначаться внутри процедуры и их тип указываются сразу после названия процедуры в скобках (перед изменяемыми параметрами ставится var).
Процедуру можно сравнить с отдельной программой, набранной в тексте основной, поэтому она использует свои переменные и даже если они совпадают по названию с описанными в основной программе, все равно процедура использует только свои собственные переменные (смотри корректную работу двух переменных i, описанных как в основной программе, так и в процедуре).