Локальные и глобальные переменные.
End.
Begin
Begin
p:= (a+b+c)/2;
Str:= SQRT(p*(p-a)*(p-b)*(p-c));
end;
write(’ введите стороны: a,b,c,d,e,f,k ’);
readln (a,b,c,d,e,f,k );
Sfig:= Str(a,b,c) + Str(b,d,e) + Str(c,f,k);
writeln (’ площадь фигуры : ’ , Sfig );
Рис. C Схема алгоритма примера 4
При каждом обращении к функции Str вычисляется площадь одного из треугольников, составляющих многогранник, поэтому именно стороны этого треугольника перечисляются в скобках. При 1-м обращении происходит замена формальных параметров a,b,c на фактические a,b и c соответственно. Совпадение имен формальных и фактические параметров случайно. При 2-м обращении происходит замена формальных параметров a,b,c на фактические b,d и e соответственно; при 3-м обращении - на c,f и k соответственно. В подпрограмме используется локальная переменная p.
В описательной части как основной программы, так и подпрограммы объявляются метки, константы, переменные и другие величины. Те из них, что объявлены в головной программе называются глобальными, а величины, объявленые в подпрограмме- локальными.
Глобальные величины оказывают влияние на всю программу, они доступны в любом месте программы, в том числе в любой ее подпрограмме.
Локальные(вспомогательные) величины доступны только внутри подпрограммы. Обращение к ним в любом месте, кроме подпрограммы, где она определена невозможно.
Пример 5. В предыдущей программе PL (примера 4) локальной переменной функции Str является p. Она доступна только внутри функции Str и не доступна в основной программе. Это значит, что при обращении к ней в основной программе при трансляции будет выдано сообщение об ошибке, а именно "p-неопределенный идентификатор".
Имена в программах, содержащих подпрограммы, целесообразно выбирать так, чтобы имена локальных и глобальных параметров не совпадали. Это делает программу нагляднее.
В тех случаях, когда в подпрограмме и основной программе используются одни и те же имена параметров (подпрограмма связана с основной программой посредством глобальных переменных), подпрограмму можно организовать без параметров.