Osnovy_informatiki_-_7_Parametry_podprogramm
.pdfПараметры подпрограмм
2012
Параметры – средство обеспечения массовости и результативности алгоритма, реализуемого подпрограммой
При описании подпрограммы используются формальные параметры
При вызове подпрограммы указываются фактические параметры
В момент вызова подпрограммы происходит передача (подстановка) параметров
2 |
27.10.2012 |
Чердынцева М.И. мехмат ЮФУ |
Способы передачи параметров
Способ передачи определяет, что будет использовано в качестве формального параметра при выполнении подпрограммы
Два способа передачи:
–По значению
–По ссылке
В большинстве языков программирования способ передачи определяется при описании подпрограммы (в спецификации формальных параметров)
3 |
27.10.2012 |
Чердынцева М.И. мехмат ЮФУ |
Спецификация формальных параметров
Для каждого формального параметра определяется
–Имя
–Тип
–Способ передачи
4 |
27.10.2012 |
Чердынцева М.И. мехмат ЮФУ |
procedure Mean (A: integer; B: real; var MA,MG: real);
Параметры:
A – целого типа, передается по значению
B – вещественного типа, передается по значению
MA, MG –вещественного типа, передаются по ссылке
5 |
27.10.2012 |
Чердынцева М.И. мехмат ЮФУ |
Формальные параметры
Являются локальными переменными подпрограммы
Область видимости – подпрограмма
Время жизни – от начала выполнения подпрограммы до ее завершения
При вызове подпрограммы (входе) происходит выделение памяти, при завершении (выходе) – освобождение памяти (автоматическая память)
6 |
27.10.2012 |
Чердынцева М.И. мехмат ЮФУ |
Передача по значению
Выделяется память для хранения значения фактического параметра.
При вызове вычисляется значение фактического параметра, если необходимо и возможно, производится преобразование значения к типу формального параметра
Значение копируется в память, выделенную для формального параметра
7 |
27.10.2012 |
Чердынцева М.И. мехмат ЮФУ |
Mean (3, 2*C+1, MA1, MG1);
в теле процедуры
A:= 3;
B := real (2*C+1);
8 |
27.10.2012 |
Чердынцева М.И. мехмат ЮФУ |
Передача по ссылке
Выделяется память для хранения адреса (ссылки) фактического параметра.
При вызове адрес фактического параметра копируется в память, выделенную для формального параметра.
Обращение к формальному параметру в подпрограмме – обращение к переменной, адрес которой хранится в формальном параметре (косвенная адресация)
9 |
27.10.2012 |
Чердынцева М.И. мехмат ЮФУ |
Mean (3, 2*C+1, MA1, MG1);
MA:=@MA1;
MG:=@MG1;
10 |
27.10.2012 |
Чердынцева М.И. мехмат ЮФУ |