Смекни!
smekni.com

Методические указания по выполнению курсовых работ по дисциплине «Системное программное обеспечение» для студентов, обучающихся по специальностям 210100, 210200 и направлению 550200 (стр. 6 из 9)

Рисунок 2 Основной алгоритм программы

идентификатором РID демона. Далее закрываются открытые файлы, и выполняется запись в системном журнале. Для этого сначала устанавливаются опции "ведения журнала" каждая запись будет предваряться идентификатором РID демона. При невозможности записи в журнал сообщения будут выводиться на консоль. Каждые десять секунд вызывается функция, реализующая запись запущенных процессов в файл, например, sysmag.txt

4.5 Язык PostScript

Язык PostScript не является языком программирования, он используется для описания страниц, подготовленных для печати на принтерах. Эти страницы могут включать не только текст, но и графические объекты, причем в самых разнообразных комбинациях. Вместе с тем PostScript обладает вычислительными возможностями, работает со строками текста, поддерживает ввод/вывод. Все графические объекты в языке PostScript, а так же шрифты являются векторными. В векторной графике положение и размеры объекта не зависят от размера точки изображения на конкретном устройстве печати и размера области изображения. Векторные изображения легко масштабируются, сдвигаются и поворачиваются. Изображения переводятся в растровый формат устройства вывода непосредственно перед печатью, что обеспечивают высокое качество печати. Координаты точек на странице задаются вещественными числами в полиграфических единицах длины - пунктах.

4.5.1 Элементы языка PostScript

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

В словах кроме обычных, алфавитно-цифровых символов можно использовать специальные символы. Специальными символами являются скобки трех видов (, ), [, ], { и } символы <,>, / и X.

Строка может содержать любое количество слов и любое слово может быть первым в строке. Исходный текст PostScript-файла может располагаться (форматироваться) так, чтобы подчеркнуть его логическую структуру, сделать удобочитаемым либо уменьшить размер файла. В PostScript используется обратная (польская) запись, при которой сначала указываются операнды, а затем оператор, выполняющий с ними действия.

Использование польской записи объясняется тем, что все операции в PostScript выполняются над операндами в стеке. Стек представляет собой специальную временную область памяти, организованную по принципу «последний вошел — первый вышел». Команда выбирает последнее значение, удаляя его из стека. После этого текущим становится значение, бывшее ранее предпоследним. Таким образом, находящиеся в стеке значения извлекаются из него в обратной последовательности. Интерпретатор PostScript последовательно считывает файл, интерпретируя очередное слово. Если слово представляет собой команду, она немедленно выполняется, а если это некоторый объект данных, он заносится в стек.

4.5.2 Типы данных

Основные типы данных языка PostScript:

- целое число со знаком;

- вещественное число;

- логическое значение;

- строка символов;

- процедура;

- массив произвольных объектов, в том числе и разнотипных;

- словарь.

Целые константы задаются в десятичном формате или в формате без знака ^с указанием основания системы счисления. Шестнадцатеричные константы записываются в угловых скобках.

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

Логические константы принимают только два значения, true и false («истина» и «ложь»).

Строка записывается в круглых скобках. Скобки играют роль ограничителей. Строка может содержать пробелы, специальный символ конца строки, любые другие символы, а также экранированные по­следовательности, начинающиеся символом &bsol;.

Процедура — это группа команд, которая решает какую-то частную задачу или используется достаточно часто. В PostScript у процедуры нет ни имени, ни параметров. Процедура имеет тело и ссылку на него, этим она похожа на объекты других сложных типов. Текст процедуры содержится в фигурных скобках. При интерпретации процедуры ее операторы записываются в тело процедуры, а ссылки на нее — в стек операндов. В дальнейшем мы будем говорить, что в стек записывается, процедура. Процедуру, записанную в стек, можно исполнить или записать в переменную, которая в таком случае будет указывать на тело процедуры, играя роль ее имени.

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

Во время исполнения интерпретатор PostScript помещает тело процедуры в стек исполнения, а исполнив, удаляет его из этого стека. Если из одной процедуры вызывается другая, первая – приостанавливается, а тело второй заносится в стек исполнения и она становится текущей. После ее окончания и удаления из стека текущей становится вызывавшая процедура, которая продолжает работу с того места, где она была приостановлена. Это обстоятельство, а также метод хранения данных в стеке операндов позволяет использовать рекурсию, когда процедура вызывает на исполнение саму себя.

Массивом в программировании называют совокупность однотипных данных, которой присвоено общее имя. Массив в PostScript может состоять и из разнотипных объектов. Значения элементов массива записываются в квадратных скобках: [1 (String) 1.0].

Символы квадратных скобок являются командами. Команда [ записывает в стек операндов специальную метку, а команда ] создает массив, содержащий элементы этого стека от текущего значения до ближайшей метки. Элемент, находящийся в стеке сразу после метки, имеет нулевой индекс. Между командами [ и ] можно исполнять любые команды со значениями, записанными в этот стек.

Словарь является сложным типом данных. Рассмотрим только применение словаря для . хранения шрифта и изменения его кодировки. Каждый словарь имеет определенную емкость — максимальное число словарных записей, которое определяется при его создании. Словарная запись состоит из имени и значения. Значением может быть объект любого типа.

Команды PostScript хранятся в специальных словарях, находящихся в стеке словарей с самого начала, которые не могут быть удалены. Это словарь ошибок, системный и пользовательский словари. Данные в системном словаре и словаре ошибок нельзя изменить, эти словари закрыты для записи. Пользовательский словарь изначально является текущим. Можно создавать новые словари, помещать их в стек словарей и удалять из него. Текущим - является последний словарь, записанный в этот стек.

4.5.3 Структура PostScript-файла

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

Также важную роль при написании программы имеют комментарии, так как по комментарию, расположенному в первой строке файла, ОС UNIX и прикладные программы определяют его тип.

Структурные комментарии используются для выделения элементов логической структуры PostScript-файла и интерпретируются программами просмотра/преобразования.

Структурные комментарии делятся на три группы:

- комментарии в затловке программы (перед прологом);

- комментарии в теле программы;

- завершающие комментарии (в эпилоге).

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

Для того чтобы подсистема печати или прикладная программа смогли правильно определить тип файла, его первая строка должна начинаться комментарием: %!.

Данный комментарий является обязательным. После символов %! в той же строке может следовать текст PS-Adobe-N.M. Цифры N.M (например, 1.0) определяют версию соглашения о структурных комментариях (это специальный документ, содержащий правила оформления структурных комментариев).

Структурные комментарии начинаются символами %%. Если программа содержит такие комментарии, она соответствует договоренностям о структуре PostScript-файлов. После %%- без пробела следуют зарезервированные (ключевые) слова. Регистр букв в них имеет значение. При необходимости с ключевым словом может быть указано значение, которое отделяется от ключевого слова двоеточием и пробелом.

Комментарий %% DocumentFonts позволяет программам обработки загружать в принтер необходимые шрифты, если они еще не содержатся в его памяти. В комментарии %% PageFonts перечисляются только те шрифты, которые используются при печати данной страницы.

Комментарий %%BoundingBox определяет положение изображения на странице. Четыре целых числа — это координаты левого нижнего и правого верхнего углов прямоугольника, содержащего изображение. В многостраничном документе прямоугольник должен охватывать все изображения. Этот комментарий важен для программ, которые включают изображение из одного файла в другой файл. Если точно определить размер изображения невозможно, следует указать заведомо большие значения, например соответствующие размеру листа бумаги формата А4:

%%BoimdingBGx: 0 0 595 842

Комментарием %%EudProlog завершается раздел описаний PostScript-файла и начинается тело документа.

Комментарий %%Page открывает ту часть файла, которая описывает печать очередной страницы. У него два аргумента — метка страницы и ее номер. Метка представляет собой последовательность любых символов, кроме .пробела, и на печать не выводится. Номер страницы задается числом, начиная с 1.