/пит 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, то система координат соответствующим образом масштабируется.