6.3. Локальные и глобальные переменные.
Локальные переменные - это переменные, которые описываются внутри подпрограммы и могут быть использованы только этой подпрограммой.
Глобальные переменные - это переменные, которые описываются в главной программе и могут быть использованы как главной программой, так. и любой из подпрограмм.
Рассмотрим пример, программы, которая использует функцию, описанную в примере 6.1.
Пример 6.2. Вьмислить математическое выражение
s t З
с:=а +b +(а+Ь) ,
результат вывести на печать.
program Primer62;
var a; b; c, s, t : integer; {Описание глобальных переменных}
function StepN (a, n : integer):integer;
var an, i : integer; { Описание локальных переменных}
begin
an := l;
for i:=l to n do
an := an*a;
StepN := an
end;
begin
writeln('a,b,s,t:');
read (a,b,s,t);
c := StepN(a,s)+StepN(b,t)+StepN((a+b),3);
write(c:5:2)
end.
Параметры, записываемые в обращении к функции, называется фактическими, а параметры, указанные в описании функции, называются формальными.
В примере 6.2 а и n - формальные параметры. Фактические параметры указываются при каждом обращении к функции StepN. Тип фактических параметров определяется типом формальных параметров. Перед вычислением функции, формальным параметрам присваиваются значения фактических параметров. Фактическими параметрами могут не только константы и переменные, но также и выражения.
Приведем еще один пример подпрограммы-функции.
Пример 6.3. Написать подпрограмму-функцию для вычисления гиперболического косинуса
ch(х)=(ехр(х)+ехр(-х))/2.
function Ch (Т:real):real;
begin .
Ch := (exp(T)+exp(-T))/2
end;
6.4. Процедуры.
Процедуры, это такие подпрограммы, которые, в отличие от функций, возвращают несколько значений (результатов) или просто выполняют ряд специальных действий.
Общий вид описаний процедуры:
PROCEDURE <Имя процедуры> (<формальные параметры: тип форм. парам.);
Рассмотрим пример подпрограммы-функции.
Пример 6.4. Написать процедуру нахождения max и min элемента из двух целых чисел а и Ь.
procedure minmax (aa,bb:Integer; var min,max:integer);
begin
if aa>bb then
begin
min := bb;
max := aa;
end
else begin
max := aa;
min := bb;
end
end.
Здесь aa и bb - параметры-значения; a min,max - параметры-переменные.
Среди параметров процедуры выделяют параметры-значения и параметры-переменные. Параметры-значения выполняют роль входных параметров процедуры. Они могут получать значения фактических параметров, но не могут передавать свои значения фактическим параметрам. Параметры-переменные выполняют роль как входных, так и выходных параметров процедуры. Они могут получать значения фактических параметров, изменять их в процедуре и возвращать новые значения фактическим параметрам. Для выделения параметров-переменных перед ними ставится слово VAR в формальных параметрах [7].
Пример 6.5. Написать процедуру, которая вычисляет квадрат и квадратный корень суммы трех переменных вещественного типа а, Ь, с и присваивает полученные результаты формальным переменным X и Y соответственно.
procedure expres (a,b,c:real: var х,у:real);
var z:real;
begin
z :=a+b+c;
x :=sqr(z);
y :=sqrt(z);
end;
Эту процедуру можно вызвать таким образом:
expres(25.4, 44.5, 30, xl, yl).
В данном случае процедура expres вычислит квадрат и квадратный корень суммы трех переменных 25.4, 44.5, 30 и результаты присвоит фактическим переменным xl и у1 соответственно.
Допускается одинаковое обозначение фактических и формальных параметров. Тип фактических параметров должен соответствовать типу формальных параметров.
В качестве фактических параметров, которым соответствуют параметры-переменные, могут быть только переменные; формальные параметры представлены только именами (константы и выражения не допустимы).
Пример 6.6. Написать процедуру, которая меняет местами значения переменных а и Ь. В данном случае параметры-переменные а и b выполняют роль как входных, так и выходных параметров
procedure excheng (var a,b:integer);
var t : integer;
begin
t :=a;
a :=b;
b :=t;
end;
