Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Программисту -> Непейвода Н.Н. -> "Основания программирования " -> 140

Основания программирования - Непейвода Н.Н.

Непейвода Н.Н., Скопин И.Н. Основания программирования — Институт компьютерных исследований , 2002. — 919 c.
Скачать (прямая ссылка): osnovanprogramm2002.pdf
Предыдущая << 1 .. 134 135 136 137 138 139 < 140 > 141 142 143 144 145 146 .. 316 >> Следующая

налогично мо но вделить и другие сопрограмм транслятора: процесс работы с таблицей имен, анализатор контекстных зависимостей, генератор объектного кода и др. (конкретный набор сопрограмм зависит от архитектуры транслятора).
При явном описании таких сопрограмм появляются определенные пре-имуества:
• автономная и во многом независимая их разработка (зависимости сводятся к определению протокола в качестве соглашения о взаимодействиях),
• осуествимость различных стратегий реализации кадой из сопрограмм,
• упроение задачи распараллеливания.
400
ГЛАВА 8. ПОДПРОГРАММЫ
§ 8.5. ПАРАМЕТРИЗАЦИЯ
араметризация — ванейий способ связи экземпляра программы с динамическим контекстом. анное понятие заслу ивает серьезного анализа. 8.5.1. Назначение параметризации
Мы уже определяли параметризацию с точки зрения контекстов (см. § 8.3), определим ее с точки зрения действий.
Определение 8.5.1. Параметризация — средства языка программирования, которе позволя т явно сопоставлять некоторм именам из локального контекста процедуры (формальным параметрам) данные из динамического контекста вызова, называемые фактическими параметрами. Формальные параметр в ходе выполнения вызова процедуры имену т фактические. роцесс замен формальных параметров на фактические при вызове процедуры называется передачей параметров. Конец определения 8.5.1.
С конкретно-синтаксической точки зрения параметры делятся на позицион-не и кл чевые.
ри позиционной форме совокупности формальных и фактических параметров представляют собой упорядоченные списки, а связь между ними задается путем взаимно однозначного соответствия меду списками: кадо-му формальному параметру соответствует фактический, имеий тот е порядковй номер, что и формальный параметр. ри кл чевой форме ка-
дому параметру приписвается кл ч — имя, по которому он распознается. Фактический параметр, помеченный ключом, считается соответствующим формальному параметру с данным кл чом (часто для пометки используется синтаксис, подобный оператору присваивания: <ключ>"="<фактический параметр^. И спользование ключевой формы позволяет задавать фактические параметры в произвольном порядке, делает наглядной часичну параме-
ризаци , когда фактические параметры устанавливаются не для всех формальных параметров, а только для некоторых. Тем самым вызов процедуры с не полность заданными параметрами превраается в заготовку для в -зова процедуры с меньим числом параметров, что соответствует математическому поняти частичной функции и стил функционального програ-мирования. К сожалению, в существующих языках программирования это средство развито слабо. Ключевая форма удобна, когда для формальных параметров определено некоторое стандартное задание, и тогда урпоминание некоторых параметров мо но опускать при взове подпрограмм для ис-
8.5. ПАРАМЕТРИЗАЦИЯ
401
полнения. рактически только для этой цели и использу тся кл чевые параметры в общераспространенных системах программирования.
В практике программных систем часто применяется разновидность ключевой формы параметризации для параметров-признаков: вместо фактического параметра, который дол ен указывать на наличие признака, просто упоминается кл ч, а отсутствие признака отмечается отсутствием кл ча. стреча-ются другие разновидности ключевой формы параметризации. Такие формы обыкновенно применяются в командных строках.
озиционная форма более традиционна, в частности, она принята в С/С++, Pascal и в больинстве других популярнх языков. на болье приспособлена для контроля количества передаваемх параметров и согласования типов фактических параметров с типами формальных параметров (см. ниже).
Пример 8.5.2. Вызов с позиционными параметрами:
f(a+b,c[i],&d); Вызов с кл чевыми параметрами:
\includegraphics[scale=1.50, rotate=90]{ris2-1.eps} ве формы такого е взова, когда значения, предполагаемые по умолча-ни , опуска тся, и когда они зада тся явно:
\includegraphics{ris2-1.eps} \includegraphics[scale=1.00, rotate=0]{ris2-1.eps} Кл чевой параметр-признак:
copy /b filel.dvi file2.dvi
Конец примера 8.5.2.
Уменьшение привязанности процедур и функций к контексту — лишь одна из задач, реаемых с помоь параметризации. ругая, не менее ваная задача, — это повышение гибкости программирования. Благодаря параметризации можно объединять в процедуре не только совпадающие, повторяющиеся в основной программе вычисления, но и похо ие вчисления, отлича -щиеся своими параметрами — программными объектами, которые конкре-тизиру т выполнение вычислений процедуры при ее вызове. ри составлении текста процедуры такие объект долн бть тем или иным способом обозначены; о таких обозначениях известно, что они употребля тся в процедуре для замеения конкретных объектов, используемых при вызове.
В большинстве языков программирования способ обозначения параметров связывается с использованием идентификаторов в качестве имен фор-мальнх параметров: эти имена описыва тся в заголовках процедур. Как
402
ГЛАВА 8. ПОДПРОГРАММЫ
альтернатива идентификаторам, в некоторх языках использу тся порядковые номера параметров (специально оформленные синтаксически, например, выражения вида #5 в системе TeX). Этот путь в общем случае неудобен из-за сни ения уровня абстракций по сравнени с именами-идентификаторами, но целессообразен, когда м задаем процедуру, которая мо ет выз -ваться с очень больим нефиксированным числом параметров.
Предыдущая << 1 .. 134 135 136 137 138 139 < 140 > 141 142 143 144 145 146 .. 316 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100