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

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

Как видно из примера, правило задания спецификации параметровфунк­ций и процедур избыточно: оно требует указания имен формальных парамет­ров специфицируемого параметраподпрограммы (в примере — X), тогда как необходимой и достаточной информацией являются лишь их типы (в приме­ре — Real). При выборе изображения для таких спецификаций автор языка Pascalстремился к минимизации синтаксических понятий языка, а пото­му отдал предпочтение указанному виду. В этой связи стоит отметить, что многие другие системы программирования в подобных случаях не требуют указания избыточных имен.

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

В языке Pascalпередача процедуре алгоритма в качестве параметра под­чиняется существенному ограничению: все параметры процедур, которые используются в качестве фактических параметров, подставляемых вместо формальных параметровпроцедур, должны быть параметрамизначениями. В частности, невозможно, чтобы у таких параметров были бы свои парамет­рыпроцедуры. Введение такого ограничения разумно, поскольку без него возможности контроля параметризации неоправданно сужаются (об этом речь пойдет ниже). Понятно, что в C/C++ просто нет места для этого огра­ничения.

Новости

  • 1
  • 2
Prev Next

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

24.01.2016

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

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

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

24.01.2016

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

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

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

24.01.2016

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

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

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

24.01.2016

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

Реклама