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

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

Иное дело, что Pascalпредлагает возможность передачи параметрамас­сива как значения. Сделать это очень просто: удалить varиз заголовка. Но к чему это приведет? Как уже отмечалось, параметрзначение приво­дит к образованию локальной переменной, инициированной фактическим параметром. Применительно к массивам оказывается, что копируется весь массив, что чаще всего само по себе нерационально. Но, кроме того, любые модификации параметра не приведут к изменению фактического массива.

И, если это применить к обсуждаемым алгоритмам, становится понятным, что переменные Matrи Matrlсвоих (незаданных!) значений не изменят!

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

Для полноты картины ниже представлен заголовок функции MylnpMatrна языке Pascal:

function MylnpMatr (var M : Matrix ): Integer;

Понятно, что здесь параметр SizeMне имеет смысла — значение, которое он получает в результате выполнения процедуры, есть результат работы функции. Этот результат является основным, поскольку необходимость его

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

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

если к моменту их выполнения А[0][0] равно единице, а первое вводимое при работе функции число есть ноль? В большинстве языков и систем програм­мирования, в том числе в C/C++ и Pascal, специфицируется совместность вычисления операндов выражения (см. п. 1.2.2), а значит, порядок, в котором выполнятся MylnpMatr(A) и А[0][0], не определен.

Новости

  • 1
  • 2
Prev Next

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

24.01.2016

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

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

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

24.01.2016

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

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

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

24.01.2016

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

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

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

24.01.2016

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

Реклама