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

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

есть возможность описывать процедурный тип (вид, по терминологии Алгола 68);

есть возможность литерального изображения процедурных значений;

проще выглядит так называемое "замкнутое предложение, вырабаты­вающее значение".

Но и для С/С++/С#, и для Алгола 68,как и для других языков, не ориенти­рованных на работу с таблицами, говорить о естественности представления не приходится. Так что, в таких ситуациях, повидимому, наиболее разумно строить автоматический преобразователь (типа препроцессора, но не путать этот термин с С!), который составляет текст программы по таблице. В этом случае снимается много проблем:

для программиста сохраняется наглядность;

при исполнении достигается алгоритмичность;

легко разносить фрагменты таблицы по разным участкам программы;

можно жертвовать наглядностью результирующего текста, поскольку, фактически, с ним никто, кроме транслятора, не работает (пример: встав­ка новых строк в таблицу — проблема для человека, но не для препро­цессора);

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

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

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

Новости

  • 1
  • 2
Prev Next

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

24.01.2016

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

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

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

24.01.2016

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

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

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

24.01.2016

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

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

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

24.01.2016

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

Реклама