Язык Форт и его реализации


         

Элементарная машинная графика


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

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

Рассмотрим две очень разные по сложности задачи построения графиков функций. В первой используется алфавитно-цифровой терминал, во второй — графопостроитель с широким набором возможностей.

В случае использования алфавитно-цифрового терминала задача состоит в том, чтобы отобразить в нем график функции, заданной вектором своих значений. Введем понятие вектора, элементы которого нумеруются от нуля, по аналогии со словом QUAN (см. ). Для получения адреса элемента вектора и для присваивания ему нового значения можно использовать те же слова AT и TO.

: ?+ ( N->N) DUP 0< ABORT" ОТРИЦАТЕЛЬНОЕ ЗНАЧЕНИЕ" ; : В-АДР ( I:ИНДЕКС,PFA->A[I]:АДРЕС) 2DUP @ U< IF SWAP 1+ 2* + EXIT THEN SWAP CR . ." - НЕДОПУСТИМЫЙ ИНДЕКС ДЛЯ ВЕКТОРА " BODY> BODY> BODY> >NAME ID. ABORT ; : В-АДР0 DOES> ( I:ИНДЕКС,PFA->A[I]:АДРЕС) В-АДР ; : В-ПРИСВ DOES> ( N:3НАЧ,I:ИНДЕКС,2CFA->) 2+ В-АДР ! ; : VQUAN ( N:ВЕРХН.ИНДЕКС->) ?+ CREATE В-ПРИСВ HERE 2- @ , В-АДР0 HERE 4 - @ , 1+ DUP , 2* HERE SWAP DUP ALLOT ERASE DOES> ( I:ИНДЕКС,1CFA->N[I]:ЗНАЧ) 4 + В-АДР @ ; : В-РАЗМ ( ->N:ЧИСЛО ЭЛЕМЕНТОВ) ' 6 + @ [COMPILE] LITERAL ; IMMEDIATE




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