Новости

О проекте

Зачем?

Используемое ПО

Методика разработки сцен на PostScript

Операторы языка PostScript

Библиотека

Изучение языка

Статьи

Ссылки...

Методика разработки сцен на PostScript

Основные положения по работе:

  • Разбить сложную сцену на несколько более простых. Каждую подсцену реализовать по отдельности. Затем объединить в один файл.
  • Желательно править описание сцены (программу) в редакторе с подстветкой синтаксиса. Это уменьшает количество неправильно написанных операторов, облегчает чтение листинга. Рекомендации в разделе Используемое ПО.
  • Периодически проверять что получается, запукая файл на выполнение.
  • Если нужно распечатать готовый документ, откройте его в GSview. Откуда через соответсвующее меню и печатаю его. Также почитайте статью Печать файлов PS
  • По мере накопления значительных изменений, модификаций сохраняйте версии документа. Это позволит Вам в дальнейшем вернуться к промежуточным результатам.

Работа строится по итерационному принципу. К программированию есть два разных подхода.

  • Первый. Программа пишется под диапазон входных параметров. Он может Больши или не очень. Программист знает что у него есть множество входных параметров, какждое из которых может принимать множество значений. Это классическое программирование.
  • Второй. Назовем его частным. Имеется набор параметров, значения которых известны. Пишется программа (скорее, набор инструкций), которые по этим параметрам и создают конечный результат. Это то что называют "кустарным" программированием.

Работа с переменными

Как это делается

В языке нет отдельного понятия такого как переменная. Язык полностью строиться на идеи использования именнованных процедур - все что интерпретатор находит в тексте программы он пытается найти в словаре (за исключением чискл и строк).

Таким образом переменная является просто частным случаем процедуры пользователя, например:

 /aaa 5 def

определяет в текущем словаре процедуру aaa, которая просто кладет на стек число 5. Другими словами, определили константу ааа!

Чтобы в программе менять значение переменной, воспользуемся тем фактом, что при определении новой процедуры, имя которой совпадает с уже существующей (в текущем словаре), то новая перезаписывается вместо существующей! Тогда что бы переменной ааа присвоить новое значение, которое лежит на вершине стека, нужно сделать следующее

  1. Указать имя переменной. Чтобы интерпретатор не искал это слово в словаре, а положил его на стек, обязательно поставить перед ним слэш /
     /ааа 
  2. поменяем местами на стеке название переменной и ее значение
     exch
  3. запишем в текущий словарь переменную с ее значением
     def

Например, выражение А=А+5, будет записано как:

(1)/A
(2)    A
(3)    5
(4)    add
(5)def

В первой строчке кладем на стек имя перенной, которой будем присваивать вычисленное значение. Во второй строчке кладем на стек значение переменной А. Затем к ней прибавляем чисор 5 (строчки 3-4). И наконец запоминаем новое значение (строка 5)!

Соглашения об использовании переменных

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

  1. Названия переменных записываются через точку от имени группы операторов. Например:
    Ячейка.Размер
  2. По возможности, переменным давать русскоязычные названия.
  3. Доступ к значению переменной осуществляется только посредством функций. Как минимум, должны быть определены две функции: одна возвращает значение, вторая - устанавливает новое значение. Эти функции должны быть определены до использования переменной в программе.
  4. Название функции, возвращающая значение переменной, как частный случай может совпадать с именем переменной, например:
    /Ячейка.Размер 45 мм def
    В болле общем случае, имя переменной записывается также как и название функции, но через две точки ..:
    /Ячейка.Размер Ячейка..Размер см def
    В этом примере возвращается размер ячейки в см.
  5. Название функции, устанавливающее новое значение переменной, совпадает с названием функции, возвращающей значение переменной, но заканчивается на восклицательный знак !:
    /Ячейка.Размер! exch def

Выше приведенный пример А=А+5 теперь будет выглядеть так:

А
  5
 add
A!

Может показаться, что это не только не сократило запись, наоборот, только увеличило код. На самом деле реализовав доступ к значению через функции мы сохранили контроль за значениями переменной. Во-вторых, если в дальнейшем внутрення структура поменяется, то достаточно будет только модифицировать эти две функции, что только способствует надежности кода. И, это приносит в наш код унифицированность!

24.02.2002



©Фурашев А. 2002
e-mail

Хостинг от uCoz