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

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

Алгоритм работы абстрактного вычислителя для <Цикла с предуслови­ем> сводится к следующему:

1. Вычислить ветвь <Условие>.

Если результат вычисления 1 — истина, то Вычислить ветвь <Действия>. Перейти к 1.

Завершить вычисление <оператора Цикла с предусловием>.

Алгоритм работы абстрактного вычислителя для <Цикла с постусловием> сводится к следующему:

Вычислить ветвь <Действия>.

Вычислить ветвь <Условие>.

Если результат вычисления 2 —истина, то Перейти к 1.

Завершить вычисление <оператора Цикла с постусловием>.

Немного сложнее абстрактносинтаксическое представление и алгоритм его вычисления для оператора циклаfor.Его предлагается разработать са­мостоятельно.

7.4.2. Структурные переходы

Представленных алгоритмов недостаточно для абстрактного вычисления операторов цикла: не учитывается семантика вычислений операторовbreak; иcontinue;.Их абстрактносинтаксическое представление (см. рис. 7.3) еще проще, чем в предыдущем случае.

Алгоритмы работы абстрактного вычислителя могут вызвать некоторые затруднения в связи с нелокальностью их действия: завершается не та кон

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

Обратим внимание, что инструкция «Вычислить», используемая в каж­дом из приведенных ранее алгоритмов работы абстрактного вычислителя, является его рекурсивным вызовом. Эта рекурсия отражает вложенность абстрактносинтаксических конструкций. И цикл, и итерация цикла, и пере­ключение, которые нужно завершать, всегда уже начали выполняться. Когда выполняется оператор завершения, они только приостановлены, следова­тельно, нужно найти соответствующий вызов и прервать его вместе со всей цепочкой последующих вызовов. Таким образом, следует откорректировать алгоритмы работы абстрактного вычислителя для конструкций, в которых заданы переходы к соседним ветвям.

Новости

  • 1
  • 2
Prev Next

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

24.01.2016

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

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

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

24.01.2016

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

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

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

24.01.2016

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

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

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

24.01.2016

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

Реклама