Новости О проекте Зачем? Используемое ПО Методика разработки сцен на PostScript Операторы языка PostScript Библиотека Изучение языка Статьи Ссылки... | Методика разработки сцен на PostScript
Основные положения по работе:
- Разбить сложную сцену на несколько более простых. Каждую подсцену реализовать по отдельности. Затем объединить в один файл.
- Желательно править описание сцены (программу) в редакторе с подстветкой синтаксиса.
Это уменьшает количество неправильно написанных операторов, облегчает
чтение листинга. Рекомендации в разделе Используемое ПО.
- Периодически проверять что получается, запукая файл на выполнение.
- Если нужно распечатать готовый документ, откройте его в GSview.
Откуда через соответсвующее меню и печатаю его. Также почитайте
статью Печать файлов PS
- По мере накопления значительных изменений, модификаций
сохраняйте версии документа. Это позволит Вам в дальнейшем вернуться
к промежуточным результатам.
Работа строится по итерационному принципу.
К программированию есть два разных подхода.
- Первый. Программа пишется под диапазон входных параметров. Он может
Больши или не очень. Программист знает что у него есть множество входных
параметров, какждое из которых может принимать множество значений.
Это классическое программирование.
- Второй. Назовем его частным. Имеется набор параметров, значения которых известны.
Пишется программа (скорее, набор инструкций), которые по этим параметрам
и создают конечный результат. Это то что называют "кустарным" программированием.
Работа с переменными
Как это делается
В языке нет отдельного понятия такого как переменная. Язык полностью
строиться на идеи использования именнованных процедур - все что интерпретатор
находит в тексте программы он пытается найти в словаре (за исключением чискл и
строк).
Таким образом переменная является просто частным случаем процедуры пользователя,
например:
/aaa 5 def
определяет в текущем словаре процедуру aaa, которая просто кладет на
стек число 5. Другими словами, определили константу ааа!
Чтобы в программе менять значение переменной, воспользуемся тем фактом, что
при определении новой процедуры, имя которой совпадает с уже существующей (в текущем словаре), то
новая перезаписывается вместо существующей! Тогда что бы переменной ааа
присвоить новое значение, которое лежит на вершине стека, нужно сделать следующее
- Указать имя переменной. Чтобы интерпретатор не искал это слово в словаре,
а положил его на стек, обязательно поставить перед ним слэш /
/ааа
- поменяем местами на стеке название переменной и ее значение
exch
- запишем в текущий словарь переменную с ее значением
def
Например, выражение А=А+5, будет записано как:
(1)/A
(2) A
(3) 5
(4) add
(5)def
В первой строчке кладем на стек имя перенной, которой будем присваивать вычисленное
значение. Во второй строчке кладем на стек значение переменной А. Затем к ней
прибавляем чисор 5 (строчки 3-4). И наконец запоминаем новое значение (строка 5)!
Соглашения об использовании переменных
С целью упорядочения использования переменных, будем придерживаться
тех же правил, что установлены и для библиотеки, а именно:
- Названия переменных записываются через точку от имени группы операторов.
Например:
Ячейка.Размер
- По возможности, переменным давать русскоязычные названия.
- Доступ к значению переменной осуществляется только посредством функций.
Как минимум, должны быть определены две функции: одна возвращает значение,
вторая - устанавливает новое значение. Эти функции должны быть определены
до использования переменной в программе.
- Название функции, возвращающая значение переменной, как частный случай
может совпадать с именем переменной, например:
/Ячейка.Размер 45 мм def
В болле общем случае, имя переменной записывается также как и название
функции, но через две точки ..:
/Ячейка.Размер Ячейка..Размер см def
В этом примере возвращается размер ячейки в см.
- Название функции, устанавливающее новое значение переменной, совпадает
с названием функции, возвращающей значение переменной, но заканчивается
на восклицательный знак !:
/Ячейка.Размер! exch def
Выше приведенный пример А=А+5 теперь будет выглядеть так:
А
5
add
A!
Может показаться, что это не только не сократило запись, наоборот, только
увеличило код. На самом деле реализовав доступ к значению через функции мы
сохранили контроль за значениями переменной. Во-вторых, если в дальнейшем
внутрення структура поменяется, то достаточно будет только модифицировать
эти две функции, что только способствует надежности кода. И, это приносит
в наш код унифицированность!
24.02.2002 |