/пит 7 def

изменяет ее значение на 7. Для того чтобы добавить к переменной 1, нужно получить ее текущее значение, добавить к нему 1 и переопределить переменную:

//num num 1 add def % increment num % прибавляем 1 к num

Для того чтобы добавить к num 4 и возвести результат в квадрат, необходимо выполнить следующее:

/пит пит 4 add dup mul def % add 4 to num and square it % добавляем 4 к пит и возводим в квадрат

Тщательно проследите за состоянием стека по мере выполнения каждой части этого оператора Следует отметить, что добавление 4 и возведение в квадрат происходит до интерпретации части def, поэтому в момент выполнения def двумя верхними элементами в стеке являются /пит и 121 (то есть 11 в квадрате).

Бывает, что в процессе некоторого вычисления вам нужно сохранить для дальнейшего использования то значение, которое записано в какой-нибудь переменной (например, fred), находящейся в вершине стека. Это можно сделать так:

/fred exch def % put the value on top of the stack into the variable fred % помещаем значение верхнего элемента стека в переменную fred

Для правильной работы оператора def чрезвычайно важно поменять местами два верхних элемента стека, чтобы числовое значение было наверху, а литерал - под ним.

Г4.2. Определение процедур

Как и во всех других языках программирования, представляется очень удобным группировать несколько команд в одну процедуру (называемую также подпрограммой или функцией). Обычно такой процедуре присваивается какое-нибудь имя. Когда это имя используется в дальнейшем, выполняется соответствующая последовательность команд. В языке PostScript команды заключаются в фигурные (французские) скобки: {dup add}. Например, приводимая ниже процедура smal ler масштабирует единицу текущей системы координат коэффициентами (0,8,0,8):

/smaller {.8 .8 scale} def X scale the system by 0.8 % масштабируем систему коэффициентом O.B

Г4. Определение новых переменных и процедур

1021

В результате создается новый элемент словаря с именем smaller и ассоциируется с единственным «объектом», который является процедурой {. 8 .8 sea 1 е}. Когда эта процедура в дальнейшем появляется в сценарии в виде простого выражения smaller, то система координат соответствующим образом масштабируется.


⇐ Предыдущая| |Следующая ⇒