Файл: Оперативные графические системы в автоматизации проектирования..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.