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

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

Синтаксис описания и использования процедурных параметров Objectи Turbo Pascal иллюстрируется следующим примером:

procedure РР (Т : Prt); begin

Т (5, 5.5); end; {РР}

и, соответственно, правомерны операторы PP(RP) и РР(р), если RPудовле­творяет шаблону, определенному в описании Prt, ар — процедурное значение (некорректное значение с точки зрения вызова РР(р) переменной р присво­ено быть не может).

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

С процедурными типами расширений Pascalсвязан ряд технических ограничений, которые стоит признать достаточно разумными, поскольку они позволяют до некоторой степени отгородиться от теоретических опасностей, о которых, судя по всему, авторы системы умом даже не подозревали, но которые они нутром чуяли.

Для программирования наиболее существенными из них являются:

Недопустимость использования в качестве значений процедурного ти­па стандартных процедур и функций. Чисто прагматически это ограни­чение связано с другим форматом библиотек, но с теоретической точки зрения оно также целесообразно, поскольку исходные процедуры про­граммируются совершенно другим способом, с использованием осо­бенностей конкретного процессора и конкретной реализации. Обойти данное ограничение легко, построив свою процедуру или функцию с телом из единственного оператора, вызывающего требуемую про­граммную единицу.

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

Новости

  • 1
  • 2
Prev Next

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

24.01.2016

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

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

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

24.01.2016

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

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

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

24.01.2016

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

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

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

24.01.2016

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

Реклама