Способ мышления-Форт



Глава 7. Работа с данными: стеки и состояния - часть 21


HERE ' УКАЗАТЕЛИ >BODY ! /УКАЗАТЕЛИ ALLOT \ реальная таблица CREATE АРХИВ /УКАЗАТЕЛИ ALLOT \ место для сохранения : АРХИВИРОВАТЬ УКАЗАТЕЛИ АРХИВ /УКАЗАТЕЛИ CMOVE ; : РЕСТАВРИРОВАТЬ АРХИВ УКАЗАТЕЛИ /УКАЗАТЕЛИ CMOVE ;

Обратите внимание, что в этой реализации имена указателей - СВЕРХУ, СНИЗУ и т.д. всегда возвращают один и тот же адрес. Для представления текущих значений любых состояний всегда используется лишь одно место в памяти. Также отметьте, что мы определяем УКАЗАТЕЛИ (имя таблицы) как константу, а не через CREATE, используя для этого подставное нулевое значение. Это делается для того, чтобы ссылаться на УКАЗАТЕЛИ в определяющем слове ПОЗИЦИЯ, иначе мы не можем этого делать, пока не закончим определять имена полей, не выясним реальный размер таблицы и не будем в состоянии выполнить для нее ALLOT. - 226 -

Когда имена полей созданы, мы определяем размер таблицы как константу /УКАЗАТЕЛИ. Наконец мы резервируем место для самой таблицы, модифицируя ее начальный адрес (HERE) внутри константы УКАЗАТЕЛИ. (Слово BODY> преобразует адрес, возвращаемый словом ', в адрес содержимого константы.) И вот УКАЗАТЕЛИ возвращают адрес определенной позже таблицы так же, как определенное через CREATE слово возвращает адрес таблицы, расположенной немедленно после заголовка этого слова. Хотя мы имеем право менять значение константы во время компиляции, как в нашем примере, здесь есть стилистическое ограничение:

------------------------------------------------------------ СОВЕТ Значение константы никогда не следует изменять после окончания компиляции задачи. ------------------------------------------------------------

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

Рис.7-5. Концептуальная модель для таблиц альтернативных состояний.

РЕАЛЬНЫЕ ПСЕВДО +-----------+ +-----------+ СВЕРХУ|___________| СВЕРХУ|___________| СНИЗУ|___________| СНИЗУ|___________| СЛЕВА|___________| ИЛИ СЛЕВА|___________| СПРАВА|___________| СПРАВА|___________| ВНУТРИ|___________| ВНУТРИ|___________| СНАРУЖИ| | СНАРУЖИ| | +-----------+ +-----------+




Содержание  Назад  Вперед