Непейвода Н.Н. Программирование. Раздел 3

Непейвода Н.Н. Программирование. Страница 347

doubleс = sum ( N, sin) / sum ( N, cm );

делает именно то, что нужно.

С точки зрения надежного программирования здесь плохо только то, что не видно различий между косвенным обращением к чемулибо и вы­зовом процедуры, задаваемой в качестве параметра. Более строгая форма процедурной параметризации, представленная, например, в языке Pascal, позволяет это делать. Так, описаниезаголовкафункции

function sum (N : Integer; function M (X : Real): Real): Real;

указывает, что второй параметр является функцией. Это очень похоже на C/C++.Но вот вызов этого параметра гораздо проще: М (<значение типа Real>). Эта конструкция прямо указывает на обращение к процедуре или функции без указания каких бы то ни было деталей реализации. То, что при таком вызове никогда не произойдет коллизий со списками параметров, гарантируется описанием формального параметраподпрограммы, которое специфицирует возможные фактические параметры.

В контексте приведенного описания правомерны выражения sum(N,sin) и sum(N,cm), поскольку sinи cmявляются функциями, вырабатывающими значения вещественного типа с вещественным или целым (почему?) пара­метром, как того требует спецификация формального параметрафункции М. Следовательно, требуемое вычисление f(N) не отличается от того, как оно записывается вC/C++.

По правилам языка Pascalформальный параметрфункция задается в списке параметров с помощью синтаксической конструкции<заголовок функции>, которая определяет шаблон для всех функций, подходящих для подстановки в качестве фактического параметра. Совершенно аналогич­но задается параметрпроцедура, для которого шаблоном служит заголовок процедуры. Употребляемое в таких заголовках имя подпрограммыпарамет­ра обозначает ее для использования в конструкции вызова процедуры или функции. Оно является именем формального параметра. Заголовок проце­дуры или функции, используемый для определения формального параметра, называется спецификацией параметра.

Новости

  • 1
  • 2
Prev Next

Ракета "Ангара-А5В" в ближайшее десятилетие не полетит

24.01.2016

Ракета &quot;Ангара-А5В&quot; в ближайшее десятилетие не полетит

Роскосмос не планирует в течение ближайшего десятилетия осуществлять пуск тяжёлой ракеты-носителя А...

Ученые РФ опровергли выводы исследований о вреде ГМО

24.01.2016

Ученые РФ опровергли выводы исследований о вреде ГМО

Исследователи из Института проблем передачи информации (ИППИ РАН) проанализировали несколько самых п...

Летающие "Крокодилы"

24.01.2016

Летающие &quot;Крокодилы&quot;

20 удивительных фактов о боевом вертолете Ми-24.Этот вертолет стал таким же узнаваемым символом сове...

В Аргентине описали новый вид динозавра-гиганта

24.01.2016

О ранее неизвестном виде динозавра, относящемуся к инфраотряду зауроподов, рассказали аргентинские п...

Реклама