Материал: Алгоритмический язык Turbo Pascal 7.0. Юршин Е.Д., Рог А.И

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

передачу данных через фактические параметры – переменные, но с другой стороны описание всех параметров переменных нежелательно по двум причинам:

во-первых – это исключает возможность вызова процедуры с фактическими параметрами в виде выражения, что делает программу менее компактной, (необходимы соответствующие добавки к ней):

во-вторых, и главных в процедуре возможно случайное использование формального параметра для временного хранения промежуточного результата. Т.е. существует опасность непредсказуемой порчи значения переменной. Вот почему параметрами-переменными следует объявлять только те, через которые процедура передает результаты для головной программы. Таким образом, чем меньше формальных параметров объявленной параметрами - переменной и чем меньше в процедуре используются глобальные переменные, тем меньше опасность получения непредсказуемых ошибочных результатов и тем проще вся программа в целом и ее отладка. По той же причине не рекомендуется использовать параметры-переменные в заголовке нестандартной функции.

С учѐтом последнего обстоятельства, взяв за основу процедуру Step1, составим структурную схему общего алгоритма возведения в степень (головная программа - процедура):

структурную схему вышеприведенного алгоритма возведения в степ Рассмотрим конкретный пример на составление процедуры без головной программы. Пусть необходимо оформить в виде отдельной процедуры алгоритм вычисления степени:

yxn

снатуральным (целочисленным) показателем степени n.

x x x x

Такая задача возникает в связи с тем, что на

языке

TURBO PASCAL нет такой стандартной операции, в соответствующей библиотеке (см. таблицу набора стандартных функций); хотя с помощью стандартных функций LN(x) и EXP(x) можно реализовать такую функцию. Сейчас же рассмотрим другой вариант программной реализации такого алгоритма, т.е.

вычисление такой степени, nможно осуществить,

используя выражение: y=

x

n раз

Для вычисления указанного произведения необходимо организовать циклi с параметром , в котором осуществлялось бы постепенное накопление произведения Y по следующему алгоритму: до начала цикла должно быть (иначе - умножение на ноль) Y=1 и затем на каждом цикле значение Y должно изменяться следующим образом, для ( i =1,2,…,n)- y:=y*x;

Таким образом, шаг изменения цикла должен быть равен 1 и будет осуществлен N раз. В результате реализации такого алгоритма в виде отдельной программной единицы, оформленной в виде процедуры по вышеприведенным правилам, процедура будет выглядеть следующим образом:

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;

В заголовке данной процедуры с именем step1 перечислены формальные параметры – значения N и X, определяющие исходные данные процедуры (фактические те числовые значения они должны получить из головной программы). И параметр – переменную y – результат работы процедуры, значение которой «уходит» в головную программу. В рассматриваемом заголовке также указан тип этих параметров. Так как переменная i находится в процедуре и ее значение не уходит в головную программу (местные переменные), поэтому она должна быть описана с помощью оператора var. Теже процедуры состоят из:

описательной части, где определена переменная i, необходимая и имеющая смысл только внутри данной процедуры и называется локальной переменной. При этом значение локальной переменной не допустимо в основной программе.

составного оператора begin-end, реализующего выше изложенный алгоритм вычисления степени.

Выше было отмечено, что процедуру иногда оформляют и без параметров (с указанием ее имени), тогда другой вариант такой процедуры будет выглядеть следующим образом:

Procedure_step2;

Var

i:integer;

Begin

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;

z

a

m

1

 

 

 

 

 

 

 

am

 

 

am

 

здесь

 

 

При написании программы необходимо составить ень:

Полезно также привести структурную схему алгоритма процедуры возведения в степень (например

STEP1):

 

НАЧАЛО

 

 

Ввод a,m

 

да

m=0

нет

z:=1

 

m>0

STEP1

STEP1

-m, 1/a, z

(m, a, z)

Источник: https://studfile.net/preview/16565609/