Начальный курс программирования на языке Форт


РАБОТА СО СТЕКОМ


Мы уже продемонстрировали некоторые методы работы со стеком и постфиксную запись. Теперь рассмотрим этот вопрос более детально.

Стек Форта функционирует по принципу «последним занесен первым выбран» (LIFO). Вы это видели в приведенном выше при мере. Число 3 было занесено в стек первым, а затем в него занесли число 4, «протолкнув» вглубь стека тройку. Позднее при выполнении операции сложения машина выбрала первым число 4, так как оно находилось в вершине стека.

В качестве еще одного примера выполним другую операцию. Вспомните, что каждое слово . берет одно значение из стека и выводит его на экран. Четыре точки, следовательно, возьмут четыре числа: 2 4 6 8 . . . .<return> 8 6 4 2 ok

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

Будьте внимательны, чтобы не допустить ошибки. Наберите на клавиатуре 10 20 30 . . . .

(четыре точки) и нажмите клавишу RETURN. В результате вы получите : 10 20 30 . . . .<return> З0 20 10 . Стек пуст

Каждая точка удаляет из стека одно значение. Четвертая точка «обнаружит», что в стеке нечего взять для вывода на дисплей, о чем вы и получите сообщение.

 

Такая ошибка называется потерей элемента стека. (Заметьте, что потеря элемента стека вовсе не «ok».) В противном случае, когда вы исчерпали емкость стека, возникает ситуация его переполнения. Однако стек настолько глубок, что такое событие практически нереально, если только вы не совершите что-то из ряда вон выходящее.

Как правило, вас не должно интересовать содержимое всего стека — вам нужны только те числа, с которыми вы работаете в данный момент. Остальные же значения, если таковые были занесены в стек ранее, должны в сохранности находиться в стеке до того момента, пока они не понадобятся. Если вы, к примеру, захотите нарисовать прямоугольник, применяя ту же технику, что и




Начало  Назад  Вперед



Книжный магазин