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



         

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


В MMSFORTH можно определять слова, в которых соединены свойства констант и переменных. Примерно таким способом эта возможность может быть встроена и в другие версии. В MMSFORTH имеется ключевое слово QUAN (от quantity- количество). Если ввести QUAN FT/FURLONG а после этого 660 IS FT/FURLONG то слово FT/FURLONG будет иметь свойства константы в том смысле, что оно возвратит число, если ввести слово. Но в то же время оно сходно с переменной, поскольку слово IS просто записывает число из стека в FT/FURLONG. Если вы хотите узнать, где хранится это число, то предложение AT FT/FURLONG! положит в стек его адрес. Таким образом, 660 AT FT/FURLONG! выполнит то же действие, что и 660 IS FT/FURLONG в то время как AT FT/FURLONG @ равносильно тому, что вы введете FT/FURLONG. Предусмотрены также слова CQUAN (для байтов), 2QUAN (для двойных чисел) и 4QUAN (для чисел с плавающей запятой), назначение которых очевидно. Кроме того, в языке предусмотрены также массивы QUAN и специальные слова типа QUAN для хранения чисел с плавающей запятой сопроцессора типа 8087 и для работы с массивами в расширенной памяти компьютера IBM. Уменьшение времени исполнения программы и требуемого числа ячеек памяти благодаря слову QUAN по сравнению с использованием переменных происходит, если QUAN применяется в программе более двух раз. Если в вашем распоряжении имеется MMSFORTH, то дальнейшие детали вы найдете в его документации.

Упражнения

1. Определите слова СVARIABLE и 4VARIABLE. 2. Определите слово ARRAY, которое при исполнении будет определять массив переменных, состоящий из 16 различных чисел, т.е. массив, с которым можно обращаться так же, как, например, с массивом, созданным предложением CREATE FT/HILE 20 ALLOT за исключением того, что он должен быть создан выражением 10 ARRAY FT/MILE (Заметьте, что перед словом ARRAY в стеке должно стоять количество чисел, а не байтов, которое содержится в массиве.) 3. Определите по аналогии слова CARRAY, 2ARRAY, 4ARRAY. 4. Определите две переменные 1LENGTH (длина) и 2LENGTH для помещения в них значений длины в разных единицах, например в сантиметрах и метрах или дюймах и футах.


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