Язык программирования Форт



         

Глава 6. Хранение чисел в памяти - часть 2


Во-первых, если у вас имеется большое количество данных, которые нужно где-то сохранить, пока они не потребуются программе. Во-вторых, с целью упрощения операций в стеке путем запоминания промежуточных результатов в виде переменных, а не в самом стеке. Наконец, в третьих, для присваивания с помощью переменных имени числу или группе чисел. Так же как переменные в алгебраических уравнениях, именованные переменные позволяют пользоваться математическими абстракциями, с помощью которых облегчается формализация алгоритма программы, а написанную программу проще понять. Если у вас есть переменные с именами SECONDS (секунды) и MINUTES (минуты), то гораздо проще помнить, что представляют собой эти числа, чем безымянные числа в стеке.

В более общей формулировке переменная представляет собой наименованную ячейку (адрес) памяти, которая может содержать число. Переменная в Форте- это слово, которое возвращает в стек адрес, по которому может храниться число. Для перемещения содержимого ячеек памяти, имеющих имя, в стек и обратно можно использовать слова @ (взять) и ! (занести), которые вам уже известны из гл.З. Мы рассмотрим сначала основные (но не самые удобные) способы для выполнения этих операций, а затем перейдем к более рациональным методам.

Создание переменных

Где можно надежно хранить переменные в памяти так, чтобы они случайным образом не изменились? Мы уже знаем, что Форт отводит часть памяти для своего словаря, в котором содержатся названия слов и их определения (в том смысле, что определения сообщают машине, какие операции она должна делать при исполнении каждого слова). Мы имеем возможность создавать в словаре слова, которые содержат числа. Когда такое слово исполняется, то единственное, что оно должно делать,- это помещать в стек адрес числа, которое оно содержит, что обеспечивает доступ к нему с помощью операторов ! и @.

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


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