Студопедия

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

Разделы сайта

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






Параметры-значения. Введенная нами в употребление процедура 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.

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

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

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

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






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.