Семь уроков по PostScript


Арифметические операторы


 

Оператор в PostScript - это слово, заставляющее интерпретатор выполнять те или иные действия. Он эквивалентен командам или процедурам в других языках программирования. Когда интерпретатор встречает слово в PostScript-программе, он просматривает свой внутренний словарь и пытается определить, является ли это слово именем оператора. Если оно в словаре найдено, то выполняются все связанные с ним действия, а затем переходит к следующему слову в исходном файле.

Операторы add и sub. Операторы смотрят находятся ли в стеке их операнды. В общем случае оператор удаляет их из стека и помещает туда результат выполнения своих действий. Например, оператор add (сложение) удаляет из стека два верхних числа, складывает их и оставляет сумму в стеке. Так строка программы, приведенная ниже, будет влиять на стек как показано на рисунке. Аналогично работает оператор sub, вычитающий число, находящееся в вершине стека, из числа, лежащего в стеке следующим.

Другие арифметические операторы:

div - деление. Второе число делится на число в вершине стека.

13 8 div -> 1.625

idiv - целочисленное деление.

25 3 idiv-> 8

mod - второе число делится на число в вершине стека, сохраняя остаток от деления.

7 5 mod-> 8

Операнды операторов mod и idiv должны быть целыми числами.

mul - перемножает два числа в вершине стека, помещая вместо них их произведение.

8 9 mul-> 72

neg - изменяет знак числа, находящегося в вершине стека.

-37 neg-> 37

(sgrt, exp, ceiling, sin)

Запись арифметических выражений.

Выражение 5+(8:2) на языке PostScript можно представить несколькими способами:

82 div 5 add

либо

5 8 2 div add

Чуть более сложный случай, выражение 9-(4*7), можно записать минимум двумя способами:

9 4 7 mul sub

4 7 mul 9 exch sub

Во втором способе введен новый оператор exch. Он меняет местами положение двух верхних чисел в вершине стека.

рисунок

Применение оператора exch вызвано тем, что sub вычитает число в вершине стека из следующего за ним, что без exch приводит к неверному порядку действий.




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