y:=1; for_i:=1_to_n_do y:=y*x;
End;
где x и y – глобальные параметры;
В данном случае процедура STEP2 не содержит списка формальных параметров и работает только с локальной переменной i, описанной в данной процедуре, а переменные x, n и y обязательно должны быть описаны в основной программе с помощью описателя var. В последующем случае такие переменные x, n и y называются глобальными (общими) по отношению к процедуре step2, т.е. значения глобальных переменных могут быть доступны как для головной программы, так и для самой процедуры.
Данные два варианта процедур для одного и того же алгоритма рассмотрим в составе головной программы. С этой целью заменим имена переменных n- на m, x- на a и
y- на z. Т.е. в процедуре y, x и n- формальные параметры, а
z, a и m- фактические параметры головной программы. Кроме того, исходя из того, что показатель степени может быть нулевым, положительным и отрицательным, выражение возведения в степень запишем более подробно:
1, если m |
0; |
|
||
z am am , если m |
0; |
|
||
1 |
, если m 0; |
|
||
|
|
|
||
|
am |
|
||
|
|
z a |
m |
1 |
|
|
|
||
|
|
|
am |
|
|
|
|
|
|
Здесь
С учетом последнего обстоятельства, взяв за основу процедуру Step1, составим структурную схему общего алгоритма возведения в степень (головная программа – процедура):
|
|
|
|
|
|
НАЧАЛО |
|
|
|
|
|
|
|
|
|
|
|
|
|
Ввод a,m |
|
|
|
|
|
|
|
|
|
|
да |
|
m=0 |
|
нет |
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
z:=1 |
|
|
|
|
|
|
|
|
|
||
нет m>0 |
|
да |
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
||||
STEP1 |
|
|
|
STEP1 |
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
-m,1/a,z |
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ПЕЧАТЬ Z
КОНЕЦ
Рис. 4.2.6. Структурная схема
алгоритма возведения в степень.
Полезно, также, привести отдельную структурную схему алгоритма процедуры возведения в степень (например STEP1)
Вход в процедуру
(1,x)
y:=1
i=i(1)…n
y:= y*x
Выход из процедуры
с переменной (y)
Рис. 4.2.7. Структурная схема процедуры.
Данным структурным схемам алгоритма соответствует следующий вариант программы:
Program_step4;
Var
m:integer;
a, z:real;
Procedure_step1 (n:integer; x:real; var y:real); Var
i:integer; Begin
y:=1; for_I:=1_to_n_do y:=y*x;
end;
Begin
Read (a, m);
if_m:=0_then_z:=1; else_if_m>0_then_step1 (m, a, z); else_step1 (-m, 1/a, z);
Write (z); End.
В данной программе обращение к процедуре step1 дважды осуществлено с помощью оператора if.
При этом, в процедуре произойдет замена формальных параметров n, x, y на фактические m, a, z. В другом случае - n, x, y на m, 1/a, z и затем в головную программу осуществляется возврат с результатом z, который в процедуре выступает как y.
Составить второй вариант программы, используя процедуру step2 без параметров (глобальные параметры или переменные).
Program_step5; Var
n:integer;
x,y:real;
Procedure_step2; Var
i:integer; Begin
y:=1; for_i:=1_to_n_do y:=y*x;
end;
Be gin
Read(n, x); if_n:=0_then_y:=1 else
if_n>0_then_step2 else;
Begin
n=-n; x:= 1x ;