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

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

Ситуация с C/C++ сложнее, т. к. для него не предусмотрены средства определения того, какие значения допустимы для описываемой переменной. Более того, в этом языке не считается ошибкой выход индекса за пределы массива. Как следствие, такая некорректность приведет лишь к искажениям памяти, расположенной после размещения массива. Причина тому — ориен­тация на примитивно понимаемое максимально полное приближение язы­ковых средств к уровню машинного представления. Таким образом, здесь обязательно нужен дополнительный контроль со стороны программиста. Чтобы такой контроль был 'съемным' (включаемым и выключаемым при необходимости), можно реализовать его с помощью средств препроцессора. Но, к сожалению, его возможности по теоретически и практически непре­одолимым причинам принципиально ограничены.

Для полноты обсуждения процедуры MyOwnlnpMatrуместно упомянуть

ее локальном контексте, т. е. о переменных iи j, которые, с формальной точки зрения, допустимо вынести в глобальный контекст. Со всей определен­ностью можно сказать, что такое решение ничем не оправдано: переменные

и jимеют содержательный смысл только внутри тела процедуры, а потому использование их как глобальных объектов только повысило бы зависимость процедуры MyOwnlnpMatrот глобального контекста. В результате программа оказалась бы менее надежной. (С этой же точки зрения неразумно задание iи jв качестве формальных параметров процедуры — оно потребовало бы ука­зания соответствующих фактических параметров из глобального контекста, для которых и вовсе не удается дать содержательную трактовку.)

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

Новости

  • 1
  • 2
Prev Next

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

24.01.2016

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

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

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

24.01.2016

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

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

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

24.01.2016

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

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

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

24.01.2016

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

Реклама