Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика (Delphi) (3 семестр) / лк3_1Подпрограммы.ppt
Скачиваний:
11
Добавлен:
31.03.2015
Размер:
175.62 Кб
Скачать

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

Схема памяти

Схема памяти

 

программы –

подпрограммы –

 

фактические параметры

формальные параметры

 

 

при вызове подпрограммы

Имена

A

 

 

D

 

 

 

 

 

 

 

 

 

 

формальных и

 

 

 

 

 

 

фактических

 

 

B1

 

 

B1

 

 

параметров никак

 

 

 

 

 

 

 

не связаны

 

 

 

 

 

 

 

 

B5

 

B5

 

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

результаты нельзя передавать по значению.

Замена формальных параметров на

фактические по ссылке (адресу)

Схема памяти

 

Схема памяти

программы –

 

 

подпрограммы –

фактические параметры

 

 

формальные параметры

при вызове подпрограммы

 

 

 

Двойная адресация:

A

D

формальный параметр

(адрес данного)

значение данного (из

B1

B

памяти программы)

 

B5

При пересылке адресов подпрограмма работает с памятью программы, все изменения происходят с данными программы результаты

передаются по ссылке.

Когда применять замену по адресу,

акогда - по значению?

Переменные, являющиеся результатом выполнения

подпрограммы, должны вызываться по адресу.

Если фактическое значение может быть константой или выражением,то надо использовать вызов по значению.

Массивы, как правило, передаются по адресу (с целью экономии памяти).

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

ПОДПРОГРАММЫ

ОБЩЕГО

НАЗНАЧЕНИЯ

ФУНКЦИИ

Имя функции - не только имя алгоритма, но и имя результата.

Функция, как правило, имеет один основной результат.

ПОДПРОГРАММЫ В СИ -ФУНКЦИИ

ОБЩЕГО НАЗНАЧЕНИЯ – функции типа void

ФУНКЦИИ,

возвращающие значения (любого типа, отличного от void)

ПОДПРОГРАММЫ В ПАСКАЛЕ

ОБЩЕГО НАЗНАЧЕНИЯ – процедуры (procedure)

ФУНКЦИИ

(function)

ПАСКАЛЬ: ОПИСАНИЕ ПРОЦЕДУР

Заголовок;procedure ИмяПроцедуры [(CписокФормальныхПараметров)]

Блок Описания (ConstTypeVar

процедуры и функции) begin

Операторы

end;

«вход» и «выход» процедуры

ПАСКАЛЬ: список формальных параметров подпрограммы

Секция1; Секция2;...;СекцияN Секция имеет вид:

[VAR] CписокПеременных :Тип;

если VAR имеется, то передача по ссылке (параметр-переменная); иначе

– по значению (параметр-значение)

стандартный или имя нестандартного

Секция

параметров-значений параметров-переменных параметров-подпрограмм

Данные подпрограммы

локальные

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

формальные и

 

 

 

 

 

 

доступны

 

внутреннего

 

 

 

 

 

 

только в блоке

 

блока

 

 

 

 

 

 

подпрограммы

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

место в

 

 

 

 

 

существуют

 

 

памяти - стэк

 

 

 

 

 

пока работает

 

 

 

 

 

 

 

 

 

 

подпрограмма

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

память

распределяется при выполнении

глобальные

описаны по внешнем блоке (программе)

место в памяти – статический сегмент

память

распределяется при компиляции (вызове подпрограммы)

доступны во всей программе; в подпрограмме недоступны, если есть локальное данное с тем же именем

существуют все время работы программы

Обращение к процедуре

ИмяПроцедуры [(CписокФактическихПараметров)]