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


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


Если у вас со сложением дела обстоят плохо, то вы обязательно ошибетесь. Кроме того, вдруг вы измените свое решение и выделите каждому студенту по 30 блоков? Есть более изящный прием. Он состоит в том, чтобы выделить вычисления во время компиляции в отдельное слово:: +СТУДЕНТ ( n -- n+25 n ) DUP 23 + SWAP ; 360 \ начало участка памяти, отведенной студентам +СТУДЕНТ CONSTANT ВАСИЛЬЕВ +СТУДЕНТ CONSTANT СИМОНЧИК +СТУДЕНТ CONSTANT РЯБИНИНА +СТУДЕНТ CONSTANT ИВАНОВА +СТУДЕНТ CONSTANT ПЕТРОВА +СТУДЕНТ CONSTANT ДЕМИН . .( Конец участка памяти, отведанного студентам ) CR

Последняя точка выбирает из стека номер блока. Но и этот прием блекнет перед методом использования определяющих слов. Убедитесь сами: : СТУДЕНТ ( n -- n+23) CREATE DUP , 23 + DOES> ( -- n) @ ; 360 \ Начало участка, отваленного студентам СТУДЕНТ ВАСИЛЬЕВ СТУДЕНТ СИМОНЧИК СТУДЕНТ РЯБИНИНА СТУДЕНТ ИВАНОВА СТУДЕНТ ПЕТРОВА СТУДЕНТ ДЕМИН . .( Конец участка, отведенного студентам ) CR

Определяющее слово СТУДЕНТ и создает «константы», и управляет всеми вычислениями во время компиляции.

Определяющие слова третьего класса дают возможность создавать новые структуры данных, например многомерные массивы. Нас иногда упрекают в том, что структуры данных Форта бедны. Однако редко бывает так, чтобы какой-то набор структур данных удовлетворял всем прикладным областям. Форт же предоставляет удобные инструменты для создания определяющих слов привычных нам структур данных. Мы можем образовать структуры данных, которые во время выполнения осуществляют, помимо всего прочего, присущие только им операции. В информатике такие структуры называются абстрактными типами данных.

Рассмотрим два примера. Первый из них, более простой, демонстрирует определяющее слово, организующее одномерный массив. Можно, конечно, создать такой массив и без применения определяющего слова:CREATE КЛАПАНЫ 30 ALLOT \ байтовый массив установки клапанов : КЛАПАН ( i -- а) \ преобр. номера клапана в абсолютный адрес КЛАПАНЫ + ;

Здесь слово КЛАПАН вычисляет индекс массива КЛАПАНЫ.


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