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

МАССИВЫ


Как вам уже известно, выражение VARIABLE ДАТА создает определение и выделяет память для значения одинарной длины:

А если необходимо выделить память для 10 или 20 значений одинарной длины под одним и тем же именем? Такая структура называется массивом. На форте массив строится следующим образом.

В первую очередь мы создаем массив с помощью непривычного определяющего слова CREATE (СОЗДАТЬ)1: CREATE МОЙ-МАССИВ

1 для пользователей систем фиг-Форта. В вашей системе имеется слово CREATE, но оно отличается от упоминаемого здесь и редко используется. Чтобы вы могли и далее следить за ходом событий, переопределите его следующим образом:

: CREATE <BUILD DOES> ;

Как и VARIABLE, CREATE компилирует в словарь новое имя (вашего массива) вместе с кодами, которые специфицируют его действия. Но при этом память под данные не выделяется.

Каким образом мы впоследствии отведем память под созданный массив? Это делается посредством слова ALLOT (ВЫДЕЛИТЬ), которое выбирает из стека в качестве аргумента число байтов, резервируемое для массива.

Если требуется выделить память под 10 значений одинарной длины, то нужно ввести 20 ALLOT

(Значение одинарной длины занимает два байта.)

Когда вы исполняете слово, определенное как переменная Форт-система помещает в вершину стека адрес значения. Таким же образом, когда вы исполняете слово, созданное с помощью CREATE, в вершину стека заносится адрес начала массива (первого значения).

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

Мы можем с помощью слова ?ЖАРКО проверять, не превышает ли температура нагрева каждой из пяти горелок установленного для нее максимального значения, если определим ПРЕДЕЛ не как константу, а как массив. Присвоим этому массиву имя ПРЕДЕЛЫ:

Допустим, что мы устанавливаем предельное значение температуры для горелки 0 220°. Запомним это значение посредством следующей фразы: 220 ПРЕДЕЛЫ !



Содержание раздела