Використовувати глобальні змінні в підпрограмах не завди добре. Тому ,якщо це можливо, слід уникати таких змінни, оскільки
1) підпрограма, яка використовує глобальні змінні стає меньш універсальною. При переносі такої підпрограми в другу програму треба слідкувати за обміном даних програмами за допомогою глобальних змінних ;
2) При використанні глобальних змінних зростає ризик помилок, які часто важко знайти.
Такі процедури чи функції можуть мати неочікувані побічні ефекти.
Приклад .
Program pob_ef;
Var
m: integer;
function f(n:integer):integer;
begin
f:=sqr(n)+5;
m:=m+1;
end;
begin
m:=2;
writeln(‘добуток міняється при перестановці множників’);
writeln(‘m *f(4)=’,m,’ *’,f(4));
writeln(‘f(4) *m =’,f(4),’ *’,m);
writeln(‘Натисніть Enter’);
readln;
end.
В прикладі підпрограма-функція f робить той алгоритм, який в ній запрограмований і, крім того, змінює значення глобальної змінної m, тому результат отримаємо невірний.