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


Оператор ifelse


Позволяет выбрать в зависимости от условия выполнение одной или другой последовательности операторов. Его формат:

условие {op.1} {op>2} ifelse

Если результат выполнения условия true, выполняется последовательность {op.1}, иначе --

{op.2}.

У попа была собака

Эта фраза замечательна тем, что мы с детства получаем представление о рекурсии. PostScript поддерживает рекурсивный  вызов процедур, т. е. когда процедура вызывает сама себя. Классический пример -- вычисление факториала:

/factorial % в стеке n

{dup 1 gt

{ dup 1 sub factorial mul} if

} def

% вызов

5 factorial

cvs show

Новый оператор cvs преобразует число из вершины стека и помещает его в заданную строку. Дело в том, что оператор show может печатать только строки. Кроме чисел, cvs преобразует и логические величины  -- они заменяются в зависимости от значения словами true или false. Вот пример процедуры, печатающей целое число из стека:

/printint

 {(   ) cvs show} def  % строка первоначально содержит 3 пробела

Оператор string создает строку длиной n. Определение строковой переменной

выглядит так:

/nstr 7 string def

где 7 -- длина строки (знаков).

Рекурсивный вызов процедур даёт возможность рисовать фрактальные картинки, но это мы попробуем сделать на следующем занятии, когда изучим конструкции циклов.

Занятие четвёртое

 

Начиная весной эту серию уроков у меня было сомнение -- хватит ли материала на семь занятий. Задав в Интернет поиск по ключевому слову PostScript и получив сообщение, что найдено более 99 тыс. документов, где оно встречается, я успокоился – об этом языке писать можно до 2000 года. Кроме того, обнаружилась книга по PostScript и на русском языке. Это изданный Физматлитом в 1993 г. учебник: Ф.Доймлинг, Д.Стиллеску "Язык программирования PostScript. 20 уроков быстрого освоения". В ней очень детально описывается то, что нами будет пройдено на четырех первых уроках. Следует отметить, что наши занятия методически следуют книге "PostScript Language Tutorial and Cookbook" (Adobe Systems & Addison Wesley, 1987), являющейся де-факто описанием стандарта языка и потому именуемой "Голубой книгой". Тем у кого это издание есть, я рекомендую подождать седьмого урока, который будет отчасти посвящён текущему состоянию языка, литературе и другим не описанным в "Голубой книге" вопросам.




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