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

         

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



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

Эта фраза замечательна тем, что мы с детства получаем представление о рекурсии. 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 -- длина строки (знаков).

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



Содержание раздела