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

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

4Решение этой проблемы, убивающее двух зайцев сразу, может быть дано с помощью струк­турного перех

for 02, Prime=true;aG]<=sqrt(i);j++)

if (Prime=i%a[j]) //Присваивание, совмещенное с проверкой

13 В языке Алгол 68, где приведения типов сведены в наиболее строгую и последовательную

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

В реализационном плане коллизии имен ликвидируются с помощью остроумного метода санков (thunk), предложенного Ингерманом еще для Algol 60. Суть метода в том, что в объектном коде контекст вызова процеду­ры пополняется специальными подпрограммами для каждого фактического параметра (именно они и называются санками). При исполнении вызова об­ращение к параметру интерпретируется как вызов санка данного параметра.

Фрагменты текста программы, соответствующие фактическим парамет­рам, превращаются в анонимные процедуры thunk_napaMeTpa,которые за­даются в контексте вызова процедуры. В этом контексте, в частности, кор­ректны вычисления фактических параметров. Например, если у нас есть па­раметр a[i+j], то он превращается в процедуру с глобальными переменными a, i, j, вычисляющую ссылку на соответствующий элемент массива. Техни­ческий вопрос, связанный с тем, что для каждого вызова нужно обеспечить свои 'имена', используемые в теле, решается техническими же средствами, зависящими от многих частных решений используемого языка. Вы можете сами предложить несколько его реализаций на разных уровнях (см. упр. 1 и следующее).

Среди существующих языков программирования, повидимому, только Алгол 68 позволяет запрограммировать данную схему без привлечения уров­ня машинных команд либо хакерских приемов. Для этого надо описать па­раметрыимена как процедурные параметры, т. е. такие, которые требуют использовать в качестве фактических параметров процедуры или, как в дан­ном случае, функции. Допускается это не только в Алголе 68, но уникально то, что этот язык позволяет подставлять вместо таких параметров не только явно описываемые процедуры, но и предложения, которые синтаксически могут быть выведены из понятия <тело процедуры>. В результате на Алго­ле 68 модификация описания

Новости

  • 1
  • 2
Prev Next

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

24.01.2016

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

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

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

24.01.2016

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

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

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

24.01.2016

Летающие &quot;Крокодилы&quot;

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

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

24.01.2016

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

Реклама