Курсовая по СПО (538457), страница 4
Текст из файла (страница 4)
Рисование прямоугольника
Нарисуем прямоугольник на расстоянии в дюйм от сторон левого нижнего угла страницы. Начнем с функции, переводящей дюймы в единицы измерения PostScript - пункты (один пункт равен 1/72 дюйма). Осуществить такое преобразование просто - достаточно умножить число дюймов на 72:
/inch {72 mul} def
Начинаем новую линию и помещаем текущую точку на расстояние в дюйм от границ:
newpath
/ inch / inch rnoveto
К этому моменту линия состоит из одной точки с координатами (-72, 72). Добавим стороны с помощью оператора lineto. Этот оператор добавляет к пути отрезок, соединяющий текущую точку и точку, координаты которой находятся на стеке. Координаты конца отрезка становятся новыми координатами текущей точки. Итак, добавим три стороны квадрата:
2 inch I inch lineto
2 inch 2 inch lineto
1 inch 2 inch lineto
Получившуюся линию можно замкнуть кратчайшим отрезком. Это делается оператором closepath. Этот оператор особенно полезен при закраске фигур. Теперь полученную линию можно нарисовать оператором stroke. Оператор showpage закончит вывод страницы на печать:
Closepath
Stroke
showpage
Закраска фигур
Сначала создается путь, но вместо вызова оператора stroke вызывается оператор fill, который заполняет путь текущим цветом. Применение fill вместо stroke в приведенном примере даст закрашенный квадрат вместо контура.
Вставка текста
Вставка текста состоит из следующих основных шагов:
-
Выбрать необходимый шрифт;
-
Сделать текущей точку, в которую будет помещен левый нижний угол текста;
-
Передать строку для печати оператору 'show'.
Оператор 'show' - это простейший опреатор- дяя вывода строки. Его аргументом является строка, которую он выводит текущим шрифтом. Вывод происходит, начиная с текущей точки, которая становится левой нижней точкой по отношению к тексту. После того как текст был выведен, текущей
становятся точка соответствующая нижнему правому краю строки.
Ниже приведен текст программы для вывода графика функции £=sin(x)\2
% IPS-ADOBE-1.0
%%tTitle: график функции f~sin(x)\2
■%%Creator: Иванова Анна
%%Pages: I
%%BoundingBox: 0 0 595 842
%%EndCojranents
/cm { 72.0 mul 2.54 div } def %перевод см в пункты /хО 21.0 2 div 5.0 sum -cm def ^координаты нижнего /ус 29,7 2 div 2.0 sum era def %левого угла графика
%%EndProlog
%%Page: I 1
gsave
xO yO translate ^сдвигаем начало координат к рамке
newpath
0 0 moveto %^воводим рамку размером' 10см х 4см
10 cm 0 rlineto
0 4 cm rlineto
~1О cm 0 rlineto -
closepath
.3 setliaewidth %толщина рамки 0.3 пункта
stroke %рисуем линию вдоль сторон рамки
newpath
0 8 1440 %заголовок цикла: оа? 0°до8
{
/a exch def %локальная переменная
а 144.0 div %стек: эо?о число в диапазоне 0...10см cm %с^ек: х координата лежит в диапазоне %0.Л0см
a sin
а 2 div 1.0 add
2- 0 mul - _ .
cm %стек: x у %координата у лежит в %интервале G...4 см
а 0 eg
{ moveto } %переходигг в первую точку % стек:х у
{ lineto } ifelse
} for % оператор цикла
1 setlinewidth'% график выводится жирной линией
stroke -% рисует линию вдоль прямой
grestore
showpage
%%Trailer
На рис. 4.3 приведен результат выполнения программы.
Рисунок 4.3 – Вид окна с результатами выполнения программы
4.3 Командный интерпретатор
Командный интерпретатор является одной из важнейших программ, обеспечивающих диалог пользователя с системой. Он запрашивает у пользователя команду и анализирует ее. Если команда является внутренней по отношению к командному интерпретатору, то он реализует ее своими средствами (например, команда смены директории - cd - реализуется функцией cd ()). Если же введенная команда не является внутренней, он запускает эту - команду на выполнение (функция execvp()), В случае некорректной команды, выводится сообщение об ошибке.
Все современные системы UNIX поставляются по крайней мере с тремя командными интерпретаторами: Bourne shell (/bin/sh), С shell (/bin/csh) и Коrn shell (/bin/ksh). Существует ещё несколько интерпретаторов, например Bourne-Again shell (bash), со сходными функциями.
В UNIX реализуется следующий сценарий работы в системе:
•При включении терминала активизируется процесс getty (M), который является сервером терминального доступа и запускает программу login(l), которая, в свою очередь, запрашивает у пользователя имя и пароль.
•Если пользователь зарегистрирован в системе и ввёл правильный пароль, login(l) запускает программу, указанную в последнем поле записи пользователя в файле /etc/passwd. В принципе это может быть любая программа, но в нашем случае - это командный интерпретатор shell.
•Shell выполняет соответствующий командный файл инициализации, и выдаёт на терминал пользователя приглашение. С этого момента пользователь может вводить команды.
•Shell считывает ввод пользователя, производит синтаксический анализ введённой строки, подстановку шаблонов и выполняет действие, предписанное пользователем (это может быть запуск программы, выполнение внутренней функции интерпретатора) или сообщает об ошибке, если программа или функция не найдены.
•По окончании работы пользователь завершает работу с интерпретатором, вводя-команду exit, и выходит из системы.
Основной алгоритм программы, реализующей функции командного интерпретатора, представлен на рис. 4,4. В ней осуществляется вывод на экран строка с - текущей директорией и приглашением командного интерпретатора, запрашивающим команду. После ввода пользователем команды, вызывается функция (translate), которая делит введенную команду на имя команды и ее аргументы, возвращая при этом константу в соответствии с именем команды. Потом с помощью оператора switch анализируется возвращенная константа и выполняются соответствующие действия.
Translate - функция разбора строки команды, введенной пользователем с клавиатуры, на имя команды и ее аргументы. Функции передается параметр ~ строка команды, возвращаемые значения - имя команды в переменной command, список аргументов в массиве р и константа, определяющая команду.
Алгоритм функции translate представлен на рис. 4.5.
Sozd - функция, выполняющая запуск внешней команды. Функция создает дочерний поток, в котором выполняется команда, возвращает результат выполнения команды. В случае если команда не найдена, выдается сообщение об ошибке.
Алгоритм функции sozd представлен на рис. 4.6.
F ~ функция выполняет действия аналогичные команде cat>1.txt. являющейся внешней, т.е, производит запись введённой информации в файл. Весь ввод с консоли направляется в файл 1 .txt. Для вызова функции следует нажать клавишу «f», для завершения записи в файл нажать сочетание клавиш «Ctrl+Z», Файл создается с именем l.txt в текущей директории.
Алгоритм функции F представлен на рис, 4.7.
Рисунок 4.4. Основной алгоритм программы
Рисунок 4.5. Алгоритм функции translate
Рисунок 4.6. Алгоритм функции sozd
Рисунок 4.7. Алгоритм функции F
ЛИТЕРАТУРА
1 Робачевский А. М. Операционная система Unix. - СПб: БХВ-
Петербург, 2001.
2. Стахнов A. A. Linux. - СПб.: БХВ-Петербург, 2003.
3. Шоу А. Логическое проектирование операционных систем," Пер. с
англ.- М: Мир, 1983.
4. Грис Д. Конструирование компиляторов для ЦВМ.-М.: Мир, 1975
5-. Бек Л. Введение в системное-программирование.-М.: Мир, 1988
6. Немнюгин С, Чаунин М., Камолкйн А. Эффективная работа: UNIX.-
СПб.: Питер, 2003.
ПРИЛОЖЕНИЕ А
ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ
Федеральное государственное образовательное учреждение высшего
профессионального образования
МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
«МАМИ»
Кафедра автоматики и процессов управления
Курсовая работа защищена с оценкой
(подпись преподавателя, дата)
КУРСОВАЯ РАБОТА
но дисциплине "Системное программное обеспечение"
Вариант №14
Тема: "Разработка командного интерпретатора
Курсовая работа допущена к защите
(подпись преподавателя, дата)
Выполнила ст. группы 6УИ9
Апалькова Елена Александровна
(Ф.И.О.)
Руководитель:
доцент, к. т. н„ Мурачев Е.Г.
(звание, степень Ф.И.О.)
МОСКВА -2008
ПРИЛОЖЕНИЕ Б
ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ
Федеральное государственное образовательное учреждение высшего
профессионального образования
МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
«МАМИ»
Кафедра автоматики и процессов управления
ЗАДАНИЕ
на выполнение курсовой работы'
по дисциплине
«Системное программное обеспечение»
вариант № 1
Исходные данные:
Разработать транслятор инфиксных выражений в постфиксную форму. Выражения разделены между собой точками с запятой и состоят из чисел, идентификаторов и операторов +, -, *, /, div, mod.
Задание выдано «___»_________2008 г. (подпись преподавателя)
Задание получил _______________________ (подпись студента)
Приложение В
Спецификация
Обозначения | Наименование | Примечание |
Документация | ||
КР021045 12 | Разработка прмраммы | |
вывода графика функции | ||
f=sin(x)/2. Текст - | - | |
программы. | ||
. | ||
КР021045 34 | Разработка программы | |
- | вывода графика функции | |
r=sin(x)/2. Руководство | ||
оператора- | ||
Приложение Г
УТВЕРЖДЕН
КР021045 12
Разработка программы для вывода графика функции f=sin(x)/2
Текст программы
К021045 12
Листов 12
2008
Приложение Д
УТВЕРЖДЕН
КР021045 34
Разработка программы для вывода графика функции f=sin(x)/2
Руководство оператора
К021045 34
Листов 18
2008
СОДЕРЖАНИЕ
Введение………………………………………………………………...3
1 Цель и задачи курсового проектирования……………………..........3
2 Организация и последовательность вьшолпения
курсовой работы ……………………………………………………….4
2.1 Задание на курсовую работу …………………………………..4
2.2 Объем и содержание курсовой работы……………………….….4
2.3 Последовательность выполнения работы………………………..5
3 Варианты заданий……………………………………………………..6
4 Информация для выполнения курсовой работы…………………...11
4.1 Демоны…………………………………………………………....11
4.2 Язык PostScript…………………………………………………...13
4.3 Командный интерпретатор………………………………………28
Литература ……………………………………………………………..34
Приложения…………………………………………………………….35