Главная » Просмотр файлов » Т. Пратт, М. Зелковиц - Языки программирования - разработка и реализация (4-е издание_ 2002)

Т. Пратт, М. Зелковиц - Языки программирования - разработка и реализация (4-е издание_ 2002) (1160801), страница 149

Файл №1160801 Т. Пратт, М. Зелковиц - Языки программирования - разработка и реализация (4-е издание_ 2002) (Т. Пратт, М. Зелковиц - Языки программирования - разработка и реализация (4-е издание_ 2002)) 149 страницаТ. Пратт, М. Зелковиц - Языки программирования - разработка и реализация (4-е издание_ 2002) (1160801) страница 1492019-09-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 149)

НТМ! мы рассмотрим в деталях немного позже в этой же главе. 12.1.3. Ров1аспр1 Розгвспрг был разработан Джоном Уорноком ()оЬп %агпосЬ) и Чаком Гешке (СЬпс!г Сезй!ге) из Л<1оЬе Вуягешз в начале 80-х гг. !7!. Исхолно Розгвсбрс использовался как ядро механизма печати компьютеров Лрр!е, по вскоре стал широко распространенн ы м стандартом для большинства компьютерных систем. Интерпретаторы Роз!зебр! (в виде программных или аппаратных компонентов) для печати документов присутствуют практически во всех современных компьютерных системах.

В Роз!зебр! используется молель изображения текста (или рисунков) на чистой странице. Когда страница готова, она выводится на печать и начинается «прорисовка» изображения очередной страницы. Это есть пе что иное, как метод компиляции, обсуждавшийся нами в начале этой главы в связи с классификацией трансляторов соответственно форме нх вывода. Каждый документ Розгэсг!р! включает в себя программу, которая печатает на принтере (илн отображает на экране монитора) следующие друг за другом страницы. Программа Розьвсбф состоит из четырех компонентов; 1.

Интерпретатор для выполнения вьгчислений. Основной моделью такого интерпретатора является простой стек постфиксного выполнения. 2. Синтиксисяэыха. Он основан на сии гаксисе языка Еоггй, описанном в обзоре языка 8.2 3. Расширения для раскрашивияия. Расширение языка Роггй командами закрашивания для управления процессом отображения текста п рисунков на листе бумаги. 4. Соглашения.

Набор соглашений, не входящих в официальный язык Роз!лег!рц которые используют различные принтеры для согласования представления документов. Использование этих соглашений упрощает передачу документов Роз!вопр! из одной системы в другую. Каждый компонент будет описан в последующих разделах, 12.1.4. Виртуальная машина Роа1аспр1 Программа Ровгэсг!р! состоит из гюследоватсльностп команд, которые представляют постфиксную форму алгоритма, необходимого для прорисовки документа. Эта последовательность управляет стеком, как показано на рис. 12.2.

Когда про- 12.1. Настольные издательские системы 537 грамма Розтьспрс начинает выполняться, в стеке уже присутствуют два элемента, которые программа нс может удалить: + зуз геша с1 — это системный словарь, который представляет собой исходное связывание объектов Розгзсг(рс с их внутренним представлением. + оьегйсе — это пользовательский словарь, который представляет собой новые определения, включенные в это выполнение программы Розеьсйрс. Сюда могут входить измененные определения элементарных объектов, уже определенных в зузгег й сн Рис. 12.2. Модвль выполнения программы Ров1волр1 Стеки выполнения. Фактически в Розгьсг1рг используется четыре вида стеков: 1.

Стек операндов, содержащий операнды, которые добавляются в стек, выпол- няются и затем удалюотся из стека. 2. Стек сговарей содержит только объекты-словари. Этот стек определяет об- ласть вилимостн и контекст каждого определения. 3. Стек вьтолиения содержит выпэлнясмыс объскты. По большей части это функции на промежуточных стадиях выполнения. 4. Стек графики управляет контскстом для отображения обьектов на страни- пе. Он рассматривается в следующем разделе. Программа на Роясаспрг записывается в виде послсловательпости символов АБСП.

Программа разбивается на последовательность лексем. При считывании каждой лексемы се определение становится доступным в стеке (сначала просматривается пользовательский словарь оэегйст, а затем системный эуэтенея сг), а затем лексема выполняется соответствующим действием. Имена — это выполняемые объекты, обычно они состоят из любых символов, за исключением пробелов (например, Айаае, аЬс, А. Нале). Вообще говоря, имена вызывают поиск их значений в стеке словарей с последующим выполнением найденных значений. Так, имя аоо приводит к доступности сто определения в словаре ьуз1евг11ск Это определение яр иводиз к тому, что два верхних элемента в стеке опера~гдов складываются.

Конечно, пользователь может написать свое определение для имени а~Ы 538 Глава 12. Сетевое программирование и поместить его в словарь оэегз1ст, переопределив тем самым исходный примитив аЬЬ. В листинге П.12 приведен пример простой программы на Розгзспрк Литералы — это имена, перед которыми стоит символ наклонной черты (/). Этот символ служит указателем нато, что следующее за ним имя следует помещать в стек операндов, а не искать его значение в словарях. Использование наклонной черты позволяет йзначение аоо (то есть имя) поместить в стек операндов вместо того, чтобы вызвать г-значение (то есть процедуру сложения).

Например, при определении новой функции до того, как это определение будет занесено в словарь, сначала нужно поместить имя и его определение в стеке операндов, а затем выполнить имя бей Имя ое1, когда будет найдено в системном словаре эуэгвзо1 сг, приведет к тому, что два верхних элемента из стека операндов (которые должны представлять имя новой функции и ее выполняемое определение) будут добавлены в словарь озего1сг в качестве нового элемента.

Команды раскрашивания До сих пор описание Розгзснрг во многом напоминало описание языка РогГЬ, который использует простую виртуальную машину постфиксных вычислений. Операнды располагаются в стеке, а операции используют содержимое стека в качестве своих аргументов. Силу языку Роэгзсг1рг придает возможность раскрашивать информацию па странице.

Имя ззои используется для размещения текста на странице, пюхето перемещает курсор по странице, а эпохраде используется для отображения полностью готовой страницы. Предполагается, что изначально страница имеет белый цвет. Объекты, вычерчиваемые иа странице, непрозрачны, то есть любой объект будет стирать объект, поверх которого он вычерчивается. Стирание части страницы осуществляется простой прорисовкой бело~о обьекта в этой области. Начало коорлгшат расположено в левом нижнем углу страницы, а точки на странице задаются с помощью координат (х, у): х соответствует расстоянию от начала координат по горизонтали, ау — по вертикали.

Расстояние измеряется в пунктах; одному дюйму соответствует 72 пункта, но с помощью команды эса1е это можно изменить. Пример рисунка. Чтобы продемонстрировать некоторые графические возможности Роввэсг)рц мы несколько расширим программу из листинга П.12 (которая является Роэгэспрг-версией программы на языке ЕоггЬ из обзора языка 8.2) таким образом, чтобы она вычерчивала изображение простого грузовика. В листинге 12.1 приведена модифицированная программа, в которой строки с 14-й по 30-ю вставлены между строками 12 и 13 программы из листинга П.12, Ьох — это новая функция, которая создает прямоугольник со сторонами длиной 3 по горизонтали и 1 по вертикали.

Заметим, что стороны этого прямоугольника равны соответственно 3 и 1 пункту, или 3/72 дюйма и 1/72 дюйма, которые слишком малы, чтобы можно было разглядеть прямоугольник на странице. Для увеличения прямоугольника используется команда масштабирования эса1е (строка 19). Команда пеирагп начинает новую траекторию. Курсор перемещается в начало координат командой юохеГо, а затем команда Ппе1о используется для создания ряда линейных сегментов. Команда с1оэерзФЬ используется для замыкания траектории, в результате чего получается замкнутая фигура.

12.1. Настольные издательские системы 539 Листинг 12.1. Программа вычерчивания 1О-колесного грузовика 0: 1~ зто Фаил Розтзсгзрт 1: Фпиалогична програнне иа азаке Гогтл 2: уне1чеыса и погопт 3: 20 зса1е1опт 4: вестовая 5 200 400 иочета 6, 71огиа111 (10 10 зтгзпд счгз знои) Ое1 7 7здг (сир ва1] сет 8 /Оозаа (ехсл 1 а00 ехсл 1 зпоех здг ащ Оет 9: 3 б Орван 2 сору 1огиа111 ( > алов Гогвагтс 10: с1еаг 11 200 375 вочесо 12 0 0 0 1 9 (рор сонат] 1ог 1огиаты 14: ФРисуен грузовин 15: IЬох (пеирать 0 0 воче1о 0 1 1зпе1о 3 1 1зпето 3 0 16.

1~пего с1озерагл) оег 17: 1 зе11зпеищтл 0 зе1дгау 18: дзаче 19; 72 72 зса1е 20: 2 5 огапз1аое Ьох зггоке 21; 3.2 0 1гапз1аге .5 .5 зса1е Ьох П 11 22: 0 1 ггапз1асе .б .б зса1е Ьох и 11 23. дгезтоге 24. 71вге (пеираьь 1 0 аочего 0 0 1 0 360 агс с1озерагь) бег 25..5 зе11зпеизотл 10 10 зса1е 26: 16 34 1гапз1аге юге зггоке 27: 3 О Ьгапз1ате 11ге зтгохе 28: 17 О ггапз1ате сзге зогоке 29 3 0 сгапз1ате гаге зтгоке 30: 8 0 Огапз1ате озге зогохе 13 зьоираде Тольцина линий устанавливается равной 0.1, а цвет задается при помощи команды зесдгау, которая с помощью своего параметра позноляет устанавливать различные оттенки серого цеста. Черполву цвету соответствует параметр со значением 0, белому — 1'.

В строке 18 сохраняются текущие графические настройки, чтобы их можно было восстановить позднее. Все дальнейшие изменения в масштабе снова устананливаются в исходные значения, когда мы восстанавлинаем текущее графическое состояние. Затем мы масштабируем координаты х и у так, чтобы один пункт соответствовал одному дюйму (72 пункта). Теперь прямоугольник со сторонами 1 х 3 пункта представляет прямоугольник со сторонами 1 х 3 дюйма, Для размещения изображения грузовика па странице (строка 20) мы переносим начало координат на 2 пункта (что теперь соответствует 2 дюймам) по горизонтали и на 5 пунктов по нертикали, Теперь начало координат (О.

О) находится рядом с числами, напечатанными н результате выполнения первых двенадцати строк программы. Последовательность команд Ьох 51гоке вычерчпнаст прямоугольник размером 3 х 1, левая нижняя вершина которого расположена в новом начале координат, и закрашиваст линейные сегменты, представляющие стороны прямоугольника. (Мы также могли бы использовать команду 1~ 11 для закрашивания внутренней области вычерченного прямоугольника, что мы и демонстрируем в следу- Проыажуточаыс апачспии глотает 'твуюг рыл ич ныл оттен каы сапог<> авета.

— Причвч. науч. Реп. 540 Глава 12. Сетевое программирование ющей строке.) Затем мы последовательно перемещаем начало координат для вычерчивания кабины грузовика и его колес. В строке 24 определяется команда с1ге, которая рисует колесо грузовика в виде окружности.

Характеристики

Список файлов книги

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6417
Авторов
на СтудИзбе
307
Средний доход
с одного платного файла
Обучение Подробнее