Файл: Оперативные графические системы в автоматизации проектирования..pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 23.10.2024
Просмотров: 68
Скачиваний: 0
|
С |
Начало |
3 |
|
|
|
|
|
|
|
|
Ввести |
КОД НАПР |
|
|
|
|
|
|
|
_______ |
|
1 |
|
Ля |
|
|
|
|
( |
Есть признак конца подвода ? |
|
|
|
|
||||
|
|
|
|
|
|||||
С |
|
|
1//ест |
|
|
|
|
|
|
Ли?НАПР=0 .//ест |
|
/to J НАПР=СЕВЕР |
|
-.Нет |
УМ-'=У |
|
|||
Ла |
Ла |
|
jAa |
|
' |
|
|
||
|
|
|
У +Д > У тал |
'У |
|
|
|
||
|
|
|
|
Г Исключить |
|
||||
|
|
|
|
jHcm |
|
I |
|
||
|
|
|
|
У : = У + Д |
|
I |
команду |
I |
|
|
|
|
|
Г |
|
|
. „Чертить мар-1 |
||
|
|
|
|
|
Нет |
Q |
кер“ из MKD |
| |
|
|
|
|
( |
Код НАПР = ЮГ |
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
Ла. |
ТД<Г |
|
|
|
|
|
|
|
|
У - д < 0 |
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
X |
|
|
|
|
|
|
|
|
|
У: = У-Д |
|
|
|
|
|
|
|
|
|
о . |
|
.//ест |
|
|
|
|
|
|
(ко д НАПР = ВОСТОК |
|
|
|
|||
|
|
|
|
|
|
|
|||
|
|
ла |
--------- ал? |
|
. |
|
|
|
|
|
|
|
|
Х+Д > X m a x > |
|
|
|
'♦ нет
|
X:=Х +Д |
1 |
|
<( Код НАПР= ЗАПАД |
Ч//е/7? |
||
Ла |
£Да |
У |
|
х -д < О |
|||
|
\нет~
Х:=Х-Д |
кзТ:_пЬ
Сформировать команду „ Чертить маркер
6 мко
с |
щ |
г — |
Коней, |
3 |
Рис. 5.10. Алгоритм программы продвижения маркера
сива команд отображения формирует команду вычерчи вания маркера в точке (A', У), которая затем выпол няется г-рафшчеоким процессором ГП. Отклонение ручки
MiHопопоз11цIюнного |
ключа в определенном направлении |
|
вызывает |
периодическое сложение соответствующей ко |
|
ординаты |
маркера |
с приращением Д, т. е. движение |
маркера |
по экрану |
в заданном направлении с постоян |
ной скоростью. Для |
удобства оператора в системе пре |
дусмотрены две скорости: для грубого и точного подвода
маркера; соответствующие им значения Д задаются пе |
|
реключателем |
пульта (на схеме управление скоростью |
не показано). |
После подвода маркера в нужную точку |
пользователь |
сообщает об этом программе сигналом |
«Конец подвода», после чего текущие значения коорди нат маркера могут попользоваться в качестве парамет
ров Лм, У„ в других |
процедурах. |
Поле |
перемещения |
|||
маркера |
ограничено |
прямоугольником |
(0, |
j max; |
||
О, Ушах) • |
|
|
|
|
|
|
Ввод символьной |
информации. |
Символьная |
форма |
|||
представления информации является |
наиболее универ |
|||||
сальной. |
В такой форме пользователь |
может |
вводить |
числовые данные (параметры процедур), текстовую ин формацию (надписи, комментарии, имена программ и файлов п т. п.).
Символьная информация с пульта пользователя вво дится либо устройствами чтения с носителя (перфокарт, перфолент), либо с помощью клавиатур. Первый способ удобен при вводе больших массивов данных, но требует предварительной подготовки носителей (перфорации). Для оперативного ввода символьной информации в ЭВМ обычно используют стандартную клавиатуру телетайпа или электрофицированной пишущей машинки. При орга низации диалога с помощью такой клавиатуры необхо димо реализовать следующие возможности: оперативное отображение вводимой информации на экране для конт роля пользователем; редактирование вводимой после довательности символов, исправление ошибок; получение протокола.
Накопление вводимых символов сообщения, их ото бражение и редактирование могут осуществляться аппа ратурой пульта пользователя. Для этого она должна содержать буферные регистры и логические схемы, реа лизующие алгоритмы редактирования и управления.
156
Программная реализация ввода представляет интерес с точки зрения экономичности и гибкости системы.
Рассмотрим систему ввода, имеющую четыре режима: «Накопление», «Удалить символ», «Вставить символ», «Заменить символ». Основным является режим «Накоп ление». При нажатии на клавишу в этом режиме проис
ходит ' прерывание |
текущей |
программы. Код клавиши |
||
вводится в ЭВМ и запоминается |
как последний элемент |
|||
А [/г] стека символов с адресом, |
равным текущему зна |
|||
чению указателя |
стека /г. |
Указатель |
наращивается |
|
п : — /г+1. На экран выводится строка |
символов, соот |
|||
ветствующая стеку Л[1 : п]. |
Сообщение набирается при |
последовательном вводе символов. После нажатия кла виши, которая интерпретируется как «конец сообщения», символы сообщения передаются программе обработки, а стек накопителя считается пустым п : = 0 . Если в про цессе набора сообщения замечена ошибка, строчку мож но скорректировать в одном из трех режимов редактиро вания.
Рассмотрим работу используемых при этом процедур редактирования.
Процедура «Удалить символ». Адрес удаляемого символа в стеке задается пользователем с помощью указательного маркера. Пользователь подводит маркер к нужному символу последовательными нажатиями на клавишу «продвижение». При этом пропрамма продви гает маркер вдоль строчки, наращивая счетчик i. Нажа тием на клавишу «конец подвода» пользователь сооб щает программе, что маркер подведен к символу /4[£], который необходимо удалить. При удалении символа Л[£] адреса символов А [1]-ь4 [/—1] не изменяются, сим волы A [ t + 1] -f-A [я—1] сдвигаются в стеке на одну пози цию влево, начиная с А[£-}-1]:
A[i]: = A[i -!- 1]; A[i -\- \] \ = А [£ -|- 2];
А [п — 2]: = А [ п — 1].
Указатель стека уменьшается на единицу:
п : = п — 1.
Скорректированная строчка выводится на экран. .
157
Процедура «Вставить символ». С помощью маркера пользователь задает адрес i символа, после которого необходимо сделать вставку. Символы Л[/+1]-ь/1[д—1] сдвигаются в стеке на одну позицию вправо, начиная с Л [/г-1]:
А [/г]: = А [п — 1];
/1 [ п — 1]: = А [ п — 2];
е................................................................................
|
A [ i + 2 ] : |
= A [ i |
+ |
l}. |
|
|
Увеличивается на единицу указатель стека: |
|
|||||
|
п : = |
|
|
|
|
|
Вставляемый |
символ |
записывается |
в стек по адресу |
|||
i+ l. Скорректированная строчка |
выводится на экран. |
|||||
Процедура «Заменить символ». По адресу указанно |
||||||
го маркером |
символа Л[/'] |
в стек |
записывается |
вновь |
||
введенный символ. Адреса |
остальных символов и указа |
|||||
тель стека не изменяются. |
Скорректированная строчка |
|||||
выводится на экран. |
символьных |
сообщений |
часто |
|||
При вводе |
коротких |
|||||
необходимо |
скорректировать только |
последний введен |
ный символ. С этой целью можно организовать упрощен ную систему ввода, которая не требует задания адреса символа, а всегда оперирует с последним символом стека
( i = n — 1).
Для случаев, когда ошибка замечена не в последнем символе, удобны следующие способы редактирования: удалить всю строку символов; последовательно удалять символы, начиная с последнего А [/г—1] и кончая оши бочным А [£].
Рассмотрим алгоритмы процедур, реализующих ввод
иредактирование коротких сообщений.
Впроцедуре «Ввод с возможностью удаления послед него символа и всей строки» используются две выделен ные клавиши алфавитно-цифровой клавиатуры для ввода признаков «удалить» п «конец ввода». При наборе на клавиатуре последовательности символов строки соот
ветствующие им коды накапливаются в стеке А [ 1 : п]. При нажатии на клавишу «удалить» уменьшается указа тель стека (а : = п —1). Если клавиша «удалить» нажа та два раза подряд, то стек очищается (п : =0), что соот
158
ветствует стиранию строки. По клавише «конец ввода-» стек символов и указатель стека передаются обрабаты вающей программе, выполнение процедуры ввода закан чивается.
В процедуре «Ввод с возможностью многократного удаления последнего символа» используются клавиши «удалить» и «конец ввода». Последовательность введен ных символов накапливается в стеке. Каждое нажатие на клавишу «удалить» уменьшает указатель стека /г: =
= п—1, если п ф 0.