Меню

Главная

Статистика

 

 


В его основе, как уже сказано, лежит понятие стека, в ячейках которого допускается размещение данных, чисел, строк, массивов, процедур.

Кроме того, в ПостСкрипте есть некоторое (довольно большое) число стандартных слов, которые можно назвать командами, действиями, операторами, функциями или процедурами языка. Мы будем пользоваться этими названиями как синонимами, так как, например, слово add, описывающее сложение, нам естественно назвать операцией, слово sin, вычисляющее синус, - функцией, а установку ширины линии - действием или командой.

Основные действия, естественно, производятся с элементами стека. Например, программный текст

32 0.5 43 17 add mul sub
            

исполняется так: положить в стек число 32, выше 0.5, затем 43, затем 17, после этого выполнить действие add (сложение), затем mul (умножение), затем sub (вычитание). Поскольку вы уже знакомы со стековой арифметикой, то легко получите результат - 2.

Вот еще несколько действий, допускаемых языком: деление div, деление нацело idiv, остаток от деления mod, а также одноместные операции изменения знака neg и нахождения абсолютного значения abs.

Имеются операции вычисления некоторых стандартных функций (не всех) от одного аргумента:

exp Вычисление экспоненты
log Десятичный логарифм
ln Натуральный логарифм
sqrt Квадратный корень
cos Косинус угла, аргумент задается в градусах
sin Синус угла

Отдельно следует назвать функцию atan, вычисляющую арктангенс. Эта функция имеет два аргумента - числитель и знаменатель. Как вы думаете, почему?

Кстати говоря, ваше знакомство с другими языками программирования может вызвать еще один, вполне резонный, вопрос: а как быть с типизацией аргументов? Что ж, мы ведь не ставим перед вами цель немедленно перейти к программированию на ПостСкрипте, поэтому будем считать, что в нашем контексте этот вопрос не актуален. А более заинтересованному читателю предлагаем обратиться к другим источникам (например, PostScript Language Manual, Adobe Systems).

Упражнение #1.
a)

Напишите, как организовать на языке ПостСкрипт вычисления для выражения, с которым мы уже манипулировали в предыдущем занятии:
4´(6-3)+(8-6)/2

b)

Интервал времени задан в секундах. Переведите его средствами языка ПостСкрипт в часы-минуты-секунды.

c)

По заданным сторонам A и B треугольника и углу между ними Alpha вычислить (на ПостСкрипте!) его площадь:
S=0.5´A´B´sin(Alpha)

d)

Для заданных сторон треугольника a, b, c вычислить его площадь по формуле
S=p´(p-a)´(p-b)´(p-c), где полупериметр p=(a+b+c)/2,
известной как формула Герона (древнегреческого ученого I в. н. э. из Александрии)

Надо полагать, первые три упражнения не доставили вам хлопот. Но вот четвертое заставляет задуматься: как быть в ситуациях, требующих многократного использования параметров и сохранения промежуточных результатов?

С этой целью в ПостСкрипте введено несколько операций манипулирования со стеком. Приведем их в табличной форме: в первом столбце название действия, во втором - объяснение, в третьем и четвертом - пример данных в стеке до и после выполнения действия.

dup Копирует вершину стека 31 75 43 31 75 43 43
push Добавляет вершину стек 31 75 43 31 75 43 23
pop Удаляет вершину стека 31 75 43 31 75
exch Переставляет два верхних элемента 31 75 43 31 43 75
roll Снимает со стека два параметра, m и n, в оставшейся части стека выделяет группу из n элементов и верхние m из них опускает вниз 31 75 43 12 61 5 2 12 61 31 75 43
index Снимает со стека параметр n и копирует элемент, находящийся на месте n, считая вершину нулевым элементом 31 75 43 12 61 2 31 75 43 12 61 43
copy Снимает со стека параметр n и копирует n верхних элементов оставшейся части стека 31 75 43 12 61 2 31 75 43 12 61 12 61

А теперь маленькое упражнение: вычислим по паре чисел a и b корень из суммы их квадратов. Это знакомое нам вычисление гипотенузы по катетам, очень важное действие. В следующем ниже постскриптовском тексте есть примечания. Примечанием считается часть строки от знака процента до конца строки. Часто мы будем записывать в примечании состояние стека после выполнения действия.

        %  a b  это исходное состояние стека
        %  (интересующей нас части)
dup     %  a b b
mul     %  a b´b
exch    %  b´b a
dup     %  b´b a´a
add     %  b´b+a´a
sqrt    %  желанный результат
            

Назад

. Аптеки в украине. medinfo медицина. Ментр медицины.. электронные книги скачать бесплатно. seokontakt.ru, раскрутка сайтов