Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
билеты МП.docx
Скачиваний:
54
Добавлен:
27.03.2015
Размер:
145.11 Кб
Скачать

22. Понятие формального параметра. Использование формального параметра для передачи данных в подпрограмму (исходных данных и результатов).

Формальные параметры – это собственные переменные функции, которым при её вызове присваиваются значения фактических параметров.

В программе с многоуровневой структурой возникает проблема взаимодействия объектов, описанных в разных частях и модулях программы.

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

– локальные,

– формальные,

– глобальные.

Формальные объекты – это объекты, описанные в заголовке определения подпрограммы. Область действия этих объектов – тело подпрограммы. Формальные параметры это также локальные объекты подпрограммы.

Область действия формальных параметров, описанных в прототипе функции – прототип функции.

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

В Си принят единый способ передачи параметров, который называется ПЕРЕДАЧЕЙ ПО ЗНАЧЕНИЮ. Выглядит он так:

-формальные параметры являются собственными переменными функции;

-при вызове функции происходит присваивание значений фактических параметров формальным (копирование первых во вторые);

-при изменении формальных параметров значения соответствующих им фактических параметров не меняются

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

Спецификация каждого параметра имеет вид:

<спецификация типа> <имя параметра>

23. Понятие фактического параметра подпрограммы. Правила связывания формального и фактического параметров.

Фактические параметры – переменные, константы или выражения, значения которых при вызове присваиваются соответствующим по списку формальным параметрам.

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

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

– связь по значению – значение фактического параметра присваивается формальному. Действия в подпрограмме выполняются над формальной переменной, получившей значение фактического параметра. Такой способ используется, прежде всего, для передачи входных данных в подпрограмму;

– связь по адресу (ссылке) – фактический параметр заменяет в теле подпрограммы формальный и подпрограмма получает доступ к фактическому параметру. Если говорить более точно, то формальному параметру присваивается адрес (ссылка) фактического параметра. Значение такого формального параметра при его использовании в операциях рассматривается как адрес того объекта, над которым надо выполнить эту операцию. Такой способ используется как для передачи входных данных, так, и, прежде всего, для выходных данных (результатов). В Си связь между формальными и фактическими параметрами устанавливается по значению. Фактический параметр в этом случае – выражение того же типа, что и соответствующий ему формальный. В момент вызова функции вычисляется значение фактического параметра и присваивается формальному параметру.