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



         

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


CREATE INCHES 4 ALLOT отводит место для хранения одного двойного слова, доступного с помощью слов 2! и 2@. Впрочем, более важно то, что в отведенном (резервированном) месте могут храниться несколько чисел, входящих в одно слово. Если выполнить CREATE YARDS 10 ALLOT будет зарезервировано место, достаточное для хранения пяти одинарных слов (10 байтов). Пусть теперь вы определили слова : !YARDS 2* YARDS + ! ; и : @YARDS 2* YARDS + @ ;

Тогда если ввести 23 2 !YARDS то в четвертом и пятом байтах будет запомнено число 23 (если принять нумерацию с нулевого байта), зарезервированное словом YARDS. Операция 2 @YARDS возвращает в стек число 23. Другими словами, вы можете зарезервировать место для хранения последовательности или списка чисел и затем определить слова, с помощью которых к ним можно обращаться. Такой список чисел называется массивом. Массив 1,3,45,671,23, каждое число которого называют элементом, называется одномерным, линейным массивом или вектором. Можно хранить массив в слове YARDS следующим образом: 1 0 !YARDS 3 1 !YARDS 45 2 !YARDS 671 3 !YARDS 23 4 !YARDS а обращаться к числу можно с помощью слова @YARDS. Так, 3 @YARDS . напечатает 671. По некоторым причинам многие считают массивы чем-то сложным и непонятным, на самом деле это просто список чисел и ничего больше.

Слово , (запятая) упрощает создание переменных и массивов. Оно резервирует два байта так же, как 2 ALLOT, а затем запоминает число, находящееся на вершине стека, в отведенных двух байтах. Поэтому CREATE INCHES 7 , будет эквивалентно CREATE INCHES 2 ALLOT INCHES 7 !

В обоих случаях будет создана переменная INCHES, которой будет присвоено значение 7. Слово (запятая) особенно полезно при определении массива. CREATE YARDS 1 , 3 , 45 , 671 , 23 , создает массив YARDS и инициализирует его содержимое гораздо проще, чем было показано раньше. В особенности оно полезно для создания таблиц данных, которые не должны изменяться. Наконец упомянем определенное во многих версиях Форта, и в том числе в MMSFORTH, слово С,.


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