logo
ЯП / ЯП / ЯП экзамен

Передача параметров подпрограмме.

Способы передачи параметров

  1. Семантика COPY IN – копировать значение фактического параметра, в место памяти, выделенного для формального параметра. Особенности: функция возвращает только 1 результат, но если вычисления сложные, то может понадобиться возврат нескольких значений. Для того чтобы это осуществить нужно задать в процедуре несколько фактических параметров, которым могут быть присвоены результаты вычисления.

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

    2. Параметр может быть настолько большим, что копировать его не эффективно.

  2. Семантика COPY OUT - Фактический параметр должен быть переменный, а подпрограмме передается адрес фактического параметра, которая она сохраняет. Для формального параметра используется временная локальная переменная, и значение должно быть присвоено формальному параметру хотя бы один раз, во время выполнения подпрограммы. Когда выполнение подпрограммы завершено, значение копируется в переменную, для которой указывают сохраненный адрес.

  3. Семантика COPY IN/OUT – фактически параметр копируется в подпрограмму, когда она вызывается. Результирующее значение копируется обратно после её завершения.

  4. Семантика ссылки – передает адрес фактического параметра и обращается к параметру косвенно.

  5. Формальные параметры являются внутренними элементами подпрограммы. Большинство языков программирования различают входные и выходные парамметры. Бывают параметры входные/выходные. Описание и использование параметров является специфичным для каждого языка программирования. В С все параметры являются входными, а для выходных используется передача указателя. Изменение входных параметров внутри подпрограммы никак не сказываются на фактических параметрах.

Поэтому в качестве фактических параметров, могут выступать любые выражения.

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

Параметры подпрограммы имеют соответствующую область памяти. Они недоступны вне этих подпрограмм.

Глобальные переменные программы доступны внутри подпрограмм только в случае, если никакой параметр подпрограммы не имеет такое же имя.

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

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