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


         

в семействе определений имеет свою


Каждое слово-ребенок в семействе определений имеет свою индивидуальность. Определяющие слова дают вам возможность разграничить общее поведение слов, имеющих общее происхождение, и их индивидуальное поведение. Общее поведение слов-детей запрограммировано в исполнительной части определения слова, следующей после DOES>. Индивидуальное поведение слов-детей определяется значением (или значениями), которое находилось в стеке, когда оно создавалось, и, конечно, его уникальным именем.
Задачи, для которых требуется некоторое количество слов, имеющих сходные определения, лучше всего решаются при помощи нового определяющего слова. Вот еще один пример. В гл. 4 мы показали вам способ представления математических функций на Форте. С помощью определяющего слова можно создать любое количество линейных уравнений вида у = ax + b путем создания слов-детей с коэффициентами а и Ь, находящимися в стеке. Если затем будет исполняться слово-ребенок и в стеке находится значение х, то оно будет оставлять значение решения - у. Приведем определение этого определяющего слова: : LINEAR ( а b --) (линейная функция) CREATE SWAP , , DOES> DUP >R @ * R>
2+ @ + ;
Обратите внимание, что величины а и b переставляются в стеке при создании слова LINEAR, чтобы избавиться от стековых манипуляций на стадии исполнения. Если мы определили линейное уравнение у=3х+17 при помощи 3 17 LINEAR ALINE то, когда оно будет исполняться в форме 2 ALINE мы увидим решение 23. Исполнение слова ALINE можно описать следующим образом: DUP ( -- 2 адр адр) Адрес числа 3 in ALINE >R ( -- 2 адр) Помещает адрес в стек возвратов @ ( -- 2 3) Извлекает число 3 (а) * ( -- 6 ) 6 = ax, первый член R> ( -- 6 адр) Адрес числа 3 в ALINE 3+ ( -- 6 адр+2) Адрес числа 17 в ALINE @ ( -- 6 17) Извлекает 17 (b), второй член + ( -- 23) 23 = у = ax + b, решение
Пример показывает общую методику, используемую в сложных определяющих словах. Так как адрес первого элемента ALINE потребуется для извлечения двух чисел, его запоминают в стеке возвратов.

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





Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий