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

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

фрагмента, то это обозначение действует сразу же после данного оператора и до конца текста либо до нового оператора #с!еАпе, переопределяющего данное имя. Слово 'действует' надо понимать следующим образом: пре­процессор подставляет обозначенный именем фрагмент в то место текста, в котором встречается данное имя. Нужно осознавать, что при вставке фраг­мента встречающиеся в нем имена приобретают смысл из контекста вставки (но не описания, как если бы действовали правила (а)(е)). Таким образом, работа препроцессора может создать впечатление нарушения правил лока­лизации имен6.

Следующие два программных текста представляют собой описания на­ших сквозных примеров процедур МуО\лт1прМа1г и Му1прМа1г. Они демон­стрируют возможности определения функций в глобальном контексте для языка С. В данном случае предлагается использовать контекст с описанием одной матрицы:

[1] Если же пользоваться встраиваемыми функциями, то правила локализации имен сохраняют­ся.

В описании локального контекста функции MylnpMatrопределяется пере­менная N, что иллюстрирует пересечение глобального и локального контек­стов по именам. Как было сказано выше, локальное Nделает недоступным для использования в теле функции глобального N, а потому все присваивания значений локальной переменной Nникак не влияют на значение внешней переменной N.

Тело функции MylnpMatrдемонстрирует, каким способом в C/C++ значе­ние функции передается в точку ее вызова: операторreturnN;

В ранних языках для этой цели применяется прием, который назовем алголовский возврат, т. к. впервые он появился в Algol 60: присваивание имени функции (это не переменная, которую можно использовать!) выраба­тываемого значения. Этот прием сегодня можно считать устаревшим, но его приходится сохранять, например, в языках линии Pascalдля преемствен­ности. Следует, тем не менее, заметить, что алголовский возврат значения функции в определенном смысле выразительнее: можно выработать значе­ние, а после этого продолжать другие вычисления функции. Но такая воз­можность всегда достижима с помощью использования переменной нужного типа (в частности, вObjectPascalдля такой переменной вводится специ­альное обозначениеResult,и, тем самым, атавизм языкаPascalможет быть превращен в преимущество).

Новости

  • 1
  • 2
Prev Next

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

24.01.2016

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

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

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

24.01.2016

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

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

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

24.01.2016

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

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

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

24.01.2016

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

Реклама