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


ОПРЕДЕЛЯЮЩИЕ СЛОВА ВЫ МОЖЕТЕ СПЕЦИФИЦИРОВАТЬ САМИ - часть 4


DOES> 2DUP @ По заданному на стеке индексу во время выполнения вычисляется: ( i pfa i # )

U< NOT Проверка того, что индекс не меньше максимального значения, а именно: запомненного счетчика. Так как U< является операцией сравнения над значениями без знака, то отрицательные аргументы будут трактоваться как числа, выходящие за границу, и приводить к аварийному сообщению.

ABORT" Выход за Аварийное завершение при выходе числа за диапазон. границу "

+ 2+ В противном случае сложение индекса с pfa и добавление числа 2 для пропуска ячейки, содержащей счетчик.

Существует еще один способ использования определяющих слов, который помогает при создании программ. Допустим, вы вдруг решаете, что все ваши массивы, определенные с помощью слова МАССИВ, слишком велики, чтобы хранить их в памяти компьютера, и должны быть помещены на диск. Единственное, что вы должны в таком случае сделать, переопределить фрагмент периода выполнения в слове МАССИВ. Это новое определение вычислит номер блока, в котором содержится заданный байт, считает блок посредством BLOCK в некоторый буфер и оставит в вершине стека адрес требуемого байта относительно начала буфера. Массив, определенный подобным образом, может храниться в нескольких последовательных блоках (с использованием тех же средств, что и в упр. 10.7).

Ниже приведен пример определяющего слова, которое создает двумерный массив байтов заданного размера1: : МАТРИЦА ( #строк #столбцов -- ) CREATE OVER , * ALLOT DOES> ( строка столбец -- a) DUP @ ROT * + + 2+ ;

1 Для любителей оптимизации Этот вариант будет выполняться еще быстрее: МАТРИЦА ( #строк #столбцов -- ) OVER CONSTANT HERE 2+ , * ALLOT DOES> ( строка столбец -- а) 2@ ROT * + + ;

Для того чтобы создать массив размером 4х4 байта, вы должны написать:

Выбрать же, к примеру, байт в строке 2 и в столбце 1 можно следующим образом:2 1 ТАБЛИЦА С@

Вот так кратко можно описать выполнение слова МАТРИЦА. Поскольку аппаратные средства компьютера позволяют хранить только одномерные массивы, второе измерение необходимо моделировать.


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