Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Параметры-значения. Введенная нами в употребление процедура facне очень удобна для использования, поскольку ее назначение зафиксировано слишком жестко




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

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

Такие идентификаторы называются формальными параметрами процедуры, поскольку они представляют не какие-то конкретные значения, а значения "вообще". При каждом обращении к процедуре ее формальные параметры должны конкретизироваться, поэтому для упрощения последующих обращений к процедуре ее формальные параметры явно указываются в заголовке процедуры и тем самым упорядочиваются по их перечислению. При этом для каждого формального параметра должен быть указан тип значения, представляемого этим параметром. Как и в случае описания переменных, этот тип может быть указан только один раз, после списка соответствующих формальных парамет­ров:_

Var p,p1,p2,p3:longint; n,k:byte;

procedure fac(m:byte);

var i:byte;

begin

p:=1;

for i:=1 to m do

p:=p*i;

end;

begin

readln(n,k);

fac(n); p1:=p;

fac(k); p2:=p;

fac(n-k); p3:=p;

c:=p1/(p2*p3);

readln(c:10:2);

readln;end.

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

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

Рассмотренные здесь формальные параметры процедуры носят название параметры-значения, поскольку каждый из них в теле процедуры представляет некоторое значение, задаваемое при обращении к процедуре с помощью соответствующего фактиче­ского параметра. Фактическим параметром в этом случае может быть любое выражение того же типа, что и тип формального па­раметра, в частности — константа или переменная соответствую­щего типа как частный случай выражения.



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


.

mylektsii.ru - Мои Лекции - 2015-2019 год. (0.005 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал