Программное Обеспечение Персональных ЭВМ [Виктор Михайлович Брябрин] (doc) читать онлайн

Книга в формате doc! Изображения и текст могут не отображаться!


 [Настройки текста]  [Cбросить фильтры]

В.М. БРЯБРИН

Программное
обеспечение
персональных
ЭВМ

ИЗДАНИЕ ТРЕТЬЕ, СТЕРЕОТИПНОЕ



МОСКВА "НАУКА" ГЛАВНАЯ РЕДАКЦИЯ
ФИЗИКО-МАТЕМАТИЧЕСКОЙ ЛИТЕРАТУРЫ 1990




ББК 22.18
Б89 УДК 519.6

Брябрин В.М. Программное обеспечение персональных ЭВМ. - 3-е изд., стер. - М.: Наука. Гл. ред. физ.-мат. лит., 1990. - 272 с. - ISBN 5-02-014824-5

Рассмотрены назначение и особенности различных классов программ для персональных ЭВМ (ПЭВМ) . Описаны основные типы операционных систем. Показана на примерах работа пользователя в рамках системы ДОС - одной из наиболее популярных операционных систем для профес­сиональных ПЭВМ. Обсуждаются методы управления внешними устройст­вами и особенности разработки прикладных программ. Приводится описание прикладных систем общего назначения, обсуждаются методы построения автоматизированных рабочих мест на основе персональных компьютеров.
Второе издание выходило в 1989 г.
Для специалистов в области информатики и вычислительной техники.
Табл. 14. Ил. 42. Библиогр. 31 назв.

Рецензент
кандидат физико-математических наук А.В. Гиглавый

БРЯБРИН Виктор Михайлович
ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПЕРСОНАЛЬНЫХ ЭВМ

Редакторы: Л.Г. Полякова, Г.В. Сенин
Художественный редактор Г.М. Коровина
Технический редактор В.Н. Кондакова
Корректоры: О.А. Бутусова, Л.С. Сомова
ИБ № 41449

Подписано к печати 28.03.90. Формат 84 X 108/32. Бумага тип. № 2 Гарнитура литературная. Печать офсетная Усл.печ. л. 14.28. Усл. кр.-отт. 1 4.49. Уч.-изд.л. 17.32 Тираж 260000 экз. Заказ 3728 Цена 2 р. Издательско-производственное и книготорговое объединение "Наука" Главная редакция физико-матемашчеекой литературы 117071 Москва В-71, Ленинский проспект, 15
Отпечатано в типографии издательства "Коммуна" Г. Воронеж, пр. Революции, 39

1404000000-043
Б-------------------Без объявл.
053(02)-90 ©"Наука".

ISBN 5-02-014824-5 Физматлит, 1990

Оглавление
Предисловие .........................6
Глава 1. Операционные системы ..............9
1.1. Операционная система — «программная оболочка» аппаратных средств ПЭВМ......................9
Для чего нужна операционная система? (10). Файловая система — хранилище программ и данных (12). Как управлять внешними уст­ройствами? (13). Взаимодействие пользователя с операционной си­стемой (14). Сколько задач может решаться на ПЭВМ одновременно? (14).
1.2. Операционные системы семейства СР/М .......15
Базовая система ввода/вывода (15). Базовая дисковая операционная система (15). Командный процессор (16).
1.3. Основные свойства операционной системы MS-DOS (ДОС) 17
1.4. Другие операционные системы............ 18
Стандарт MSX (18). Операционные системы, основанные на графиче­ском интерфейсе (19). Пи-система (19). Операционные системы се­мейства Юникс (20).
Глава 2. Как работать на персональном компьютере. — несколько уроков...........................2!
2.1. Основные понятия и обозначения............21
Накопители (21). файлы (22). Каталоги файлов (23). Маршрут — префикс имени файла (23). Приглашение ДОС (24). Команда JXOO (25). Шаблоны имен файлов (25). Ввод команд с клавиатуры (25).
2.2. Первые шаги......................27
Включение машины (27). Инициализация (27). Дата и время (28). Настройка на конкретную рабочую обстановку (28). Запуск программ (29).
2.3. Путешествие по файловой системе............31
Команда DIR (32). Команды MKDIR, RMDIR, CHDIR (36). Вспо­могательные программы для работы с каталогами (37).
2.4. Копирование, удаление, распечатка файлов........39
Команда COPY (39). Команда RENAME (42). Команда DEL (42). Команда TYPE (43).
2.8. Программы в машинном коде й командные файлы .... 44
Машинный код программы (44). Команда PATH (45), Командные файлы (46). Организация работы с транслятораии (50).
2.6. Развитые командные файлы...............51
Команда GOTO (61). Команда If (62). Команда FOR (55). Команда SHIFT (56). Вложенные вызовы Командных файлов (56).
2.7. Конфигурирование системы...............57
Файл конфигурации CONFIQ.SYS (57). Файл автозапуска AUTOEXEC.BAT (60), Файл автозапуска для ПЭВМ с несколькими пользователями (66). Размещение файлов на жестком диске (67).
2.8. Повторение — мать ученья...............68
Команда COMMAND (68). Сводка команд ДОС (69). Команды BREAK, ASSIGN, VOL, LABEL (72). Команда FORMAT (72). Команды SYS, VER, FIND. SORT (74). Команды MORE, ATTRIB (75). Служебные программы для работы с дисками (75). Вспомогательные подсистемы (75). Команды SHARE, GRAFTABL (75).
Глава 3. Структура и функции ДОС............ 77
3.1. Основные модули ДОС............... . 77
3.2. Базовая система ввода/вывода............. 79
3.3. Блок начальной загрузки............... 83
3.4. Модуль расширения базовой системы ввода/вывода ... 85
3.5. Модуль обработки прерываний ДОС.......... 87
3.6. Командный процессор................. 93
3.7. Утилиты ДОС.................... 96
Глава 4. Искусство управления персональным компьютером. 98
4.1. Управление дисплеем..................98
Управление режимоп дисплея на прикладных программ (100). Управ­ление экраном с помощью команды MODE (102). Управление экраном через драйвер ANS1.SY3 (103).
4.2. Управление вводом с клавиатуры ...........107
Особенности кодирования основных групп клавиш (ПО). Особые ком­бинации клавиш (111). Таблица ASCII-кодов (Ш). Расширенные ASCII-коды (119). Особенности действия некоторых клавиш (119). Уп­равление клавиатурой с помощью драйвера ANSI.SYS (122).
4.3. Управление принтером................125
Вывод файлов на печатающие устройства (125). Управление режимами печати (126). Как формируются новые символы для печати на прин­тере? (128). Печать текстовой и графической копии экрана (130). Коман­да MODE (132).
4.4. Инструментальные языки и системы программирования 133
Бейсик (134). Языки паскаль и си (138). Язык модула-2 (139). Фортран и кобол (139). Язык лого (140). Языки лисп и пролог (140). Языки АПЛ и форт (141). Язык ада (142). Критерии выбора языка програм­мирования (142).
4.6. Особенности разработки прикладных систем .....143
4.5.1. Структурирование программ на уровне текстовых модулей (144).
4.5.2. Раздельно компилируемые модули и библиотеки процедур (146).
4.5.3. Генерация объектных модулей и загрузочных файлов (149).
4.5.4. Библиотеки объектных модулей (ISO). 4.5.5. Реализация сег­ментированных программ с «перекрытиями» (151).
4.6. Организация взаимодействия программ .......154
4.6.1. Взаимодействие программ через прерывания ДОС (154).
4.6.2. Взаимодействие с программами на языке ассемблера (156).
4.6.3. Резидентные программы (159). 4.6.4. Связывание программ через потоки ввода/вывода (160).
Глава 5. Прикладные системы на персональных компьютерах 163
6.1. Автоматизированное рабочее место на ооиове ПЭВМ. . . 164
Рабочее место руководителя (165). Рабочее место экономиста, бухгал­тер (168). Рабочее место проектировщика, исследователи (173).
6.2. Персональная информационная система.......176
Автоматизированная картотека (176). Состав картотеки (177). Создание новой картотеки (178). Основные режимы работы (179). Перебор клю­чей (179). Работа с текстом карточки (180). Создание новых карточек (182). Использование вспомогательных рабочих икон (183). Вызов подсказок (183). Ввод/вывод (183).
5.3. Интегрированные прикладные системы ........186
Плюсы и минусы интегрированных систем (187). Основные свойства системы Framework (187). Вызов системы и начало работы с ней (188). Метафора рабочего кабинета (189). «рбработка идей» (192). Интегра­торы — средства объединения прикладных пакетов (194). Графический интерфейс (194). Возможности и ограничения операционных оболочек (196). Резидентные сервисные системы (197).
5.4. Системы подготовки текстов..............199
Основные черты системы подготовки текстов АБВ (199). Техника ре­дактирования (201). Экранное форматирование абзаце? (203). Общее упрапление работой системы (204). Вывод на печать (208). Редактор Лек.-ион (208). Манипуляции с фрагментами текста (208). Особен­ности жранного форматирования (209). Что еще можно делать с по­мощью текстовых процессоров? (210).
5.5. Системы машинной графики на персональных компьютерах213
5.5.1. Деловая графика (213). 5.5.2. Иллюстративная графика (222). 5.5.3. Инженерная графика (233). 5.5.4. Научная графика (236).
5.6. Объектно-ориентированные прикладные системы .... 239
5.7. Обучающие системы.................251
Приложение. Краткий терминологический словарь . . . 266
Список литературы........... «.........271


Предисловие

Программное обеспечение является необходимой составной частью любой ЭВМ, Без соответствующих программ практически невозможно заставить машину сделать что-либо полезное. В состав программного обеспечения персональных компьютеров входят как универсальные средства, так и прикладные программы, ориентированные на отдель­ные проблемные области.
В настоящее время для разных типов ПЭВМ разработано несколько десятков тысяч программ, которые могут быть разделены на следующие основные классы:
— операционные системы и сервисные программы,
— инструментальные языки и системы программирования,
— прикладные системы.
Операционные системы дополняют аппаратные средства любого персонального компьютера, позволяя прикладным программам обращаться к внешним устройствам, а человеку — пользователю ПЭВМ — управлять работой машины с помощью соответствующих команд. Ядро операционной системы обычно дополняется набором сервисных про­грамм, которые служат разным целям; с их помощью производится начальная разметка дисков, установка параметров внешних устройств, тестирование оперативной памяти и других устройств, выдача инфор­мации на печать, стыковка с большой машиной или с локальной сетью и др. Операционные системы являются наиболее консервативной частью программного обеспечения.
Инструментальные языки и системы программирования — это особая категория программных средств. С их помощью создаются все другие программы; таким образом, они занимают в информатике особое место. Существует широкая номенклатура языков программирова­ния, каждый из которых характеризуется определенными свой­ствами. Одни программисты предпочитают пользоваться каким-либо одним языком, другие, в зависимости от типа создаваемой системы, выбирают из имеющегося набора наиболее подходящий язык програм­мирования или пользуются сочетанием разных языков.
К категории инструментальных средств относятся не только транс­ляторы с языков высокого уровня, таких как бейсик, паскаль или фор­тран, но и ассемблеры, загрузчики, отладчики и другие системные программы. С помощью инструментальных средств создается и приклад­ное программное обеспечение, и новые средства системного программи­рования, включая трансляторы с языков высокого уровня. Следова­тельно, эта категория программных средств совершенно аналогична средствам производства в промышленности — таким как станки, инстру­менты, средства переработки сырья в нужную форму. При этом роль сырья играет информация — текстовые и числовые данные, закодиро­ванные сообщения, графические изображения. Такая же инфор­мация является и результатом работы любой программной системы.
Прикладные системы составляют категорию программных средств, обращенных к пользователям персональных компьютеров — людям, которые не обязаны уметь программировать или даже знать устройство машин. Их цель заключается либо в том, чтобы с помощью ПЭВМ решать свои повседневные задачи, либо учиться определенным навыкам (не обязательно относящимся к компьютерам), либо проводить свой досуг, играя в компьютерные игры.
Прикладные системы могут иметь общий характер, например, обе­спечивать составление документов и их печать или хранение и выдачу справок. Другие классы прикладных систем ориентируются на автома­тизацию конкретных видов деятельности, например, обучение опреде­ленным предметам в школе, проектирование электронных изделий, ана­лиз электрокардиограмм, проведение финансовых расчетов и многое другое.
В данной книге рассматривается назначение и основныеособенности различных классов программных средств. Описывается общая струк­тура операционных систем и конкретный состав одной из наиболее популярных систем для 16-разрядных ПЭВМ — ДОС. Рассматривается на примерах работа пользователя на персональном компьютере в рам­ках ДОС. Обсуждаются методы управления внешними устройствами и особенности разработки прикладных программ на ПЭВМ. Приводится описание некоторых прикладных систем общего назначения; обсуждаются методы построения автоматизированных рабочих мест на основе персональных компьютеров.
В книге использованы материалы, публикуемые в журналах и моно­графиях по персональным компьютерам, а также руководства по опера­ционной системе ДОС, по языкам и системам программирования и по некоторым прикладным системам.
Терминология, использованная в книге, соответствует сформиро­вавшейся в нашей стране профессиональной лексике в области персональных ЭВМ. Применяемые в книге обозначения языков програмирования — без выделения и с маленькой буквы — приняты редакцией. В конце книги приведен краткий терминологический словарь.
При подготовке книги в значительной степени использован опыт работы автора и его коллег в Вычислительном центре АН СССР. Ряд программ, описываемых в книге, разработан в ВЦ АН СССР в 1982 — 1985 г. А. Б. Борковским, Е. Н. Веселовым, Г. Г, Гнездиловой, О. А. Гончаровым, В. В. Пономаревым, Г. В. Сениным, Б. Т. Сираджо-вым, В. А. Рыжовым, А. А. Фёдоровым, А. А Чижовым. Коллективный опыт работы в значительной степени повлиял на формирование взгля­дов автора. Созданные в ВЦ АН СССР прикладные системы и сер­висные программы в настоящее время используются во многих органи­зациях, и это служит апробацией обсуждаемых в данной книге идей. Автор выражает также свою искреннюю признательность Т. В, Уски-вон, оказавшей большую помощь в работе над книгой.

Глава 1
Операционные системы

1.1. Операционная система — «программная оболочка» аппаратных средств ПЭВМ

Операционная система.(ОС) является неотъемлемой частью ПЭВМ, обеспечивая управление всеми аппаратными компонентами и позволяя отделить остальные классы программ от непосредственного взаимодей­ствия с аппаратурой. Число типов ОС невелико — не более нескольким десятков, но их роль чрезвычайно важна.
Прежде чем переходить к рассмотрению основных классов ОС, сле­дует обратить внимание на существование машин, в которых они носят упрощенный, вырожденный характер. В домашних или школьных компьютерах, ориентированных лишь на язык бейсик и на игры, функ­ции ОС обычно погружены «внутрь» бейсика. Это значит, чю сразу после включения машины пользователь попадает в операционную среду этого языка. При этом он может вводить с клавиатуры текст программы или набрать команду, обеспечивающую запуск программы, распечатку ее текста, обращение к диску или магнитофону для записи/чтения про­граммы и др. Все команды расшифровываются и выполняются самим интерпретатором языка бейсик. Таким образом, ОС и бейсик предста­вляют на таких машинах единое целое. Некоторые модели ориенти­руются не на бейсик, а на другой базовый язык — лого или форт; однако все сказанное выше применимо и к этим случаям.
На более мощных персональных компьютерах, где необходимо обеспечивать работу различных систем программирования и приклад­ных программ, без отдельной, самостоятельной ОС уже нельзя обойтись.
В настоящее время получили широкое распространение и факти­чески стандартизованы несколько «семейств» ОС, ориентированных на определенные типы микропроцессоров. Наиболее распространены опе­рационные системы СР/М, MS-DOS и UNIX, которые мы еще рассмотрим подробнее. Первая из этих систем используется на машинах с 8-разрядными микропроцессорами, вторая — на 16-разрядных машинах, третья — в основном на 32-разрядных машинах.
Все остальное программное обеспечение можно разделить на боль­шие группы, связанный с соответствующими семействами ОС. Про­граммы, созданные для определенной ОС, обычно не работают под упра­влением других систем. Следовательно, прикладное программное обеспечение для ПЭВМ, как и инструментальные языки и системы про­граммирования, можно разделить на несколько больших групп, обу­словленных существованием для каждого типа микропроцессора не­скольких операционных систем (рис, 1.1).
Типы микропроцессоров персональных компьютеров

Рис. 1.1. Основные группы программного обеспечения ПЭВМ
Для чего нужна операционная система? ОС обеспечивает выпол­нение двух главных задач:
— поддержку работы всех программ, обеспечение их взаимо­действия с аппаратурой;
— предоставление пользователям возможностей общего управле­ния машиной.
В рамках первой задачи ОС обеспечивает взаимодействие программ с внешними устройствами и друг с другом, распределение оперативной памяти, выявление различных событий, возникающих в процессе работы и соответствующую реакцию на них (например, при ошибочных ситуациях) и др. Общее управление машиной осуществляется на основе командного языка (языка директив), с помощью которого человек может осуществлять такие операции, как разметка дисков, копирование файлов, распечатка каталогов на экране дисплея, запуск любых про­грамм, установка режимов работы дисплея, принтера, коммуникаций и другие действия.
В различных моделях ПЭВМ используются ОС с разной архитекту­рой и возможностями; для их работы необходимы различные ресурсы оперативной памяти; они предоставляют разную степень сервиса для программирования и работы с готовыми программами.
Рассмотрим наиболее простую операционную систему, предоста­вляющую пользователям лишь самый необходимый набор средств для управления ресурсами ПЭВМ, доступа к файловой системе и организа­ции диалога. Такой «минимальный» подход реализуется в операционных системах, которые применяются на большинстве 8-разрядных ПЭВМ. Обеспечение удобного взаимодействия ПЭВМ с пользователем — «дру­жественного интерфейса», поддержка специфических внешних устройств, реализация общих сервисных функций возлагается в этом случае не столько на ОС, сколько на прикладные программы, работающие под их управлением. ОС данного класса не дают никаких особых возможностей для системного программиста, поэтому их применение оправдано на дешевых персональных компьютерах, часто попадающих в руки про­граммистов-любителей — людей, начинающих заниматься программи­рованием из любопытства и очень быстро понимающих, что ПЭВМ могут принести реальную пользу в их профессиональной деятельности. Наибольшее распространение среди систем такого типа получили ОС семейства СР/М.
Другой класс образуют ОС с более развитыми средствами доступа ко всем аппаратным компонентам, гибкой файловой системой, основан­ной на иерархической структуре каталогов, удобным для пользователей командным языком. Средства, предоставляемые ОС этого класса, позво­ляют, с одной стороны, формировать удобную операционную обста­новку для разработки программного обеспечения; с другой стороны, на их основе довольно легко можно создавать автоматизированные рабо­чие места с простыми средствами доступа пользователей к при­кладным пакетам и программам. К этому классу относятся ОС ге-мейства MS-DOS, получившие широкое распространение на 16-раз­рядных персональных компьютерах.
Третий класс ОС ориентирован в основном на эффективную под­держку процесса разработки программного обеспечения. Наиболее яркими представителями этого класса являются ОС семейства UNIX. Здесь, как и в системах второго класса, имеется развитая файловая система, обеспечивается программирование доступа ко всем типам внешних устройств, имеется очень мощный командный язык. Кроме того, в состав системы входит множество служебных программ («ути­лит»), обеспечивающих выполнение разнообразных функций, потреб­ность в которых систематически возникает при разработке программ­ного обеспечения. Наконец, в этих системах заложена возможность организации одновременной работы с ПЭВМ нескольких пользователей с отдельных терминалов — в отличие от вышеупомянутых ОС, рассчи­танных на одного пользователя. Для фактического использования этой возможности нужна уже более мощная аппаратная поддержка, что превращает персональный компьютер в довольно дорогую рабочую Станцию. Системы этого типа требуют значительных ресурсов (памяти и быстродействия), не всегда доступных на дешевых ПЭВМ, в то время как их мощность часто является избыточной с точки зрения большин­ства так называемых «конечных» пользователей, занятых не столько разработкой программ, сколько решением своих профессиональных задач.
Наконец, особый класс составляют ОС, ориентированные главным образом на поддержку удобной работы конечных пользователей. Такие системы имеют развитые средства поддержки диалога, использующие графику, дисплейные окна, специальные манипуляторы («мышь», «джойстик») для выбора объектов и операций над ними. Эти возмож­ности, однако, мало что дают для разработки программ в рамках таких операционных систем. Программирование в ОС этого типа, конечно, тоже доступно с использованием соответствующих трансляторов, однако в этом случае программист не получает никаких преимуществ для своей работы, скорее, наоборот: его работа замедляется из-за необ­ходимости производить несвойственные манипуляции с графическими объектами вместо использования привычных большинству программи­стов текстовых команд, а также из-за того, что довольно значительные ресурсы — оперативная память и время микропроцессора — расхо­дуются на поддержку удобного интерфейса, в котором системный про­граммист не испытывает большой нужды.
Из каких частей состоит операционная система? В полной конфи­гурации ОС для персонального компьютера, ориентированного на профессиональное применение, должна содержать следующие основные компоненты:
— файловую систему,
— драйверы внешних устройств,
— процессор командного языка. Рассмотрим указанные компоненты подробнее.
Файловая система — хранилище программ и данных. Одна из важнейших функций ОС — организация файловой системы. Файл — это место постоянного хранения информации — программ, данных для их работы, текстов, закодированных изображений и др. Реализуются файлы как участки памяти на внешних магнитных носителях — гиб­ких или жестких магнитных дисках. Каждый файл имеет имя, зареги­стрированное в каталоге — оглавлении файлов. Каталог (иногда назы­ваемый директорием) доступен пользователю через командный язык операционной системы — его можно просматривать, переименовывать зарегистрированные в нем файлы, переносить их содержимое на новое место и удалять. Каталог может иметь собственное имя и храниться в другом каталоге наряду с обычными файлами; так образуются иерар­хические файловые структуры.
К файловой системе имеет доступ также и любая прикладная программа, для чего во всех языках программирования имеются спе­циальные процедуры. Понятие файла может быть обобщено на любой источник или потребитель информации в машине, например, коммуни­кационный канал,.принтер, дисплей, клавиатуру и др. Такая трактовка, принятая в развитых ОС, например, в системах MS-DOS и UNIX, создает удобства для организации взаимодействия программ и обмена информацией с внешними устройствами.
Для персональной ЭВМ файловая система в определенной степени является сердцевиной всего системного программного обеспечения. Структура файловой системы и структура хранения данных на внешних магнитных носителях определяют удобство работы пользователя, ско­рость доступа к файлам, возможность создания хороших баз данных и т. д. От файловой системы во многом зависит организация много­пользовательской работы, если она поддерживается на данной мо­дели ПЭВМ. Таким образом, возможности, предоставляемые файловой системой, накладывают отпечаток на всю работу ОС, а значит и поль­зователя. В однозадачных ОС (не поддерживающих параллельную работу нескольких программ) файловая система является наиболее крупной составной частью.
Как управлять внешними устройствами? ПЭВМ может иметь довольно большой набор внешних устройств (ВУ). Помимо стандарт­ных ВУ — дисплея, клавиатуры, гибких дисков, жестких дисков и принтера, к машине могут подключаться по последовательным и парал­лельным коммуникационным каналам дополнительные устройства ввода/вывода — графопостроители, планшеты, манипуляторы типа «мышь», а также специфические устройства — модемы для связи с теле­фонными линиями, контроллеры локальных сетей, аналого-цифровые и цифро-аналоговые преобразователи и другое оборудование. Более того, даже стандартные устройства, например принтеры, могут иметь несколько режимов работы и считаться, вследствие этого, разными устройствами. Каждое ВУ характеризуется своей пропуск­ной способностью и структурой передаваемых/принимаемых данных.
Поддержка широкого набора ВУ — одна из важнейших функций ОС. Для ее осуществления введено понятие драйвера — программы спе­циального типа, ориентированной на управление внешним устройством. Каждому типу ВУ сопоставляется свой драйвер. Драйверы стандарт­ных устройств образуют в совокупности базовую систему ввода/вывода (BIOS), которая часто заносится в ПЗУ системного блока ПЭВМ. Драй­веры дополнительных устройств могут подключаться к ОС динами­чески при запуске машины. Некоторые типы ОС предоставляют сред­ства для составления новых драйверов, ориентированных на особые устройства.
Взаимодействие пользователя с операционной системой. Во вся­кой операционной системе имеется командный язык, который позволяет выполнять те или иные действия — обращение к каталогу, разметку внешних носителей, запуск программ и др. Анализ и исполнение команд пользователя, включая загрузку готовых программ из файлов в опера­тивную память ПЭВМ и их запуск, осуществляется командным про­цессором ОС. Эта часть операционной системы выполняет важную функ­цию поддержки взаимодействия с пользователями.
Кроме ввода отдельных команд, которые немедленно выполняются, имеется возможность составления целых программ на командном языке, с помощью которых можно задать довольно сложную последователь­ность действий, не прибегая к обычному языку программирования. Ко­мандный процессор в некоторых ОС позволяет создать удобную опера­ционную обстановку для конкретного пользователя, избавив его от утомительных служебных операций.
Сколько задач может решаться на ПЭВМ одновременно? Большин­ство простых операционных систем обеспечивает такую работу машины, при которой в каждый момент времени на ней решается только одна задача. Примером такой задачи может являться процесс редактирова­ния текста, работа какого-либо транслятора, печать текста на прин­тере. При решении такой задачи оперативная память машины и про­цессор не могут быть заняты другой работой.
Некоторые типы ОС ориентированы на одновременное обслужива­ние нескольких- задач. При этом имеется в виду возможность запуска одной или нескольких программ с соответствующим распределением оперативной памяти между ними, переключением центрального про­цессора и других устройств с обслуживания одной задачи на другую, организации обмена сообщениями между ними, синхронизации и др. Типичное использование возможности многозадачного режима — за­пуск на фоне диалоговой работы пользователя программы печати на принтере или программы поддержки связи с локальной сетью. Довольно часто под многозадачным режимом подразумевается одновременное обслуживание нескольких пользователей, работающих за отдельными терминалами. Однако для ПЭВМ среднего класса, имеющих всего один дисплей и клавиатуру, такой режим работы не нужен, и специальная поддержка его средствами операционной системы отняла бы слишком много ценных ресурсов.
Кроме рассмотренных общих функций, ОС иногда обеспечивают программную поддержку некоторых сервисных функций, таких как вывод на экран дисплея простейших геометрических фигур, использо­вание дисплейных окон и др. Особую роль играют программы, позво­ляющие использовать ПЭВМ в качестве терминала большой ЭВМ. Такие программы называют эмуляторами терминалов. Реализуются они в виде специальных драйверов в рамках стандартной ОС. Программа-эмулятор воспринимает от пользователя команды, обращенные к другой машине, перерабатывает их в соответствующее внутреннее представление и посылает в другую машину через линию связи. Кроме того, эта программа должна принимать сообщения от другой («главной») машины и выдавать их на дисплей ПЭВМ. Важнейшая функция про­грамм-эмуляторов — обеспечение пересылки файлов между машинами в обоих направлениях.
Таковы типичные функции и состав операционных систем для ПЭВМ. Чтобы дать читателю более детальное представление об ОС, рассмотрим подробнее несколько конкретных систем.

1.2. Операционные системы семейства СР/М

ОС СР/М положила начало созданию операционных систем для микроЭВМ. Она была разработана в 1974 г., после чего была установлена на многих 8-разрядных машинах. В рамках этой операционной системы было создано программное обеспечение значительного объема, включаю­щее трансляторы с языков бейсик, паскаль, си, фортран, кобол, лисп, ада и многих других, текстовые и табличные процессоры, системы управления базами данных, графические пакеты, символьные отлад­чики и другие проблемно-ориентированные программы.
Успех системы в значительной степени был обусловлен ее предель­ной прсстотой и компактностью, возможностью быстрой настройки на разные конфигурации ПЭВМ. Первая версия системы занимала всего 4 Кбайт, что было весьма важно в условиях ограниченных объемов памяти персональных компьютеров того времени. Затем система была реконструирована с целью обеспечения большей независимости от состава и параметров внешних устройств, применяемых на ПЭВМ. В современных версиях этой системы настройка на конкретную архи­тектуру машины обеспечивается с помощью специального текстового файла, описывающего конфигурацию подключенных внешних устройств.
СР/М постоянно хранится на диске и состоит из трех частей: базо­вой системы ввода/вывода, базовой дисковой операционной системы и командного процессора. Эти части содержатся в специальных фай­лах с именами BIOS, BDOS и ССР. В начале работы, при включении машины, указанные файлы загружаются в оперативную память. При этом они располагаются на старших адресах, оставляя младшие адреса для программ пользователя, загружаемых с диска. Требуемая для работы память невелика — в пределах 16 Кбайт.
Базовая система ввода/вывода (БСВВ). БСВВ содержит в основ­ном подпрограммы-драйверы внешних устройств. Это единственная часть СР/М, которая требует настройки на конкретное оборудование. .Таблицы, описывающие характеристики используемых дисковых нако­пителей, параметры дисплея, клавиатуры и последовательного канала, формируются при генерации ОС, во время которой происходит пере­компиляция БСВВ с использованием специального файла конфигу­рации CONFIG. CPM. При установке нового устройства достаточно внести в CONFIG. CPM соответствующую информацию, скомпилиро­вать новый вариант БСВВ, и система оказывается готовой к работе.
Базовая дисковая операционная система. Часть СР/М, называе­мая базовой дисковой операционной системой (БДОС), содержит функ­ции управления файловой системой и общего управления машиной (таких функций около 40). Файловая система СР/М довольно ограни­ченна. Имена всех дисковых файлов хранятся в одном большом ката­логе, который можно разделить на несколько нумерованных пользо­вательских областей.
Такая организация файловой системы не очень удобна, так как не позволяет структурировать хранимую информацию. Весьма огра­ниченны возможности улавливания ошибочных ситуаций, диагностиче­ские сообщения чрезмерно лаконичны. Компенсацией за эти ограниче­ния является компактность системы и удобство ее настройки на задан­ную конфигурацию.
Командный процессор (КП). КП имеет средства для обработки лишь нескольких встроенных команд. Сюда относятся команды на­стройки на рабочий диск, команда USER — настройка на нового поль­зователя, DIR — выдача каталога диска, TYPE — вывод содержимого файла на экран дисплея, REN — переименование файла, ERA — уда­ление файла. Это самый минимальный набор команд, которыми при-кодится пользоваться при общении с ОС, Другие команды (а их число в развитых ОС может составлять несколько сотен) реализуются в виде независимых программ, работающих под управлением СР/М.
Некоторые из этих служебных программ поставляются вместе с системой. К ним относятся: программа PIP, обеспечивающая пересылку содержимого файлов, программа STAT, позволяющая просматривать и изменять атрибуты файлов на дисках, FORMAT — программа форма­тирования (начальной разметки) дисков и некоторые другие. Любая программа, в том числе реализующая какую-либо команду общего пользования, запускается очень просто: пользователь в ответ на «при­глашение» системы вводит имя программы и параметры, если они необ­ходимы, после чего система автоматически находит соответствующую программу на диске, загружает ее в память и начинает исполнение. Имеется возможность объединения нескольких команд в одном файле и последующего исполнения такого командного файла; при этом после­довательно исполняются все записанные в нем команды.
Система СР/М послужила образцом и основой для создания целого семейства ОС как для 8-, так и для 16-разрядных ПЭВМ.Многопользова­тельская версия этой системы называется МР/М, а на 16-разрядных ПЭВМ соответствующие версии называются СР/М-86 и МР/М-86. Эти
Персия по всем функциям похожи на СР/М и МР/М, но ориентированы на работу с 16-разрядным микропроцессором 8086. Еще две версии этой системы — Concurrent CPM и Concurrent DOS — поддерживают многоза­дачный режим работы.
Операционные системы семейства СР/М оказали заметное влияние на техническую политику многих разработчиков ПЭВМ. Некоторые на них выбирали СР/М или СР/М-86 в качестве основных ОС для своих машин, другие создавали собственные системы по образу и подобию СР/М, давая им другие названия. На 8-разрядных персональных компьютерах СР/М и по сей день считается одной из лучших операцион­ных систем.

1.3. Основные свойства операционной системы MS-DOS (ДОС)

На 16-разрядных ПЭВМ, использующих 16-разрядные микропро­цессоры типа 8088 и 8086, безусловно, доминируют операционные си­стемы типа MS-DOS, Пока у втой системы нет закрепленного русского названия, поэтому в данной книге мы будем называть ее ДОС. Принятие ДОС в качестве главной операционной системы для персональных ком­пьютеров, имеющих широкое распространение, является стимулом для многих программистов к созданию для нее многочисленных инстру­ментальных и прикладных систем. В результате ДОС приобрела статус фактического стандарта операционной системы для 16-разрядных пер­сональных компьютеров. Это, в свою очередь, привлекло к ней интерес со стороны массового потребителя.
К основным достоинствам ДОС относятся:
— развитый командный язык;
— возможность организации многоуровневых каталогов,
— возможность работы со всеми последовательными устройствами как с файлами;
— возможность подключения пользователем дополнительных драй­веров внешних устройств;
— возможность запуска фоновых задач одновременно с диалоговой работой пользователя и др.
Для работы ДОС требуется существенно больше оперативной па­мяти, чем для СР/М: около 60 Кбайт. В настоящее время для ДОС раз­работан огромный фонд программного обеспечения. Имеются трансля­торы для практически всех популярных языков высокого уровня, вклю­чая бейсик, паскаль, фортран, си, модула-2, лисп, лого, апл, форт, ада, кобол, ПЛ-1, пролог, смоллток и др.; причем для большинства языков существует по нескольку вариантов трансляторов. Имеются инструментальные средстве для разработки программ в машинных ко­дах — ассемблеры, символьные отладчики и др. Эти инструментальные средства сопровождаются редакторами, компоновщиками и другими сервисными системами, необходимыми для разработки сложных про­грамм.
Кроме системного программного обеспечения, для ДОС создано множество прикладных программ, которые могут работать на разных машинах, использующих ДОС. Здесь, однако, следует иметь в виду важное обстоятельство, касающееся переносимости программ. Одни прикладные программы могут быть написаны «чисто» с точки зрения операционной системы, т. е. обращаться только к функциям ОС для выполнения любых действий. Такие программы без всяких затруднений могут быть перенесены с одной марки машины на другую; важно только, чтобы эти машины работали с одной и той же версией ДОС.
Имеются, однако, программы, которые с целью повышения эффек­тивности отдельных операций обращаются непосредственно к аппарат­ным средствам ПЭВМ, в обход функций операционной системы. С та­кими программами, а их не так уж мало, возникают проблемы при попытке переноса на другую модель ПЭВМ. К сожалению, довольно часто в прикладных пакетах, пользующихся наибольшей популярностью у потребителей, применяются «запрещенные» с точки зрения ОС приемы; это делается для достижения высоких показателей эффективности.
В состав ДОС входят примерно такие же компоненты, как и в СР/М, но на них возложено гораздо больше функций с более богатыми воз­можностями, что объясняется необходимостью обслуживания более сложных аппаратных средств.
Структура и основные функции ДОС будут рассматриваться под­робно в следующих главах. Такое повышенное внимание к ДОС свя­зано с тем, что именно эта.операционная система и программы, созданные на ее основе, будут преобладать на 16-разрядных персональных ком­пьютерах — таких, как отечественные профессиональнее ПЭВМ се­мейств ЕС-1840/1841 или Искра-1130/1030.

1.4. Другие операционные системы

Помимо операционных систем, относящихся к семействам СР/М и ДОС, определенное распространение получили и другие системы. Идут поиски наиболее подходящей ОС для машин, ориентированных на применение в домашних условиях и в школах. Другие типы ОС ориен­тированы на профессиональное применение. К таковым относятся ОС семейства UNIX, которые под разными названиями устанавливаются на профессиональные рабочие станции, обладающие более высокими показателями, чем обычные персональные компьютеры. Заслуживают внимания операционные системы, спроектированные для конкретных типов машин.
Стандарт MSX. Этот стандарт определяет не только ОС, но и ха­рактеристики аппаратных средств для школьных ПЭВМ. Согласно стандарту MSX Мишина должна иметь оперативную память ©Съемом не менее 16 Кбайт, постоянную память объемом 32 Кбайт с встроенным интерпретатором языка бейсик, цветной графический дисплей с разре­шающей способностью 256Х 192 точек и 16 цветами, 3-канальный зву­ковой генератор на 8 октав, параллельный порт для подключения принтера и контроллер для управления внешним накопителем, подклю­чаемым снаружи.
Операционная система такой машины должна обладать следующими свойствами: требуемая память — не более 16 Кбайт, совместимость с СР/М на уровне системных вызовов, совместимость с ДОС по форматам файлов на внешних накопителях на основе гибких магнитных дисков, поддержка трансляторов языков бейсик, си, фортран и лисп. Таким образом, эта операционная система, получившая название MSX-DOS, учитывает необходимость поддержки обширного программного обеспе­чения, разработанного для GP/M, и одновременно ориентируется на новые разработки, связанные с популярной для 16-разрядных ПЭВМ ДОС. При этом должны учитываться основные тенденции по использо­ванию внешних устройств — дисплеев, накопителей, принтеров.
Операционные системы, основанные на графическом интерфейсе. Помимо широко распространенных машин, проектируемых в соответ­ствии со сложившимися стандартами, часто создаются машины, в кото­рых особо выделяется какое-либо свойство. Так, наибольшее внимание в начале и середине 80-х годов привлекли своими богатыми графическими возможностями машины Macintosh и Amiga. В -первой из них дисплей был монохромным (черно-белым), во второй — цветным, но обе отлича­лись высокой разрешающей способностью и скоростью вывода графи­ческой информации на дисплей.
Операционные системы для этих машин спроектированы так, чтобы максимально использовать возможности работы с графикой. В них используется многооконный интерфейс и манипулятор «мышь». Для выбора той или иной операции или рабочего объекта на экран выводится несколько условных графических символов (пиктограмм), среди которых пользователь делает выбор, пользуясь манипулятором «мышь». Пиктограммы могут обозначать такие понятия, как файл, принтер, текст и.т. п. Работа с такой системой очень удобна и увлека­тельна. Поскольку такие системы ориентированы лишь на определенные типы машин, число разрабатываемых для них прикладных программ и пакетов существенно меньше, чем для стандартных систем, таких как СР/М или ДОС.
Пи-система. В начальный период развития персональных компью­теров была создана операционная система UCSD p-system (здесь мы используем сокращенное название «Пи-система»).
Основу этой системы составляет так называемая П-машина — программа, эмулирующая гипотетическую универсальную вычислительную машину. П-машина имитирует работу процессора, памяти и внешних устройств, выполняя специальные команды, называемые П-кодом. Программные компоненты Пи-системы (в том числе компиля­торы) составлены на П-коде, прикладные программы также компили­руются в П-код. Таким образом, главной отличительной чертой системы является минимальная зависимость от особенностей аппаратуры ПЭВМ. Именно это обеспечило переносимость Пи-системы на различные типы машин. Компактность П-кода и удобно реализованный механизм под­качки позволяют выполнять большие программы на ПЭВМ, имеющих небольшую оперативную память. Другим преимуществом Пи-системы является простота использования.
Однако принципиальной особенностью данной системы является преимущественно интерпретационный режим исполнения прикладных программ, что влечет интенсивные обмены информацией между опера­тивной памятью и внешними накопителями. В результате происходит существенное замедление работы.
Операционные системы семейства Юникс. Система Юникс (англий­ское название UNIX) приобрела популярность в связи с ее успешным использованием на миниЭВМ. Этот успех послужил толчком к тому, чтобы создать подобную же систему и для персональных компьютеров. Как правило, различные версии ОС, относящихся к этому семейству, имеют свои названия, но в основных чертах повторяют особенности Юникс.
Главной отличительной чертой этой системы является ее модуль­ность и обширный набор системных программ, которые позволяют создать благоприятную операционную обстановку для польгователей-программистов, т. е. тех, основной задачей которых является разра­ботка других программ. Система Юникс органически сочетается с язы­ком си, на котором написано более 90 % ее собственных модулей. Командный язык системы практически совпадает с языком си, что позво­ляет очень легкокомбинировать различные программы при создании больших прикладных систем.
Вместе с тем данная ОС является, пожалуй, чрезмерно большой для персонального компьютера среднего класса. Чтобы получить максимум преимуществ от ее использования, нужно выделить на жест­ком диске 3 — 5 Мбайт для хранения различных системных программ, в то время как полный объем жесткого диска обычно составляет 10 или 20 Мбайт.
Чаще всего Юникс устанавливают на профессиональных рабочих станциях, которые имеют большие объемы оперативной и внешней па­мяти, чем ПЭВМ среднего класса.

Г л а в а 2
Как работать на персональном компьютере — несколько уроков

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

2.1. Основные понятия и обозначения

Рассмотрим основные понятия, касающиеся персональных ком­пьютеров, составляющие как бы азбуку работы на ПЭВМ. Ниже при­ведены несколько типичных сценариев диалога человека с машиной, но, конечно, собственный опыт работы даст читателю возможность прове­рить все рассматриваемые приемы и рекомендации и гораздо глубже усвоить их. Приводимые ниже рассуждения ориентируются на ПЭВМ среднего класса — 16-разрядную машину типа ЕС-1841 с операцион­ной системой ДОС.
Накопители. Внешние накопители (диски) именуются латинскими буквами А, В, С и т. д., вслед за которыми пишут двоеточие, нап­ример, А:, В:, С:, ... (Помните, что имена накопителей не имеют никакого отношения к меткам дисков, которые используются для идентификации физических носителей, например, гибких дисков.) Соответствие между реальными накопителями и указанными именами определяется прежде всего тем, сколько и какие именно устройства имеются на машине. Рассмотрим два типичных варианта аппаратных средств ПЭВМ.
Вариант 1. Машина снабжена двумя накопителями на гиб­ких магнитных дисках — НГМД. Этим накопителям обычно даются имена А: и В:, причем А: соответствует первому (главному) накопителю,
2[
В: — второму (вспомогательному) накопителю. Начальный запуск системы всегда осуществляется с «системного» диска, установленного в накопитель А:. Вспомогательный накопитель может и вовсе не исполь­зоваться, если все необходимые для работы программы и данные рас­полагаются на одном диске. Данный вариант соответствует более деше­вым ПЭВМ, и многие прикладные программы составляются в расчете именно на него, т. е. на установку в машине двух НГМД.
Вариант 2. На машине установлен один НГМД и один нако­питель на жестком диске типа «Винчестер» — НМД. При таком составе накопителей их имена обычно распределяются следующим об­разом:
А: и В: указывают на одно и то же устройство — НГМД;
С: указывает на НМД.
Другие имена остаются незадействованными. Странное, на пер­вый взгляд, двойное имя у накопителя на гибком диске имеет очень простое объяснение. Оно дает логическую совместимость ПЭВМ с раз­ным составом дисковых накопителей. Прикладные программы, рассчи­танные на вариант 1 с двумя НГМД, могут запускаться с диска А:, но время от времени обращаться к диску В:, о чем система извещает специальным сообщением. В случае появления на экране такого сообще­ния достаточно вынуть из накопителя первый диск, вставить другой и нажать любую клавишу, чтобы «подтолкнуть» систему к продолже­нию работы. Система после этого работает как бы с диском В:, а потом снова может запросить диск А:, и все манипуляции повторяются. Таким образом, на одном и том же физическом накопителе можно работать с двумя логическими устройствами А: и В:.
Файлы. Файл — это именованная область памяти на каком-либо физическом носителе (обычно на диске), в которой может храниться исходный текст программы, какое-либо из ее промежуточных предста­влений, программа в машинном коде, готовая к исполнению, или данные для ее работы. В файлах могут содержаться любые текстовые доку­менты и числовые данные, закодированная табличная, графическая и любая другая информация.
В соответствии с характером хранимой информации файлу обычно приписывают тип. Задание типа осуществляет либо сам пользова­тель, либо программа, порождающая файл. Имя и тип используются совместно для идентификации файла. Имя может состоять из 1 — 8 букв, цифр и знаков («минус», «подчерк»), расположенных в произвольном порядке. Тип может состоять из 1 — 3 букв или цифр (а также некото­рых других символов) или же отсутствовать вообще.
Полное имя файла образуется из двух слов — имении типа, раз­деляемых знаком «точка» (при отсутствии типа точка необязательна)) поэтому тип иногда называют расширением имени. Примеры полных имен файлов:
22
C0MMAND.COM X0NIX.EXE
START.BAT HELP.l
123.DOC PR0G1.PAS
PLAY — l.BAS MYFILE
При создании файла или изменении его содержимого автомати­чески регистрируются дата и время, снятые с текущих показаний календаря и часов системы. Имя, тип, дата и время являются атрибу­тами файла, которые фиксируются в-каталоге.
Каталоги файлов. Умело подобранные имена файлов могут значи- тельно облегчить работу пользователя, помочь ему сориентироваться в большом объеме разнородной информации, обычно размещаемой во внешней памяти. При интенсивном использовании ПЭВМ, однако, число файлов неизбежно растет и «следить за порядком» на диске ста­новится все сложнее. Возможность как-то структурировать, упорядо­чить дисковое пространство позволяют каталоги файлов.
Каталог — это группа файлов на одном носителе, объединяемых по какому-либо критерию (обычно логически взаимосвязанных). Ката­лог можно рассматривать как раздел внешней памяти, с содержимым которого можно работать достаточно независимо. Каждый файл может находиться только в одном каталоге.
Каталог имеет имя и в свою очередь может быть зарегистрирован в другом каталоге; это значит, что он включен в последний как целое, и тогда говорят, что он является подчиненным каталогом (подкатало-гом). Так образуется иерархическая, древовидная файловая система.
На каждом дисковом носителе всегда имеется корневой каталог: тот, в котором начинают регистрироваться обычные файлы и подката­логи 1-го уровня. В последних, в свою очередь, регистрируются обыч­ные файлы и подкаталоги 2-го уровня и т. д. Цепочки подчиненных (включенных друг в друга) каталогов обозначаются их именами, раз­деляемыми знаком \ (в некоторых версиях ОС вместо знака \исполь-зуется знак/). Если этот знак стоит перед первым именем, значит, «выше» по иерархии находится только корневой каталог. Примеры цепо­чек подчиненных каталогов:
\DEMO — DEMO находится на 1-м уровне; \DEMO\VICONT — VICONT находится на 2-м уровне.
Маршрут — префикс имени файла. При сложной, древовидной структуре файлов на диске для указания файла уже недостаточно задать только его имя: одноименные (и притом различные по содержа­нию) файлы могут фигурировать в нескольких каталогах. Для точной идентификации файла необходимо, кроме имени, указать его местопо­ложение — цепочку подчиненных каталогов. Такая цепочка назы­вается маршрутом, или путем, по файловой системе.
23
Маршрут может использоваться как префикс к имени файла, отде­ляемый от собственно имени файла тем же разделителем \.
Итак, файл полностью задается-следующими элементами: 1) име­нем накопителя (оно может опускаться), 2) местоположением, или маршрутом: цепочкой имен каталогов, в которой каждый последующий является подкаталогом предыдущего (маршрут также может опус­каться), 3) собственно именем файла, завершающим цепочку (файл должен содержаться в последнем упомянутом каталоге).
В любой момент времени системе известен текущий маршрут на каждом из накопителей, который может быть изменен соответствую­щей командой пользователя; один из накопителей является рабочим (текущим). Если имя накопителя при указании файла опущено, то подразумевается текущий накопитель.
Если маршрут начинается со знака \, то местоположение файла вычисляется от корня данного накопителя, если нет (в частности, когда маршрут опущен) — то от текущего маршрута данного накопителя. В последнем случае текущий маршрут и префикс имени файла, объеди­ненные через символ \, дают точное местонахождение файла.
Примеры имен файлов с префиксами;
C:PROG1.PAS \ЕХЕ\FORMAT. COM A: VICONT\HELP. TXT
В первом случае файл PROG1.PAS находится в текущем каталоге на носителе С:. Во втором случае файл FORMAT.COM располагается в каталоге ЕХЕ 1-го уровня на текущем накопителе. В третьем случае файл HELP.TXT находится в подкаталоге VICONT текущего ката­лога накопителя А:
Приглашение ДОС. Приглашение к вводу команд выдается опе­рационной системой, когда она находится в состоянии ожидания каких-либо действий пользователя. Отсутствие нормального приглашения ДОС означает, что пользователь общается не с операционной системой, а с какой-либо прикладной программой или транслятором.
Стандартное приглашение ДОС указывает имя рабочего накопи­теля. Примеры стандартных приглашений:
А> — указывает на накопитель А:; С> — указывает на накопитель C:,
Пользователь может изменить стандартное приглашение, включив в него, например, указание на рабочий каталог, текущее время и/или дату, какой-либо текст и некоторую другую информацию (см. описание команды PROMPT в разд, 2.7),
24
Примеры возможных приглашений!
АЛ)
С: \DEMO\ VICONT)
С: \WORK 12 : 20 VICTOR)
Команды ДОС. Команды еводятся с клавиатуры в ответ на пригла­шение. Команда имеет имя и, возможно, параметры, отделенные от имени команды и друг от друга пробелами. Команда может быть встроен­ной или внешней. Встроенные команды (их немного) исполняются командным процессором. Внешняя команда реализуется программой, находящейся в файле и запускаемой по обычным правилам ДОС (см. разд. 2.5), Имя такой программы является тем самым именем команды. Ниже приведены примеры обращений к командам с разным числом параметров.
Встроенные команды: Внешние команды:
DIR BASIC
TYPE CONFIG.SYS FORMAT A:
COPY A:PROG1.BASC: D1SKCOPY А: В:
Шаблоны имен файлов. Шаблон имени файла часто употре­бляется в командах для обозначения сразу нескольких файлов (там, где это допустимо и имеет смысл) или для сокращения записи имен файлов. В шаблонах употребляется знак *, обозначающий любое число любых символов, которые допускаются в именах и типах файлов. Кроме того, в шаблонах используется вопросительный знак, который позволяет «замаскировать» любой одиночный символ в имени или типе файла. Примеры шаблонов:
PR*.* — все файлы с именами, начинающимися с PR;
*.EXE — все файлы типа ЕХЕ;
*.* — все файлы текущего каталога;
*. — все файлы, у которых отсутствует тип;
???.BAS — все файлы типа BAS с не более, чем трехбуквенны­ми именами;
А?.* — все файлы, имена которых начинаются с А и состоят из одной или двух букв.
Ввод команд с клавиатуры. Рассмотрим кратко технику ввода команд с клавиатуры. Стандартная клавиатура ПЭВМ обычно имеет несколько групп клавиш (рис. 2.1):
— алфавитно-цифровые и знаковые клавиши, расположенные примерно как на пишущей машинке;
— функциональные клавиши (F1..F10);
— служебные клавиши для управления перемещением курсора;
25
— служебные клавиши для управления редактированием;
— служебные клавиши для смены регистров и модификации кодов других клавиш;
— служебные клавиши для фиксации регистров;
— разные вспомогательные клавиши.
Для ввода команды нужно набрать ее имя и параметры с помощью соответствующих алфавитно-цифровых клавиш. Имя команды должно отделяться от параметров одним или несколькими пробелами. Пара­метры также должны разделяться пробелами.

Рис. 2.1. Клавиатура персонального компьютера
Передать несколько команд сразу (в одной строке) нельзя — для втого служат командные файлы (см. разд. 2.5). Регистр, на котором набираются буквы, в командах ДОС безразличен: в любом слове можно свободно смешивать заглавные и строчные буквы.
Ввод любой команды завершается после нажатия специальной клавиши «Исполнение», расположенной справа от алфавитно-цифровых клавиш (на этой клавише обычно изображен специальный значок в виде «кочерги»). Другие названия или обозначения этой клавиши в различ­ных руководствах — «Ввод», Return, CR, Enter. При вводе можно исп­равлять неправильно набранные символы, удаляя их специальной кла­вишей «Стирание влево» (Backspace). Эта клавиша обычно расположена надклааишей «Исполнение». Отменить всю команду до нажатия клави­ши «Исполнение» можно, нажав клавишу Esc (обычно расположенную в том же ряду, что и цифры).
Таковы основные понятия и обозначения, которыми приходится постоянно пользоваться при общении с операционной системой. Сле­дует обратить внимание, что к ОС (в частности к ее важнейшей части — файловой системе) обращается не только пользователь, но и прикладные программы; при этом в них используются те же соглашения по обозна­чению накопителей, имен файлов, каталогов, маршрутов и шаблонов имен, что и в командах пользователя, вводимых с клавиатуры.
2.2. Первые шаги
Рассмотрим начальные действия человека, который впервые сел за машину и хочет запустить на ней какую-нибудь программу.
Включение машины. Первое, что нужно сделать, это включить машину и дисплей. Машина начинает работать, и на экране дисплея появляются сменяющие друг друга сообщения. Сначала машина осу­ществляет самотестирование. При этом на экран могут выдаваться различные контрольные цифры. Чаще всего тестированию подвер­гается установленная в машине оперативная память и основные уст­ройства — клавиатура, дисплей. Если что-либо окажется неисправным, то на экран будут выданы соответствующие диагностические сообщения и работу придется прекратить. Во время самотестирования машиной управляет специальная программа, записанная в постоянном запоми­нающем устройстве. В зависимости от типа ПЭВМ и объема установлен­ной памяти тестирование может занять от нескольких секунд до ми­нуты и больше.
Инициализация. Если тестирование проходит нормально, то.вслед за этим начинается загрузка с системного диска и инициализация опе­рационной системы. Здесь возможны два основных варианта:
1) система загружается с гибкого магнитного диска (дискеты), установленного на устройстве А:;
2) система загружается с жесткого диска, т. е. с устройства С: (если оно имеется на машине).
Встроенная в машину процедура начальной загрузки всегда начи­нает работу с варианта 1. Если в этот момент на устройстве А: не стоит никакой диск, то происходит переход к варианту 2. Если диск на уст­ройстве А: установлен, но на нем нет операционной системы, то в этом случае выдается диагностическое сообщение, после чего пользователь должен поставить системный диск и, нажав какую-либо клавишу, повто­рить загрузку.
Процесс загрузки и инициализации, как правило, сопровождается выдачей сообщений, связанных с конкретной конфигурацией системы и настройкой на определенную рабочую обстановку. Задается этот процесс содержимым двух специальных файлов — CONFIG.SYS и AUTOEXEC.BAT, о которых будет идти речь дальше (см. разд. 2.7).
Большинство выдаваемых при инициализации и настройке сооб­щений носят уведомительный характер, и на них можно не обращать особого внимания, но некоторые содержат вопросы, обращенные к поль­зователю (см. ниже). При ответах на вопросы пользователь может вво­дить «пустые» значения, для чего ему достаточно просто нажимать кла­вишу «Исполнение». При таких ответах система обычно сама (по умол­чанию) устанавливает определенные значения запрашиваемых ве­личин.
27
Дата и время. Если в машине есть постоянные внутренние часы и календарь, работа которых поддерживается аккумуляторной бата­рейкой, то операционная система при очередном запуске может «сни­мать» с них время и дату; в противном случае она запрашивает текущую дату и время у пользователя. Указывая эти величины, необходимо строго придерживаться принятого для них формата. Формат, как правило, виден из того сообщения, которое выдает система. Обычно дата должна вводиться в следующем виде:
DD — MM — YY или DD/MM/YY
Этот формат означает, что при задании даты нужно ввести три числа (DD — день, ММ — месяц и YY — год), разделяя их знаками — или/.Следует быть внимательным к порядку задания этих чисел, так как в некоторых версиях ОС требуется, чтобы на первом месте стояли цифры, означающие месяц, а на втором месте — день.
Время может задаваться в следующих форматах;
HH:MM:SS.ss HH:MM:SS НН:ММ НН
Здесь цифры, означающие текущий час, минуты и секунды, разде­ляются знаками:. Можно задать даже сотые доли секунд (в первом фор­мате ss означает сотые доли). Как только пользователь наберет соответ­ствующие цифры (например, 10 : 35) и нажмет клавишу «Исполнение», в системе зарегистрируется это время, и далее будут работать внутрен­ние часы, пока не произойдет выключение машины или не будет уста­новлено новое время.
Текущая дата и время используются системой при регистрации файлов в каталогах, а также могут использоваться в прикладных про­граммах.
Настройка на конкретную рабочую обстановку. Очень часто перед началом работы бывает необходимо выполнить определенную, повто­ряющуюся последовательность действий. Это может быть запуск слу­жебных программ, вывод на экран какого-либо текста (почта), уста­новка параметров операционной обстановки (рабочий каталог, режим работы дисплея, приглашение и др.).
В ДОС имеется удобное средство для выполнения стандартных начальных действий при загрузке системы: так называемый файл «авто­загрузки» (AUTOEXEC.BAT), подробно описываемый в разд. 2.7. Оставляя пока в стороне различные варианты оформления этого файла, будем считать, что система после инициализации устанавливает в ка­честве рабочего каталога корневой каталог системного диска, а имя рабочего накопителя и рабочего каталога устанавливает в качестве
28
приглашения. При наличии в машине жесткого диска вероятнее всего он и будет рабочим. Тогда приглашение ДОС будет иметь вид:
С:\)
После завершения инициализации и выдачи приглашения насту­пает момент запуска прикладной программы.
Запуск программ. Допустим, что пользователь пришел со своей дискетой, на которой находится нужная программа. Ясно, что дискету нужно установить в накопитель А: (или В:). Конверт с дискетой встав­ляется в щель накопителя, опускается шторка и накопитель готов к работе; эта операция не сложнее, чем установка кассеты в магнито­фон. Далее пользователь должен указать операционной системе на необходимость перехода на рабочий накопитель А: или В:. Сделать это очень просто — нужно набрать на клавиатуре имя рабочего накопителя, например, А: и нажать клавишу «Исполнение». На экране эти действия отобразятся в следующую картинку (ответы пользователя здесь печа­таются малыми буквами, чтобы отличить их от приглашений системы):
С:\> а: А:\>
Теперь приглашение системы указывает, что рабочим накопителем является устройство А:. Все готово к запуску программы с дискеты, установленной на этом устройстве. Однако прежде чем это сделать, почти любой опытный программист сначала захочет убедиться, действительно ли на диске есть нужная программа. Для этого можно воспользо­ваться встроенной командой DIR.
А:\) dir
В ответ на эту команду система прочитает каталог диска А:, что можно увидеть по вспыхнувшей сигнальной лампочке накопителя. На экран выводится табличка, строки которой соответствуют файлам, записанным на диск. О каждом файле сообщаются его атрибуты: имя, тип, длина в Кбайтах, дата и время создания. Внимательно просмотрев выданный на экран каталог и увидев в нем имя нужной программы (допустим, мы хотим запустить игровую программу TETRIS), можно загрузить ее с диска в оперативную память и исполнить. Для этого набирается имя соответствующего файла (без расширения) *):
А:\) tetris
Программа TETRIS читается с диска и начинает работать: цель достигнута.
Рассмотрим теперь несколько иной вариант запуска. Допустим, что нужная пользователю программа находится на жестком диске,
*) Подробнее о вызове программ рассказано в разд. 2.5.
29
т. е. на устройстве С:. Тогда не нужно переключаться с С: на А:. -Можно сразу попробовать запустить программу или дать перед этим команду DIR, чтобы убедиться в ее присутствии на диске С:. Однако здесь воз­можны осложнения. Жесткие диски, как правило, несут на себе слож­ную иерархическую файловую структуру. Вполне возможно, что нуж­ный пользователю файл с программой находится не в корневом ката­логе, где он доступен сразу же, а в одном из подчиненных каталогов. Допустим, что имя этого каталога — GAMES и находится он на 1-м уровне, т. е. сразу под корневым каталогом. Команда смены каталога, следующая за приглашением, будет выглядеть так:
С:\) cd games
В новом каталоге GAMES можно опять дать команду DIR или сразу же вызвать нужную программу — TETRIS.
C:\GAMES) tetris
Прежде чем перейти к более подробному описанию файловой си­стемы ДОС, коснемся процедуры разметки, или форматирования,дискет. Если дискета не размечена, то разместить на ней информацию (средства­ми файловой системы) невозможно. Разметка производится командой FORMAT, обращение к которой обычно имеет следующий вид:
С:\) format a: простое форматирование дискеты в накопителе А:;
С:\) format a: /8 форматирование с переносом операционной системы;
С:\) format a: /v
форматирование с заданием метки диска.
Если форматирование новой дискеты — безопасная и даже необ­ходимая операция, то переформатирование дискет, уже несущих инфор­мацию, следует производить с осторожностью, поскольку после раз­метки прежнее содержимое дискеты полностью уничтожается. Перефор­матирование может потребоваться в случаях, когда: 1) файловая струк­тура на дискете по каким-либо причинам безнадежно испорчена; 2) тре­буется изменить (увеличить) емкость дискеты, ранее размеченной с дру­гими параметрами (ДОС позволяет форматировать дискеты, вмещаю­щие 160, 180, 320 или 360 Кбайт; последнее производится по умолча­нию); 3) дискета была ранее размечена в формате другой операционной системы.
Следует также избегать ошибочной переразметки жесткого диска (С:), поскольку потери информации в этом случае будут неизмеримо больше. Обычно жесткий диск поставляется в составе ПЭВМ уже раз-
30
меченным; необходимость же его переразметки возникает чрезвычайно редко.
Таковы минимальные сведения о приемах, которыми необходимо владеть для начального включения машины, поиска и запуска программ.
2,3, Путешествие по файловой системе
Термин «файловая система» часто употребляют в двух разных . значениях. С одной стороны, файловой системой называют всю сово­купность каталогов и файлов, хранимых на внешних носителях ПЭВМ,

Рис. 2.2. Структура файловой системы ДОС
Эта точка зрения естественна для конечного пользователя, и мы ниже будем употреблять термин именно в таком смысле. С другой стороны, нужно иметь в виду, что файловой системой иногда называют ту часть операционной системы, которая ведае! доступом к каталогам и файлам, распределяет для них дисковое пространство и является, таким обра­зом, программным средством. (Надо сказать, что подобное же двоякое толкование имеет термин «база данных».)
Операционная система ДОС.2.0 и ее более старшие версии, следуя зарекомендовавшему себя опыту системы Юникс, поддерживает иерар­хическую структуру хранения файлов на дисках. Такая структура образуется благодаря тому, что каталоги файлов сами трактуются как файлы и могут регистрироваться в каталоге предшествующего уровня (рис. 2.2).
Для чего нужно делить дисковое пространство на несколько обла­стей, разнося файлы по разным каталогам? Целей может быть не­сколько:
— выделить в отдельные группы логически однорбдные файлы (например, все исполняемые программы общего пользования или все файлы с текстовой документацией);
— выделить отдельное пространство на диске для каждого из пользователей данной машины, чтобы они могли свободно манипулиро­вать своими файлами «без оглядки» на других пользователей;
— выделить все файлы, относящиеся к какой-либо подсистеме, например, к текстовому редактору, транслятору языка паскаль или интегрированной системе Symphony.
Если на ПЭВМ имеются только накопители на гибких дисках, как это принято в дешевых машинах, то иерархическая файловая система не дает большого преимущества, поскольку группы файлов естествен­нее всего хранить просто на отдельных дискетах. Но при использова­нии жесткого несъемного диска большого объема подобное деление на области очень удобно.
Тот факт, что файлы входят в один каталог, совсем не означает, что на диске они физически занимают какую-то связную область, однако логически, с точки зрения конечного пользователя, это выглядит именно так; поэтому и произносится фраза «файлы данного каталога». В пре­делах каждого каталога файлы должны иметь различные полные имена (имя+ тип), но в разных каталогах вполне могут уживаться файлы с одинаковыми именами, в том числе просто идентичные файлы. Вся­кий файл, как уже говорилось, может входить только в один каталог.
Для работы с файловой системой в ДОС имеется несколько встроен­ных команд:
D1R — вывод (распечатка) содержимого каталога;
MKDIR или MD — создание нового (пустого) каталога;
CHDIR или CD — смена текущего каталога;
RMDIR или RD — удаление каталога.
Рассмотрим подробнее действие этих команд.
Команда DIR. Выдает список полных имен и атрибутов файлов, зарегистрированных в каталоге, DIR используется гораздо чаще дру­гих команд операционной системы, и это вполне понятно: человек, активно общающийся с машиной, постоянно нуждается в информации о том, что где находится. В предыдущих разделах уже были приведены примеры простейшего использования этой команды. Дадим теперь более детальное описание ее возможностей.
Допустим, после начального входа система оказалась настроенной на корневой каталог системного диска С: и приглашение имеет вид:
С:\)
Простейшее использование команды DIR без параметров приво­дит к выводу на экран содержимого текущего каталога. Изображение на экране приобретает, например, такой вид:
32
С: \)dir
Volume in drive С is ACADEMYSOFT Directory of C:\
CONFIG SYS 118 6-03-85 ll:42p
AUTOEXEC BAT 994 7-20-85 12:59p
COMMAND COM 22042 8-14-84 8:00p
SYS (°IR) 5-19-85 2:19p
EXE (DIR) 2-26-83 4:44p
ABC (°IR) 6-29-85 9:47a
VICTOR (DIR) 9-11-84 12:00a
PAPERS (DIR) 4-30-85 9:43a
DOC (DIR) 4-30-85 9:43a
WORK (°Ш) 1-20-84 4:44a
GAMES (DIR) 1-20-84 12:04a
SYMPHONY (DIR) 5-30-85 10:29p-
12 File(s) 6500344 bytes free
Выведенный на экран текст говорит о следующем.
1) Диск С: имеет метку ACADEMYSOFT, что, впрочем, не ока­зывает никакого воздействия на работу, а служит исключительно ин­формационной цели.
2) В корневом каталоге зарегистрированы 3 обычных файла (CONFIG.SYS, AUTOEXEC.BAT и COMMAND.COM)и9подчиненных каталогов. Имена подкаталогов позволяют примерно судить о назна­чении и составе содержащихся в них файлов.
3) Все файлы, вместе взятые, занимают на диске около 3,5 Мбайт. Это следует из того, что полный объем диска — 10 Мбайт, а свободными остались примерно 6,5 Мбайт (1 Мбайт = 1024 * 1024 байт, что чуть больше, чем 1 млн, байт).
Теперь пользователь имеет возможность «заглянуть» в любой из подчиненных каталогов, например, в DOC. Для этого достаточно дать команду DIR с параметром — именем подкаталога: С: \> dir doc
Volume in drive С is ACADEMYSOFT Directory of C:\DOC
(DIR) 4-30-85 9:43a
(DIR) 4-30-85 9:43a
VICONT TXT 19303 3-07-85 10:07a
MOMON TXT 10079 4-18-85 9:39a
FORMS TXT 18280 7-26-85 l:55p
SOFT1 1054 4-11-85 10:49a
SOFT2 1553 4-11-85 12:08p
ABC (DIR) 12-17-85 2:26a
DOS (DIR) 5-23-85 7:50p
7 File (s) 6500344 bytes free
В этом каталоге, в свою очередь, зарегистрировано 5 обычных файлов и 2 подкаталога 2-го уровня — ABC и DOS. Кроме того, в начале выданной таблицы появились 2 строчки особого вида:
(DIR) 4-30-85 9:43а
(DIR) 4-30-85 9:43а
Эти строчки указывают, что выданный каталог является подчинен­ным; при этом указаны дата и время его создания.
Параметром команды DIR может быть любой маршрут, включаю­щий имя накопителя. Рассмотрим несколько примеров.
С:\) dir doc\abc
Данная команда обеспечит выдачу каталога ABC, входящего в DOC, который, в свою очередь, входит в текущий каталог текущего накопителя (С:).
C:\DOC\ABC) dir\work
Текущим является подкаталог второго уровня DOC\ABC, но мар­шрут говорит о необходимости выдать каталог WORK, входящий в кор­невой каталог
C:\WORK) dir \
Данная команда требует выдачи корневого каталога диска С:. А:\> dir с:\
Здесь текущим является корневой каталог диска А:, а маршрут ука­зывает на корневой каталог диска С:.
Таким образом, на какой бы текущий каталог ни была настроена система, пользователь имеет возможность «не сходя с места» просмо­треть любой интересующий его каталог файлов, задавая в качестве параметра команды DIR соответствующий маршрут.
Следует еще раз обратить внимание на важный момент. В первом примере маршрут указан без префикса \ или С:\. Это соответствует просмотру подчиненных каталогов, считая «от текущего». В трех по­следних примерах эти префиксы указывали на необходимость отсчи­тывать от корневого каталога, невзирая на текущий.
Кроме указания маршрута, параметр команды DIR может содер­жать шаблон имен файлов, позволяя выделить из них только некото­рые. Так, чтобы выделить из каталога DOC файлы типа ТХТ, можно дать команду DIR с шаблоном *, ТХТ, Команда и ее результат имеют вид:
C:\> dir doc\ *. txt
Volume in drive С is ACADEMYSOFT
Directory of C:\DOG
VICONT TXT 19303 3-07-85 10:07a
MOMON TXT 10079 4-18-86 9:39a
FORMS TXT 18280 7-26-85 l:55p
3 F i 1 e (s) 6500344 bytes free
Если шаблон указывать без маршрута, то происходит выделение группы файлов в текущем каталоге. Здесь важно подчеркнуть, что команда DIR в любых ее разновидностях не изменяет каталогов, а лишь выдает их содержимое.
Заканчивая обсуждение команды DIR, опишем еще несколько возможностей манипулирования каталогами. При выдаче длинного каталога часто случается, что экрана «не хватает» для отображения всех файлов каталога. Чтобы иметь возможность внимательно про­смотреть все строки, можно дать в конце текста команды специальный указатель /Р. В этом случае каталог выдается «постранично»: после заполнения информацией полного экрана система приостанавливает выдачу. Изучив первую порцию выданного каталога, пользователь нажимает любую клавишу и получает на экране следующую порцию.
Еще один способ выдачи каталога — «в ширину» — обеспечи­вается указателем /W. При его задании система выдает лишь имена и типы файлов, без остальных атрибутов; при этом выдача происходит не в столбец, а по строкам. Благодаря такому способу на экране поме­щается гораздо больше имен файлов, чем при обычном формате, котя читать их менее удобно. Примеры команд с указателями:
С:\> dir /p
С:\> dir doc\abc /w
С:\> dir doc\*. txt /p
Наконец, покажем, как можно выдать каталог на печатающее устройство. Для этого используется особое свойство операционной системы ДОС — переадресация потока вывода:
С:\> dir > prn
Знак ) означает, что результат команды DIR вместо стандартной выдачи на дисплей следует переадресовать на принтер (обозначенный именем PRN). Точно так же можно записать содержимое каталога в любой файл (здесь — в файл под именем catalog):
С:\> dir > catalog
Переадресация потоков ввода/вывода — это общее свойство си­стемы, которое подробнее будет рассмотрено в дальнейшем.
Команды MKDIR, RMDIRh CHDIR. Обеспечивают соответственно создание нового каталога, удаление каталога и настройку на тот или иной рабочий каталог. Их сокращенные имена — MD, RD и CD.
Создание нового каталога может быть произведено в любом уже существующем каталоге. Пусть, например, в текущем каталоге WORK зарегистрированы 2 файла:
LESSON 1 10744 7 — 01 — 85 10:49а LESSON 2 18845 7 — 05 — 86 2 :08р
Применим команду MD для создания в WORK подкаталога LOTUSl C:\WORK> md lotus
После этого в каталоге WORK появится новая строка вида: LOTUS 7-05-85 5:26р
Вновь созданный каталог, вначале пустой, можно заполнять файлами. Как обраауются файлы, мы рассмотрим в следующем разделе. Пока в каталоге зарегистрирован хотя бы один файл, удалить его нельзя; если все же попытаться это сделать, система не выполнит эту операцию.
Создание нового каталога «обходится» в 4 Кбайт памяти на внешнем носителе; так что это не вполне безобидная операция с точки зрения расходования внешней памяти.
Удаление каталога (обязательно пустого) осуществляется коман­дой RD. Нельзя удалить корневой каталог, а также тот, в котором вы находитесь (текущий). Примеры команд удаления подкаталогов:
C:\WORK> rd lotus C:\DOC> rd \work\lotus
Первая команда удаляет подкаталог LOTUS из текущего каталога WORK; вторая команда удаляет тот же каталог, указывая полный префикс, поскольку текущим в этот момент является не WORK, а сопод­чиненный ему каталог DOC.
Смена текущее каталога — одна из часто используемых операций. Осуществляется она командой CD. Допустим, система настроена на текущий корневой каталог диска С:, который имеет вид, представленный в первом примере на с. 33. Чтобы перейти в каталог 2-го уровня ABC, можно применить следующую команду:
С:\> cd doc\abc
Этого же результата можно было добиться, применяя две последо­вательные команды CD; это имеет смысл, если между ними даются еще какие-нибудь команды (например, DIR);
С:\> cd doc C:\DOC> cd abc C:\DOC\ABC>
36
Теперь можно «перепрыгнуть» в каталог WORK, дав команду С соответствующим маршрутом в качестве параметра:
C:\DOC\ABC> cd \work
Возврат из подчиненного каталога на один уровень вверх осуще­ствляется командой:
cd ..
Для возврата на самый верхний уровень дается команда!
cd\
Заметим, что символ .. может входить в обозначения маршрутов, когда требуется указывать сложные переходы между (соподчиненными каталогами. Например, маршрут ..\GAMES означает «подняться на один уровень вверх и затем спуститься в подкаталог GAMES», а мар­шрут.. \.. означает «подняться на два уровня вверх». Подобные обо­значения маршрутов могут фигурировать в командах DIR, CD, RD, PATH, COPY, DEL и других, но пользоваться ими нужно с большой аккуратностью, особенно в командах удаления, так как задавая удаляе­мый файл относительно текущего каталога, а не полным маршрутом, легко ошибиться.
Вспомогательные программы для работы с каталогами. Рассмо­тренные выше встроенные команды ДОС обеспечивают наиболее важные операции над каталогами. Однако на практике часто возникают и дру­гие потребности, которые можно удовлетворить, составив соответствую щие служебные программы. Рассмотрим 3 таких программы: WHERE, DIRS, VDIR.
Программа WHERE позволяет разыскать местонахождение какого-либо файла или группы файлов с похожими именами. Аргумен­том является полное имя или шаблон имен файлов. Пример обращения и результат работы программы:
C:\WORK> where les *.*
C:\PAPERS\BOOK2\U2SSON.l
C:\PAPERS\BOOK2\LESSON.2
С: \PAPERS\BOOK2\LESSON.3
C:\WORK\LESSON.1
C:\WORK\LESSON.2
Здесь файлы, имена которых начинаются с букв LES, найдены в двух каталогах — PAPERS\BOOK2 и WORK.
Программа DIRS (авторы В. В. Пономарев, О. А. Гонча­ров — ВЦ АН СССР) выдает соответствующие заданному шаблону имена файлов указанного каталога и подсчитывает объем памяти, фак­тически занятой этими файлами. Это компенсирует недостаток команды
DIR, которая выдает объем оставшейся свободной памяти на диске, но не выдает объем памяти,занятой файлами данного каталога. Пример обращения к программе DIRS:
А:\) dirs с :\work\ *.* LESSON I 11
LESSON 2 18 29 (32) KBytes in 2 File(s)
Этой командой запрашивается объем всех файлов в каталоге WORK на диске С:. Следует отметить, что длина файла и объем занимаемого им места на диске обычно не совпадают, так как пространство на жест­ком диске выделяется порциями по 4 Кбайт, а на гибком диске — пор­циями по 1 Кбайт. Программа DIRS учитывает это и выдает оба числа — сумму длин файлов и суммарное занятое пространство на диске. Кстати, следует иметь в виду, что «короткие» файлы, реальная длина которых по каталогу всего несколько десятков или сотен байт, на жест­ком диске занимают все равно по 4 Кбайт, а на гибком диске — по 1 Кбайт.
Программа VDIR (авторы: В. В. Пономарев, О. А. Гончаров — ВЦ АН СССР) выдает полный объем всех файлов и подкаталогов, начи­ная с текущего каталога. Аргумент при обращении к VDIR не нужен. Эта программа применяется для того, чтобы оценить распределение дискового пространства под разные каталоги. Пример обращения к ко­манде VDIR из текущего каталога PAPERS:
C:\PAPERS) vdir
ВООК1 132 KB 12 files
BOOK2 128 KB 11 files
SCHOOL 20 KB 3 files
REPORT 240 KB 14 files
= 752 KB 232 KB 24 files
Первые 4 строчки указывают объемы занятого пространства и количества файлов в 4-х подкаталогах, входящих в текущий каталог (PAPERS). Последняя строчка содержит сумму длин файлов в самом PAPERS (232 Кбайт), их число (24) и полный объем каталога PAPERS вместе с подкаталогами (752 Кбайт)
В стандартный комплект ДОС входит программа (внешняя ко­манда) TREE, которая предназначена для показа всех каталогов задан­ного диска. Однако TREE, в отличие от VDIR, не выдает объемов занятого пространства, что сильно снижает ее ценность, Пример обра­щения к TREE:
С:\) tree /i
Указатель /f говорит о необходимости показа не только каталогов, но и входящих в них файлов.
Таковы основные приемы «хождения» по иерархической файловое системе и просмотра каталогов.
2.4. Копирование, удаление, распечатка файлов
Рассмотренные в предыдущем параграфе команды позволяют поль-вователю манипулировать каталогами файловой системы, никак не затраггивая самих файлов. Рассмотрим теперь основные команды для работы с содержимым файлов. Наиболее часто используются следующие команды:
COPY — копирование,
RENAME — переименование,
DEL — удаление,
TYPE — распечатка содержимого файла на экране.
Команда COPY. Команда COPY (скопировать, сдублировать файл) имеет один или два основных аргумента и еще может дополнительно сопровождаться указателем верификации. Основной формат команды предполагает задание источника, т.е. указания файлов, содержимое кото­рых нужно скопировать (1-й аргумент), и назначения, т. е. указания файлов, в которые нужно копировать (2-й аргумент). В качестве источ­ника может указываться любой маршрут, имя файла или шаблон имен. При этом в зависимости от задания копируется все содержимое указан­ного каталога, группа файлов или отдельный файл. В качестве назначе­ния часто задается лишь маршрут, который указывает, в какой каталог нужно перенести копируемые файлы. При этом копирование происхо­дит в файлы с теми же именами, что исходные.
Файлы источника должны существовать до начала копирования при копировании их содержимое не меняется. Файлы назначения не обязаны существовать до начала копирования — в этом случае обра­зуются новые файлы.
Примеры:
С:\> сору а:*.* с:
копирование всех файлов из текущего каталога диска А; в текущий каталог диска С:;
С:\) сору \work \papers
копирование всех файлов каталога WORK в каталог PAPERS; С:\)сору \doc\abc \
копирование всех файлов каталога \DOC\ABC в каталог верхнего уровня.
В назначении можно указать конкретное имя файла? C:\)copyflf2
файл с именем F1 копируется в том же каталоге и приобретает имя F2; С:\)сору a:basica.com \exe\bas.com
при переносе файла BASICA.COM с диска А: в каталог ЕХЕ он получит новое имя BAS.COM.
Следующим способом можно изменить только типы файлов без изменения их имен:
С:\) copy \work\ *.txt \papers\*.doc
при переносе файлов из WORK в PAPERS произойдет изменение их типов с ТХТ на DOC.
Командой COPY можно пользоваться для конкатенации (соеди­нения) нескольких файлов и записи результата в один новый файл. Для этого имена соединяемых файлов нужно перечислить через знак +, Пример такой операции:
С:\)сору fl+f2+f3 f4
файл с именем F4 образуется путем конкатенации файлов Fl, F2 и F3.
Если результирующий файл не указывать, то соединенные файлы будут записаны в файл, имя которого задано первым (в вышеприведен­ном примере — в файл FJ). Конкатенация производится и в другом случае — если в качестве источника указан шаблон, который соот­ветствует нескольким файлам, а в качестве «азначения — одно конкрет­ное имя. Пример такой операции:
С:\) copy lesson.* lessons.all
файл с именем lessons.all является результатом конкатенации всех файлов, имена которых соответствуют шаблону lesson. *; имейте в виду, что файлы будут соединены в том порядке, в котором они расположены в каталоге (что может не соответствовать их логическому порядку).
Если в команде COPY 2-й аргумент не указывается, то назна­чением считается текущий каталог. Например, чтобы скопировать все файлы из каталога WORK в каталог DOC, можно сначала настроиться на DOC командой CD, а затем дать команду COPY с одним аргументом:
С:\) cd doc
C:\DOC) copy \work
При всех операциях копирования можно задавать указатель /V в конце команды, который вызывает верификацию — проверку пра­вильности копирования. Это более долгая операция, чем простое копи­рование, я, поскольку сбои копирования происходят редко, задавать этот указатель имеет смысл лишь при копировании очень важной ин­формации.
40
Следует также иметь в виду, что многие прикладные системы, поставляемые на дискетах, защищаются специальным образом от воз­можности копирования на другие дискеты. Это делается с. целью за­щиты авторских прав разработчиков. Защищенные дискеты обычно имеют на ярлыке пометку: Copyright (С) ... . При попытке копировать файлы е таких дисков с помощью COPY все операции по внешним при­знакам могут пройти нормально, но на самом деле отдельные файлы скопируются не полностью и программа работать не будет.
В качестве имени файла в аргументах команды COPY могут назы­ваться стандартные устройства:
PRN — основной (1-й) принтер;
LPT1 — другое имя для основного принтера;
LPT2 — дополнительный (2-й) принтер;
AUX — основной (1-й) коммуникационный канал;
СОМ1 — другое имя 1-го коммуникационного канала;
COM2 — дополнительный (2-й) коммуникационный канал;
CON — «консоль», т. е. дисплей + клавиатура;
NUL — «пустое устройство».
Кроме этих стандартных имен, могут использоваться и другие, появляющиеся в случае присоединения к машине новых устройств и включения в операционную систему программ-драйверов, поддерживаю­щих их работу.
Некоторые из устройств могут служить лишь назначением (LPT1, LPT2, PRN), другие — также и источником копирования. Примеры!
С: \) сору vicont.doc ргп
файл с именем vicont.doc копируется на устройство PRN, т. е. печа­тается на принтере;
С:\) copy con t.bat
файл с именем Т. ВАТ создается в результате копирования с устрой­ства CON, т. е. путем ввода текста с клавиатуры (вводимый текст дол­жен заканчиваться признаком конца, который возникает при одновре­менном нажатии клавиш Ctrl и Z); это — один из простейших способов образования новых файлов;
С:\) copy coml \work\mes.l
прием из коммуникационного канала в файл MES. 1 (предварительно с помощью команды MODE должны быть настроены параметры канала). Нужно помнить, что копировать файлы с помощью команды COPY с одного диска на другойможно лишь в том случае, если диск, являющийся местом назначения, предварительно размечен (см.разд. 2.2).
41
Команда RENAME. Используется для переименования файлов. Она имеет сокращенное имя REN. При обращении должны задаваться два аргумента — старое имя (или шаблон) и новое имя (или шаблон). Если оба аргумента представляют собой полные имена, то действие команды ясно — происходит изменение старого имени файла на но­вое. Если же в качестве аргументов заданы шаблоны, то происходит модификация группы имен (могут быть изменены типы, имена или от­дельные буквы в том и другом).
Первому аргументу может предшествовать лрефикс-маршрут, указывающий, в каком каталоге производится переименование. По умолчанию переименование происходит в текущем каталоге. Примеры применения команды:
С: \WOR К) ren а: *.txt *.doc
происходит изменение типов файлов, находящихся на диске А:; вместо типа ТХТ устанавливается тип DOC;
C:\WORK) ren les*.* text.*
происходит изменение имен файлов — вместо имен, начинающихся с LES* , подставляется TEXT (в таких случаях нужно следить за кор­ректностью переименования: например, два файла LES1. DOC и LES2. DOC не могут быть переименованы в один TEXT. DOC);
C:\WORK) ren t???.* k???.*
происходит изменение 4-буквенных имен, начинающихся с буквы Т, вместо нее подставляется буква К.
Команда RENAME не затрагивает содержимого файлов; изменения касаются только имен файлов в каталоге (по этому признаку данную команду можно было бы отнести к группе команд, рассмотренных в предыдущем параграфе).
Команда DEL. Удаление файлов из текущего или указанного префиксом каталога производится командой DEL. Другие имена этой команды — ERASE, ERA. Аргумент команды DEL может содержать маршрут, конкретное имя удаляемого файла или шаблон имен.
C:\)del \work\*.txt
из каталога WORK удаляются все файлы, имеющие тип ТХТ; С:\) del work
по такой команде удаляются все файлы подкаталога WORK (если только в текущем каталоге нет обычного файла с именем WORK)}
C:\WORK) del *.* удаление всех файлов из текущего каталога WORK.
В двух последних примерах, когда должны удаляться все файлы какого-либо каталога, система, прежде чем приступить к удалению, задает пользователю предупредительный вопрос — «уверен ли он, что все нужно удалять?». Ответ пользователя «да» (буква Y) сигнализирует об уверенности пользователя, и операция удаления выполняется. Ответ «нет» (буква N) отменяет операцию.
При удалении файла происходит вычеркивание из каталога ссылки на него, информационное же содержимое файла не уничтожается, и если вовремя спохватиться, его можно восстановить с помощью спе­циальных служебных программ. Если же вслед за удалением на дан­ном диске создаются новые файлы, то не исключено, что они будут фи­зически размещены на месте удаленных файлов; после этого восстанов­ление последних уже невозможно.
Команда TYPE. Используется для вывода содержимого текстового файла на экран. Ее аргументом должно быть полное имя файла (шаб­лон не допускается). Имени может предшествовать префикс, указываю­щий местонахождение файла. Команда TYPE предполагает, что в файле содержится информация, закодированная в соответствии со стандартом ASCII (или его модификацией); при этом каждый байт хранимой информации обозначает букву, цифру или знак, представи-мые на экране. В противном случае на экране будет возникать меша­нина знаков, сопровождаемая выдачей звуковых сигналов (не­которые коды вместо печати на экране генерируют ввуковые сигналы).
Примеры команды TYPE:
С:\) type progl.pas
С:\) type \work\vicont. txt
Обычно по типу файла можно косвенно судить о том, можно ли его вывести на экран командой TYPE, хотя, вообще говоря, тип файла может назначаться пользователем произвольно. Как правило, файлы, которым приписан тип TXT, DOC, ВАТ, могут быть выведены на экран (и на принтер); с другой стороны, заведомо известно, что файлы типов COM, EXE, OBJ на экран не выводятся (см. разд. 2.5). Файлы с тек­стами программ на паскале, си, фортране, лиспе обычно снабжаются соответствующими типами г- PAS, С, FOR, LSP; их можно выводить на экран и печатать на принтере. Текстовые файлы, содержащие про­граммы на бейсике и порожденные самим интерпретатором языка, как правило, имеют специальное внутреннее представление, не пригодное к выводу на экран. То же самое можно сказать о рабочих файлах мно­гих прикладных систем — Framework, Symphony и др.
2.5. Программы в машинном коде и командные файлы
Текстовые файлы, о которых говорилось выше, являются одним из самых распространенных видов файлов: в них могут храниться лю­бые текстовые документы (в том числе тексты программ на языках программирования). Другая важная категория — это файлы, хра­нящие программы в машинном коде. В отличие от программы в тек­стовой форме, в которой она создается программистом, программа в машинном коде готова к загрузке в оперативную память и исполне­нию (поэтому иногда файл с машинным кодом называют загрузочным или исполняемым). Машинный код создается из исходного текста про­граммы в процессе трансляции и компоновки, осуществляемых особыми системными программами.
Машинный код программы. Он хранится в файле, имеющем один из двух типов: СОМ или ЕХЕ (файл типа ЕХЕ порождается компонов­щиком из объектных модулей; файлы типа СОМ — некоторыми транс­ляторами; подробнее об этом — в разд. 4.5). Различаются эти два типа файлов лишь способом загрузки с внешних носителей в оперативную память и настройки на фактические адреса. Для пользователя эта раз­ница неощутима и запуск программ обоих типов выглядит одинаково. Пусть текущий каталог имеет вид:
VICONT ЕХЕ 46080 3-12-85 4:28р
BASRUN ЕХЕ 31744 5-07-82 12:42а
GRPACK ЕХЕ 24954 1-11-84 12:37р
VDRAW СОМ 13908 3-29-85 4:30р
BASIC COM 25984 3-08-83 12:00р
VIC-PLOT BAS 6719 12-20-84 9:58р
FIG 1 10496 6-24-85 1:49а
VIC HLP 2563 11-26-84 6:46р
START BAT 326 12-20-84 10:01р 9 F i l e (s) 4501064 bytes free
В каталоге имеется несколько программ типа СОМ и ЕХЕ. Для запуска любой из них пользователю достаточно указать имя соответ­ствующего файла без расширения, например:
C:\VIC) vicont
Некоторые программы требуют для своей работы задания пара­метров. Параметры могут быть числовыми или текстовыми константами; довольно часто в качестве параметра необходимо указывать имя файла, находящегося в этом же или в другом каталоге.
Так, например, если программа рисования на экране VDRAW использует в качестве источника данных содержимое файла FIG.1, то обращение к ней выглядит следующим образом;
C:\VIC) vdraw fig.l
(Отметим, что вызов прикладных программ внешне выглядит точно так же, как выполнение команд ДОС.)
Иногда задание параметра является необязательным! при stom сама исполняемая программа определяет, был ли задан параметр при ее запуске. Примером может служить транслятор языка бейсик, ко­торый фигурирует в вышеприведенном каталоге под именем BASIC. Если при его запуске не указывать параметра, то в память загружается только сам транслятор (отдельной командой «изнутри» бейсика можно затем загрузить е диска рабочую программу). Но можно поступить и иначе — сразу же при запуске бейсик-транслятора указать имя файла с рабочей программой. Тогда после загрузки транслятора автомати­чески загружается и исполняется (интерпретируется) бейсик-программа!
C:\VIC) basic vic-plot
Следует обратить внимание на то, что, в отличие от предыдущего примера, не требуется даже указывать полное имя файла с рабочей про­граммой — VIC-PLOT.BAS, поскольку бейсик-транслятор работает только с файлами определенного типа.
Запускаемая программа не обязательно должна находиться в те» кущем каталоге. Если файла нет в текущем каталоге, то производится его поиск в альтернативных каталогах, указанных командой PATH. (Это относится как к программам в машинном коде — файлам типа СОМ и ЕХЕ, так и к командным файлам типа ВАТ, рассматриваемым ниже.)
Команда PATH. Аргумент команды PATH содержит обозначения одного или нескольких маршрутов, разделяемых «точкой с запятой», например:
С:\) path c:\;c;\exe
Операционная система запоминает список маршрутов, указанных в команде PATH, и использует его в дальнейшем всякий раз, когда пользователь выполняет внешнюю команду ДОС или обращается из ДОС к прикладной программе. Такая команда означает, что файл (типа СОМ, ЕХЕ или ВАТ), не найденный в текущем каталоге, следует искать сначала по маршруту С:\, т. е. в корневом каталоге диска С:, а в случае неуспеха — по маршруту Cs\EXE, т.е. в подкаталоге 1-го уровня ЕХЕ. Можно задать и более длинные предписания, но тогда поиск каждого файла будет происходить дольше.
Предписание альтернативных маршрутов становится очень удоб­ным, если программы общего пользования сгруппированы в несколько каталогов. Так, все программы в машинном коде (исполняемые файлы) можно разместить в одном подкаталоге \ЕХЕ, и тогда приведенная выше команда заставит операционную систему загружать программы из каталога \ЕХЕ всякий раз, когда откуда бы то ни было возникнут
45
обращения к этим программам. Это общепринятый прием конфигури­рования системы.
Команда PATH обычно фигурирует в командном файле «авто­загрузки» — AUTOEXEC. BAT и срабатывает «незаметно» для пользо­вателя. Узнать, какие альтернативные маршруты установлены в дан­ный момент, пользователь может, давая команду PATH без ар­гументов.
Отменить установленные альтернативные маршруты можно сле­дующей командой:
С:\> path;
Вызов программы из другого каталога можно также осуществить, снабдив имя запускаемой программы соответствующим префиксом: тогда файл будет загружаться из указанного префиксом каталога (не­зависимо от установленных альтернативных маршрутов) *). Пример такого обращения к программе VICONT:
А:\) c:\vic\vicont
Рабочим здесь является диск А:, а программа VICONT запускается из каталога VIC, находящегося на диске С:,
Точно так же и параметры — имена файлов — могут снабжаться необходимыми префиксами, обеспечивающими их поиск в соответствую­щих каталогах.
Командные файлы. Командные файлы также принадлежат к кате­гории исполняемых файлов. Такие файлы снабжаются типом ВАТ (от английского слова batch — пачка), и в жаргонной речи их называют иногда «бэтч-файлами». В приведенном выше примере каталога имеется один командный файл — START. BAT.
Запуск (исполнение) командного файла осуществляется точно так же, как запуск программы в машинном коде (файла типа СОМ или ЕХЕ): указывается имя файла без расширения и, если требуется, пара­метры. Пример запуска командного файла START:
C:\VIC) start
Роль командных файлов особая. Они могут содержать целую группу команд ДОС или обращений к прикладным программам, ко­торые выполняются последовательно или в более сложном порядке, в зависимости от некоторых условий (разд. 2.6). Командный файл, в от­личие от исполняемых файлов остальных двух типов, содержит не машинный код программы, а текст, который интерпретируется команд­ным процессором ДОС. (Таким образом, по форме это обычный тексто-
*) Такой вызов программы возможен только в версиях ДОС 3.0 и старше. (Примеч. ред.)
46
вый файл, содержимое которого можно вывести на принтер или эк­ран) *). Строки этого текста могут представлять собой:
— встроенные команды ДОС,
— обращения к исполняемым программам,
— вызовы других командных файлов,
— специальные команды для управления выдачей на экран,
— специальные команды для организации ветвлений и циклов,
— метки.
Все эти конструкции (за исключением меток) могут не только фи­гурировать в командных файлах, но и просто вводиться пользователем с клавиатуры. Однако в практической работе лишь команды первых трех типов вводятся пользователем, а остальные конструкции, вклю­чая метки, служат главным образом для создания нетривиальных ко­мандных файлов.
Рассмотрим несколько простых примеров применения командных файлов.
Пример 1. Допустим, наша регулярная работа осуществляется в каталоге WOR К, но время от времени мы хотим переходить в другой каталог — GRAPH, запускать там графический пакет VICONT, а по окончании работы с этой программой возвращаться в каталог WORK. Последовательность команд при этом должна быть следующей:
cd \graph vicont cd \work
Эту последовательность можно разместить с помощью текстового редактора в командном файле. Каждая команда должна следовать на отдельной строке (регистр, на котором набирается текст, безразличен).
Дадим этому файлу имя V.BAT. Достаточно теперь задать в ка­честве одной команды имя этого файла — V, и содержащиеся в нем несколько команд начнут интерпретироваться одна за другой, избав­ляя нас от необходимости вводить их текст с клавиатуры. Первая команда сменит каталог, а вторая погрузит нас в операционную среду системы VICONT. Когда после выполнения необходимых действий мы, наконец, закончим работу с VICONT, управление вернется в командный файл. Выполнение третьей команды вернет нас в каталог WORK.
Заметим, что при выполнении каждой команды в данном примере на экране печатается приглашение, затем текст самой команды (эхо) и, наконец, результат ее работы. В следующем примере будет показано,
*) Попутно внесем терминологическую ясность: командный файл совершенно естественно относить к категории исполняемых файлов, но никак нельзя называть загрузочным, поскольку он не содержит машинного кода, загружаемого в оперативную память. (Примеч. ред.)
47
как можно отключить выдачу приглашений и текстов команд, чтобы не загромождать экран лишней информацией.
Пример 2. Допустим, мы хотим предельно сократить число манипуляций для создания необходимой рабочей обстановки при за­пуске системы. Мы можем заставить ДОС автоматически провести всю необходимую подготовку операционной среды с помощью командного файла следующего вида:
echo off
mode co80
path c:\;c:\exe;c:\turbo
cd \work
turbo
Дав этому файлу какое-либо простое запоминающееся имя, напри­мер, START. BAT, мы избавим себя от систематического набора ука­занных команд: достаточно набирать лишь слово START. Первая ко­манда этого файла ECHO OFF отключает «эхо», т. е. блокирует выдачу на экран приглашений ДОС и текстов последующих команд. Три сле­дующие команды осуществляют настройку необходимых параметров (установка режима дисплея, задание альтернативных маршрутов и рабочего каталога), а последняя команда производит запуск системы TURBO Pascal.
Пример 3. Для подготовки принтера к печати русского текста мы можем воспользоваться специальной программой загрузки шрифта, обращение к которой имеет вид: LFONT 0. Перед запуском этой про­граммы нужно проделать подготовительные действия — включить принтер, вставить бумагу. Можно создать небольшой командный файл, который будет выдавать на экран соответствующее уведомление и затем запускать программу LFONT с указанным параметром. Вид такого файла:
echo off
echo Включите принтер, вставьте бумагу
echo Будет загружен русский шрифт
pause
Ifont 0
Дадим этому файлу имя LF.BAT: для загрузки русского шрифт достаточно набрать команду LF. Исполнение этого командного файла начинается, как и в предыдущем примере, с команды ECHO OFF. Две следующие команды ECHO выводят на экран сообщения, заданные в файле в качестве текстовых строк — аргументов команд: «Включите принтер, вставьте бумагу» и «Будет загружен русский шрифт». Четвер­тая команда, PAUSE (пауза), приостанавливает дальнейшую обработку файла LF в ожидании, пока пользователь не нажмет какую-либо кла-
вишу. Пауза нужна для того, чтобы можно было не спеша включить принтер и заправить бумагу. Наконец, последняя команда запускает программу LFONT.
В последнем примере были использованы команды ECHO и PAUSE, управляющие выдачей информации на экран. К этой же категории можно отнести команду REM, которая служит для внесения в текст командного файла комментария. Строка, следующая за символом REM, никак не интерпретируется командным процессором — она исполь­зуется лишь для пояснений пользователю. С помощью команды REM удобно блокиробать исполнение некоторых команд, не удаляя их из текста командного файла.
Использование команд ECHO, PAUSE и REM полезно лишь в ко­мандных файлах; вводить их с клавиатуры для непосредственного ис­полнения не имеет особого смысла. Есть и другие команды, предназна­ченные главным образом для использования в командных файлах. К ним относятся:
GOTO — безусловный переход (на метку),
IF — проверка условия и ветвление,
FOR — управление повторным выполнением команд,
SHIFT — сдвиг списка формальных параметров.
Эти команды будут рассмотрены в следующем разделе.
Отметим еще одно важное свойство командных файлов — возмож­ность использования внутри них формальных параметров.
Для пояснения этой возможности обратимся еще раз к первому примеру. Допустим, нам хотелось бы применять одну и ту же последо­вательность команд, приведенную в примере 1, для запуска разных подсистем. Тогда можно видоизменить приведенный выше текст файла V. ВАТ, заменив имя каталога GRAPH и имя вызываемой программы VICONT формальными параметрами. Командный файл при этом при­обретает вид:
cd \% 1
%2
cd \work
Символы % 1 и % 2 обозначают формальные параметры, вместо ко­торых при обращении к V.BAT будут подставлены в текстовом виде фактические параметры, указанные в командной строке. Обращение к V.BAT может иметь вид:
v graph vicont
Строки graph и vicont займут место соответственно параметров % 1 и %2, в результате чего получится точно такой же текст, как и в при­мере 1. Однако новый командный файл, в отличие от прежнего, можно использовать для запуска других подсистем, например:
v ss symphony или v ww word
49
Эффект таких обращений очевиден, В первом случае из каталога SS будет вызвана система CYMPHONY, во втором случае из ката­лога WW вызывается система WORD.
Организация работы с трансляторами. Подстановка формальных параметров в командные файлы часто используется при организации работы с системами программирования на языках Паскаль, си, фортран и др. Дело в том, что трансляция программ из исходных текстов на этих языках в большинстве случаев осуществляется в несколько этапов, или «проходов». При этом на разных этапах с помощью отдельных ко­манд требуется вызывать разные части трансляторов, подставляя им в качестве параметров имена файлов с исходными текстами, библиоте­ками загрузочных модулей и др. И вот здесь можно заметно упростить работу, применяя командные файлы с формальными параметрами. Пример такого файла для трансляции программ с языка паскалы
echo off
echo --------------- 1-й проход ---------------
pasl %1: pause
echo --------------- 2-й проход ---------------
pas2 pause
echo --------------- 3-й проход ---------------
link °/ol+°/o2
Если такому файлу дать имя PAS.BAT, то вызов его может выгля­деть следующим образом:
pas modi mod2+mod3
Здесь MODI — имя файла с исходным текстом транслируемой про­граммы (полное имя этого файла должно быть MODI. PAS). Это имя подставляется в командный файл вместо параметра % 1. M0D2 и M0D3 — имена объектных модулей, присоединяемых к транслируемой про­грамме на стадии компоновки (их полные имена в каталоге имеют рас­ширение OBJ). Эти имена, разделенные знаком -}-, подставятся в ко­мандный файл вместо параметра %2.
Первая строка данного файла, как и в предыдущих примерах, от­ключает эхо до конца исполнения. Следующая строка выдает на экран сообщение о начале 1-го прохода трансляции. Затем вызывается соот­ветствующая фаза транслятора — PAS 1, и в качестве параметра под­ставляется имя файла с исходным текстам транслируемой программы. Пятая строка обеспечивает выдачу сообщения о начале 2-го прохода, а шестая строка — вызов второй фазы транслятора — PAS2. Наконец, восьмая строка извещает о начале 3-го прохода, а девятая строка вызы­вает компоновщик программ — LINK, которому в качестве параметра
подставляется имя только что оттранслированного модуля MODI и имена других.модулей, — в данном случае MOD2 и MOD3.
Между командами, осуществляющими вызовы основных частей транслятора, вставлены команды PAUSE, которые позволяют програм­мисту проанализировать результат каждого прохода, прежде чем под­толкнуть систему к выполнению следующего. Заметим, что пользова­тель может прервать исполнение командного файла, нажав во время паузы клавиши Ctrl и С (такую комбинацию будем обозначать Ctrl+C). При нажатии указанных клавиш ДОС приостанавливает исполнение командного файла и переспрашивает пользователя, действительно ли он хочет прервать работу. Согласив пользователя выражается нажатием клавиши Y (Yes); отрицательный ответ — N (Nfo) вызывает продолже­ние работы.
Приведенный пример типичен для организации запуска трансля­торов, хотя конкретное оформление командного файла зависит от программиста.
2.6. Развитые командные файлы
Рассмотрим действие специальных команд, позволяющих управлять интерпретацией командных файлов. К ним, как указывалось, отно­сятся команды GOTO, IF, FOR, SHIFT, а также команда EXIT, иг­рающая особую роль при рекурсивном (вложенном) вызове командны» файлов.
Команда GOTO. Позволяет передавать управление на метку и тем самым осуществлять повторное исполнение участков командного файла или, наоборот, обходить некоторые участки (что обычно имеет смысл в сочетании с командой ветвления IF).
Пример 1. Пусть командный файл СВАТ имеет вид!
echo off
:ml
echo Вывод на принтер файла % 1
echo Для остановки нажмите CtrlC
сору % 1 ргп
pause
goto ml
В данном примере вторая строка содержит метку ml (признаком метки является двоеточие в начале строчки), а последняя строка — команду перехода на эту метку. Четыре команды внутри повторяемого участка командного файла служат для выдачи на экран поясняющих сообщений (команды ECHO) и копирования на принтер (т. е. печати) файла, имя которого подставляется вместо формального параметра % 1. Команда PAUSE приостанавливает исполнение, чтобы пользователь
имел возможность осмотреться и либо прервать работу, либо продол­жить ее дальше.
Допустим, пользователь дает в терминала команду!
с spectr. doc
Тогда начинается циклическое исполнение файла СВАТ о фак­тическим параметром SPECTR. DOC. На принтер начнут выдаваться одна за другой копии этого текстового файла, прерываемые паузами после каждой очередной копии. Пользователь может прервать ис­полнение этого командного файла, нажав одновременно клавиши Ctrl и С.
Команда IF. Позволяет проверять условие и выполнять команду в зависимости от результата его проверки. Что можно задавать в ка­честве условия? Для этого имеется три возможности:
1. Проверка кода завершения какой-либо программы, сработав­шей перед оператором IF. При этом в начале оператора IF исполь­зуется конструкция следующего вида:
IF ERRORLEVEL(N)
Любая программа может с помощью специального прерывания ДОС выработать в момент своего окончания так называемый код за­вершения. Этот код сравнивается с числом N. Условие считается вы­полненным (истинным), если выработанный код завершения равен или больше указанного числа N.
2. Проверка наличия файла в каталоге. В этом случае Начало опе­ратора IF имеет вид!
IF EXIST (имя файла или шаблон)
IJ данном случав команда IF проверяет, действительно ли сущест­вует файл с заданным именем в указанном или в текущем каталоге. При обнаружении файла условие считается выполненным.
3. Сравнение двух строк, которые, в частности, могут задаваться через формальные параметры. Соответствующая конструкция может иметь вид!
IF%(N)== (текстовая строка)
Здесь значение формального параметра % (N) сопоставляется с кон­кретной строкой. При абсолютном совпадении двух строк условие считается выполненным.
Любое из этих условий может задаваться со знаком логического отрицания NOT; отрицание условия считается выполненным, если само условие не выполнено (ложно).
Пример 2. Опишем прием, который часто используется для организации ветвления по коду, введенному пользователем с терминала
(настройка на пользователя). Будем предполагать наличие специаль­ной программы (назовем ее ASK-CODE), которая выполняет следующие операции:
— выдает на экран текст сообщения,
— принимает введенное пользователем с клавиатуры число,
— вырабатывает код завершения, совпадающий с 9тим числом. Фрагмент командного файла, использующего программу
ASK-CODE, может иметь следующий вид;
ASK-CODE "Baш код?"
if errorlevel 5 goto USER? .
if errorlevel 4 goto USER4
if errorlevel 1 goto USER I cd \work
goto end :USER5 cd \user5
goto end 1USER4 cd \user4
goto end :USER1 cd \userl
tend
В данном примере группа команд IF ERRORLEVEL ... осуществ­ляет анализ кода завершения, выработанного программой ASK-CODE (равного, напомним, числу, введенному пользователем с терминала в ответ на вопрос "Ваш код?"). В зависимости от значения происхо­дит переход на одну из меток USER5, USER4, ... USER1, где затем происходит настройка операционной среды на конкретного пользова­теля. Если введенный пользователем код превышает 5, то переход все равно происходит на метку USER5; если же код равен 0, происходит переход на следующую команду под указанной группой операторов (cd \work). Таким образом, осуществляется ветвление внутри ко­мандного файла.
Пример 3. Иногда в начале работы пользователю необходимо узнать, не оставил ли ему кто-либо из коллег какое-нибудь сообщение. Допустим, имеется договоренность, что такие сообщения заносятся
в файл MAIL.(N) в каталоге USER(N), где (N) — код пользователя-адресата. Тогда проверка наличия сообщения и его печать для пользо­вателя с кодом 1 может осуществляться командой вида:
if exist MAIL.I type MAIL.1
Такая команда может стоять внутри участка командного файла, рассмотренного выше, после строки cd \userl, Аналогичные команды могут находиться в других участках этого командного файла после меток USER5, USER4 ...
П р и м е р 4. Допустим, в общедоступном каталоге имеется про­грамма NOTES.EXE, реализующая работу с картотекой/записной книжкой. Такую программу пользователь должен запускать с разными параметрами — именами картотек, которые находятся в разных ката­логах;
— картотека TELEF в каталоге TEL,
— картотека PAPERS в каталоге PAPERS,
— картотека PERSON в каталоге ADMIN.
При обычном способе запуска пользователю пришлось бы набирать каждый раз по две команды с длинными именами, например:
cd \tel
notes telef
Можно создать в общедоступном каталоге командный файл, ко­торый позволит осуществлять необходимые вызовы с использованием простых одйобуквенных мнемонических имен. Такой командный файл с именем N.BAT может иметь вид (выделение меток большими буквами здесь сделано лишь для наглядности):
echo off
if o/oi,= = . goto exit
if %l === t goto TEL
if %1 == p goto PAP
if %1 = = sgotoPERS
goto exit
:TEL
cd \tel
notes telef
goto exit .
:PAP
cd \papers
notes papers .
goto exit
:PERS
cd \adrnln
notes person
:extt
Обращение к указанному файлу при вызове разных картотек
должно иметь вид:
n t или n p или n s
При этом буквы t, p, s должны быть малыми, поскольку именно в таком виде они заданы в условиях операторов IF.
Отсутствие букв t, p или s при вызове этого файла приведет к переходу на метку exit.
Команда FOR. Обеспечивает циклическое выполнение команд ДОС. При этом можно задать формальный параметр и список фактически» параметров (обычно — имен файлов), которые последовательно под­ставляются вместо формального параметра в текст исполняемой ко­манды.
Пример 5. Пусть имеется необходимость систематически ко­пировать файлы PROQ.PAS, PROG.OBJ и PROG.EXE из рабочего каталога на виртуальный диск D:. С этой целью можно в соответствую­щем командном файле дать команду:
for %%A in (PAS OBJ EXE) do copy PROG.%%A d:
Здесь формальный параметр %%А последовательно сопоставляется со списком фактических параметров в круглых скобках и использу­ется в команде COPY, которая в данном случае сработает 3 раза подряд,
Подставив в качестве второго аргумента команды COPY вместо имени D: еще один формальный параметр %1, можно будет менять назначение копирования, задавая его с терминала.
Команда SHIFT. Вызывает сдвиг списка формальных параметров относительно списка фактических параметров. Так, если в командном файле фигурируют формальные параметры %1 и %2, а в обращении к командному файлу — фактические параметры А, В, С, D, то сначала соответствие формальных и фактических параметров выглядит следую­щим образом:
%1=А %2=В Однократное применения команды SHIFT дает следующее соответствие(
%1 = В %2=С Двукратное применение вызывает дальнейший сдвиг:
%1=С %2=D
Пример 6. Пусть стоит задача, обратная той, которая рас­смотрена в примере 5; а именно, — нужно копировать на виртуальный
диск D: файлы, имена которых пользователь будет вводить с терми­нала. Эту задачу позволит решить командный файл следующего вида|
echo off
:loop
copy %1 di
shift
goto loop
Если дать этому файлу имя D.BAT и вызвать его с произвольным числом аргументов:
d f.l f.2 f.3 f.4 f.5
то будет происходить последовательное присваивание формальному параметру %1 значений F.I, F.2, F.3, F.4, F.5 и циклическое исполне-

Рис. 2.3. Вложенный вызов командного файла
ние команд COPY и SHIFT. После исчерпания фактических параметров команда COPY выдаст сообщение об ошибке, поскольку ее первый ар­гумент будет отсутствовать. В этот момент пользователь сможет пре­рвать работу командного файла, нажав клавиши Ctrl и.С *)).
Вложенные вызовы командных файлов. Вложенные (рекурсив­ные) вызовы командных файлов с возвратом, вообще говоря, не преду­смотрены в ДОС. Если из одного командного файла Х.ВАТ вызвать другой командный файл — Y.BAT, то управление уже не возвращается обратно в Х.ВАТ.
Вложенные вызовы с возвратом, однако, возможны, если приме­нять особый способ — обращение к командному процессору COMMAND.COM с указанием в качестве аргумента имени вызываемого командного файла.
*) Команду SHIFT приходится использовать также в тех слу­чаях, когда число параметров командного файла превышает 9, тан как изнутри командного файла можно адресоваться к внешним фор­мальным параметрам только от % 0 до %9. (Примеч. ред.)
Пример 7. Пусть имеется два командных файла — «вызываю­щий» Х.ВАТ и «вызываемый» Y.BAT. Оформление вызова Y.BAT из Х.ВАТ и возврат обратно осуществляется согласно схеме, представ­ленной на рис. 2.3.
Из приведенной схемы видно, что обращение к командному про­цессору вида COMMAND/C позволяет приостановить исполнение те­кущего командного файла Х.ВАТ и начать исполнение Y.BAT. Возврат из Y.BAT осуществляется специальной командой EXIT. Таким обра­зом можно структурировать командные файлы. При этом есть, впрочем, и свои потери, поскольку при вызове еще одной копии командного про­цессора (COMMAND.COM) расходуется дополнительно около 4 Кбайт оперативной памяти.
2.7. Конфигурирование системы
Удобная рабочая обстановка для пользователя ПЭВМ может быть создана в результате продуманного конфигурирования и начальной настройки системы. ДОС дает возможность при запуске машины авто­матически задавать определенные начальные условия, которые влияют на дальнейшую работу пользователя. Осуществляется это с помощью содержимого двух особых файлов:
CONFIG.SYS AUTOEXEC.BAT
Указанные файлы, если они имеются в корневом каталоге систем­ного диска, обрабатываются при любом включении или перезапуске машины (напомним, что перезапуск осуществляется путем одновремен­ного нажатия трех клавиш — Alt, Ctrl и Del или нажатием специаль­ной кнопки, если она есть на машине). Рассмотрим, что может быть задано в указанных файлах.
Файл конфигурации CONFIG.SYS. С помощью файла конфигура­ции можно расширять операционную систему и изменять некоторые параметры, влияющие на работу внешних устройств. Одно из важней­ших свойств ДОС состоит в возможности добавления новых внешних устройств и подключения специальных программ, обеспечивающих управление их работой.
Эти программы, называемые драйверами внешних ус­тройств, можно включить в систему, перечислив их в файле CONFIG.SYS. Помимо этого в файле конфигурации можно указать, сколько файлов в системе может быть открыто одновременно, задать количество буферов для обменов с внешними накопителями и некоторые другие параметры.
Пример 1. Рассмотрим типичный вид файла CONFIG.SYS:
break=on
files=12
device=c:\sys\alfa.sys
device=c:\sys\vdisk.sys 20
device=c:\sys\ansi.sys
devtce=c:\sys\mouse.sys
device=c:\sys\tosh.sys
В первой строке с помощью выражения BREAK=ON устанавли­вается режим, при котором пользователь будет иметь возможность пре­рвать любую работающую программу при определенных условиях. Для этого дается команда прерывания, вызываемая одновременным нажа­тием управляющих клавиш Ctrl и Break. Работающая программа будет прервана, если эти клавиши оказываются нажатыми в момент выполнения операций ввода/вывода (включая печать на принтере, обмен с дисками и др.).
Во второй строке командой FILES=12 устанавливается, что количество одновременно открытых файлов может достигать 12, что довольно часто требуется в программах, интенсивно работающих с фай­ловой системой (базах данных, картотеке и др.). По умолчанию же это число равно 8. Следует иметь в виду, что на каждый файл отводится по 48 байт оперативной памяти.
Пять следующих строк имеют одинаковый вид и содержат команды подключения к ДОС дополнительных внешних устройств. В правой части каждого выражения, после знака равенства, задается имя файла, являющегося драйвером нового устройства (такой файл содержит про­грамму в машинном коде, создаваемую по особым соглашениям). Команд такого типа в CONFIG.SYS может быть сколько угодно. В дан­ном примере все имена драйверов имеют префикс C:\SYS, указыва­ющий каталог, в котором находятся соответствующие файлы. „В рас­сматриваемом примере к ДОС подключаются следующие драйверы:
ALFA.SYS — драйвер, обеспечивающий прием с клавиатуры и выдачу на дисплей русских букв (или букв другого алфавита);
VDISK.SYS — драйвер виртуального диска, создаваемого в опе­ративной памяти;
ANSI.SYS — драйвер «расширенного» управления клавиатурой и дисплеем на основе программируемого набора кодов;
MOUSE.SYS — драйвер манипулятора «мышь»;
TOSH.SYS — драйвер принтера типа Toshiba P1350 для печати русскими буквами.
Несколько замечаний по поводу указанных драйверов. Драйвер клавиатуры и дисплея для русских букв, может быть устроен по-разному. Вариант этого драйвера, разработанный в ВЦ АН СССР (автор —
58
А. А. Чижов), обеспечивает переключение с английского алфавита на русский и обратно при нажатии пользователем выделенной клавиши. Чаще всего для этого используется клавиша CapsLock. Кроме того, имеется вариант этого драйвера, учитывающий установку в машине специального ПЗУ знакогенератора для русских букв, а также другие (нестандартные) разновидности адаптеров для цветных графических дисплеев.
Если в машине установлена достаточно большая оперативная па­мять (например, больше 256 Кбайт), то часть ее можно занять под виртуальный диск (их может быть несколько), который будет использо­ваться точно так же, как и обычный накопитель на магнитном диске (иногда он называется псевдодиском). В момент создания виртуальный диск не содержит никакой информации, а после выключения машины все, что туда было записано, пропадает. Тем не менее работать с ним в некоторых случаях очень удобно, потому что, во-первых, доступ к нему для записи и чтения файлов производится гораздо быстрее, чем к реаль­ному гибкому или жесткому диску; во-вторых, наличие в системе до­полнительного накопителя всегда создает определенные удобства для работы.
Накопитель, соответствующий псевдодиску, обозначается очеред­ной буквой латинского алфавита. В системе без жесткого диска 1-й виртуальный диск получает имя С:, следующий — D: и т. д. В системе с жестким диском соответственно — D:, Е: и т. д.
Некоторые драйверы виртуального диска требуют, чтобы объем диска был указан вместе с именем драйвера в файле CONFIG.SYS (именно этот вариант использован в примере). Драйвер, разработан­ный А. А. Чижовым, запрашивает объем псевдодиска у пользователя, который тем самым может регулировать количество выделяемой для диска оперативной памяти при начальной загрузке и инициализации машины. Это удобно, когда на машине используются системы с разными требованиями к оперативной памяти.
Расчет величины псевдодиска может быть приближенным. Для этого следует знать, что операционной системе нужно для работы при­мерно 60 Кбайт оперативной памяти, а прикладным системам — в среднем от 60 до 300 Кбайт (в отдельных случаях — свыше 300 Кбайт). Таким образом, суммарная оперативная память, необходимая для нормальной работы, должна иметь объем около 300 Кбайт *). Все, что остается сверх этого, может быть выделено под виртуальный диск. Следует также иметь в виду, что чем меньше объем диска, тем менее он полезен для работы,
*) Во многих практических случаях эта цифра значительно меньше, (Примеч. ред.)
59
Драйвер расширенного управления клавиатурой и дисплеем позволяет с помощью так называемых Esc-последовательностей (чи­тается «Искейп-последовательностей») управлять режимом приема кодов,с клавиатуры и работы дисплея. Ниже будет подробно рассмо­трено, как ато делается (разд. 4.1, 4.2).
Драйвер манипулятора «мышь» проверяет, установлен ли в машине соответствующий адаптер (плата, которая принимает сигналы с мани­пулятора). Если адаптера нет, то на экран выдается соответствующеа сообщение, но никаких фатальных последствий не возникает — можно продолжать работать, не используя «мышь».
Драйвер принтера TOSH.SYS обеспечивает графическое изображе­ние русских букв на точечно-матричном принтере типа Toshiba P1350, который отличается высококачественной печатью. Подключение та­кого драйвера позволяет считать, будто бы машина снабжена новым внешним устройством с именем TOSH. Можно выдавать на него тек­стовые файлы, используя, например, команду COPY:
сору (имя печатаемого файла) tosh
Кроме указанных в примере команд, в файле конфигурирования можно установить нестандартное количество буферов для обмена ин­формацией с дисковыми накопителями. Стандартное число равно 2, рекомендуемое для машин е жестким диском — не менее 3, а для не­которых прикладных систем, например, баз данных, картотек и т. п., полезно иметь до 20 буферов с целью ускорения обменов с дисками. Однако при этом следует иметь в виду, что на каждый буфер расхо­дуется по 512 байт оперативной памяти. Задание числа буферов делается с помощью выражения вида:
BUFFERS=(KOflii4ecTBO буферов)
Еще одна возможность позволяет указывать имя файла, который будет играть роль нестандартного командного процессора (вместо стан­дартного файла COMMAND. COM). Такое указание осуществляется с по­мощью выражения вида:
SHELL=(hmh файла с новым командным процессором)
Таким образом, с помощью файла конфигурирования пользователь может задать собственные, нестандартные возможности, которые действуют в течение текущего сеанса работы.
Файл автозапуска AUTOEXEC.BAT. С точки зрения содержащейся в файле AUTOEXEC.BAT информации он является обычным команд­ным файлом. Однако он играет особую роль, потому что при начальном запуске и инициализации системы, вслед за обработкой CONFIG.SYS, операционная система пытается найти в корневом каталоге системного диска файл AUTOEXEC.BAT и начинает его обработку автоматически,
во
без какого-либо побуждения со стороны пользователя. В файл AUTOE­XEC.BAT удобно занести различные команды, которые осуществят всю необходимую настройку системы и автоматически «погрузят» пользователя в привычную операционную обстановку. Рассмотрим на примерах, что полезно внести в указанный файл, и попутно поясним действие некоторых, пока не рассматривавшихся команд (SET, PROMPT и др.), которые чаще всего употребляются именно в файле автозапуска. Пример 2. Рассмотрим файл AUTOEXEC.BAT, который мо­жет быть установлен на машине, используемой преимущественно од-. ним человеком (далее будет рассмотрен пример для случая, когда на машине работают попеременно разные люди):
echo off
path с:\;с:\ехе
prompt $p$g
set ABC=c:\abc
timer s
ver
remind
fkeys
Начиная со второй строки этого файла, стоят команды, обеспечи­вающие создание определенной операционной обстановки. Рассмотрим их по порядку.
1. Команда PATH устанавливает альтернативные маршруты для поиска исполняемых файлов. В примере один из маршрутов указывает на системный подкаталог с именем ЕХЕ. Кроме того, как возможное место размещения общеупотребительных программ указан корневой каталог диска С:.
Иногда «фирменные» поставки операционной системы типа MS-DOS/PC-DOS в качестве места хранения программ общего назна­чения используют каталог с именем BIN (или DOS и т. п.). В этом слу­чае именно его имя полезно указать в команда PATH.
Для пользователей, единолично владеющих машиной и часто об­ращающихся к какой-либо одной системе программирования или при­кладной системе (например, Turbo Pascal), может оказаться полезным включение в число альтернативных маршрутов имени соответствующего «прикладного» подкаталога. Однако увлекаться этим не следует, таи как чем больше будет задано альтернативных каталогов, тем дольше будет происходить поиск файлов в них.
2. Команда PROMPT задает формат приглашения ДОС (разд. 2.1). Задание формата приглашения осуществляется аргументом команды — строкой, состоящей из обычных текстовых и специальных управляю­щих символов. Управляющие символы снабжаются префиксом — зна-
ком $, отличающим их от обычных символов. Наиболее часто исполь» зуются следующие управляющие символы:
$р — выдача имени текущего (рабочего) каталога,
$t — выдача текущего времени,
$d — выдача текущей даты,
$g — выдача символа-разделителя ),
$b — выдача символа-разделителя |,
$h — стирание предыдущего символа,
$е — начало выдачи Esc-последовательности.
Другие символы используются реже. К ним относятся!
$n — выдача имени текущего накопителя,
$q - — выдача символа-разделителя =,
$1 — выдача символа-разделителя (,
$$ — выдача символа $,
— — этот символ (подчерк) указывает на необходимость перехода на следующую строку.
В рассматриваемом примере строка «$p$g» в качестве параметра команды PROMPT обеспечивает выдачу приглашения, которое исполь­зуется наиболее часто. Оно содержит имя текущего каталога и имеет, например, такой вид:
C:\WORK)
Если бы строка имела вид «$t $d $b $p$g», то в приглашение были бы включены довольно длинные сообщения о времени и дате:
13:55:34.05 Моп. 11 — 26 — 85 | C:\WORK)
Чтобы подавить выдачу секунд и долей секунд в таком приглаше­нии, можно применить управляющие символы стирания ($h). Их число должно соответствовать числу удаляемых символов. Параметр команды PROMPT приобретает в таком случае вид «$t$h$h$h$h$h$h $d $b $p$g», а приглашение станет несколько компактнее:
13:55 Моп 11 — 25 — 85 | C:\WORK)
Приглашение такого вида содержит полезную информацию, но когда оно начнет повторяться в нескольких строчках подряд, то бу­дет выглядеть чересчур навязчиво и неоправданно загромождать экран.
Один из часто используемых приемов состоит в размещении даты и времени в верхнем углу экрана, для чего в параметр команды PROMPT вводятся Esc-последовательности, позволяющие выбирать место на экране для текущей позиции курсора *). Например (пробелы между
*) При этом используется особый драйвер (ANSI.SYS), обеспечи­вающий управление экраном с помощью Esc-последовательностей (см. разд. 4.2). Разумеется, файл CONFIQ.SYS должен содержать имя драйвера.
отдельными компонентами вставлены здесь только для удобства чте­ния):
$е [s $е [ 1 ;57Н $t$h$h$h$h$h$h $d $e [u
Управляющий символ $е обозначаетначало Esc-последователь-ности, обеспечивающей управление экраном. Первая часть, состоящая из символов $е [s, обеспечивает запоминание текущей позиции курсора. Вторая часть, состоящая из символов $е[1;57Н, устанавливает кур­сор в 1-ю строку экрана на 57-ю позицию. Затем уже знакомая нам последовательность «$t$h$h$h$h$h$h $cb вызывает печать с этой позиции времени (с подавлением секунд) и даты. Наконец, заключи­тельная часть управляющей строки при помощи Esc-последователь-ности $е [и восстанавливает позицию курсора. При этом время и дата будут печататься в правом верхнем углу экрана, а остальная часть при­глашения будет располагаться на своем обычном месте.
Дальнейшее усовершенствование или, скорее, украшение может состоять в том, чтобы выдавать время и дату другим цветом, отличным от обычного цвета курсора. Подробнее об Esc-последовательностях и драйвере ANSI.SYS рассказано в разд. 4.2.
Командой PROMPT можно выдавать и другие информационные параметры, например, имя пользователя, название организации и др.
3. Команда SET позволяет вводить в операционную обстановку системы различные имена с параметрами, которые затем могут исполь­зоваться прикладными программами *). Типичное использование та­ких параметров — задание имен каталогов, где должны находиться все рабочие файлы для данной прикладной системы (например, базы данных или текстового редактора).
В рассматриваемом примере команда SET вводит имя ABC с пара­метром C:\ABC, которое является указанием текстовому процессору, откуда следует брать вспомогательные файлы (шрифты, схему разме­щения окон на экране и др.). Подробнее эта программа будет описана в дальнейшем (разд. 6.4).
Рассмотренные выше команды PATH и PROMPT также модифици­руют обстановку, но в отношении фиксированных имен (а именно, устанавливают параметры для имен PATH и PROMPT). Команда SET позволяет делать то же самое для произвольных имен, и ее, таким об­разом, можно рассматривать как обобщение вышерассмотренных команд.
Команда SET может использоваться, например, для указания ка­талога, ориентированного на обслуживание конкретной прикладной
*) Как можно анализировать имена и параметры в операционной обстановке, описано в техническом руководстве по ДОС. {Прш.еч. ред.)
63
системы. На разных машинах и для разных пользователей можно ука­зывать различные каталоги, что дает определенную гибкость в исполь­зовании прикладной системы. Кроме того, рабочий каталог такой си­стемы, как правило, неизвестен другим программам, что повышает на­дежность ее эксплуатации
4. Команда TIMER не является встроенной. Это одна из ути­лит (служебных программ), служащая для активизации показаний и выдачи текущей даты и времени со встроенного таймера и календаря (если таковой имеется на машине). Разные модели машин могут исполь­зовать различные аппаратные средства для поддержки календаря и таймера, поэтому и программы считывания их показаний могут быть разными, Ооращение к программе QETCLOCK обеспечивает считыва­ние первого показания календаря и таймера после включения машины (пока машина выключена, работа календаря и таймера поддерживается встроенной аккумуляторной батарейкой).
Чтобы произвести установку даты и времени на встроенном кален­даре и таймере, используется другая программа — SETCLOCK (ее имя также может варьироваться в зависимости от типа установленного таймера). Обращаться к этой программе приходится в редких случаях — при начальной установке новой машины, при смене часового пояса, при переходе с зимнего времени на летнее и наоборот.
Если в машине нет аккумуляторной батарейки для поддержки работы календаря и таймера, пока машина выключена, то утилита TIMER бесполезна; в этом случае для установки даты и времени в файле AUTOEXEC.BAT вместо этой команды должны фигуриро­вать две другие (встроенные) команды: date и time.
5. Команда VER в шестой строчке файла AUTOEXEC.BAT яв­ляется встроенной в ДОС командой. Ее задача очень проста — выдать на экран сообщение о номере версии операционной системы. Это необ­ходимо, поскольку некоторые прикладные программы учитывают осо­бенности той или иной версии ДОС и пользователю, полезно знать, ка­кая именно версия установлена в данный момент на машине.
6. Команда REMIND относится к числу служебных; она реали­зуется программой, разработанной в ВЦ АН СССР (автор — О. А. Гон­чаров). Ее функция состоит в анализе специального файла REM.REM, в котором с определенными датами или диапазонами дат связываются текстовые сообщения. Если при включении машины программа REMIND выясняет, что текущая дата совпадает с одной из дат, указанных в REM.REM, то на экран выдается соответствующее дате сообщение. Таким образом, через файл AUTOEXEC.BAT можно автоматически выдавать напоминающие сообщения, связанные с некоторыми датами (это могут быть, к примеру, дни рождений, важные встречи и др.).
7. Последняя команда в файле автозапуска — FKEYS — осуществ­ляет вызов другого командного файла FKEYS.BAT, в котором с по-
64
мощью Esc-последователыюстей происходит переопределение некоторых функциональных клавиш для предоставления пользователю возмож­ности быстрого набора некоторых часто используемых команд.
Следует помнить, что прямой вызов командного файла FKEYS.BAT из AUTOEXEC.BAT не позволяет вернуться назад в файл автозапуска. Возврат в AUTOEXEC.BAT можно, как говорилось выше, обеспечить вызовом командного процессора. В этом случае обращение kFK.EYS.BAT должно выглядеть так:
command /с fkeys
Таким образом, в рассмотренном примере файла автозапуска указаны команды, с помощью которых создается определенная опера­ционная обстановка, способствующая удобной дальнейшей работе пользователя. Не все из рассмотренных команд необходимы в равной степени; без команд REMIND или FKEYS можно, разумеется, обой­тись. С другой стороны, без команд PATH, SET и PROMPT работать было бы очень неудобно. Весьма часто в файл автозапуска вставляются также команды управления экраном, с тем чтобы перед началом работы сделать цветные заставки, выдать приветственные сообщения и др. Применяется также команда MODE для установки параметров экрана, принтера и коммуникационного канала, а также команда ASSIGN для переназначения логических имен накопителей.
Файл автозапуска для ПЭВМ с несколькими пользователями. Часто система конфигурируется таким образом, чтобы ею могли пользоваться несколько человек (компьютер попеременно является «персональным» для каждого из них). Идентификатор, или код пользователя, запраши­ваемый во время инициализации, позволяет системе погрузить человека в привычную для него операционную обстановку. В файле AUTOE­XEC.BAT могут быть указаны такие параметры операционной обста­новки, как имя конкретного рабочего каталога, имена альтернативных каталогов с различными вспомогательными файлами, режим работы дисплея и др. Можно даже указать имя первой исполняемой программы, с тем чтобы система автоматически «вошла» в эту программу, не требуя от пользователя каких-либо команд.
Пример 3. В файл AUTOEXEC.BAT заносится фрагмент, позволяющий запросить код, пользователя, а затем, проанализировав его, передать управление на одну из ветвей. Для этого используется прием, рассмотренный в разд. 2.5:
echo off
path c:\;c:\exe
set ABC=c:\abc
prompt $p$g
timer /s
ver
remind
if exist mail type mail command /c fkeys :begin
echo Пользователи этой машины: echo 1 — Виктор 2 — Олег 3 — Валентин 4 — остальные ask-code " Ваш код ?"
if errorlevel 4 goto work
if errorlevel 3 goto val if errorlevel 2 goto oleg if errorlevel 1 goto victor goto begin fval
cd \val start jvictor
cd \victon start ioleg
cd \oleg start iwork
cd \work
В данном примере в файл AUTOEXEC.BAT, во-первых, введена команда IF EXIST MAIL TYPE MAIL, которая обеспечивает вывод на экран файла MAIL, если он присутствует в корневом каталоге. В этом файле может содержаться общая «почта» для всех пользователей.
Во-вторых, после строки с меткой BEGIN стоит группа команд, которая выдает на экран с помощью ECHO сообщение о постоянных пользователях машины и приписанных им кодах, затем запрашивает у пользователя его код посредством программы ASK-CODE, анализи­рует этот код с помощью команд IF ERRORLEVEL .. и передает уп­равление на соответствующую метку.
Под каждой меткой происходит смена каталога для соответствую­щего пользователя и обращение к команде START. Команда START реализуется * в подкаталоге данного пользователя соответствующим командным файлом, составленным по его усмотрению. В индивидуаль­ных командных файлах START.BAT могут, в частности, вновь даваться команды PATH, SET, PROMPT с другими значениями аргументов. Если введен код 0, то происходит переход на метку BEGIN и все вышеописанные операции повторяются. При коде, равном или боль­шем 4, происходит переход в общий рабочий каталог WORK. Такой каталог всегда полезно иметь на машине для выполнения временных работ или для временных пользователей.
Завершая рассуждения о порядке конфигурирования системы, необходимо описать еще возможности управления клавиатурой и дис­плеем. Но поскольку соответствующие средства относятся не только к файлам автозапуска, но представляют общий интерес, их описание будет дано отдельно в гл. 4.
Размещение файлов на жестком диске. В заключение данного раз­дела рассмотрим в общих чертах, как следует размещать на жестком диске основные компоненты программного обеспечения. Это особенно важно иметь в виду при получении и подготовке к работе новой машины с жестким диском. В период, когда только начинается заполнение же­сткого диска, достаточно легко спланировать общую схему размеще­ния на нем файловой системы. По прошествии некоторого времени, когда на диске появляется уже довольно много информации, изменить об­щую схему его компоновки становится весьма непросто; для этого по­требуется кропотливое и длительное переписывание информации на гибкие диски (для этого может понадобиться до 20 дискет), а затем об­ратное переписывание с дискет на жесткий диск.
Рекомендуется, чтобы в корневом каталоге находились лишь са­мые необходимые для запуска файлы — CONFIG.SYS, AUTOEXEC.BAT, COMMAND.COM, а также некоторые файлы с информационными сооб­щениями — такие как MAIL (для общей «почты»), REM.REM (для программы REMIND) и др. Кроме того, в корневом каталоге следует образовать основные подкаталоги для системных и прикладных про­грамм, а также для отдельных пользователей. К таким подкаталогам, в частности, относятся:
SYS — для системных драйверов, запускаемых из CONFIG.SYS, EXE — для исполняемых программ общего пользования, ABC — для служебных файлов текстового процессора, DOC — для текстовой документации по разным системам, WORK — Для временных работ и случайных пользователей, GAMES — для игровых программ.
Общий вид корневого каталога,, выдаваемый командой DIR, мо­жет быть при этом следующим:
CONFIG SYS 118 6-03-85 11:42р
AUTOEXEC BAT 994 7-20-85 12:б9р
COMMAND COM 22042 8-14-84 8:00р
SYS (DIR) 5-19-85 2:19р
EXE 2-25-83 4:44р
ABC 5-29-85 9:47а
DOC 4-30-85 9:43а
WORK 1-20-84 4:44a
VICTOR 9-11-84 12:00p
PAPERS 4-30-85 9:43a

GAMES 1-20-84 12:04p
SYMPHONY 5-30-85 10:29p
TURBO 6-30-85 11:20a
MAIL 732 11-30-85 12:20p
REM REM 468 10-09-85 4:30p
Все вновь появляющиеся подсистемы, трансляторы и просто от­дельные программы следует по возможности размещать в подкатало­гах следующих уровней, с тем чтобы на каждом уровне система оста­валась обозримой. При этом, соответственно, легче осуществлять «сброс» содержимого отдельных подкаталогов на гибкие диски и пере­нос их на другие машины.
2.8. Повторенье — мать ученья
В данном разделе будет приведена сводка команд ДОС, включая встроенные команды и те, которые реализуются системными утили­тами, поставляемыми в комплекте с ДОС. Не все команды, приводимые ниже в таблицах, были рассмотрены в предыдущих разделах. Некоторые из новых команд будут кратко пояснены.
Следует обратить внимание, что в табл. 2.1 указаны и такие ко­манды, которые поддерживаются только версией ДОС 3.0 и более поздними, — эти команды снабжены пометкой (3.0). Встроенные ко­манды версии ДОС 2.0 никак не помечены, а команды, реализуемые внешними утилитами, отмечены знаком * . Отдельно приведен список полезных утилит, разработанных в ВЦ АН СССР. Напомним, что все утилиты следует размещать в общедоступных директориях, на кото­рые будет указывать PATH.
Рассмотрим действие некоторых команд из табл. 2.1 (полное опи­сание перечисленных команд можно найти в руководстве по ДОС).
Команда COMMAND. Эта команда обеспечивает вызов новой копии, командного процессора. Вызов может происходить в трех режимах, на которые указывает специальный «флажок» — параметр, следующий за именем команды:
command /С (. .) — вызов с автоматическим возвратом,
command /p — вызов без возврата к «старой» копии,
command — вызов с возвратом по команде EXIT.
В первом варианте вместо конструкции (. .) может стоять любая команда ДОС. Например, возможно такое обращение:
command /с demo
DEMO может быть именем другого командного файла, выход из которого осуществляется командой EXIT. Подобное обращение к ко­мандному файлу FK.EYS рассматривалось в предыдущем параграфе.
68 -----
Таблица 2.1. Сводка команд ДОС
Управление командными файлами
ECHO
Отключение «эха», выдача сообщений на экран
PAUSE
Остановка обработки командного файла
REM
Строка с комментарием
GOTO
Переход на метку в командном файле
IF
Проверка условия
FOR
Повторяющееся исполнение со сменными ар­гументами
SHIFT
Сдвиг фактических параметров относительно формальных
COMMAND
Вызов новой копии командного процессора
Формирование операционной среды
DATE
Выдача и установка даты
TIME
Выдача и установка времени
PATH
Задание альтернативных маршрутов для поиска программ
SET
Задание параметров операционной среды
PROMPT
Задание «приглашения» для ввода команд
CTTY
(Пере)установка стандартных устройств ввода и вывода
BREAK
Установка/отключение прерываний по Ctrl + + Break
VERIFY
Установка/отключение верификации при за­писи на диски
ASSIGN*
Установка (связывание) логических имен накопителей
Файловая система
DIR
Выдача каталога файлов
CD
Смена текущего каталога (полное имя — CHDIR)
MD
Создание нового каталога (полное имя — MKDIR)
RD
Удаление каталога (полное имя — RMDIR)
REN
Переименование файлов
TYPE
Вывод файла на стандартное устройство вы­вода (дисплей)
COPY
Копирование файлов
VOL
Выдача метки диска
LABEL (3.0)
Задание метки диска
Продолжение табл. 2.1
Разные команды, в том числе часто используемые утилиты
VER
Выдача номера версии ДОС
CLS
Гашение экрана
MODE*
Установка режимов дисплея, принтера, ком­муникаций
FORMAT*
Форматирование (разметка) диска
CHKDSK*
Выдача общего объема и заполнения диска и ОЗУ
SYS*
Перенос системных файлов ДОС на указан­ный диск
PRINT*
Постановка файла в очередь на печать
TREE*
Выдача иерархической структуры файловой системы
FIND*
Поиск в файлах заданной строки текста
SORT*
Сортировка входных данных
MORE*
Разбиение выходного потока на порции по 24 строки
Другие полезные утилиты
ATTRIB*
Установка/снятие атрибута защиты файлов от записи
FDISK*
Начальнйя подготовка жесткого диска к ра­боте
BACKUP*
Сброс содержимого каталогов на другие но­сители
RESTORE*
Восстановление содержимого каталогов
RECOVER*
Ёосстановление файлов, «потерянных» из-за ошибок
COMP*
Сравнение содержимого файлов с выдачей расхождений
DISKCOMP*
Сравнение дискет по дорожкам с выдачей расхождений
DISKCOPY*
Копирование дискет по дорожкам
EDLIN*
Запуск простого строчного редактора
DEBUG*
Запуск отладчика машинных программ
LINK*
Запуск загрузчика (редактора связей) про­грамм
EXE2BIN*
Преобразование программ типа ЕХЕ в тип СОМ
GRAPHICS*
Подготовка к получению графической копии экрана
SHARE* (3.0)
Установка системы коллективного использо­вания и защиты файлов
GRAFTABL* (3.0)
Загрузка расширения таблицы ASCII-кодов
KEYBXX* (3.0)
Загрузка драйвера национальной клавиатуры
SELECT* (3.0)
Установка национальных версий клавиатуры и даты/времени
Продолжение табл. 2.1
Утилиты, разработанные в ВЦ АН СССР
ASK*
Запрос кода пользователя и возврат его в ДОС
WHERE*
Поиск файлов в иерархических каталогах
VDIR*
Выдача объемов всех подкаталогов
DIRS*
Выдача объема (текущего) каталога по шаб­лону
LFONT*
Загрузка (русского) шрифта в принтер
Команды конфигурации, которые могут включаться в CONFIG.SYS
BREAK
Установка/отключение прерываний по Ctrl + Break
BUFFERS
Установка числа буферов для обменов с ди­сками
FILES
Установка числа одновременно открытых файлов
DEVICE
Подключение к ДОС новых драйверов внеш­них устройств
COUNTRY (3.0)
Настройка национальных форматов даты/вре­мени
FCBS (3.0)
Установка числа управляющих блоков для файлов
LASTDRIVE (3.0) SHELL
Установка числа логических накопителей Задание имени нового командного процессора
Полезные драйверы,
которые могут употребляться в CONFIG.SYS
ANSI
Поддержка работы с Esc-последовательностя-ми
ALFA VDISK
Подключение русского алфавита Подключение виртуального диска
MOUSE
Подключение манипулятора «мышь»
TOSH
Поддержка печати русских букв на принтере Р1350
Конструкция (. .) может отсутствовать. Флажок/С означает, что новая копия командного процессора по окончании своей работы освобождает память, как и любая другая программа.
Флажок /Р означает прямо противоположное — новая копия остается «резидентной» в памяти и удалить ее никак невозможно. Отсутствие параметров соответствует промежуточному режиму — но­вая копия COMMAND.COM вызывается и размещается в памяти, на­следуя при этом всю операционную обстановку «старой» копии, но ее можно убрать, исполнив команду EXIT. Например, вызвав 2-ю копию C0MMAND.COM, можно изменить или дополнить операционную об­становку (командами PATH, SET и др.), поработать в ней, а затем вер­нуться в прежнюю обстановку, дав команду EXIT.
Команды BREAK, ASSIGN, VOL, LABEL. Команда BREAK может фигурировать не только в файле CONFIG.SYS, как было пока­зано ранее, но применяется и в командных файлах или может просто вводиться пользователем с терминала, обеспечивая включение и от­ключение возможности прерывания прикладных программ с помощью комбинации клавиш Ctrl + Break.
Команда ASSIGN x=y позволяет переустанавливать логические имена накопителей, связывая друг с другом пары имен. Например, после команды:
assign a=c
все обращения к накопителю с именем А: ДОС заменяет на обращения к накопителю С:. Пар вида х=у в одной команде может быть не­сколько *). Команда ASSIGN без параметров восстанавливает исход­ные имена накопителей.
Команды VOL и LABEL предназначены для выдачи на дисплей и (пере)установки метки диска соответственно. Обычно метка диска вво­дится при его форматировании, если задан флажок /V. Используя команду LABEL, это можно сделать и позднее (эта команда имеется только в версии ДОС 3.0).
Команда FORMAT. Команда FORMAT осуществляет, как указы­валось ранее, начальную разметку или форматирование дисков. Дан­ная команда применима и к гибким, и к жестким дискам, причем перед применением ее к жесткому диску необходимо приготовить его с по­мощью сервисной программы FDISK (эта операция часто делается на заводе-изготовителе — еще до поставки машины потребителю). При
*) Команду ASSIGN следует применять с осторожностью; ос­новное ее назначение — заставить прикладную программу, работаю­щую с фиксированным накопителем (например, А:), обратиться к дру­гому физическому накопителю. В других целях применять ее не ре­комендуется. (Примеч. ред-)
72
форматирования происходит разрушение всей ранее записанной на. диске или дискете информации!
В обращении к команде FORMAT можно указывать различные пара­метры. Первым параметром является имя накопителя, на котором уста­новлен форматируемый диск. Пример простого обращения:
format a:
При таком обращении сначала выдается сообщение пользователю о необходимости установки на накопитель А: форматируемого диска. После этого он должен нажать клавишу «Исполнение», и программа форматирования начинает работать. Гибкие диски форматируются 30 — 40 секунд, форматирование жесткого диска может занять до 10 минут. По окончании форматирования выдается сообщение, в котором указывается объем диска, объем физически непригодных секторов и количество байтов, предоставляемых для работы.
Другие параметры — указатели режима форматирования задаются через разделитель/.Большинство из них относится к форматированию гибких дисков. Возможны следующие указатели:
/V — указывает на необходимость задания метки диска, которая вводится пользователем по окончании форматирования;
/S — указывает на необходимость переноса на диск операционной
системы (3-х файлов:-----B1O.COM,-----DOS.COM и COMMAND.COM —
см. разд. 3.3);
/В — указывает на необходимость резервирования на диске места для файлов операционной системы, но без их фактического переноса;
/\ — указывает на необходимость одностороннего форматирования (по умолчанию форматируются обе стороны дискеты);
/8 — указывает на необходимость форматирования по 8 секторов на каждой дорожке диска (по умолчанию происходит 9-секторное фор­матирование);
/4 — указывает на необходимость форматирования с высокой плот­ностью.
Двусторонние гибкие диски, сформатированные по 9 секторов на дорожку (track), дают при отсутствии дефектов 360 Кбайт свободной памяти. При форматировании по 8 секторов на дорожку это число уменьшается до 320 Кбайт. Для односторонних гибких дисков эти числа равны соответственно 180 и 160 Кбайтам. При форматировании с высо­кой плотностью можно получить объем гибкого диска до 1,2 Мбайт, но для этого необходим специальный накопитель и дискеты повышенного качества.
Часть отформатированного пространства может быть занята под операционную систему (от 40 до 60 Кбайт, в зависимости от версии ДОС), часть может оказаться *выброшенной» из списка доступного
73
пространства ..из-за дефектов на дисках, обнаруженных при формати­ровании.
Потребность в односторонних дисках или в меньшей плотности записи информации (по 8 секторов на дорожку) возникает в связи с от­сутствием в конкретных моделях машин соответствующих накопителей.
Необходимо помнить, что служебная программа FORMAT, реали­зующая данную команду, индивидуальна для каждой версии ДОС.
Команды SYS, VER, FIND, SORT. Команда SYS позволяет перенести с текущего системного диска на другой диск (указанный в ка­честве аргумента команды) 2 основных системных файла ДОС---------
BIO.COM и------D0S.COM (но не C0MMAND.COM). При этом указанные
файлы становятся «скрытыми» — они не показываются командой DIR, но об их присутствии на диске сообщает команда CHKDSK. Следует иметь в виду, что ДОС может быть перенесена командой SYS не на всякий диск, а только на такой, который был отформатирован когда-то командой FORMAT с флажком /S или ,/В, или на пустой отформатиро­ванный диск. Напомним, что команда форматирования с флажком /S делает ту же операцию, что и SYS, и, кроме того, добавляет на диск тре­тий файл ДОС - C0MMAND.COM.
Перенесенная система совпадает с той, которая в этот момент .установлена на системном диске. Номер текущей версии можно полу­чить, дав команду VER.
Команды FIND и SORT обычно используются как фильтры, кото­рые воспринимают из файлов, из других программ или со стандартного устройства ввода текстовые или числовые данные, выделяют из них определенные подмножества и выдают дальше — на входы других программ, в файлы или на стандартное устройство вывода (в частности, на дисплей). Механизм такой «цепочечной» передачи данных от про­граммы к программе будет подробнее рассматриваться в гл. 4. Здесь мы приведем два простых примера:
find "накопитель" Lesson.О Lesson.I Lesson.7 dir | find " — 84" | sort } prn
В первом-примере команда FIND используется просто для поиска и выдач» строк, в которых имеется слово «накопитель»; поиск произво­дится последовательно в трех указанных файлах — Lesson.О, Lesson. 1, Lesson.7.
Во втором примере срабатывает цепочка из трех команд — DIR, FIND и SORT, которые передают друг другу результаты своей работы. Фильтр FIND выбирает из текста, выданного командой DIR, строки, содержащие фрагмент « — 84», фильтр SORT упорядочивает их по ал­фавиту и направляет результат на устройство вывода с именем PRN,
74
т. е. на принтер. В итоге на принтере печатается отсортированный по алфавиту список файлов данного каталога с датой « — 84». Этот список можно направить в любой файл, указав его имя вместо PRN.
Команды MORE, ATTRIB. Команда MORE также работает как фильтр. Ей на вход нужно дать файл, который она затем порциями по 24 строки выдает на стандартное устройство вывода (в частности, на экран дисплея, или на другое устройство, или в файл). Пример обра­щения к MORE для выдачи порциями на экран длинного текстового файла:
more ( long.txt
Команда ATTRIB, поддерживаемая только в версии ДОС 3.0, обеспечивает установку и снятие защиты по записи на указанные файлы. Из защищенных файлов информация может только читаться. Писать в эти файлы и удалить их невозможно обычными командами, пока не будет изменен их атрибут защиты, задаваемый специальным пара­метром R. Примеры обращений к данной команде:
attrib +r lesson. * — установка защиты, attrib — г lesson. * — снятие защиты.
Служебные программы для работы с дисками. Группа служебных программ BACKUP, RESTORE, RECOVER, COMP, DISKCOMP, DISKCOPY позволяет осуществлять сохранение и последующее вос­становление содержимого каталогов с жестких дисков на гибкие, вос­становление файлов, «потерянных» из-за ошибок на носителях, сравне­ние файлов и копирование дискет. Все эти операции используются от­носительно редко и здесь подробно не рассматриваются.
Вспомогательные подсистемы. Еще одну группу служебных про­грамм представляют относительно большие подсистемы — текстовый редактор EDLIN, отладчик машинных программ DEBUQ, загрузчик объектных программ LINK и преобразователь программ типа ЕХЕ в тип СОМ — EXE2BIN. По каждой из этих подсистем имеются свои руководства.
Команды SHARE и GRAFTABL. Команда SHARE, поддерживае­мая лишь версией ДОС 3.0, служит для загрузки подсистемы, которая обеспечивает коллективное использование файлов, в частности, при работе в локальной сети. На некоторые файлы могут «навешиваться замки», которые можно «открывать» лишь при определенных условиях. Тем самым обеспечивается возможность защиты от несанкционирован­ного доступа к содержимому файлов.
Команда GRAFTABL, поддерживаемая версией ДОС 3.0, специаль­ным образом загружает в ДОС расширение таблицы ASCII-кодов (коды 128 — 255), с тем чтобы они оказались доступны прикладным програм­мам, использующим графические режимы цветного дисплея (см. объяс­нения по поводу текстовых и графических режимов в гл. 4). Без такой загрузки при попытке выводить символы с кодами от 128 до 255 на эк­ран будут выводиться неопределенные изображения. При работе в тек­стовых режимах загрузка указанной части таблицы не требуется, по­тому что изображения указанных символов будут браться из ПЗУ адап­тера графического дисплея. Команду GRAFTABL достаточно применить лишь один раз в течение сеанса, после чего она остается в памяти ре­зидентной (не удаляемой).
Г л а в а 3 Структура и функции ДОС
В данной главе будут более подробно рассмотрены основные ком­поненты ДОС, их взаимодействие и основные функции. Будут приве­дены таблицы прерываний, с помощью которых можно обращаться к ДОС из прикладных программ с целью получения доступа к встроен­ным функциям.
3.1. Основные модули ДОС
Важнейшей отличительной особенностью ДОС, как и других операционных систем, является модульность. Это свойство, во-первых, позволяет изолировать друг от друга отдельные части столь большой и сложной программы, какой является ДОС, облегчая ее разработку, во-вторых, позволяет собрать в каждом модуле определенные логи­чески связанные группы функций. Если возникает необходимость в замене или расширении такой группы функций, то это можно сделать путем замены или модификации лишь одного модуля, а не всей системы.
Итак, ДОС состоит из следующих основных модулей:
— базовая система ввода/вывода (BIOS),
— блок начальной загрузки (Boot Record),
— модуль расширения базовой системы ввода/вывода (___BIO.COM
или IO.SYS),
— модуль обработки прерываний (___DOS. COM или MSDOS.SYS),
— командный процессор (COMMAND.COM),
— утилиты ДОС (F0RMAT.COM, CHKDSK.COM и другие про­граммы).
В скобках приводятся английские названия соответствующих модулей для систем типа MS-DOS/PC-DOS, используемых на различ­ных совместимых компьютерах типа IBM-PC. В начале имен файлов ___BI0.COM и ___D0S.COM обычно употребляются буквы, обознача­ющие «фирменную» принадлежность данной системы.
77
Каждый из указанных модулей выполняет определенную часть функций, возложенных на ДОС. Места постоянного размещения этих модулей различны (рис. 3.1), Так, базовая система ввода/вывода на­ходится не на дисках, как все остальные модули, а в постоянном за­поминающем устройстве (ПЗУ), установленном внутри системного блока. Следовательно, этот модуль является одновременно и частью аппаратуры, и частью ДОС. Все остальные модули находятся на дисках.

Рис. 3.1. Состав дисковой операционной системы
Блок начальной загрузки ДОС, или загрузчик, всегда записан в первом секторе системного диска. Модули расширения базовой си­стемы ввода/вывода и обработки прерываний хранятся в двух спе­циальных файлах на системном диске, места размещения которых зафиксированы и известны загрузчику. Командный процессор — это обычный файл, который может занимать любое место на системном диске. Наконец, утилиты ДОС — это самые обыкновенные программы, которые могут находиться в любых файлах на любых дисках. Доступ к ним обеспечивается стандартным образом через файловую систему ДОС. Подобная неоднородная структура ДОС, на первый взгляд, может показаться громоздкой, эклектичной, но это, наоборот, придает операционной системе гибкость и расширяемость.
Довольно часто, и вполне обоснованно, к ДОС относят только те модули, которые размещаются на системном диске, т. е.:
— блок начальной загрузки,
— модуль расширения базовой системы ввода/вывода, — модуль обработки прерываний,
— командный процессор.
Однако в данной главе мы будем рассматривать все части, по­скольку они сильно взаимосвязаны.
3.2. Базовая система ввода/вывода
В архитектуре ПЭВМ базовая система ввода/вывода (БСВВ) за­нимает особое место. Как указывалось выше, ее можно рассматривать, с одной стороны, как составную часть аппаратных средств; с другой стороны, БСВВ является, по существу, одним из программных моду­лей ДОС. (Здесь уместно заметить, что при разработке ПЭВМ БСВВ является объектом внимания как «аппаратчиков», так и «программи­стов»; но когда машина предъявляется на испытания, ответственность за БСВВ обычно несут разработчики аппаратных средств.)
Что же представляет собой модуль БСВВ? Входящие в него про­граммы и данные обеспечивают выполнение ряда важных функций по поддержке жизнеспособности ПЭВМ.
1, Одна из первых функций БСВВ — автоматическое тестиро­вание основных аппаратных компонентов при включении машины. Процесс тестирования или самотестирования, как его иногда назы­вают, занимает после первого включения машины заметное время — от нескольких секунд до нескольких минут.
Наибольшая часть втого времени тратится на тестирование опера­тивной памяти; чем больше микросхем памяти установлено в машине, тем дольше идет процесс тестирования. Если в процессе тестирования памяти и других -аппаратных компонентов обнаруживаются ошибки, БСВВ выдает на экран соответствующие сообщения (обычно в виде условного кода ошибки) и извещает об этом пользователя звуковым сигналом. Дальнейшая работа машины при этом прекращается, и пользователю нужно принимать меры к устранению выявленной ошибки.
Иногда причиной ошибки может послужить простое нарушение контакта (например, при сильном изгибе кабеля, присоединяющего клавиатуру, или при частичном выходе из гнезда одной из вставляемых внутрь системного блока печатных плат.) Такие ошибки устраняются легко, но некоторые неисправности требуют замены соответствующих узлов.
2. Вторая важная функция БСВВ, вступающая в действие по окончании тестирования, — вызов блока начальной вагрузки ДОС. Поскольку ДОС — большая программа, состоящая из нескольких модулей, загрузка ее в память проходит в две ступени; сначала БСВВ загружает с системного диска в память специальный блок начальной вагрузки, а затем уже передает на него управление, и тот, в свою оче­редь, осуществляет загрузку других модулей ДОС.
79
При такой двухступенчатой организации загрузки с БСВВ сни­мается забота о поиске и настройке различных модулей ДОС. БСВВ может ничего не знать об их структуре и местоположении. Единствен­ное условие нормальной работы БСВВ — это обнаружение на фикси­рованном месте системного диска блока начальной загрузки. Правда, роль системного диска в ПЭВМ может играть гибкий или жесткий магнитный диск. Поэтому БСВВ сначала делает попытку осуществить ч ение с гибкого диска. Если гибкий диск установлен, то именно он итсчитается системным. Если же никакой диск не установлен в НГМД, то БСВВ обращается к жесткому диску, присваивая ему статус систем­ного. Если же ни на гибком, ни на жестком диске БСВВ не находит блока начальной загрузки, то управление передается на встроенный интерпретатор языка бейсик, записанный в ПЗУ.
Увидев сообщение о загрузке бейсика вместо ДОС, пользователь (если он хочет все-таки загрузить ДОС) должен перезапустить машину,, но перед этим нужно вставить в НГМД системный диск, на котором имеется ДОС.
3. Третья важная функция БСВВ — обслуживание системных вызовов, или прерываний. Системные вызовы вырабатываются про­граммными или аппаратными средствами с целью выполнения раз­личных операций, состав которых еще будет рассматриваться подроб­нее в следующих разделах. Для реализации системных вызовов ис­пользуется механизм прерываний. Суть этого механизма заключается в том, что текущая работа машины, в чем бы она ни состояла, может быть приостановлена на короткое время одним из сигналов, который указывает на возникновение ситуации, требующей немедленной об­работки.
Прерывания можно разделить на три группы: аппаратные, логи­ческие и программные.
Источники аппаратных прерываний — падение напряжения пи­тания, нажатие клавиши на клавиатуре, приход очередного импульса от счетчика времени, возникновение специальных сигналов от нако­пителей на гибких или жестких дисках и др.
Логические, или процессорные, прерывания возникают при раз­личных нестандартных ситуациях в работе основного микропроцес­сора — делении на нуль, переполнении регистров, появлении «точки останова» и др.
Программные прерывания — самая обширная категория. Выра­батываются они, когда одна программа хочет получить определенный сервис со стороны другой программы, причем этот сервис обычно свя­зан с работой аппаратных средств.
Механизм прерываний в деталях будет рассмотрен в дальнейшем, сейчас же важно уяснить, что каждое прерывание имеет уникальный номер и с ним может быть связана определенная подпрограмма, при-
80
званная обслуживать возникшую ситуацию. Сама обслуживающая подпрограмма, вообще говоря, тоже может быть приостановлена другим прерыванием; но чаще всего на период работы подпрограммы, обслу­живающей некоторое прерывание, другие прерывания «маскируются», т. е. не обслуживаются немедленно, а становятся в очередь.
Итак, в аппаратных компонентах машины, в самой ДОС и в при­кладных программах могут вырабатываться прерывания, которые нужно обслуживать. На БСВВ возлагается задача обслуживания прерываний нижнего уровня — тех, которые требуют непосредствен-
т
а б л и ц а
3.1. Прерывания, обслуживаемые БСВВ
Деся­тичный
Шест-надца-
Обслуживаемая ситуация
номер
теричный номер
или выполняемая функция
0
0
Деление на ноль
1
1
Перевод микропроцессора в пошаговый режим
2
2
Падение напряжения питания
3
3
Появление точки останова в последовательно-


сти команд
4
4
Переполнение регистров арифметического уст-
П OMPTR Я
5
5
М \Jy\ v t uu
Печать графической копии экрана
6
6
Зарезервировано
7
7
Зарезервировано
8
8
Сигнал от счетчика времени — таймера
9
9
Сигнал от нажатия клавиши на клавиатуре
10
А
Зарезервировано
11
В
Зарезервировано
12
С
Зарезервировано
13
D
Зарезервировано
14
Е
Сигнал об окончании обмена с НМД
15
F
Зарезервировано для обслуживания принтера
16
10
Управление дисплеем
17
11
Запрос списка подсоединенного оборудования
18
12
Запрос размера физической памяти
19
13
Управление НМД
20
14
Управление коммуникационным адаптером
21
15
Управление магнитофоном и другими устрой-


ствами
22
16
Управление клавиатурой
23
17
Управление принтером
24
18
Обращение к встроенному в ПЗУ бейсику
25
19
Перезапуск системы
26
97

IR
Запрос/установка текущего времени и даты
28
1 О


29
ID
Адрес таблицы параметров инициализации


дисплея
30
IE
Адрес таблицы параметров НГМД
31
IF
Адрес таблицы символов с кодами 128 — 255
81
ного управления аппаратными компонентами. Этим прерываниям присвоены номера с 0 по 31 (шеетнадцатеричные номера О — IF). Дру­гие прерывания — с номерами 32 — 63 (шеетнадцатеричные номера 20 — 3F) — относятся к более высокому уровню, и их обслуживание возлагается на другие модули ДОС.
В табл. 3.1 приведен общий перечень прерываний, обслуживае­мых БСВВ. Шеетнадцатеричные номера прерываний приведены для удобства читателей, потому что в реальных программах на языке ассемблера и в технической литературе по ДОС прерывания иденти­фицируются именно шестнадцатеричными кодами. Из анализа табл. 3.1 видно, что обслуживаемые БСВВ прерывания соответствуют базовым операциям по управлению внешними устройствами — дисплеем, кла­виатурой, НГМД, принтером, коммуникационными каналами. При этом подпрограммы, входящие в БСВВ, выполняют операции нижнего уровня. Так, например, обслуживание НГМД включает возможность начальной установки магнитных головок, проверки текущего статуса устройства, прямого чтения и записи заданных секторов диска, вери­фикации прочитанных или записанных данных и, наконец, форматиро­вания (начальной разметки) дисков.
Как будет показано в дальнейшем, функции ДОС верхнего уровня обеспечивают по отношению к НГМД более «интеллектуальные» дей­ствия — такие как создание, чтение, запись, переименование и удале­ние файлов, поиск файлов в каталогах и др. При этом в соответст­вующем модуле ДОС производятся обращения по прерываниям к БСВВ. В то же время при необходимости такие же обращения к БСВВ мо­гут осуществлять и обычные прикладные программы, минуя верхний уровень ДОС.
Некоторые из указанных, в табл. 3.1 прерываний обеспечивают доступ к нескольким взаимосвязанным функциям. Каждая функция идентифицируется своим шестнадцатеричным номером (кодом) и обес­печивает выполнение некоторой частной операции.
Так, например, прерывание 19 (управление НГМД и НМД) от­крывает доступ к 18 функциям с кодами 0 — 17:
0 — начальная установка (сброс диска),
1 — выдача текущего статуса диска,
2 — чтение группы (блока) секторов с одной дорожки,
3 — запись группы секторов на одну дорожку,
4 — верификация после чтения или записи,
5 — форматирование дорожки (запись меток секторов),
8 — выдача текущих параметров накопителя,
9 — инициализация таблицы параметров фиксированного диска, А — «длинное» чтение,
В — «длинная» запись,
С — поиск нужной дорожки,
82
D — начальная установка диска,
10 — проверка готовности диска,
11 — калибровка диска,
14 — диагностика контроллера,
15 — выдача типа накопителя,
16 — изменение статуса диска,
17 — установка типа накопителя.
Точно так же прерывание 16 (управление дисплеем) обеспечивает доступ к 24 функциям, дающим возможность детальной работы с моно­хромными и цветными дисплеями. Для управления клавиатурой через прерывание 22 в БСВВ имеется 10 функций. Управление принтером через прерывание 23 включает 3 сервисных функции., а управление коммуникационным адаптером через прерывание 20 обслуживается четырьмя функциями.
Таким образом, БСВВ является своеобразной программной обо­лочкой вокруг аппаратных средств ПЭВМ, предоставляя возможность другим программам, в том числе самой ДОС, обращаться к аппарат­ным компонентам через механизм прерываний.
В следующей главе будут рассмотрены детали работы отдельных подпрограмм, реализующих обслуживание прерываний, и будет пока­зано, как именно программируется обращение по прерываниям к БСВВ или к ДОС.
3.3. Блок начальной загрузки
Блок начальной загрузки (БНЗ), или просто загрузчик, — это небольшая программа, единственная функция которой заключается в считывании с дисков в оперативную память двух других частей ДОС — модуля расширения базовой системы ввода/вывода и модуля обработки прерываний. Сам БНЗ размещается на системном диске всегда на одном и том же месте — на 0-й стороне, в 1-м секторе дорожки 00. Длина БНЗ — 512 байт, т. е. он занимает всего один сектор на диске, и уже поэтому содержащаяся в нем программа не может быть чрез­мерно сложной.
Работа БНЗ состоит в следующем (рис. 3.2). Он должен просмо­треть каталог системного диска и убедиться, что первые два файла как раз и яйляются модулями ДОС. В ДОС эти файлы имеют специаль­ные имена: — BIO.COM и — DOS.COM. Для упрощения ВНЗ они размещаются на системном диске всегда первыми — один за другим в последовательных секторах. При этом оба файла снабжаются спе­циальным атрибутом, который делает их «невидимыми»: при выводе каталога диска на экран дисплея или на принтер имена указанных системных файлов не выводятся, хотя они и присутствуют в каталоге. Обеспечивается такое размещение при форматировании системных дисков и переносе на них операционной системы с других носителей.
83
Если БНЗ не обнаруживает указанных файлов на первых двух позициях каталога диска, то данный диск считается «несистемным», о чем на экран выдается соответствующее сообщение. Пользователь

Рис. 3.2. Загрузка и инициализация ДОС
в этом случае может вставить в НГМД «правильный» системный диск и, нажав любую клавишу, подтолкнуть БНЗ к повторению поиска ДОС на вновь установленном диске (точка «В» на схеме рис. 3.2). Здесь следует заметить, что машину можно «перезапустить» двумя другими способами. Один из них, очевидный, заключается в выключе-
нии и повторном включении питания всей машины («холодный пере­запуск»). Однако этот «грубый» способ не очень-то полезен для электрон­ных компонентов системного блока, чувствительных к-броскам напря­жения питания. Другой способ перезапуска («теплый») — с помощью специальной комбинации клавиш (Ctrl+Alt+Del на машине IBM PC) или с помощью специальной кнопки перезапуска, если она есть на машине. В этом случае загрузка системы начинается с БСВВ (точка «А» на схеме рис. 3.2); при этом тестирования памяти и другихаппаратных компонентов не производится, а сразу начинается поиск и загрузка в память БНЗ.
Возвращаясь к описанию БНЗ, заметим, что он всегда заносится на диск при его начальной разметке (форматировании) независимо. от того, записываются ли на диск также и «системные» файлы с другими модулями ДОС. Что касается 2-х других упомянутых системных фай­лов, то они появляются на диске лишь при особом режиме форматиро­вания. Занести их на уже заполненный диск (с непустым каталогом файлов) нельзя, так как начальные позиции каталога и начальные сектора диска будут заняты другими файлами. Если же диск разме­чен обычным образом, но еще пуст, т. е. не содержит никаких файлов, то можно поместить на него системные файлы, применив специальную команду ДОС — SYS (см. разд. 2.8).
3.4. Модуль расширения базовой системы ввода/вывода
Базовая система ввода/вывода, находящаяся в постоянном запо­минающем устройстве (БСВВ/ПЗУ), является инвариантной по отно­шению к операционной системе, устанавливаемой на данной машине. В этом смысле БСВВ/ПЗУ является общей и неизменяемой частью всех возможных операционных систем для данной модели ПЭВМ. Изменение БСВВ/ПЗУ — нетривиальная задача, поскольку она очень тесно связана с особенностями аппаратуры конкретной модели ПЭВМ.
Расширение БСВВ с помощью дополнительного модуля ДОС придает гибкость операционной системе, позволяя управлять с ее помощь» таким набором аппаратных средств ПЭВМ, который наиболее точно соответствовал бы замыслу разработчиков операционной системы. Этот модуль относительно легко может модифицироваться разработ­чиками с учетом нужд конкретной версии ДОС.
Использование механизма прерываний позволяет, с одной стороны, очень просто и изящно «перекрывать» в модуле расширения БСВВ функции, обслуживаемые БСВВ/ПЗУ. С другой стороны, появляется возможность включения в БСВВ дополнительных подпрограмм, об­служивающих новые внешние устройства (драйверов). Драйверы раз­рабатываются не только для новых внешних устройств, но и для тех,
85
которые стандартно входят в состав аппаратуры, — в тех случаях, когда обмен информацией с ними должен происходить иначе, чем при­нято в стандартной версии ДОС. Это придает системе большую гиб­кость и возможность адаптации ее под любые требования пользователей. О необходимости подключения новых драйверов внешних устройств, а также об изменении других параметров ДОС уведомляется через файл конфигурации CONFIG.SYS. Этот текстовый файл, если он при­сутствует на системном диске, обрабатывается модулем расширения БСВВ, который осуществляет необходимую подстройку прерываний и других параметров ДОС в соответствии с заданными в CONFIG.SYS командами конфигурирования. Команды конфигурирования (разд. 2.7) могут указывать:
1. Дополнительные драйверы, которые необходимо подключить к ДОС. Примеры таких команд уже рассматривались во 2-й главе. Простой пример:
DEVICE=MOUSE.SYS
Команд такого типа в CONFIG.SYS может быть несколько.
2. Режим, при котором пользователь будет иметь возможность прервать любую работающую программу, дав команду BREAK (на­жав на клавиатуре комбинацию клавиш Ctrl+ Break). В файле CONFIG.SYS установка указанного режима отображается выра­жением:
BREAK=ON
3. Количество файлов, которые могут быть открытыодновременно (по умолчанию это число равно 8). Пример команды конфигурирования, устанавливающей число одновременно открытых файлов:
FILES=12
4. Количество буферов для обмена информацией с дисковыми на­копителями (стандартное число буферов — 2). Пример соответству­ющей команды:
BUFFERS=8
5. Имя файла, который будет играть роль нестандартного команд­ного процессора (вместо стандартного файла COMMAND.COM). При­мер команды, задающей новый командный процессор с именем START, СОМ:
SHELL=START.COM
Таким образом, с помощью команд конфигурирования, заданных в файле CONFIG.SYS, пользователь может задать собственные, не­стандартные возможности, которые вводятся в ДОС на время текущего сеанса (до очередного перезапуска машины).
86
Кроме рассмотренных выше функций, на модуль расширения БСВВ возлагается еще одна задача — завершение загрузки ДОС в оператив­ную память (рис. 3.2). С этой целью модуль расширения сначала пере­дает управление на загруженный к этому моменту в ОЗУ модуль об­работки прерываний ДОС, в котором устанавливаются внутренние рабочие таблицы, инициируются векторы прерываний с номерами 32 — 39 и производится подготовка к загрузке командного процессора, находящегося пока на системном диске. После этого управление воз­вращается в модуль расширения БСВВ, который производит загрузку командного процессора с диска в ОЗУ-и передает ему управление. На этом работа модуля расширения БСВВ при запуске ДОС завер­шается.
3.5. Модуль обработки прерываний ДОС
В отличие от описанного выше модуля расширения БСВВ, име­ющего дело, как и БСВВ/ПЗУ, с прерываниями нижнего уровня, рассматриваемый в этом параграфе модуль обработки прерываний ДОС образует верхний уровень системы, с которыми взаимодействует большинство прикладных программ (почему этот модуль ДОС и назы­вают основным).
КомпонентЗми данного модуля являются подпрограммы, обеспе­чивающие работу файловой системы, устройств ввода/вывода (клавиа­тура, дисплей, принтер, коммуникации), обслуживание некоторых специальных ситуаций, связанных с завершением программ, их искус­ственным прерыванием и обработкой ошибок. Некоторые из этих под­программ довольно велики по объему.
В табл. 3.2 приведен общий перечень прерываний ДОС. При этом следует отметить, что за одним из этих прерываний (десятичный
Таблица 3.2. Прерывания верхнего уровня ДОС
Деся­тичный номер
Шест-надца-теричный номер
Обслуживаемая ситуация или выполняемая функция
32 33 34
35 36
37 38 39
47
20 21 22
23
24
25 26 27
2F
Нормальное завершение программы Обращение к функциям ДОС Адрес подпрограммы обработки завершения за­дачи Адрес подпрограммы реакции на Ctrl + Break Адрес подпрограммы реакции на фатальную ошибку Абсолютное чтение с заданных секторов диска Абсолютная запись на заданные секторы диска Завершение программы, оставляющее ее рези­дентом В PC-DOS 3.0 — управление фоновой печатью
87
Таблица 3.3. Функции ДОС, доступные через прерывание 33
Номер (16)
Выполняемая операция
О 1
2 3 4 5 6 7
9 А В С D Е F
10 11 12 13 14 15 16 17 18 19 1А 1В 1С
ID — 20 21 22 23 24 25 26 27 28 29 2А 2В 2С 2D 2Е 2F 30
Завершение программы (аналогично прерыванию 32)
Ввод символа с клавиатуры с эхом на дисплей
Вывод символа на дисплей
Ввод символа из коммуникационного канала
Вывод символа в коммуникационный канал
Вывод символа на печать
Обмен символами с терминалом (клавиатура + дисплей)
Ввод символа с клавиатуры без эха и без проверки Ctrl +
Break
Ввод символа с клавиатуры без эха с проверкой Ctrl +
Break
Вывод строки символов на экран
Ввод с клавиатуры с буферизацией
Проверка наличия ввода с клавиатуры
Очистка буфера ввода с клавиатуры
Сброс диска, сохранение буферов диска
Установка (назначение) текущего диска
Открытие файла с использованием блока управления
(FCB)
Закрытие файла с использованием FCB
Поиск первого имени файла, удовлетворяющего шаблону
Продолжение поиска имен файлов, начатого функцией 11
Удаление файлов с диска
Последовательное чтение из файла
Последовательная запись в файл
Создание файла и открытие его для чтения/записи
Переименование файлов (с использованием шаблона)
Внутренняя операция ДОС
Определение текущего диска
Установка адреса области передачи данных (DTA)
Получение адреса таблицы размещения файлов (FAT)
Получение FAT для заданного устройства
Внутренние операции ДОС
Чтение с диска с прямым доступом
Запись на диск с прямым доступом
Выдача длины файла
Задание номера записи для прямого доступа
Установка вектора прерывания
Создание программного сегмента s,
Чтение блока (группы записей) с прямым доступом
Запись блока с прямым доступом к диску
Преобразование имени файла во внутренние параметры
Выдача даты
Установка даты
Выдача времени
Установка времени
Установка/отмена верификации эаписи на диск
Выдача адреса области передачи данных (DTA)
Выдача номера версии ДОС
88
Продолжение табл. 3.3
Номер (16)
Выполняемая операция
31
32 33 34 35 36 37 38 39 ЗА ЗВ ЗС 3D ЗЕ 3F 40 41 42 43 44 45 46 47 48 49 4А 4В 4С 4D 4Е 4F
50 — 53 54 55 56 57
Завершение программы, после которого она остается
резидентной в ОЗУ
Внутренняя операция ДОС
Проверка или отмена нажатия Ctrl + Break
Внутренняя операция ДОС
Выдача вектора прерывания (адреса подпрограммы)
Выдача размера свободного пространства на диске
Внутренняя операция ДОС
Выдача форматов даты, времени, чисел, денежных единиц
Создание подкаталога (командой MKDIR)
Удаление подкаталога (командой RMDIR)
Установка имени подкаталога (командой CHDIR)
Создание файла (без использования FCB)
Открытие файла (без использования FCB)
Закрытие файла (без использования FCB)
Чтение из файла или ввод с устройства
Запись в файл или вывод на устройство
Удаление файла из указанного каталога
Установка позиции для последовательного доступа
Установка атрибутов файла
Обращение к внешним устройствам или файлам
Дублирование номера файла
«Склеивание» дублированных номеров файлов
Выдача текущего каталога
Выделение блока памяти из свободного пространства
Освобождение блока памяти
Изменение длины выделенного блока памяти
Загрузка/выполнение программы (подзадачи)
Завершение программы с возвратом управления
Выдача кода завершения программы
Поиск первого файла каталога по шаблону
Продолжение поиска файлов каталога по шаблону
Внутренние операции ДОС
Выдача признака режима верификации
Внутренняя операция ДОС
Переименование файла
Выдача даты и времени модификации файла
номер 33, шестнадцатеричный — 21) скрывается множество функций, или операций ДОС по обслуживанию стандартных устройств и фай­ловой системы. Общий перечень этих функций приведен в табл. 3.3. Деление сервисных функций ДОС на два уровня обусловлено со­ображениями модульности и будущего развития системы. Кроме при­веденных в табл. 3.2 еще значительная часть прерываний верхнего уровня зарезервирована для будущего развития ДОС (общее число прерываний ДОС равно 32). С другой стороны, список функций ДОС,
89
вызываемых-через одно только прерывание 33, уже весьма обширен (многие из этих функций сильно взаимосвязаны, что и послужило причиной их объединения на втором уровне; точно так же обстоит дело с рассмотренными выше прерываниями БСВВ, которые объеди­няют по нескольку функций).
Функции, реализуемые данным модулем ДОС, в первую очередь используются командами ДОС (обрабатываемыми командным процес­сором: DIR, COPY и др.), но с тем же успехом они могут вызываться прикладными программами.
При обращении к функциям ДОС из прикладных программ произ­водится стандартный вызов прерывания 33; при этом в один из реги­стров микропроцессора должен быть занесен шестнадцатеричный номер вызываемой функции. В другие регистры вызывающая программа должна поместить аргументы выполняемой операции, если они нужны, а по окончании обработки из регистров могут быть получены резуль­таты выполненной операции. Точно так же производятся обращения к прерываниям БСВВ.
Следующие функции действуют только в ДОС версии 3.0:
69 Выдача кода ошибки
5А Создание временного файла
5В Создание нового файла
5С Блокирование/разблокирование доступа к файлу
62 Выдача адреса «Префикса, программного сегмента»
Анализируя состав табл. 3.3, можно видеть, что все функции сгруппированы в соответствии с характером предоставляемого ими сервиса. Так, функции с шестнадцатеричными кодами О — С обеспе­чивают посимвольный обмен со стандартными внешними устройствами. Функции D — 24 и 27 — -29 составляют обширную номенклатуру для работы с файловой системой, причем все они опираются на исполь­зование так называемого «блока управления файлами» (FCB — File Control Block) — специальной таблицы с параметрами, сопровожда­ющими каждый файл. В этих операциях используется также выделен­ная область памяти для передачи данных между прикладной програм­мой и функциями ДОС (DTA — Data/Disk Transfer Area).
Начиная с версии 2.0, в ДОС введены новые функции для работы с файлопой системой (частично повторяющие старые). Коды этих функ­ций — ЗС — 46. Они более удобны для работы (в них не используется FCB и можно не задавать адрес DTA) и при этом не противоречат ста­рым, так что возможно их совместное использование. Некоторые из новых функций (40, 44) обеспечивают работу с дисковыми файлами и с внешними устройствами, трактуемыми как файлы. Это дает допол­нительное удобство с точки зрения разработки прикладных программ.
90
Обе указанные группы дополняются функциями работы скатадо гами иерархической файловой системы. Эти функции имеют шестнадца-теричные номера 11 — 12, 39 — ЗВ, 45 — 47, 4Е — 4F, 56 — 57.
Для разработки больших прикладных систем, состоящих из на­боров взаимодействующих программ, большую ценность представляют функции 31 и 48 — 4D, позволяющие выделять и освобождать области памяти, а также загружать в ОЗУ и запускать подчиненные программы (подзадачи). При образовании и аапуске подзадачи ей передаются все файлы, открытые в ведущей («родительской») задаче, а также опи­сание операционной среды, в которой с помощью команд конфигурации могут быть определены различные параметры (см. описание файла CONFIG.SYS).
При запуске любой программы ДОС предоставляет в ее распоря­жение всю имеющуюся свободную память. Следовательно, при запуске подзадач ведущая программа должна сама регулировать объем занятой памяти, выделяя ее в нужные моменты запускаемым подзадачам. Для этого используются вышеупомянутые функции 48 — 4А.
Следует также обратить внимание на три особых прерывания, ука­занных в табл. 3.2 под десятичными номерами 34 — 36. В отличие от всех других прерываний, обслуживаемых ДОС, эти три прерывания могут обслуживаться самой прикладной программойЛВ векторы этих прерываний прикладная программа может занести адреса своих рези­дентных подпрограмм, которые должны адекватным образом (т. е. в соответствии с замыслом разработчика) обрабатывать три особые ситуации.
1. Завершение задачи.
2. Прерывание задачи в результате нажатия пользователем кла­виш Ctrl+ Break.
3. Возникновение «фатальной» (неисправимой) ошибки. Разработчику прикладной системы предоставляется возможность
самому решать, что нужно делать в каждом из этих случаев, если он не хочет воспользоваться стандартным сервисом ДОС.
Довольно часто при разработке прикладных систем встает вопрос, каким уровнем сервиса воспользоваться для решения той или иной частной задачи (например, чтения каталогов, прямого доступа к фай­лам или обмена символами с терминалом). Возможностей для этого, по меньшей мере, три:
1. При разработке прикладной системы на языке высокого уровня, например, паскаль или си, можно воспользоваться стандартными или библиотечными процедурами/функциями для достижения нужного эффекта. Это самый надежный и простой путь, к тому же гарантиру­ющий переносимость программ на другую аппаратную конфигурацию. Встроенные и библиотечные подпрограммы языка высокого уровня не обеспечивают, однако, различных нюансов доступа к аппаратным
Средствам и файловой системе. Поэтому при всем удобстве их исполь­зования часто возникает необходимость в дополнительных возмож­ностях.
2. Использование подпрограмм ДОС, доступных через прерыва­ния 32 — 63, дает в руки разработчика широкий диапазон средств для работы с аппаратурой ПЭВМ и файловой системой. (Кстати говоря, встроенные и библиотечные функции языков высокого уровня в ко­нечном счете тоже транслируются в прерывания ДОС, хотя этого

Рис. 3.3. Виды обращений к ДОС
не видно в исходном тексте программы, с которым имеет дело разра­ботчик.) Большинство современных трансляторов с языков высокого уровня для ПЭВМ обеспечивает возможность прямого обращения к прерываниям ДОС с помощью специальных процедур. Параметры таких процедур обычно указывают номер прерывания и значения основных регистров микропроцессора. При необходимости можно делать то же самое и несколько иначе — путем составления неболь­ших программ на языке ассемблера и последующей совместной загрузки этих программ с программами на языке высокого уровня. Все эти вопросы подробнее обсуждаются в гл.4.
Так или иначе, у разработчика прикладной системы есть воз­можность непосредственно обращаться к прерываниям и функциям ДОС (рис. 3.3). По сравнению с обычным использованием встроенных или библиотечных процедур это требует некоторого умения и повы­шенной аккуратности, но зато дает программисту дополнительные возможности. Особую ценность в этом отношении представляют упо­минавшиеся выше функции для посимвольного обмена с клавиатурой и дисплеем, для распределения памяти, организации подзадач и др.
3. Точно так же, как осуществляются обращения к прерываниям ДСК; верхнего уровня, можно обращаться и к прерываниям нижнего уровня, обслуживаемым БСВВ. С точки зрения программиста, способы обращения к тем и другим прерываниям совершенно идентичны. Однако прерывания БСВВ с кодами 0 — 31 дают большую близость к аппаратуре, избавляют от сервиса, который иногда может оказаться избыточным (например, повторного чтения с диска при неудачном первом чтении и др.)- При выполнении операций через, БСВВ в целом достигается большая эффективность и быстродействие, однако прикладная про­грамма начинает сильно зависеть от конкретной модели ПЭВМ, что может сделать ее несовместимой с другими типами ПЭВМ, даже ис­пользующими ту же операционную систему.
Таким образом, выбор наиболее подходящего уровня и способа общения с аппаратными средствами определяется целями, критериями и сложностью разрабатываемой системы. Первый из вышерассмотрен-ных способов связывает прикладную систему с конкретным языком программирования, второй — с операционной системой, третий — с конкретной архитектурой ПЭВМ.
3.6. Командный процессор
Третий модуль ДОС, располагающийся на системном диске, — это командный процессор. В отличие от рассмотренных выше первых двух модулей, файл с командным процессором (C0MMAND.COM) может занимать на системном диске любое место и трактуется как обычная программа.
Основные функции командного процессора заключаются в сле­дующем:
1. Приём и разбор команд, полученных с клавиатуры или из командного файла.
2. Исполнение встроенных команд ДОС, находящихся внутри файла COMMAND. COM.
3. Загрузка и исполнение внешних программ ДОС и прикладных программ (находящихся в файлах типа СОМ и ЕХЕ). Запуск приклад­ной программы осуществляется так же, как обращение к внешней команде ДОС (утилите), поскольку те и другие реализованы одинаково; командный процессор, в сущности, не отличает их друг от друга.
В функции командного процессора входит также исполнение файла автозапуска (AUTOEXEC.BAT).
Когда в качестве команды ДОС командный процессор встречает имя файла, не совпадающее с именами встроенных команд, произво­дится анализ типа этого файла, указанного в каталоге. Файлы типов СОМ и ЕХЕ считаются загрузочными и обрабатываются соответству­ющим образом, а файл типа ВАТ трактуется как командный.
93
Исполняемые файлы типа СОМ не требуют настройки адресов после их загрузки в ОЗУ, а программы типа ЕХЕ при загрузке с диска в ОЗУ нужно настроить по месту размещения, т. е. задать соответ­ствующие адреса сегментов.
Когда в качестве команды ДОС дается имя командного файла, командный процессор начинает последовательно читать и интерпрети­ровать содержащиеся в нем строки, каждая из которых может содер­жать одну команду, метку или комментарий. Если в очередной строке стоит команда, осуществляющая вызов некоторой программы, то ин­терпретация командного файла приостанавливается и начинается ра­бота вызванной программы. После ее завершения управление возвра­щается командному процессору.
Язык команд ДОС (разд. 2.1, 2.5) служит основным средством общения пользователя с дисковой операционной системой. После вызова какой-либо прикладной программы («задачи») пользователь взаимодействует с ней, а не с ДОС, вплоть до окончания задачи, после чего вновь вступает в действие командный процессор.
Общий вид команды ДОС:
nnn al a2 ... ak /fl ,., /fn
Здесь nnn — имя команды (программы). Это обязательный эле­мент. Аргументы а\ ... ak требуются не во всякой команде, и кроме того, в некоторых командах часть из них может опускаться. То же самое относится к параметрам (флажкам) fl ... fn. Аргументы обычно указывают на те объекты, с которыми имеет дело данная команда: имена накопителей, каталогов, файлов, внешних устройств. Флажки служат для задания различных модификаций и режимов в исполне­нии команды.
Если в конкретной команде ДОС предусмотрено задание неполного списка аргументов и/или флажков, то командный процессор подста­вляет вместо недостающих параметров определенные значения. Эта операция называется подстановкой по умолчанию.
При загрузке в ОЗУ командный процессор распадается на две области: резидентную, которая располагается вслед за двумя выше-рассмотренными модулями ДОС, и нерезидентную, которая распола­гается на старших адресах ОЗУ.
Резидентная часть содержит подпрограммы стандартной обра­ботки прерываний с десятичными номерами 34 — 36 — теми, которые, как указывалось выше, разработчик прикладной системы может пере­определить по-своему. Здесь же находится программа подзагрузки нерезидентной части в ОЗУ. Кроме того, в состав резидентной части входит подпрограмма инициализации, которая обрабатывает файл AUTOEXEC.BAT при запуске машины.
94
Нерезидентная часть включает программу обработки команд ДОС, поступающих с терминала или из командных файлов. В нерезидент­ную часть входит загрузчик внешних программ, задачей которого яв­ляется чтение очередной программы с диска в ОЗУ, настройка адре­сов и переход на ее исполнение, т. е, реализация функции 4В (табл. 3.3).

Рис. 3.4. Карта распределения оперативной памяти
Поскольку нерезидентная часть командного процессора рас­полагается на старших адресах ОЗУ, любая прикладная программа, загружаемая на младшие адреса, может частично или полностью за­нять и «затереть» эту область памяти. По окончании такой программы управление всегда возвращается в резидентную часть командного процессора, который в этом случае пытается восстановить затертую нерезидентную часть, загружая ее с системного диска. Именно поэтому
на машинах без жесткого диска после окончания работы некоторых прикладных программ на экран выдается сообщение «Установите си­стемный диск в драйвер А: ,..». Это значит, что прикладная программа затерла нерезидентную часть командного процессора, а резидентная часть, установив этот факт, делает попытку восстановить ее с гибкого диска. На машинах, в которых роль системного играет жесткий диск, такая ситуация разрешается незаметно для пользователя, поскольку командный процессор всегда есть на жестком диске — от пользователя не требуется никаких действий для его загрузки.
Подпрограмма инициализации располагается в конце резидент­ной части командного процессора. Поскольку она срабатывает лишь один раз при запуске машины, занимаемая ею память может быть использована прикладными программами; поэтому первая же приклад-ная программа размещается в ОЗУ на месте этой подпрограммы, что позволяет экономно использовать оперативную память.
Таким образом, после загрузки и инициализации командного процессора карта распределения оперативной памяти приобретает вид, представленный на рис. 3.4. В целом память разделяется на три боль­шие области:
1) область ДОС — от младших адресов, объемом около 60 Кбайт;
2) область пользователя (для прикладных программ), макси­мальным объемом около 580 Кбайт;
3) системная область — на старших адресах ОЗУ, объемом 384 Кбайта.
3,7, Утилиты ДОС
Утилитами обычно называют «внешние» команды (программы), входящие в стандартный комплект ДОС в виде отдельных загрузочных файлов и выполняющие сервисные функции.
В ДОС входит более десятка утилит, предназначенных для разных целей. При практической работе наиболее часто используются лишь некоторые из них (см. гл. 2) — FORMAT.COM, CHKDSK.COM, MODE.COM. Реже используются другие программы — FDISK.COM, BACKUP.COM, REC0VER.COM, REST0RE.COM, PRINT.COM, GRA-PHICS.COM, TREE.COM и пр.
К утилитам ДОС относят иногда простой текстовый редактор EDLIN.COM и интерпретатор языка бейсик — BASIC.COM или BASICA.COM, однако правильнее относить их к категории системных или прикладных программ. С другой стороны, любые новые приклад­ные программы, ориентированные на реализацию тех или иных сер­висных функций, можно также считать утилитами ДОС.
Достоинством ДОС и других операционных систем этого типа яв­ляется то, что любая программа может играть роль сервисной наравне
96
со стандартными утилитами, поскольку ее запуск ни с точки зрения пользователя, ни с точки зрения системы не отличается от вызова утилит ДОС.
Указанное свойство делает ДОС открытой для расширения. Не­изменное ядро системы составляет лишь БСВВ/ПЗУ и 3 основных модуля: расширения БСВВ, обработки прерываний и командный про­цессор. Общий объем оперативной памяти, занимаемой этими модулями, составляет от 40 до 60 Кбайт, в зависимости от конкретной версии системы. Это, в общем, небольшой объем сравнительно с максималь­ным размером ОЗУ, доступным для ОС и прикладных программ (640 Кбайт — см. рис. 3.4).
Один из перспективных современных подходов в разработке про­граммного обеспечения ПЭВМ состоит в создании особой надстройки над стандартной операционной системой. Функция такой надстройки заключается в изоляции стандартной ДОС от пользователя и предо­ставлении ему вместо командного языка особой операционной среды, включающей удобные средства общения с конкретными прикладными системами. Ниже будут рассмотрены основные принципы реализации системы такого типа и построения на этой основе автоматизированных рабочих мест разного назначения.
4 в. М, брябрвв
Глава 4
Искусство управления персональным компьютером
В данной главе будут рассмотрены основные возможности по управлению внешними устройствами ПЭВМ. При этом затрагиваются некоторые детали внутренней организации системы, для чего, вообще говоря, необходимы определенные профессиональные знания и вла­дение основными приемами работы на ПЭВМ. Обсуждаемые возмож­ности совсем не обязательно знать каждому пользователю, однако они необходимы тем, кто занимается созданием прикладных систем для себя или для других. В последних параграфах дается краткий обзор инструментальных языков программирования, применяемых на пер­сональных компьютерах, а также рассматриваются общие методы организации взаимодействия программ при построении прикладных систем.
4.1. Управление дисплеем
В 16-разрядных профессиональных ПЭВМ дисплей может рабо­тать в нескольких режимах, каждому из которых соответствует свой формат изображения. В табл. 4.1 представлены характеристики режи­мов, поддерживаемые ДОС.
Рассмотрим основные группы режимов:
А. Режимы 0 и 1 соответствуют текстовому формату, при котором на экран могут выводиться только тексты по 40 знаков в строке. Число строк на экране — 25. Будем говорить, что в этом случае мы имеем дело с «узким» экраном, хотя изображения символов на нем, наоборот, — широкие.
Хотя формально в табл. 4.1 указано, что в режиме 0 цвет не ис­пользуется, фактически это имеет место лишь при подключении к ПЭВМ монитора с совмещенным управлением цветовыми лучами ЭЛТ (с так называемым «композитным видеосигналом»), как, на­пример, у обычного телевизора.
98
При использовании монитора с раздельным управлением цве­товыми лучами (с «RGB-видеосигналом»), — а именно такие мониторы используются в ПЭВМ чаще всего, — цвет фактически не подавляется, . так что в этом случае режимы 0 и 1 не различаются.
Количество используемых цветов — 16; они составляются из 2-х групп по 8 цветов в каждой. Наборы цветов в группах одинаковые, однако цвета второй группы отличаются увеличенной яркостью (ин­тенсивностью цветовых лучей). Зрительно это иногда проявляется как изменение цвета (коричневый — желтый). Один из 16 цветов всегда выбирается как цвет фона, поэтому число возможных цветов для сим­волов фактически равно 15. Все эти рассуждения, разумеется, приме­нимы лишь в том случае, если монитор обеспечивает вывод всей цвето­вой гаммы.
Б. Режимы 2 и 3 соответствуют текстовому формату, при кото­ром на экран могут выводиться только тексты по 80 знаков в строке. Строк также может быть 25. Будем говорить, что в этом случае мы имеем дело с «широким» экраном. Различие между режимами 2 и 3 прояв­ляется, как и в случае А, только при использовании совмещенного видеосигнала; в противном случае эти режимы одинаковы. Количество цветов и их организация — такие же, как в случае А.
В. Режимы 4 и 5 поддерживают так называемый «графический» формат изображения с разрешающей способностью 320 точек по го­ризонтали и 200 точек по вертикали.
Каждая точка может быть одного из 4-х цветов в каждой из двух возможных цветовых палитр, имеющих внутренние коды 0 и 1, Пали­тры не могут смешиваться; при изменении палитры меняются все

Та
блица 4.1. Режимы дисплея

Код режима
Монитор: цветной или моно­хромный
Режим: текстовый или графический
Формат: (число знаков X число строк) или (число точек по горизонтали X X число точек по вертикали)
Исполь­зование цвета в совме­щенном видео­сигнале
0
1
2 3
4 5
6
7
Цветной Цветной
Цветной Цветной
Цветной Цветной
Цветной Монохр.
Текстовый Текстовый
Текстовый Текстовый
Графический Графический
Графический Текстовый
40зн.Х 25стр. 40зн.Х 25стр.
80зн.х 25стр. 80зн.Х 25стр.
320X200 точ. 320x200 точ.
640х200точ. 80зн.х 25стр.
Нет Да
Нет Да
Да Нет
Нет Нет
99
цвета на экране. Поскольку один цвет всегда выбирается как цвет фона, для изображения линий и знаков остается в каждой палитре лишь 3 цвета. В палитре 0 эти цвета — зеленый, красный, коричневый; в палитре 1 — голубой, сиреневый, белый (реальные оттенки цветов сильно зависят от типа монитора). Если изменение яркости цветовых лучей трактовать как палитры, то к двум основным можно добавить еще два набора палитр.
Графический формат не означает, что на экран нельзя выводить тексты.-Их можно выводить обычными операторами вывода; при атом в режимах 4 и б число строк равно 25 и число знаков в строке — 40, т. е. совпадает с режимом «узкого» экрана в случае (А). Однако графи­ческий режим позволяет создавать собственные, «рисованные» буквы и цифры, которые могут быть меньшего размера и, следовательно, более плотно выводиться на экран; при этом требуется разработка соответственных процедур.
Важным отличием графического формата от текстового при ра­боте с текстами является отсутствие курсора. В связи с этим приклад­ные системы, использующие графический формат, поддерживают «собственные» курсоры, которые могут иметь любое изображение; однако для вывода такого курсора на экран, как и при выводе рисо­ванных символов, нужны специальные операторы.
Г. Режим 6 также поддерживает графический формат изображе­ния, но с более высокой разрешающей способностью — 640 точек по горизонтали и 200 точек по вертикали. Увеличение разрешающей способности лишает возможности работы с цветными изображениями. Цветов остается только 2 — для фона и линий/знаков. Зато при стан­дартном выводе текстов в этом режиме число знаков в строке увеличи­вается до 80, что соответствует «широкому» экрану. Курсор, как и в слу­чае В, отсутствует, поэтому его нужно создавать искусственным об­разом.
Д. Режим 7 отличается от всех остальных, поскольку ориенти­рован на поддержку монохромного (черно-белого) монитора. Формат в данном случае — текстовый с 80 знаками в строке. Число строк — 25.
Управление режимом дисплея из прикладных программ. Управле­ние рассмотренными выше режимами дисплея на самом нижнем уровне обеспечивается базовой системой ввода/вывода через прерывание 16. Со стороны прикладных программ доступ к некоторым из этих режи­мов осуществляется через соответствующие стандартные функции языков программирования,
Так, в языке бейсик для этого используются операторы SCREEN и WIDTH. Оператор SCREEN может иметь в качестве первого пара­метра число 0, 1 или 2. При использовании цветного графического дисплея эти числа соответствуют режимам групп А/Б (0), В (1), Г (2). Оператор WIDTH, в свою очередь, меняет «ширину» экрана, обеспе-
100
чивая переключение между группами А и Б или В и Г( на это указы­вает аргумент WIDTH — число 40 или 80. Таким образом, оператор WIDTH является «вторачным» по отношению к оператору SCREEN. Соответствие этих операторов и рассмотренных выше групп режимов иллюстрируется табл. 4.2.
Таблица 4.2. Операторы языка бейсик для управления режимом дисплея
Алфавитно-цифровые режимы:
SCREEN 0 и WIDTH 40-> режимы группы (А)
SCREEN 0 и WIDTH 80-> режимы группы (Б)
Графические режимы:
SCREEN 1 или WIDTH 40-> режимы группы (В)
SCREEN 2 или WIDTH 80-> режимы группы (Г)
В популярной версии языка паскаль — TurboPascal-З.О — также имеются специальные встроенные процедуры для установки режимов Дисплея:
TextMode (BW40) — режим 0 группы А,
TextMode (C40) — режим 1 группы А,
TextMode (BW80) — режим 2 группы Б,
TextMode (C80) — режим 3 группы Б,
GraphColorMode — режим 4 группы В,
GraphMode — режим 5 группы В,
HIRes — режим 6 группы Г.
Как указывалось, при использовании RGB-монитора процедуры одной группы действуют одинаково, т. е. безразлично, например, применяется ли процедура GraphColorMode или GraphMode. В языке TurboPascal-З.О имеется также процедура выбора палитры — Palette(N), где N — номер палитры, принимающий значения 0 .. 3. Палитры с но­мерами 2 и 3 являются модификациями палитр с номерами 0 и 1 за счет большей яркости цветов.
В других языках программировании может не быть стандартных процедур такого типа, как в языках бейсик и TurboPascal-З.О, но обычно имеются средства обращения к прерываниям ДОС. Через прерыва­ние 16 можно получить доступ не только к управлению основными режимами дисплея, но и к набору других полезных функций для упра- . вления экраном и вывода на него текстовых и графических изобра­жений. К ним, в частности, относятся:
— установка размера курсора для текстового режима,
— чтение текущих координат курсора на экране,
— «прокрутка» дисплейного окна вверх или вниз,
— установка оттенков цветов (цветовой палитры),
— вывод на экран одиночной (цветной) точки,
— «чтение» цвета одиночной точки в графическом режиме и др. К внутренним функциям ДОС можно обращаться, конечно, и из
ассемблерных программ, а к этим программам обращаться, в свою очередь, из программ на языках высокого уровня; однако это уже становится задачей системного программирования, которую может решать далеко не каждый пользователь.
Человеку, который имеет дело с ПЭВМ лишь на уровне общения с ДОС и с некоторыми прикладными программами, для управления дисплеем проще всего воспользоваться специальной утилитой MODE, поставляемой в составе ДОС. Другой вариант управления дисплеем на уровне ДОС — использование управляющих Esc-последовательно-стей, обрабатываемых драйвером ANSI.SYS.
Управление экраном с помощью команды MODE. На уровне команд ДОС некоторые режимы дисплея можно устанавливать с помощью системной утилиты MODE. Эта системная программа, поставляемая вместе со стандартным комплектом ДОС, имеет объем около 5 Кбайт. Разместив ее в общедоступном каталоге (например, в \ЕХЕ), пользо­ватель получает возможность обращаться к ней как к обычной команде ДОС с целью установки режимов дисплея, а также принтера и ком­муникационных каналов. Рассмотрим действие MODE по отношению к дисплею.
В табл. 4.3 представлены варианты аргументов MODE, с помощью которых устанавливаются текстовые режимы работы дисплея.
Таблица 4.3. Действие команды MODE
Вид команды
Устанавливаемый режим дисплея
MODE 40 MODE 80 MODE BW40 MODE CO40 MODE BW80 MODE CO80 MODE MONO
Число знаков в строке — 40 («узкий» экран) Число знаков в строке — 80 («широкий» экран) Режим 0 (40 знаков в строке, цвет подавляется) Режим 1 (40 знаков в строке, цвет разрешен) Режим 2 (80 знаков в строке, цвет подавляется) Режим 3 (80 знаков в строке, цвет разрешен) Режим 7 (работа с монохршным дисплеем)
Первые две разновидности команды MODE должны осуществлять лишь переключение между «узким» и «широким» экраном, т. е. дей­ствуют подобно команде WIDTH в языке бейсик.
Четыре следующих разновидности формально производят пере­ключение между режимами групп (А) и (Б), аналогично рассмотрен­ной выше процедуре TextMode в языке TurboPascal-З.О, Однако при
102
использовании RGB-монитора, как указывалось, подавления цвета не происходит, поэтому команда MODE действует совершенно оди­наково с аргументами СО40 и BW40. Точно так же для RGB-монитора нет разницы между аргументами СО80 и BW80.
Последняя разновидность команды MODE соответствует режиму 7, т. е. предназначена для работы с монохромным дисплеем.
Из приведенных рассуждений видно, что команда MODE хотя и предоставляет пользователям некоторые возможности, но не дает полного контроля над дисплеем. В частности, эта команда управляет только текстовыми режимами, а переход в соответствующие графиче­ские режимы может осуществляться лишь изнутри прикладной про­граммы. Кроме того, нужно иметь возможность выбирать позицию для курсора на экране, устанавливать цвета фона и знаков, «гасить» экран и др. Все эти возможности становятся доступными пользователю, если применить другой метод управления экраном — через драйвер ANSI.SYS.
С помощью команды MODE можно также осуществлять горизон­тальный сдвиг изображения относительно светящегося дисплейного поля. Для этого команде MODE дается второй параметр — буква R — для сдвига изображения вправо, буква L — для сдвига влево. Необ­ходимость в этой операции возникает крайне редко.
Управление экраном через драйвер ANSI.SYS. Драйвер ANSI.SYS — это специальная программа, подключаемая к ДОС через файл конфигурации. Эта программа объемом менее 2 Кбайт предназна­чена для реализации двух важных функций:
а) обеспечивать управление дисплеем;
б) обеспечивать переопределение символов, вводимых с кла­виатуры.
Реализация обеих указанных функций осуществляется с помощью одного и того же приема — в драйвер посылаются особые управля­ющие последовательности символов (так называемые «Esc-последова-тельности» или «Esc-команды»), которые и заставляют его осуществлять те или иные операции. Рассмотрим подробнее первую функцию — управление дисплеем.
Общий вид Esc-команды следующий:
(заголовок) (параметры) (код команды)
где
(заголовок): := (символ Esc) (символ!)
(параметры) : := (параметр) [; ...; (параметр) | (пусто)]
(код команды) : := (буква английского алфавита)
Заголовком Esc-команды являются два специальных символа; один из них — Esc (специальный символ с внутренним кодом 27),
второй — квадратная скобка. Эти символы специально выбраны в столь необычной комбинации, чтобы Esc-последовательности не могли быть спутаны с другими цепочками символов. Драйвер ANSI.SYS, после того как он оказывается подключенным к операционной системе (через файл конфигурации CONFIG.SYS), начинает перехватывать все сооб­щения, посылаемые на стандартное устройство вывода. Обычно (если не происходило переустановки с помощью команды CTTY) роль стан­дартного устройства вывода играет экран дисплея. Распознав по за­головку Esc-команду, драйвер ANSI.SYS расшифровывает ее и выпол­няет то или иное действие, например, меняет режим дисплея, выдает на экран какое-либо сообщение или меняет позицию курсора.
Параметрами Esc-команд являются либо десятичные коды сим­волов в стандарте ASCII, либа строки, ограниченные двойными кавыч­ками. В некоторых командах перед первым числовым параметром может стоять знак равенства. Параметров может быть несколько, и в таком случае они разделяются знаком «очка с запятой».
Код команды обозначается одной буквой английского алфавита и является указанием для драйвера, какую именно операцию нужно выполнить. Важно иметь в виду, что одноименные малые и большие буквы обозначают разные коды команд.
В рассматриваемых далее примерах употребляется трехбуквенное обозначение символа Esc, однако фактически в Esc-командах должен фигурировать один символ с внутренним кодом 27. Ввести его с кла­виатуры можно разными способами; например, при работе в текстовых редакторах АБВ или Лексикон, разработанных в ВЦ АН СССР, для ввода символа Esc нужно одновременно нажать клавиши Ctrl и l, На экране этот символ изображается специальным знаком.
Наиболее часто используются Esc-команды управления экраном, иллюстрируемые следующими примерами:
Esc |=3h — установка режима экрана с кодом 3 (80 зн./стр.), Esc [6; 1Н — установка курсора в 6-ю строку на 1-ю позицию, Esc [31m — установка красного цвета букв, Esc[2J — гашение экрана, Esc [s — сохранение текущей позиции курсора, Esc [u — восстановление сохраненной позиции курсора, Esc [k — стирание символов от текущей позиции до конца строки. Реже употребляются команды относительного перемещения кур­сора. Примеры таких команд:
Esc |1 А — сдвиг курсора вверх на 1 строку, не меняя позицию, Esc [5B — сдвиг курсора вниз на 5 строк, не меняя позицию, Esc[15C — сдвиг курсора вправо на 15 позиций, Esc[12D — сдвиг курсора влево на 12 позиций. Имеется также возможность управлять режимом ввода длинных строк, концы которых выходят за правый край экрана;
104
Esc [?7h — перенос конца длинной строки на следующую строчку экрана,
Esc[?71 — отбрасывание конца строки, выходящего за пределы экрана (здесь код команды — малая английская буква «эль»).
При использовании монохромного дисплея можно управлять атрибутами выводимых на экран знаков, выделяя их с помощью уси­ления яркости, подчеркивания, мигания, задания инвертированного («негативного») изображения. В цветном дисплее можно также уста­навливать повышенную яркость знаков, инвертировать их цвет, выво­дить в мигающем режиме. Для управления атрибутами символов применяются Esc-последовательности вида!
Esc[Xm
Esc[X; Ym (*)
EsclX; Y; Zm
Здесь вместо символов X, Y, Z ставятся коды управления атрибу­тами. В табл. 4.4 приведена сводка кодов, управляющих цветами знаков, цветом фона и атрибутами выделения символов. Указанные
Та
бл
и ц а 4.4. Коды управления атрибутами символов
Управление цветом символов
Управление цветом фона
Код
Цвет символов
Код
Цвет фоиа
30

Черный
40
Черный
31

Красный
41
Красный
32

Зеленый
42
Зеленый
33

Коричневый
43
Коричневый
34

Синий
44
Синий
35

Сиреневый
46
Сиреневый
36

Голубой
46
Голубой
37

Белый
47
Белый
Управление атрибутами выделения символов
Управ-

Для цветного
ляющий
Эффект выделения
или монохромного
код

д сплея
0
Отмена всех атрибутов
Цв. и МОНОхр.
1
Выделение яркостью
Цв, имонохр.
4
Подчеркивание
Только монохр.
5
Мигание
Цв. и монохр.
7
Инвертирование
Цв. и монохр.
8
Символы становятся «невидимыми»
Только монохр.
105
управляющие коды могут подставляться в любой комбинации в после­довательности вида (*).
К числу особых функций драйвера ANSI.SYS, которые могут применяться в системных программах, относится команда Esc[6n. Эта команда считывает с экрана координаты текущего положения курсора: Y — номер строки, X — номер позиции в строке. Затем формируется специальная символьная последовательность вида: CHR(27)[Y; XR. Эта последовательность посылается на стандартное устройство ввода, откуда прикладные программы обычно читают вход­ные данные. Значения X и Y в указанной последовательности предста­влены двухразрядными целыми числами. Проиллюстрируем, каким образом можно получить целочисленные значения X и Y в прикладной программе на паскале. Для этого можно применить, например, сле­дующую последовательность операторов:
WRITE (CHR(27), '[6n'); READ (S);
VAL (COPY (S, 3, 2), Y, R); VAL (COPY (S, 6, 2), X, R);
Первый из sthx операторов посылает на экран вышеуказанную Esc-последовательность, второй читает со стандартного входа полученный ответ в виде текстовой строки. Последние два оператора выделяют из полученной строки S по два символа, представляющих соответственно значения Y и X, и переводят их в целочисленные представления.
Использование драйвера ANSI.SYS не покрывает всех возмож­ностей управления экраном, которые скрыты во внутренних функ­циях ДОС, однако все же дает пользователю достаточно мощный ин­струмент для создания различных зрительных эффектов, часто приме­няющихся при формировании операционной обстановки.
Драйвер ANSI.SYS имеет и другой недостаток — вывод символов на экран происходит гораздо медленнее, чем при прямом использо­вании функций ДОС через прерывание 16. Тем не менее использова­ние ANSI.SYS удобно, так как с его помощью пользователь сам может достаточно просто выполнять основные управляющие воздействия при работе с экраном.
В заключение следует отметить, что во многих современных язы­ках программирования для ПЭВМ — бейсик, паскаль и др. — имеются встроенные или поставляемые в виде текстовых модулей процедуры и функции, обеспечивающие удобную работу с экраном. Например, в популярной системе программирования TurboPascal-З.О имеются следующие группы функций и процедур:
— управление режимами экрана,
— удаление/вставка экранных строк в текстовом режиме,
— установка/перемещение курсора в текстовом режиме,
106
— работа с текстовыми и графическими окнами,
— вывод на экран (цветных) точек и рисование линий,
— выделение и вторичное наложение изображений,
— рисование окружностей, дуг, закраска областей. Имеется также отдельный пакет с процедурами и функциями так назы­ваемой «черепашьей» графики, на основе которой строятся учебные при­кладные программы с использованием различных графических эф­фектов.
Многие модели ПЭВМ, использующие ДОС в качестве основной операционной системы-, могут иметь несколько иную организацию и режимы дисплея, по сравнению с машинами типа IBM PC, EC1840/1841 и им подобными. В частности, могут встречаться следующие особен­ности;
— монохромный дисплей может использоваться не только в тек­стовом, но и в графическом режиме; при этом почти все вышеприве­денные рассуждения остаются правильными, но только вместо настоя­щих цветов используются оттенки черного и белого цвета, инверсия, мерцание и другие способы выделения символов;
— разрешающая способность дисплея в цветном режиме может быть в несколько раз больше — 640Х 350 или даже 640Х 400 точек при 16 или 256 доступных цветах (это имеет место, например, в ма­шинах класса IBM PC-XT с «усовершенствованным» или «профессио­нальным» графическим адаптером и монитором);
— может иметься аппаратная поддержка для одновременного и независимого вывода на экран графических и текстовых изображений, что дает гораздо больше возможностей для организации интерфейса с пользователем.
Хотя указанные особенности могут потребовать других соглаше­ний по управлению дисплеем, тем не менее рассмотренные выше общие принципы остаются в силе и переход на ПЭВМ с другими характери­стиками дисплеев не представит больших затруднений.
4.2. Управление вводом с клавиатуры
Клавиатура — это главное средство ввода в ПЭВМ информации от пользователя, поэтому естественно, что обеспечение гибкости в обра­ботке сигналов с клавиатуры крайне важно для создания эффективных информационных систем на персональных компьютерах. Стандартная клавиатура ПЭВМ имеет несколько групп клавиш. На рис. 4.1 схе­матически показано размещение основных групп клавиш на маши­нах типа IBM PC. Для простоты здесь не показаны символы со зна­ками препинания и знаками арифметических операций, которые раз­мещаются на тех же клавишах, что и цифры. На отечественных маши­нах типа ЕС1840/1841, Искра-1130 и других общая схема размещения
107

Рис. 4.1. Схема размещения клавиш на клавиатуре IBM PC

Рис. 4,2, Схема размещения клавиш на клавиатуре для советских ПЭВМ
клавиш принята примерно такой же, как и на машинах типа IBM PC; при этом буквы русского алфавита наносятся на клавиши вместе с бук-вамп латинского алфавита. Их расположение иллюстрирует рис. 4.2, однако следует иметь в виду, что русские названия управляющих клавиш на рис. 4.2 условны — реально они могут быть представлены условными значками или другими сокращенными названиями. Основные группы клавиш:
A) алфавитно-цифровые и знаковые клавиши (с символами А ...2, А .. Я, 0 .. 9, знаками пунктуации, знаками арифметических опе­раций), а также специальные клавиши Esc, Tab, Enter, BackSp;
Б) функциональные клавиши (F1 .. F10);
B) служебные клавиши для управления перемещением курсора (стрелки Up, Down, Left, Right, Home, End, PgDn, PgUp и клавиша, обозначенная значком []);
Г) служебные клавиши для управления редактированием (Ins, Del);
Д) служебные клавиши для смены регистров и модификации кодов других клавиш (Alt, Ctrl, Shift);
Е) служебные клавиши для фиксации регистров (CapsLock, Scroll-Lock, NumLock);
Ж) разные вспомогательные клавиши (PrtSc, дополнительные клавиши со знаками + и — и др.).
На персональных компьютерах применена новая, по сравнению с обычными терминалами больших ЭВМ, методика обработки сигналов клавиатуры. Можно выделить три уровня представления и обработки сигналов, поступающих с клавиатуры — физический, логический и функциональный.
Физический уровень имеет дело с сигналами, которые поступают в системный блок при нажатии и отпускании клавиш, В основе коди­рования поступающих от клавиатуры сигналов лежит обычная нуме­рация клавиш по порядку от 1 до N, где N — общее число клавиш на клавиатуре (в машинах типа IBM PC N=83). При нажатии любой клавиши в системный блок посылается код, соответствующий ее по­рядковому номеру, который называют еще скэн-кодом клавиши (от англ. scan-code). При отпускании клавиши также генерируется ее номер, увеличенный на 128 (дополнительный скэн-код).
Если клавиша оказывается нажата дольше, чем 0,5 с, то авто­матически начинает генерироваться последовательность ее основных скэн-кодов с частотой 10 раз в секунду, что имитирует серию очень быстрых нажатий этой клавиши.
На логическом уровне, реализуемом базовой системой ввода/вы­вода ДОС через прерывание 9, происходит трансляция поступающего с клавиатуры скэн-кода в специальный 2-байтовый код. Младший из двух байтов для клавиш группы А) содержит ASCII-код, соответству-
109
ющий изображенному на клавише знаку. Этот байт называют главным. Старший байт — вспомогательный — содержит исходный скэн-код на­жатой клавиши.
Генерируемый код определяется, вообще, тем, к какой группе относится нажатая клавиша, и тем, нажата ли одна клавиша или не­которая их комбинация. Так, например, при нажатии одиночной клавиши, относящейся к функциональным или служебным клави­шам групп Б), В), Г), или при одновременном нажатии некоторых клавиш главный байт содержит не ASCII-код, а 0. Это позволяет про­верить важный факт, свидетельствующий о том, что нажатая в дан­ный момент клавиша не относится к алфавитно-цифровой группе А). Вспомогательный байт при этом содержит уникальный номер, совпа­дающий со скэн-кодом нажатой клавиши, или же он соответствует определенной комбинации одновременно нажатых клавиш.
Сочетание главного и вспомогательного кода, когда первый из них равен 0, называют расширенным XSCW-кодом.
На функциональном уровне отдельным клавишам программным путем сопоставляются определенные функции, которые реализуются при нажатии этих клавиш. Клавишам могут приписываться последо­вательности символов или команды смены режимов, смены дисплейных окон и др. Такое «программирование» клавиш, в частности, может осуществляться с помощью драйвера ANSI.SYS, о чем еще будет идти речь ниже.
Имеется ряд коммерческих программ, которые обеспечивают программное переопределение клавиш прямо по ходу рабочего сеанса. Многие прикладные системы — текстовые редакторы, интегрирован­ные пакеты, графические системы — сами переопределяют клавиши для своих целей, причем делают это многократно, в зависимости от режимов работы. Транслятор языка бейсик, например, поддерживает операторы, позволяющие сопоставлять клавишам различные действия или текстовые строки.
Особенности кодирования основных групп клавиш. Клавиши группы А) генерируют простые ASCII-коды, обычно соответствующие начертанным на клавишах знакам. Однако эти коды могут модифи­цироваться в зависимости от того:
а) не нажата ли в это же время одна из клавиш модификации регистра — из группы Д),
б) не был ли зафиксирован до этого другой регистр, т. е. не была ли ранее нажата клавиша из группы Е).
Простая модификация приводит к тому, что вместо одного простого ASCII-кода генерируется другой — симметричный ему (например, вместо кода большой буквы А=65 выдается код малой буквы а=97). Такие симметричные ASCII-коды для одноименных букв обычно от­личаются на одну и ту же величину (32),
ПО
Другой вид модификации приводит к генерации расширенного ASCII-кода, состоящего реально из двух кодов. Способ представле­ния и интерпретации расширенных ASCII-кодов будет подробнее рассмотрен ниже.
Клавиши групп Б), В) и Г) называют специальными. При их, нажатии генерируются не простые, а расширенные ASCII-коды. Если вдобавок в момент нажатия такой клавиши одновременно оказывается нажатой еще и клавиша группы Д) — Alt, Ctrl или Shift, то при этом также генерируются расширенные ASCII-коды, но отличные от кодов одиночных клавиш. Таким образом, набор кодов, которые могут ге­нерироваться при различных комбинациях клавиш, довольно велик, что обеспечивает богатство возможностей по управлению ПЭВМ со стороны пользователя.
Клавиши групп Д) и Е) не генерируют ни простых, ни расши­ренных ASCII-кодов. Они, как показано выше, лишь оказывают влия­ние на модификацию кодов клавиш групп А) — Г). Однако текущее состояние этих клавиш фиксируется в отдельных битах выделенной ячейки памяти ДОС.
Клавиши группы Ж) — с символами PrtSc и *, с дополнитель­ньши знаками -f- и — , а также другие клавиши, которые могут иметься на разных модификациях клавиатур, обычно вырабатывают такие же ASCil-коды, как и другие клавиши с этими знаками. Но используются они чаще в других целях.
Например, в известной системе Framework эти клавиши играют роль управляющих; при этом используются их скэн-коды, а не ASCII-коды. Точно так же в популярной имитационной игре Flight Simu­lator — «Тренажер пилота» для управления «полетом» используются-клавиши Shift, расположенные в двух половинах клавиатуры — левой и правой. Это оказывается возможным благодаря тому, что скэн-коды этих клавиш различны.
Особые комбинации клавиш. Имеется несколько особых комбина­ций клавиш, обрабатываемых уникальным образом. При одновре­менном нажатии клавиш, входящих в такие выделенные комби­нации, базовая система ввода/вывода анализирует их скэн-коды и осуществляет внутрисистемные прерывания, вызывающие опреде­ленные события. В табл. 4.5 представлен перечень таких комби­наций.
Некоторые комбинации клавиш вырабатывают ASCII-коды упра­вляющих сигналов, используемых часто для управления внешними устройствами, в частности, принтером и коммуникациями.
Таблица ASCII-кодов. Внутреннее представление символов в ПЭВМ осуществляется на основе определенной системы кодирования сим­волов, которая может быть представлена в виде кодовой таблицы. Кодовая таблица указывает на соответствие между изображениями или

условными обозначениями символов и их внутренними числовыми кодами. Коды обычно представляют шестнадцатеричными или деся­тичными числами.
Таблица 4.5. Особые комбинации клавиш
Комбинация клавиш
Вырабатываемое действие
Ctrl — Alt — Del Ctrl — NumLock Ctrl — Break Shift — PrtSc
Перезапуск машины Приостановка работы программы Прерывание (окончание) работы программы Копирование изображения с экрана на принтер
Таблица 4.6. Коды, вырабатываемые некоторыми комбинациями клавиш
Комбинация клавиш
Вырабатываемый ASCII-код
Служебная функция
Ctrl — 2 Ctrl — Enter Ctrl — [ Ctrl — \ Ctrl-] Ctrl — 6 Ctrl — Space Ctrl — Backspace
0 10 27 28 29 30 32 127
«Пустой символ» Перевод строки Спецсимвол Esc Разделитель файлов Разделитель групп Разделитель записей Пробел Символ удаления
Кодовая таблица должна допускать представление следующих групп символов:
— управляющие символы,
— знаки арифметических операций, знаки препинания и цифры,
— буквы латинского алфавита,
— буквы национальных алфавитов,
— символы псевдографики,
— математические символы.
Управляющие символы используются для. специальных целей управления печатающими устройствами, а также в качестве маркеров и ограничителей при передаче символьной информации по линиям связи.
Знаки арифметических операций, знаки препинания, некоторые специальные символы (процент, амперсенд, ...) и цифры необходимы для представления текстовой и числовой информации,
112
Буквы латинекого алфавита служат для представления текстовой информации на языках, использующих латинский алфавит, а также для представления текстов программ на языках ассемблеров и языках высокого уровня — фортран, паскаль, си и др.
Буквы национальных алфавитов служат для представления тек­стовой информации на разных языках. Для советских ПЭВМ в первую очередь, конечно, необходим русский алфавит.
Символы псевдографики используются для построения простых графических изображений в текстовом режиме. С помощью этих сим­волов на экране дисплея и на печатающих устройствах изображаются различные рамки, простейшие (прямоугольные) фигуры, штриховки и пр. Такие символы могут использоваться для изображения стол­биковых гистограмм, графических схем и других несложных графи­ческих объектов.
Математические и другие специальные символы (сумма, тождество, больше или равно, меньше или равно и пр.) используются для пред­ставления математических формул и выражений, для обозначения денежных единиц и др.
В табл. 4.7, 4.8, 4.9 и 4.10 представлена кодировка символов, используемых в современных ПЭВМ. Приведенные кодовые таблицы определяют способ представления информации в памяти ПЭВМ и на внешних носителях, а также кодирование знакогенераторов дисплеев и принтеров. Указанные таблицы разбиты на столбцы, каждый из которых идентифицируется шестнадцатеричным числом, соответству­ющим коду первого символа в данном столбце. Чтобы определить шестнадцатеричный код любого символа, необходимо найти его в соот­ветствующем столбце и затем к коду, идентифицирующему данный столбец, прибавить номер позиции, в которой находится данный символ (позиции нумеруются шестнадцатеричными числами от О до F). Так, например, латинская буква А находится в 1-й позиции столбца 40 в табл. 4.7, поэтому ее шестнадцатеричный код ра­вен 41. Для получения десятичных кодов можно воспользоваться табл. 4.11.
В табл. 4.7 представлены управляющие сигналы и символы с 16-ричными кодами от 0 до 7F (десятичные коды от 0 до 127). Эта часть кодовой таблицы соответствует стандарту кодирования информации ASCII и используется в большинстве ПЭВМ, совместимых с IBM PC. Ее называют основной таблицей ASCII. Для кодирования символов здесь используются лишь 7 битов.
Следует иметь в виду, что первые 32 кода (от 0 до IF) в основной таблице ASCII являются управляющими; они служат для представле­ния сигналов, которые имеют специальное назначение при выводе информации на печатающие устройства, а также при передаче ее по линиям связи. Часть управляющих кодов, хотя и зарезервирована для
113
специальных функций, но фактически может использоваться по усмо­трению разработчиков отдельных систем. Чтобы иметь возможность как-то ссылаться на управляющие коды, применяется обозначение CHR(N) или CHR$ (N). Такое обозначение понимается как символ, код которого равен N. В языках паскаль и бейсик эти обозначения используются как вызовы функций, вырабатывающих соответству­ющие символы. Управляющим кодам часто сопоставляются специаль­ные изображения (см. два первых столбца табл. 4.7). Эти изображения не фиксируются стандартом ASCII. Их реальный вид на экране зави­сит от знакогенератора дисплея.
Таблица 4.7. Основная таблица ASCII (16-ричные коды)

Другие коды основной таблицы ASCII используются для кодиро­вания знаков пунктуации и арифметических операций, цифр и букв латинского алфавита.
Вторая половина таблицы с 16-р«чными кодами от 80 до FF (де­сятичные коды от 128 до 255) является расширением стандарта ASCII и, вообще говоря, может изменяться в разных моделях ПЭВМ. Для кодирования каждого символа в этой части таблицы необходимы уже 8 битов. Во второй половине таблицы чаще всего размещают сим­волы национальных алфавитов (в частности, русского), символы псев­дографики, а также математические и другие символы.
Таблица 4.8. Расширение таблицы ASCII (знакогенератор IBM PC)

В. табл. 4.8 представлены символы с кодами 80-FF, соответству­ющие стандартному знакогенератору IBM PC. В табл. 4.9 представлен один из вариантов расширения ASCII-таблицы с русскими буквами. Здесь русские буквы размещены в столбцах с кодами ВО, СО, DO, E0, что соответствует рекомендациям международной организации по стан­дартизации ISO. Символы псевдографики в этой таблице оказываются в столбцах 80, 90, АО, поэтому здесь возникает расхождение с приня­той кодировкой этих символов в машине IBM PC. Данная таблица вместе с основной таблицей ASCII (табл. 4.7) рекомендуется для при­менения на отечественных ПЭВМ.
Таблица 4.9. Расширение таблицы ASCII (знакогенератор с русским шрифтом — основной вариант)

В табл. 4.10 приведен альтернативный вариант расширения ASCII-таблицы с русскими буквами. Этот вариант отличается от пред­ставленного в табл. 4.9 тем, что символы псевдографики находятся-на тех же кодовых позициях, что и в стандартной таблице для IBM PC (табл. 4.8), а русские буквы занимают столбцы 80, 90, АО и Е0. При этом обеспечивается возможность использования зарубежных ком­мерческих программ без какой бы то ни было их настройки на новую кодировку символов псевдографики, но русские буквы размещены несколько неудобно: их нормальная последовательность прерывается символами псевдографики. Указанное неудобство сравнительно легко
Таблица 4.10. Расширение таблицы ASCII
(знакогенератор с русским шрифтом — альтернативный
вариант)

преодолевается программным путем. Данная таблица рекомендуется для применения в знакогенераторах закупаемых зарубежных ПЭВМ. Для выполнения необходимых преобразований над текстами в случае применения знакогенераторов с альтернативной кодировкой можно использовать специальную управляющую программу — драй­вер. Такой драйвер загружается в оперативную память в начале рабо­чего сеанса и, оставаясь резидентным, перехватывает все символы с кодами 80-FF, которые посылаются прикладными программами
Таблица 4.11. Получение десятичного кода по шестнадцатеричному
Шестнадца-теричный код
Десятичный код
Шести адца-теричный код
Десятичный код
00 10 20
30 40 50 60 70
00
16
32 48 64 80 96 112
80 90
АО ВО СО D0 Е0 F0
128 144 160 176 192 208 224 240
для вывода на дисплей. Перехваченные коды символов анализируются и, если требуется, преобразуются в другие коды, так чтобы знако­генератор дисплея воспроизводил их правильные изображения. Драй­вер такого типа (ALFA.EXE) разработан в ВЦ АН СССР А. А. Чи­жовым. Он используется на зарубежных ПЭВМ, в которые устанавли­ваются знакогенераторы с русским алфавитом.
Помимо перехвата и перекодировки символов, выводимых на дисплей, драйвер ALFA.EXE выполняет еще одну важную функцию — переключение между двумя половинами кодовой таблицы при вводе символов с клавиатуры. Реализуется это следующим образом. При нажатии клавиши CapsLock срабатывает двоичный переключатель, который затем управляет способом восприятия вводимых алфавитно-цифровых символов. При одном положении этого переключателя нажа­тие алфавитно-цифровых клавиш приводит к генерации на выходе клавиатуры латинских букв, при другом положении переключателя генерируются буквы русского или другого национального алфавита.
Чтобы вывести кодовую таблицу на экран, можно применить программу на языке бейсик, приведенную ниже. В этой программе при значении переменной Н=0 будет выведена первая половина таб­лицы, исключая коды 0 .. 31, а при Н=128 — вторая половина. Каж­дая половина содержит по 32 строки и 4 колонки;
118
10 FOR 1=0 TO 31
20 FOR J = 0 TO 3
30 K=H+(I+J*32)
40 PRINT K;
50 IF J=0 AND H=0 THEN PRINT " ";
60 ELSE PRINT " "+CHR$(K);
70 NEXT J
80 PRINT CHR$ (13);
90 NEXT I
100 RETURN
Расширенные ASCII-коды. Кодирование специальных клавиш, относящихся к группам Б), В), Г),, а также модифицированных кла­виш группы А) осуществляется расширенным ASCII-кодом, который представляется 2-байтовыми последовательностями. Первый байт является служебным и равен 0; второй байт — информационный. Его код равен порядковому номеру клавиши, т. е. совпадает со скэн-кодом. Благодаря указанному методу исключается совпадение кодов специальных клавиш с кодами основных символов ASCII.
С помощью расширенных ASCII-кодов кодируются сигналы сле­дующих клавиш и комбинаций:
— функциональных (Fl, F2, ... F10);
— удаления и вставки (Del и Ins);
— перемещения курсора (стрелки, Home, End, [], PgUp, PgDn); — Alt — f- (другая клавиша);
— Ctrl + (другая клавиша);
— Shift + Tab.
В табл.,4.12 приведены коды информационных байтов для всех комбинаций клавиш, вырабатывающих расширенные ASCII-коды.
Особенности действия некоторых клавиш. Эффект действия любой клавиши, вообще говоря, задается прикладной программой, причем этот эффект может быть разным, в зависимости от состояния приклад­ной программы. Однако за некоторыми клавишами закрепляются определенные постоянные функции, которые применяются наиболее часто. Ниже приводится описание таких типичных функций.
Клавиша Enter (Исполнение или Ввод) используется для заверше­ния набираемой цепочки символов, в частности, для завершения лю­бой команды ДОС, набираемой на клавиатуре. Десятичный ASCII-код этого сигнала — 13. Другие английские обозначения этой клавиши — Return, CarriageReturn, CR. Располагается она справа от алфавитно-цифровой группы.
Клавиша Backspace (Стирание влево) используется для стирания символа, находящегося слева от курсора. Десятичный ASCII-код
Таблица 4.12. Информационные байты расширенных кодов ASCII

Функциональные клавиши


F1 59
Shift-Fl
84
Ctrl-Fl 94
Alt-Fl
104
F2 60
Shiit-F2
85
Ctrl-F2 95
Alt
F2
105
F3 61
Shift-F3
86
Ctrl-F3 96
Alt-F3
106
F4 62
Shift-F4
87
Ctrl-F4 97
Alt
F4
107
F5 63
Shift-F5
88
Ctrl-F5 98
AH-F5
108
F6 64
Shift-F6
89
Ctrl-F6 99
AH-F6
109
F7 65
Shift-F7
90
Ctrl-F7 100
AU-F7
110
F8 66
Shift-F8
91
Ctrl-F8 101
Alt-
F8
111
F9 67
Shift-F9
92
Ctrl-F9 102
Alt-
F9 -
112
F10 68
Shift-FlO 93
Ctrl-FlO 103
Alt-
F10
113

Клавиши управления курсором


Home
71 U|

72 PgUp
73


Left
75 {5)

76 Right
77


End
79 Do
wn
80 PgDn
81


Модифицированные клавиши управления курсором
Ctrl-Home
119
Ctr
1-PgUp 132


Ctrl-Стр Влево 115
Ctrl-СтрВправо 116


Ctrl-End
117
Ctrl-PgDn 118



Буквенно-цифровые клавиши


Alt-A 30
Alt-N
49
Ctrl-A 1
Ctrl-N
14

Alt-B 48
Alt-0
24
Ctrl-B 2
Ctrl-0
15

Alt-C 46
Alt-P
25
Ctrl-C 3
Ctrl-P
16

Alt-D 32
Alt-Q
16
Ctrl-D 4
Ctrl-Q
17

Alt-E 18
Alt-R
19
Ctrl-E 5
Ctrl-R
18

Alt-F 33
Alt-S
31
Ctrl-F 6
Ctrl-S
19

Alt-G 34
Alt-T
20
Ctrl-G 7
Ctrl-T
20

Alt-H 35
Alt-U
22
Ctrl-H 8
Ctrl-U
21

Alt-I 23
Alt-V
47
Ctrl-I 9
Ctrl-V
22

Alt-JJ 36 Alt-К 37
Alt-W
17
Ctrl-J 10
Ctrl-W
23



Alt-X
45
Ctrl-K И
Ctrl-X
24

Alt-L 38.
Alt-Y
21
Ctrl-L 12
Ctrl-Y
25

Alt-M 50
Alt-Z
44
Ctrl-M 13
Ctrl-Z
26

Alt-1 120
Alt-2
121
Alt-3 122
Alt-4
123

Alt-5 124
Alt-6
126
Alt-7 126
Alt-8
127

Alt-9 128
Alt-0
129
Alt — 130
Alt =
131



Прочие клавиши



Ins 82
Shift-Tat
) 15
Ctrl-Break
0


Del 83
Ctrl-PrtSc 114




120
этого сигнала — 8. Клавиша располагается обычно справа вверху от алфавитно-цифровой группы.
Клавиша Del (Удаление символа) используется для удаления сим­вола, находящегося над курсором. Посылаемый сигнал кодируется расширенным ASCII-кодом, информационный байт которого равен 83.
Клавиша Ins (Вставка символа) используется для переключения между двумя режимами ввода символов:
— ввод с раздвижной строки (вставка);
— ввод с перебивкой ранее набранных символов (замена). Английские названия этих режимов — «Insert» и «Overtype». Посы­лаемый сигнал кодируется расширенным ASCII-кодом, информацион­ный байт которого равен 82.
Клавиша CapsLock (Фиксация верхнего регистра) предназначена для того, чтобы при нажатии алфавитных клавиш получать коды за­главных букв. При этом после нажатия CapsLock действие клавиши Shift изменяется на противоположное.
Однако клавиша CapsLock может использоваться и для других целей. В частности, упомянутый выше драйвер ALFA.EXE исполь­зует эту клавишу для переключения между латинским и русским алфавитом. Фиксация же верхнего регистра осуществляется в этом случае одновременным нажатием клавиш Shift и Caps-Lock.
Клавиша ScrollLock (Блокировка прокрутки) часто используется в текстовых редакторах и других прикладных системах, чтобы бло­кировать или разблокировать режим прокрутки изображения на экране. Но у нее может быть и другое назначение в различных приклад­ных программах.
Клавиша NumLock (Блокировка цифр) воздействует на ДОС, заставляя систему по-разному воспринимать клавиши управления курсором, размещенные в правой части клавиатуры (группа В)). После однократного нажатия NumLock девять клавиш в правой части кла­виатуры — стрелки Up, Down, Left, Right, Home, End, PgUp, PgDn и клавиша с цифрой 5 — начинают выдавать ASCII-коды, соот­ветствующие цифрам 1, 2, 3, 4, 5, 6, 7, 8 и 9. Кроме того, кла­виша Ins также начинает выдавать код, соответствующий цифре 0. Таким образом, эти клавиши образуют как бы дополнительную циф­ровую клавиатуру, на которой числа можно набирать с большей ско­ростью. Клавишу с цифрой 5 будем обозначать (5).
Все три клавиши — CapsLock, ScrollLock и NumLock — дей­ствуют как двоичные переключатели (английский термин для клавиш такого типа — toggle), т. е. при их чередующихся нажатиях происходит переход из одного режима в другой и обратно. ASCII-кодов они не вырабатывают, но устанавливают в 0 или 1 специальные биты в двух байтах внутренней памяти ДОС с шестнадцатеричными адресами 417
121
и 418. Прикладная программа может анализировать эти биты и при­нимать решения о тех или иных действиях.
Клавиши группы В), к которым относятся стрелки Left, Right, Up, Down (Вправо, Влево, Вверх, Вниз), а также клавиши Ноте, End, PgUp, PgDn (Начало, Конец, Страница Вверх, Страница Вниз) и клавиша (5) в центре этой группы обыкновенно служат трем целям:
Во-первых, они удобны для управления перемещением курсора на экране, что и используется в прикладных системах — как в тексто-. вых режимах, так и в графических. В таком режиме эти клавиши вы­дают расширенные ASCII-коды (табл. 4.12).
Во-вторых, после нажатия NumLock эти клавиши, а также кла­виша Ins, как уже сказано, образуют дополнительную цифровую клавиатуру.
В-третьих, они используются для ввода символов с произвольными ASCII-кодами, в том числе не представимыми другими способами. Делается это так:
1. Нажимается (и не отпускается) клавиша Alt.
2. Нажимаются поочередно клавиши с цифрами, соответствующие коду вводимого символа, например, 1, 9, 6.
3. Отпускается нажатая клавиша Alt.
В результате в текущую позицию, указываемую курсором, вво­дится символ CHR (196), изображаемый на экране горизонтальной чертой. Указанный способ ввода символов называют иногда Alt-вводом, Alt-ввод действует вне зависимости от состояния клавиши NumLock.
Управление клавиатурой с помощью драйвера ANSI.SYS. В преды­дущем разделе была рассмотрена одна из функций системного драйвера ANSI.SYS — управление дисплеем. Рассмотрим теперь его вторую функцию, связанную с переопределением кодов, поступающих с кла­виатуры. Эта возможность позволяет приписывать некоторым клави­шам или их . комбинациям целые цепочки символов. При нажатии запрограммированных таким образом клавиш в системный блок ПЭВМ посылаются не одиночные коды (или пары кодов), а приписанные им цепочки символов. В этих цепочках могут содержаться часто исполь­зуемые команды ДОС или любые текстовые фрагменты. Они могут использоваться также и прикладными программами для получения с клавиатуры каких-либо стандартных сообщений.
Переопределение кодов клавиш осуществляется путем посылки в драйвер ANSI. SYS управляющей последовательности вида:
Esc[ (расширенный__ASCII — код клавиши); (определение__кла­виши) р
В этой последовательности заголовок имеет такой же вид, как и при управлении экраном, т. е. состоит из двух символов: Esc и ква­дратной скобки. Кодом команды является малая английская буква р,
122
Главное содержание команды сосредоточено в двух ее частях, разделя­емых знаком «точка с запятой».
Первая (левая) часть содержит простой или расширенный ASCII-код клавиши, вторая (правая) часть — ту цепочку символов, которая должна генерироваться при нажатии данной клавиши.
Пример i. Покажем, как можно функциональным клавишам приписать тексты наиболее часто используемых команд ДОС:
Esc[0; 62; "а:"р — клавише F4 приписывается текст "а;")
EscjO; 64; "type "p — клавише F6 приписывается текст "type".
Можно генерировать не только текстовые цепочки, но и управля­ющие символы, для чего в правую часть просто включается соответ­ствующий десятичный код символа, отделяемый знаком «точка с запя­той» от других компонентов определения.
Пример 2. Клйвиша «Исполнение» имеет код 13. Можно ими­тировать нажатие этой клавиши, включив в определяющую цепочку указанный код. В нижеследующих примерах определения функци­ональных клавиш составляются из текстовых строк, за которыми сле­дует код клавиши «Исполнение»;
Esc[0; 112; "cd \work"; 13p — при нажатии AH-F9 посылается полностью сформированная команда CD\WORK;
Esc[0; 113; "exit "; 13р — при нажатии Alt-FiO посылается пол­ностью сформированная команда EXIT (эта команда используется для Еозврата в приостановленную программу).
Приписывать новые определения можно не только функциональ­ным, но и любым алфавитно-цифровым клавишам, а также некоторым управляющим клавишам (например, стрелкам). Но, конечно, делать это для основных ASCII-кодов неразумно, поскольку тогда соответ­ствующие клавиши потеряют свое исходное назначение — генерировать коды изображенных на них символов. Переопределять имеет смысл лишь модифицированные коды алфавитно-цифровых и управляющих клавиш, т. е. их Alt-, Ctrl- и Shift-коды.
Пример 3. При необходимости часто использовать каталог, на который указывает сложный маршрут, можно приписать текст этого маршрута Alt-коду соответствующей клавиши:
Esc[O; 48; "\ papers\ book" p
Такая Esc-команда приписывает расширенному Alt-коду клавиши «В» текст маршрута «\papers\book». После этого можно, нажимая Alt-B, выдавать в ДОС указанный текст. Генерировать его будет драйвер ANSI.SYS.
Пример 4. Рассмотрим пример командного файла FKEYS.BAT, который упоминался в предыдущей главе. Единственное его назначение состоит в приписывании некоторым функциональным клавишам, а также их Alt-модификациям часто используемых фрагментов команд.
123
echo off
echo Esc[0;62;"a: "p Esc[0;107;"c:"p
echo Esc[0;64;"type "p Esc[0;109;"mode co80";13p
echo Esc[0;66;"dir "p Esc[O;lll;"dirs *.*";13p
echo E-sc[0;67;"cd "p Esc[0;112;"cd\work"il3p
echo Esc[0;68;"copy "p Esc[0;113;"exit";13p
echo Переопределение функциональных клавиш:
echo
echo F4 — "a:" Alt F4 — "c:"
echo F6 — "type" Alt F6 — "mode co80" (норм, вкран)
echo F8 — "dir" Alt F8 — "dirs*.*" (объем директо-
рия)
echo F9 — "cd" Alt F9 — "cd \work" (рабочий ди-
ректорий)
echo F10 — "copy" Alt F10 — "exit" (возврат)
В строчках со 2-й по 6-ю с помощью команд ECHO в драйвер ANSI.SYS посылаются Esc-последовательности, осуществляющие пере­определения клавиш. Напомним, что вместо трех букв Еве всюду в при­веденных примерах должен употребляться один символ с десятичным кодом 27. Его можно вводить в текстовом редакторе, нажимая Ctrl-[, или с помощью Alt-ввода. Остальные строчки содержат команды ECHO, которые просто выдают на экран сообщения о сделанных переопре­делениях.
Приведенный выше текст можно прямо включить в файл авто­запуска AUTOEXEC.BAT, исключив из него обращение kFKEYS.BAT.
Нам остается обсудить один важный вопрос: «Как сформировать Esc-последовательности и передать их для обработки драйверу ANSI.SYS?» Для этого есть несколько путей.
1. Включить Esc-последовательности в состав аргумента команды PROMPT. При этом вместо символа Esc, как указывалось, нужно ввести знаки $ е, а остальная часть последовательности вводится, как обычная текстовая строка. Примеры такого задания рассмотрены в разд. 2-7.
2. Включить Esc-последовательности в командный файл в каче­стве аргументов команд ECHO. Примеры этого рассмотрены выше.
3. Сформировать любым способом текстовый файл с Esc-последо-вательностями и направить этот файл на дисплей. Если, например, имя такого файла — Е.ТХТ, то для его посылки на дисплей можно исполь­зовать команды:
type e.txt или copy e.txt con
Во втором примере символ CON означает «консоль», что в данном кон­тексте соответствует экрану дисплея.
Таковы основные приемы управления клавиатурой. Отметим еще, что при системном программировании можно пользоваться следующими прерываниями ДОС для доступа к функциям управления клавиатурой:
N (10)
9 22 27 35
Источник прерывания
Сигнал от клавиатуры при нажатии клавиш Вызов из программы функций ЛЗСВВ Обращение к БСВВ при нажатии Ctrl-Break Обращение к ДОС при нажатии Ctrl-Break
Подробное описание указанных прерываний имеется в техниче­ских руководствах по ДОС.
4.3. Управление принтером
Вывод файлов на печатающие устройства. Вывод текста и графи­ческих изображений на печатающие устройства (принтеры), на первый взгляд, кажется очень простой задачей. Действительно, если есть за­ранее подготовленный файл с текстовой или закодированной особым образом графической информацией, то простейший способ вывода его на печатающее устройство состоит в применении команды COPY, у которой первым аргументом должно быть имя исходного файла, а в качестве второго аргумента указывается имя принтера — PRN, LPT1, LPT2 и др. Пример такой команды:
сору И ргп
Вместо имени принтера можно употребить имя специального драйвера, обеспечивающего особый способ формирования символов и вывода их на принтер. Например, разработанный в ВЦ АН СССР драйвер TOSH.SYS (автор — А. А. Чижов) обеспечивает выдачу рус­ских текстов на высококачественный принтер типа Toshiba Р1350/Р1351 с использованием такого же шрифта, который приме­няется в стандартных пишущих машинках. При этом каждая буква фак­тически рисуется из точек, а принтер работает в графическом режиме. В команде COPY достаточно указать в качестве второго аргумента слово TOSH, и тогда печатаемые символы будут формироваться и выводиться на печать с помощью указанного драйвера.
Другой простой способ выдачи на печать основан на использовании сервисных программ печати. Так, стандартный комплект ДОС по­ставляется с системной программой PRINT, которая обеспечивает постановку текстовых файлов в очередь на печать, Собственно печать
125
в этом случае производится на фоне любой другой задачи. Обращение к программе PRINT может иметь следующий вид:
print fl f2f3
При таком обращении файлы Fl, F2 и F3 ставятся в очередь на печать, и если принтер свободен и готов к печати, то сразу же начинается печать файла F1. По умолчанию максимальное число файлов в очереди равно 10, но оно может быть изменено. Для изменения этого числа, а также других установочных параметров в команде PRINT имя каж­дого файла может сопровождаться специальным указателем. Указатели вводятся вслед за именем файла с префиксом/. В частности, можно применять следующие указатели:
/Q:ff (ff — максимальное число файлов в очереди),
/D:pp (pp — имя принтера или другого устройства для вывода данного файла),
/B:bb (bb — размер буфера в байтах (по умолчанию бу­фер = 512)),
/С (признак исключения данного файла и всех последующих из очереди),
/Р (отмена действия /С).
Команда PRINT /T исключает все файлы из очереди. С помощью других указателей можно также регулировать относительное время, выделяемое для команды PRINT на фоне других программ.
Разрабатываются и другие сервисные программы для вывода на печать. Как правило, такие программы ориентированы на определенный тип принтера и на определенный способ печати.
Управление режимами печати. При внешней простоте команд, обеспечивающих вывод текстовых файлов на печать, на практике при­ходится сталкиваться с множеством мелких проблем, связанных со способом оформления выводимого на бумагу текста или графического изображения. Дело в том, что печатающие устройства, применяемые совместно с ПЭВМ, позволяют устанавливать различные параметры печати. Например, широко распространенные точечно-матричные прин­теры позволяют задавать с помощью управляющих команд следующие важные параметры:
— режим печати — текстовый или графический;
— шрифт, т. е. набор символов для печати текста;
— модификацию шрифта, определяющую размеры букв, их насы-щенность, плотность, разные способы выделения и др.;
— максимальное число символов в строке;
— интервал между строками;
— максимальную длину страницы;
— установку/отмену остановки при отсутствии бумаги; .
— величину хода при горизонтальной и вертикальной табуляции;
— величину левого и правого поля;
— установку/отмену режима печати с подчеркиванием;
— установку/отмену печати верхних и нижних индексов;
— способ печати (при прямом и обратном ходе или только при прямом ходе);
— скорость печати — нормальную или замедленную (для умень­шения шума).
Команды оформляются двумя способами — это либо специальные управляющие символы (с кодами от 0 до 31 или от 128 до 159), либо Esc-последовательности. Например, для управления разными типами принтеров семейства Epson используются команды, обусловленные специальным стандартом. Этот стандарт имеет условное обозначение ESC/P. Он принят многими производителями печатающих устройств для ПЭВМ. Большинство команд в этом стандарте задается с помощью Esc-последовательностей с буквенными или числовыми параметрами. Примеры таких команд:
Esc @ — инициализация принтера,
Esc & ... — загрузка нового «пользовательского» шрифта,
Esc % n — выбор шрифта (встроенного или загруженного),
Esc ! n — выбор модификации шрифта (от 0 до 63),
Esc An — установка интервала между строками (в точках),
CHR (12) — протяжка страницы,
CHR (24) — очистка буфера,
CHR (14) — печать строки увеличенными широкими буквами (en­larged),
CHR (15) — печать строки уменьшенными узкими буквами (con­densed),
CHR (8) — возврат на один символ назад (backspace),
Esc К ... — печать в графическом режиме с нормальной плот­ностью,
Esc L... — печать в графическом режиме с двойной плотностью и др.
Возникает вопрос, когда должны посылаться на принтер управля­ющие команды. Ясно, что существует две основных возможности:
а) производить установку режимов перед тем, как на принтер начнет выводиться основное содержимое файла;
б) производить изменение режимов по ходу печати.
Очевидно, способ а) целесообразно применять для установки глобальных параметров — режима работы, вида шрифта, размеров строк, страниц и полей, интервалов между строками, скорости печати. Способ б) необходим для локальных операций — установки индексов, подчеркивания и др.
Некоторые системы обработки текстовой информации вставляют внутрь печатаемого текста все управляющие команды. Из-за этого
текст становится непригоден для использования его в других целях (например, при обычном выводе на экран командой TYPE такой текст будет испещрен непонятными значками). Зато при выводе этих текстов на принтер получаются прекрасно оформленные текстовые документы. Иногда установка режимов осуществляется с помощью отдель­ных сервисных программ. Например, в ВЦ АН СССР разработан ряд программ для установки параметров принтеров семейства Epson FX-80.
Одна из этих программ — SETFX (автор В. В, Пономарев) — при запуске запрашивает у пользователя три параметра, которые используются наиболее часто: номер модификации шрифта, интервал между строками и левое поле. Программа загружает шрифт и уста­навливает соответствующие параметры печати.
Другая программа — LFONT (автор А. Б. Борковский) — за­гружает в принтер русский шрифт с одновременным заданием номера его модификации.
Наиболее удобно, чтобы глобальные параметры для управления принтером могли задаваться в текстовом редакторе, но при этом не вносились в текст печатаемого файла. В этом случае переход от редак­тирования текста к его печати происходит быстро и естественно, но сам текстовый файл остается чистым, т. е. не содержит глобальных управляющих символов.
Как формируются новые символы для печати на принтере? Многие современные принтеры имеют несколько встроенных шрифтов. Кроме того, на таких принтерах возможно использование загружаемых шриф­тов. При этом в машине заранее формируется файл, в котором соот­ветствующим образом кодируются знаки требуемого алфавита; этот файл посылается на принтер и запоминается в его оперативной памяти.
Посылка в принтер специальных управляющих команд заставляет его переключаться с одного шрифта на другой, причем это можно делать даже во время печати. После выбора того или иного шрифта выводимые на печать знаки изображаются на бумаге в соответствии с выбранным шрифтом и его модификацией.
Покажем на примере, как оформляется новый символ для точечно-матричного принтера. На принтерах семейства Epson FX-80 загрузка новых символов осуществляется с помощью следующей Esc-последо-вательности;
Esc & CHR (0) CHR (n) CHR(m)
CHR(q) CHR(cl) CHR(c2) ... CHR (c8) CHR (c9) CHR (cA) CHR (cB)
В этой последовательности первые три символа (Esc & и CHR (0)) являются признаками начала команды, определяющей новый символ.
Числа n и m указывают диапазон кодов тех символов, для которых вводятся новые изображения. Если задается изображение лишь для одного символа, то n = m. В данном случае будем считать, что опре­деляется единственный символ с десятичным кодом 156, т. е, n = m = = 156.
Числа cl ... сВ представляют собой двоичные коды столбцов матрицы размером 8X11, в которой долженизображаться каждый символ. Пример такой матрицы для буквы Ь и соответствующие коды столбцов cl ... сВ приведены в следующих таблицах (при этом следует иметь в виду, что в отдельных строках разряды, содержащие 1, должны чередоваться с разрядами, содержащими 0):

Код числа q содержит управляющую информацию, в которой указывается способ размещения данного символа на матрице 9Х 12. Старший двоичный разряд указывает, нужно ли опускать данный сим­вол на одну точку вниз (это делается, например, для букв с «хвости­ками» — таких как р, у, ц, щ).
Младшие 7 двоичных разрядов числа q устанавливают левую и правую границы матрицы с данным символом для вывода на принтер в режиме пропорциональной печати. При пропорциональной печати ширина печатаемой матрицы с изображением символа индивидуальна для каждого символа и зависит от его рисунка. Например, из матрицы с буквой I может печататься лишь 5 сто.чбцов, а матрица с буквой Ш должна печататься целиком — все 11 столбцов. При этом текст на бумаге легче читается. Пример кодирования числа q:
двоичный код: 1 000 1011
компоненты кода: D L R
Старший разряд D = 1 означает, что данный символ не нужно опускать вниз. Код L == 000 означает, что при пропорциональной печати самым левым является 0-й столбец матрицы с изображением данного символа. Код R = 1011 означает, что самым правым при пропорциональной печати является 11-й столбец. Следовательно, при указанных кодах должна печататься вся матрица с изображением данного символа. Таким образом, десятичное представление числа q =139. Если необходимо ограничить ширину матрицы для пропор­циональной печати,,то коды R и L должны иметь другие значения.
Таким образом, вся Esc-последовательность для задания даннргр символа приобретает следующий вид: Esc & CHR(0) CHR(156) CHR(156)
CHR(139) CHR(255) CHR(0) CHR(255) CHR(0) CHR(17)
CHR(0) CHR(17) CHR(0) CHR(31) CHR(0) CHR(14)
Подобную же последовательность можно сформировать для любых других символов. Чтобы с помощью одной Esc-последовательности определить сразу несколько новых символов, достаточно указать диапазон их кодов (параметры n, m) и далее сформировать (т — n + 1) групп по 12 кодов, подобных тем, которые приведены в рассмотренном примере.
Печать текстовой и графической копии экрана. В ДОС имеется возможность выводить на принтер копию изображения, имеющегося в данный момент на экране. Для этого используется специальная внутренняя подпрограмма, которая запускается при одновременном нажатии двух клавиш: Shift и PrtSc.
Когда на экран выведен текст в режиме 0, 1, 2, 3 или 7 (см. разд. 3.1), то при нажатии клавиш Shift и PrtSc происходит счи­тывание с экрана каждой строчки и печать ее на принтере. Так полу­чается текстовая копия экрана. При этом изображения символов на экране и на бумаге совпадают лишь в том случае, если знакогенера­тор дисплея и шрифт, загруженный в принтер, идентичны. Если это не так, то некоторые символы, имеющие на экране один вид (например, русские буквы или буквы какого-либо национального алфавита), на бумаге напечатаются совершенно .по-другому. Чтобы пояснить это обстоятельство, рассмотрим следующую схему:


Здесь R1 означает определение данного символа в знакогенераторе дисплея, a R2 — определение символа с тем же самым кодом в наборе символов (шрифте) принтера. Лишь при согласованном определении R1 и R2 изображение символа с данным кодом на экране дисплея и на бумаге будет одинаковым. Следовательно, задание кодировки символов в знакогенераторе дисплея и задание шрифта для принтера — это разные задачи, но они должны решаться согласованно.
При попытке печати копии экрана, когда он находится в одном из графических режимов (4, 5 или 6), сканирование и считывание изображения с экрана происходит не по текстовым строчкам (их всего 25), а по точкам растра. В строке растра может быть 640 или 320 точек, а число строк равно 200. При выводе на принтер, который в этом случае автоматически переводится в графический режим, имеется возможность использовать разные степени плотности печати. Так, например, на принтерах типа Epson FX-80 могут использоваться три степени плот­ности графической печати:
— нормальная — 480 точек на строку (команда Esc K)i
— двойная — 960 точек на строку (команда Esc L);
— четверная — 1920 точек на строку (команда Esc Z). Следовательно, экранное изображение искажается при выводе на
принтер. Обычно оно сжимается по горизонтали и вертикали. При этом, если на экран был выведен текст, то и он в данном режиме вы­водится на печать со сжатием всех символов.
В комплект ДОС входит сервисная программа GRAPHICS, к ко­торой необходимо обращаться перед выдачей на принтер графической копии экрана. После обращения к этой программе нажатие клавиш Shift и PrtSc вызывает вывод на принтер графической копии экрана. При этом возможны 3 варианта:
1) если экран находится в текстовом режиме (0 — 3 или 7), то копи­рование происходит точно так же, как и без команды GRAPHICS;
2) если экран находится в режиме 4 или б (320X200 точек), то на принтер копируется текст и графические изображения, причем
закрашенные цветные области отображаются на бумаге в оттенки серого цвета, если принтер не цветной;
3) если экран находится в 6-м режиме (640X200 точек), го изобра­жение копируется на принтер повернутым на 90° — правый верхний угол экрана отображается в левый верхний угол на бумаге; при этом изображение как на экране, так и на принтере одноцветное.
После вызова программы GRAPHICS при копировании изображе­ния с экрана точки черного цвета отображаются на бумаге в белый цвет и наоборот. Чтобы инвертировать цвета печатаемого на бумаге изображения, нужно обратиться к GRAPHICS с параметром / R, После этого черные точки экрана будут становиться черными и на бумаге.
Используя возможность перевода принтера в графический режим с помощью Esc-последовательностей, можно составить свою программу для вывода на принтер графических изображений. Такая программа, в частности, имеется в составе графических процессоров ВИКОНТ и ВГРАФ, разработанных в ВЦ АН СССР (автор Б. Т. Сираджов). Графические изображения, формируемые с помощью этой системы, могут выводиться в специальном формате в файлы, которые впослед­ствии могут быть выведены на печать. Полученные таким образом файлы могут содержать графические иллюстрации к текстовым доку­ментам и статьям. Вывод на печать файла с изображением, соответству­ющим одному экрану, занимает всего несколько секунд.
Команда MODE. Обычно принтеры подключаются к ПЭВМ по 8-разрядному параллельному каналу, который работает в соответствии со стандартом Centronix, Однако для многих типов принтеров существует возможность подключения по последовательному (асинхронному) ка­налу, который действует в соответствии со стандартом RS-232C. С точки зрения обслуживания принтера, последовательный канал не имеет никаких преимуществ перед параллельным; даже наоборот, он работает несколько медленнее, чем параллельный. Тем не менее по разным причинам может возникнуть необходимость подключения принтера к последовательному каналу (например, из-за отсутствия или неисправ­ности адаптера параллельного канала).
Что нужно сделать для переключения принтера на последова­тельный канал?
Во-первых, в самом принтере нужно установить в соответствующие положения внутренние переключатели. Такие переключатели, раз­умеется, есть только.в тех принтерах, которые обеспечивают работу по последовательному каналу.
Во-вторых,-нужно подобрать соответствующий кабель для под­соединения принтера к адаптеру последовательного канала.
В-третьих, нужно указать операционной системе, что принтер подключен не по параллельному, а по последовательному каналу. Эта
132
операция проще всего реализуется с помощью сервисной программы MODE, поставляемой в комплекте ДОС.
Команда MODE, как указывалось в разд. 4.1, позволяет уста­навливать режим работы дисплея. Кроме того, имеется еще две разно­видности этой команды: для переключения принтера на последователь­ный канал и для установки параметров последовательного канала. Пример обращения, обеспечивающего переключение принтера #1 на коммуникационный канал СОМ1:
mode lptl := coml
Для настройки параметров коммуникационного канала может быть применена такая команда:
mode coml: 1200, е, 8, 1, р
Эта команда устанавливает скорость передачи данных 1200 бод, контроль по четности (на это указывает символ е), разрядность элемента данных — 8 и число стоп-битов — 1. Символ «р» означает, что при ошибке в приемнике (например, при выключенном принтере) необхо­димо повторять передаваемую порцию данных, пока ошибка не будет устранена.
Указанные параметры должны быть согласованы с параметрами приемника — принтера или другого устройства, подключенного по последовательному каналу. Обыкновенно установка параметров в таких устройствах осуществляется с помощью соответствующих переключа­телей, согласно инструкции.
Возможные значения скорости передачи по последовательному каналу — 110, 150, 300, 600, 1200, 2400, 4800 или 9600 бод. Такой диапазон скоростей позволяет подключать ПЭВМ к самым разным линиям связи — начиная от простой телефонной сети до локальной сети с соответствующим протоколом обмена.
Точно так же можно изменять другие параметры последователь­ного канала. Возможные значения этих параметров:
контроль по четности: N — контроль не производится, Е — кон­троль на четкость, О — контроль на нечетность; разрядность элемента данных: 7 или 8; число стоп-битов: 1 или 2.
Таким образом, с помощью команды MODE легко осуществлять настройку последовательных каналов, по которым ПЭВМ может соеди­няться с разнообразными внешними устройствами и другими ЭВМ.
4.4. Инструментальные языки и системы программирования
Разработка системного и прикладного программного обеспечения на персональных компьютерах осуществляется с помощью инструмен­тальных средств, к которым в первую очередь относятся;
133
— трансляторы с языков высокого уровня!
— средства редактирования, компоновки и загрузки программ;
— макроассемблеры (машинно-ориентированные языки); — отладчики машинных программ.
С каждой операционной системой связывается относительно стан­дартный набор инструментальных средств. Различия имеются лишь в версиях языков высокого уровня и в форматах объектных и загрузоч­ных модулей, получающихся после трансляции и компоновки про­грамм.
Основные инструментальные языки высокого уровня, использу­емые на персональных компьютерах — бейснк, паскаль, си, фортран. Не вдаваясь в детальные описания указанных языков, рассмотрим кратко их основные свойства.
Бейсик. Исторически одним из самых популярных языков высо­кого уровня для ПЭВМ стал бейсик. В чем причина этой популярности? Прежде всего бейсик очень прост в освоении и использовании. Написать на бейсике небольшую программу в 10 — 20 строчек и тут же ее испол­нить можно буквально за несколько минут.
В язык, как правило, встраиваются удобные функции для работы с экраном дисплея, клавиатурой, внешними накопителями, принтером, коммуникационными каналами. Это позволяет относиться к бейсику как к продолжению аппаратуры ПЭВМ. Чтобы освоить какую-нибудь особенность или режим работы аппаратных средств, проще всего напи­сать и исполнить соответствующую программу на бейсике.
Стандартная система программирования на основе языка бейсик состоит из двух главных компонентов — редактора, позволяющего составлять и модифицировать программы, и интерпретатора, исполня­ющего подготовленные программы. Соответственно общение пользова­теля с системой распадается на два постоянно чередующихся процесса. При редактировании человек вводит с клавиатуры строки программы, просматривает набранный текст, сохраняет его в файлах на внешних носителях или читает (загружает) ранее введенную программу из файла с целью ее модификации или исполнения. Исполнение программы начинается, когда пользователь дает команду RUN; с этого момента к до конца работы программы (в частности, до остановки по ошибке) пользователь уже не меняет текст программы, а только наблюдает за результатом интерпретации, в ходе которой, разумеется, можег проис­ходить обмен информацией между человеком и машиной — рабочий диалог (рис. 4.3).
Режим интерпретации способствует сокращению характерного цикла в работе программиста: составление программы — пробное исполнение — исправление ошибок — повторное исполнение. Это очень удобно при разработке небольших программ. Интерпретация, однако, имеет неизбежный недостаток — программы работают существенно
134
медленнее, чем в случае использования трансляторов компилирующего типа, как, например, для языков паскаль и си. Объясняется это тем, что в режиме интерпретации каждый оператор языка сначала читается системой, анализируется в контексте уже работающей программы и лишь после этого исполняется. В трансляторах компилирующего типа, в отличие от этого, все стадии чтения и анализа осуществляются заранее — на этапе компиляции, а при исполнении работает готовая программа в машинных кодах, сформированная на этапе компиляции.

Рис. 4.3. Схема взаимодействия пользователя с редактором и интер­претатором языка бейсик
Чтобы сохранить преимущества языка бейсик и в то же время дать возможность построения эффективных, быстро работающих программ, созданы бейсик-компиляторы. При этом на этапе составления и отладки программы используются преимущества интерпретационного режима, а после завершения отладки программа компилируется, порождая эффективные машинные коды. Появление компиляторов поставило бейсик в ряд с другими языками высокого уровня и придало ему до­полнительную популярность.
Рассмотрим небольшую программу на бейсике:
10 SCREEN 1 20 CLS
30 REM-----------начальный диалог; запрос параметров-----------
40 LOCATE 1,1
50 PRINT "Будем рисовать прямоугольники";
60 LOCATE 3, 1
70 INPUT "Левый верхний угол (коорд. X, Y)", X, Y
80 INPUT "Ширина и высота прямоугольника", DX, DY
90 INPUT "Цвет (1 — синий, 2 — красный, 3 — белый)", С
100 REM------Далее идет подпрограмма рисования и окраски------
ПО LINE (X, Y) — (X + DX, Y), С "верхняя сторона прямоуголь­ника
120 LINE — (X + DX, Y + DY), С "правая сторона 130 LINE — (X, Y + DY), С 'нижняя сторона 140 LINE — (X, Y), С 'левая сторона
150 PAINT (X + DX/2, Y + DY/2), G 'окраска из центра цветом С
160 REM--------------Переспрос, нужно ли повторять--------------
170 LOCATE 23,4 : PRINT "Чтобы повторить, нажмите пробел";
180 К$= INKEY$: IF K$ = "" THEN GOTO 180
190 IF K$ < > " " THEN END 'Выход если нажат не пробел
200 REM — Очистка позиций для параметров в 3 — 5-й строчках —
210 FOR i = 33 ТО 5 : LOCATE 1,32 : PRINT SPACE$ (7); : NEXT
220 BEEP : GOTO 60 'Переход на повторение
В этой программе иллюстрируется несколько характерных воз­можностей бейсика. Первые два оператора управляют экраном — оператор SCREEN 1 устанавливает графический режим со средней разрешающей способностью (320 точек по горизонтали, 200 точек по вертикали), а оператор CLS очищает экран.
Символ REM в 30-й строке, как и другие подобные символы в 100-й, 160-й и 200-й строках, служит для ввода в текст программы коммента­рия. Такие строки игнорируются при исполнении программы и нужны лишь для того, чтобы программа была понятнее при чтении ее чело­веком. Имеется также возможность комментировать отдельные опера­торы, для чего после них ставится символ «апостроф» и после него — произвольный текст. Такие комментарии введены в строках 110 — 150, 190 и 220.
Группа операторов в 40 — 90 строках обеспечивает выдачу пользо­вателю начальных сообщений (оператором PRINT) и запрашивает у него параметры для рисования цветных прямоугольников (операто­рами INPUT); при этом место на экране для выдачи сообщений уста­навливается оператором LOCATE.
В строках 110 — 150 работает подпрограмма построения прямо­угольника и его окраски. При этом используется специальный оператор LINE, который проводит линию заданного цвета из одной точки в дру­гую. Четыре такие линии проводятся одна за другой в направлении по часовой стрелке, начиная и заканчивая точкой, которая определена как левый верхний угол прямоугольника (с координатами X, Y).
Затем оператор PAINT окрашивает построенный прямоугольник в тот же цвет, что и цвет линий, начиная с геометрического центра прямоугольника (координаты центра рассчитываются по исходным величинам — X, Y, DX я DY).
Наконец, в строках 170 — 220 реализуется заключительная фаза программы — пользователю предлагается нажать клавишу «пробел», если он хочет повторить построение. Следует обратить внимание, что в некоторых строках — 170, 180 и 210 — записано сразу по несколько операторов, разделяемых знаком : , что допускается правилами бейсика. На исполнение программы это не оказывает никакого влияния.
В строке 180 для анализа ответа пользователя применена особая функция ввода INKEY$, которая, в отличие от INPUT, ожидает ввода с клавиатуры сигнала от одной-единственной нажатой клавиши, а не последовательности символов, заканчивающейся нажатием кла-виши «Исполнение». Символ, соответствующий нажатой клавише — значение функции INKEY$, присваивается символьной переменной К$. Пока клавиша не нажата, INKEY$ возвращает в переменную К$ пустую строку, и оператор перехода GOTO заставляет программу «крутиться» в цикле. Это характерный прием, который служит для остановки бейсик-программы в ожидании, пока пользователь не нажмет какую-нибудь клавишу.
Принятый с помощью INK.EY$ символ в 190-й строке сравнивается с пробелом. При несовпадении (обозначаемом символами { )) проис­ходит окончание работы программы с помощью оператора END. В про­тивном случае вступает в действие другой небольшой цикл (оператор FOR ... NEXT в 210-й строке программы). В теле этого цикла с по­мощью функций LOCATE и PRINT SPACE$ (7) очищаются те позиции в 3 — 5-й строчках экрана, где пользователь вводил начальные пара­метры. Очистка указанных позиций достигается тем, что в них пишутся символы «пробел», вырабатываемые функцией SPACE$.
В последней строке программы оператором ВЕЕР подается корот­кий звуковой сигнал и происходит переход на повторение процесса (на строку 60).
Эта простая программа могла бы быть усовершенствована разными способами. Например, рисование закрашенного прямоугольника можно осуществить всего лишь одним оператором:
LINE (X, Y) — (X + DX, Y + DY), С, BF
С целью структуризации программы можно применять обращения к подпрограммам (операторы GOSUB и RETURN). Диалог можно организовать на основе меню с использованием операторов ON ... GOTO, ON ... GOSUB и др. Кроме операторов LINE, использованных в данной программе, имеется еще целый ряд графических операторов (CIRCLE, PSET, DRAW, PUT, GET, WINDOW, VIEW и др.), позво­ляющих производить сложные графические построения и манипу­ляции над построенными объектами.
Имеется несколько операторов для генерации звуковых сигналов (ВЕЕР, SOUND, PLAY), а также для манипулирования текстовыми строками. Наконец, имеются операторы для обращения к программам в машинных кодах.
Из этого небольшого обзора видно, что бейсик дает весьма богатые возможности для программирования прикладных систем.
Интерпретатор языка бейсик очень компактен по сравнению с транс­ляторами других языков высокого уровня. Он обычно занимает не-
большой объем памяти — от 32 до 60 Кбайт — и часто записывается в ПЗУ машины, становясь как бы частью аппаратуры.
В связи со своей особой ролью бейсик считается необходимой принадлежностью персонального компьютера. В настоящее время имеется довольно много реализаций этого языка, но наиболее популярна версия бейсика для операционной системы типа MS-DOS.
Как правило, начинающие программисты пользуются языком бейсик для составления своих Первых программ, но и переходя впо­следствии к более профессиональному программированию, часто остаются приверженцами этого языка.
Бейсику отводится ведущая роль в школьном образовании, как языку обучения основам программирования. Именно поэтому в стан­дартном комплекте программного обеспечения для школьных машин предусмотрена обязательная реализация бейсика.
Языки паскаль и си. Языки паскаль и си чаще всего используются профессиональными системными программистами для разработки си­стемных и прикладных программ. Оба эти языка позволяют работать с данными сложной структуры; оба имеют развитые средства для вы­деления отдельных частей программ в процедуры. Трансляторы с этих языков работают в режиме компиляции, что позволяет создавать эф* фективные машинные программы. Важным средством для построения больших программных систем является модульность, т. е. возможность независимой разработки отдельных частей программ и последующего их связывания в единую систему. Все эти особенности способствовали тому, что именно на паскале и си разрабатывается большинство крупны» программных систем для персональных компьютеров.
Следует отметить, что между указанными языками, несмотря на общее сходство, имеются существенные различия. Паскаль является классическим языком программирования, который первоначально (в 1969 г.) был создан как учебный язык и лишь спустя 5 — 6 лет при­обрел популярность как отличный инструмент для решения серьезных задач. Программы на паскале понятны любому программисту-про­фессионалу, в то же время они транслируются в эффективные машинные коды. Программирование на паскале обеспечивает высокую степень надежности программ. В настоящее время разработано более десятка разных трансляторов с паскаля для ПЭВМ.
Паскаль, наряду с бейсиком, считается также учебным языком; он принят во многих учебных заведениях как- базовый язык для из­учения программирования.
Язык си, в отличие от Паскаля, с момента своего появления (1972 г.) был ориентирован на разработку системных программ. Он, в частности, послужил главным инструментом для создания операционных систем ЮНИК.С и MS-DOS. В этом языке имеются более гибкие средства для эффективного использования особенностей аппаратуры, чем в паскале.
138
Благодаря этому порождаемые машинные программы, Кай правило, более компактны и работают быстрее, чем программы, полученные паскаль-трансляторами. С другой стороны, синтаксис языка си менее прозрачен, чем у паскаля; возможностей для внесения ошибок больше; чтение текстов программ требует определенного навыка. В связи с этим язык си применяется главным образом для создания системных и при­кладных программ, в которых скорость работы и объем памяти являются критическими параметрами.
Язык модула-2. Стремление к созданию подлинно универсального и эффективного инструмента системного программирования привело к разработке нового языка — модула-2. Этот язык предложен изве­стным ученым Н. Виртом — автором паскаля. Наследуя лучшие черты паскаля, в том числе его ясный синтаксис, модула-2 обладает лучшими средствами для разработки больших программных комплексов и по­зволяет более эффективно использовать особенности аппаратуры. Таким образом, этот новый язык призван заполнить нишу между Паскалем и си.
В языке модула-2 явно сформулированы средства оформления программных модулей и организации взаимодействия между ними, в том числе на основе так называемых сопрограмм, работающих псевдо-параллельно. В более распространенных языках, например в паскале и си, эти средства вводятся стихийно — в одних трансляторах они поддерживаются, в других нет. В языке модула-2 явными операто­рами задается экспорт и импорт внешних объектов.
По мере появления хороших трансляторов и приобретения опыта работы с ними модула-2 может занять ведущее место в иерархии языков высокого уровня для ПЭВМ.
Фортран и Кобол. Язык фортран, как один из самых старых языков высокого уровня, активно используется и на персональных компьюте­рах. Применяется он главным образом при разработке прикладных систем, ориентированных на научные исследования, автоматизацию проектирования и другие области, где уже накоплены обширные стан­дартные библиотеки программ. Имеется несколько версий этого языка, из которых наиболее популярна версия фортран-77.
Другой «старый» язык — кобол, широко распространенный на больших и средних машинах, на персональных компьютерах почти не используется, хотя для него разработано несколько трансляторов. Дело в том, что вместо кобола в задачах экономического и управленче­ского характера с гораздо большим успехом могут использоваться интегрированные системы, базы данных и другие типы прикладных систем.
Кроме основных названных языков высокого уровня, следует упомянуть другие языки, получившие распространение на ПЭВМ: лого, лисп, пролог, АПЛ, форт.
139
Язык лого. Язык лого создан с целью обучения детей младшего возраста основам алгоритмического мышления и программирования. Этот язык реализован для большинства персональных компьютеров, применяемых в школах. Хотя лого был разработан до того, как нача­лось массовое распространение персональных компьютеров, именно с их появлением этот язык привлек внимание и приобрел популярность.
В отличие от бейсика, в лого используется концепция прямого управления движущимся на экране объектом. В роли такого объекта выступает специальный маркер, называемый черепашкой. С помощью простых, понятных ребенку операторов можно заставить черепашку двигаться по экрану и при этом рисовать или не рисовать за собой цветную линию. Типичные операторы лого: ВПЕРЕД, ВПРАВО, ВЛЕВО, НАЗАД, ПОВЕРНУТЬ, ПОДНЯТЬ ПЕРО, ОПУСТИТЬ ПЕРО, СМЕНИТЬ ЦВЕТ и др. Аргументы этих операций — числа, обозначающие число точек на экране, на которые нужно продвинуться, или число градусов для поворота. Операторы можно объединять в про­цедуры и затем вызывать эти процедуры с фактическими параметрами. Это свойство роднит лого с мощными языками программирования, такими как паскаль или лисп, и позволяет на простых игровых ситу­ациях освоить основные принципы структурного программирования.
Языки лисп и пролог. Язык лисп является идеальным инструмен­тальным средством для построения программ с использованием методов искусственного интеллекта. Имеется несколько реализаций лисп-трансляторов для персональных компьютеров разных классов. Осо­бенность этого языка состоит в удобстве динамического создания новых объектов. В качестве порождаемых программой объектов могут фигу­рировать и сами программы (функции), которые внешне ничем не от­личаются от данных. Это открывает неожиданные возможности, кото­рых нет в других языках программирования, такие как построение адаптирующихся и самоизменяющихся программ и др. Память в лиспе используется динамически — когда создается новый объект, для него из «свободной» памяти берется ровно столько ячеек, сколько нужно для хранения всех элементов; при этом не требуется никакого заблаго­временного резервирования памяти, как в других языках (например, паскале). При уничтожении объекта занятая им память автоматически освобождается.
Другая особенность языка лисп — функциональный способ записи программ, который, в частности, стимулирует составление рекурсивных алгоритмов, отличающихся выразительностью и компактной записью.
В последнее время в «традиционный;; лисп внесен ряд дополнений, повышающих его пригодность к составлению больших и эффективных программ. Сюда относится расширение первичных (встроенных) типов данных, в частности, добавление массивов и специальных типов таблиц, введение таких управляющих конструкций, как WHILE и др., суще-
140
ственное расширение возможностей ввода/вывода, в том числе для работы с графической информацией на дисплее, стандартизация средств перехвата ошибок и отладки, введение механизма макрогенерацни и др.
Большинство экспериментальных систем искусственного интел­лекта — для анализа визуальных сцен, управления роботами, анализа текстов на естественном языке и др. — разрабатывается с использова­нием языка лисп.
Другой язык, применяемый при разработке систем искусственного интеллекта, — пролог. Этот сравнительно молодой язык, в основе которого лежит аппарат математической логики, позволяет разрабаты­вать на основе ПЭВМ экспертные системы, базы знаний и системы обработки естественного языка.
Программа на прологе содержит, во-первых, набор предикатов-утверждений, которые образуют проблемно-ориентированную базу данных. Другой тип выражений — это правила, имеющие вид условии «чтобы было X, нужно Y» или «имеет место X, если справедливо Y», где X и Y — любые предикаты или переменные.
Работа программы начинается с ввода предиката — утверждения или вопроса, который возбуждает перебор имеющихся в базе данных предикатов и правил, пока не будет достигнуто доказательство истин­ности или ложности исходного утверждения. В ходе такого доказатель­ства, основанного на идеях метода резолюций, происходит присваива­ние значений переменным; эти значения представляют побочный ре­зультат работы программы и могут содержать ответ на поставленный в исходном предложении вопрос.
Языки АПЛ и форт. Язык АПЛ, реализованный для нескольких моделей персональных компьютеров, наиболее пригоден для инженер­ных расчетов. На этом языке особенно легко формулируются задачи, связанные с операциями над векторами и матрицами. На основе языка АПЛ часто реализуются также специализированные прикладные системы — такие как системы машинной графики. Этот язык обеспе­чивает компактную запись алгоритмов и эффективные вычисления.
Однако для удобной работы с этим языком требуется довольно большой набор специальных символов, которые приходится наносить на клавиши стандартной клавиатуры. Это приемлемо лишь при система­тическом использовании данного языка. В связи с этим применение АПЛ на персональных компьютерах не получило особенно широкого распространения.
Язык форт также относится к числу своеобразных языков. Он обладает структурой, позволяющей создавать очень компактные транс­ляторы. Объем требуемой памяти для транслятора, совмещенного с редактором, — менее 15 Кбайт. Это стимулировало появление форта еще на 8-разрядных персональных компьютерах первого поколения. Однако программирование на этом языке требует специальных на-
141
выков, поскольку базируется на особой нотации — «обратной польской записи». В связи с этим, несмотря на определенную привлекательность, форт получил распространение лишь в кругу своих активных поклон­ников.
Язык ада. Язык ада был предложен как универсальный инстру­мент для разработки больших программных систем, в первую очередь для решения задач реального времени. Однако несмотря на попытки придать ему статус универсального языка для всех применений, значи­тельного распространения на ПЭВМ язык ада пока не нашел. Главная причина этого лежит, по-видимому, в его чрезмерной сложности, по­скольку в подавляющем большинстве приложений ПЭВМ вполне достаточно возможностей, обеспечиваемых языками паскаль, си, мо-дула-2. Будущее этого языка на персональных компьютерах пока неопределенно.
Критерии выбора языка программирования. Когда возникает не­обходимость создания большой программной системы или составления программы для решения какой-либо частной задачи, встает вопрос о выборе для этой цели наиболее подходящего языка программирова­ния. Во многих случаях такой выбор диктуется очень простыми «зем­ными» факторами — доступностью того или иного транслятора и уме­нием составлять программы на данном языке. Если, однако, в рас­поряжении -пользователя имеется достаточно большой выбор языков программирования, то следует учитывать следующие обстоя­тельства:
— назначение разрабатываемой программы — нужна ли она вре­менно или будет использоваться постоянно, планируется ли передавать ее другим организациям, будут ли разрабатываться ее новые версии;
— требуемая скорость работы программы, соотношение ее диалого­вых и вычислительных компонентов;
— ожидаемый размер программы — можно ли будет ее создавать как единое целое или придется разбивать на отдельные взаимодей­ствующие модули, требуется ли минимизировать размер памяти, за­нимаемой программой во время работы;
— необходимость сопряжения разрабатываемой программы с дру­гими пакетами или программами, в том числе составленными на других языках программирования;
— предусматривается ли возможность переноса программы на другие типы ПЭВМ;
— основные типы данных, с которыми придется иметь дело, необ­ходимость поддержки работы с действительными числами, строками, списками и другими типами структур;
— характер и уровень использования аппаратных средств — дисплея, клавиатуры и др., необходимость в специальном программи­ровании некоторых функций для работы с внешними устройствами;
142
— возможность и целесообразность использования имеющихся стандартных библиотек подпрограмм, процедур, функций.
С точки зрения этих критериев возможности языков могут весьма сильно различаться, поэтому правильный выбор инструментального языка программирования является, вообще говоря, непростой задачей.. Для программиста или даже коллектива программистов характерно начинать использование ПЭВМ с языка бейсик. На бейсике реализовано довольно много хороших прикладных систем. Появление компиляторов для йейсика делает этот язык еще более привлекательным, так как позволяет быстро переходить от экспериментальной, интерпретируемой версии программы к ее окончательной «коммерческой» версии.
Если встает задача построения большой прикладной системы, в которой должно быть несколько взаимодействующих модулей, и при этом необходима еще экономия памяти и достижение максимально возможного быстродействия программ, преимущество бейсика кан быстрого и удобного для работы языка программирования отступает на второй план. Здесь обычно возникает выбор между использованием языков паскаль или си. Как указывалось, паскаль является более ортодоксальным языком, зато си позволяет программисту быть ближе к аппаратным средствам и более эффективно программировать крити­ческие места. Однако в целом эти языки сравнимы. Решающими для выбора могут стать конкретные особенности имеющихся в распоряжении программистов трансляторов, наличие библиотек со стандартными функциями. Часто выбор определяется тем, на каком языке програм­мируют коллеги данного программиста или с какими другими системами и отдельными программами предстоит стыковать разрабатываемую программу.
Стыковка отдельных модулей или программ представляет собой отдельную проблему, которая может решаться разными способами и, в частности, может повлиять на выбор инструментального языка (или языков) программирования. В следующем параграфе подробнее рас­сматриваются методы стыковки программных модулей в рамках одного языка или программ на разных языках.
4.5. Особенности разработки прикладных систем
При создании прикладных систем на ПЭВМ большая часть про­граммных модулей составляется на языках высокого уровня (ЯВУ). Имеется несколько вариантов организации их взаимодействия, осно­ванных как на свойствах ЯВУ, так л на особенностях операционных систем. Довольно часто возникает необходимость в программировании машинно-зависимых частей на языке ассемблера или макроассемблера, в связи с чем встает задача организации взаимодействия программ на ЯВУ с программами на ассемблере.
143
При проектировании большой прикладной системы с самого начала необходимо решить несколько принципиальных вопросов, касающихся общей структуры системы и способа взаимодействия отдельных компо­нентов. В частности, должны быть определены следующие харак­теристики.
A. Состав исходного текста программ, который может представлять собой:
А1) единый текст на ЯВУ или на ассемблере;
А2) отдельные текстовые модули на ЯВУ или на ассемблере, кото­рые составляются независимо и, возможно, даже разными людьми.
Б. Структура исполняемой программы, которая может представ­лять собой:
Б1) единый модуль, полностью загружаемый в оперативную память при запуске системы;
Б2) несколько сегментов, загружаемых в оперативную память по мере необходимости с частичным взаимным перекрытием (наложе­нием друг на друга);
БЗ) резидентную часть, загружаемую в оперативную память в на­чале сеанса, и одну или несколько нерезидентных частей, загружаемы» в оперативную память по мере необходимости.
B. Способ хранения данных, с которыми работает система. Основ­ные варианты хранения:
81) все данные располагаются в одном файле;
82) данные распределены по нескольким файлам.
Различные сочетания указанных характеристик приводят к по­строению прикладных систем, которые могут отличаться очень сильно. Варианты А влияют на способ и качество разработки. Варианты Б оказывают критическое воздействие на оперативные характеристики системы — объем требуемой памяти и быстродействие. Варианты В, с одной стороны, влияют на быстродействие при доступе к данным, с другой стороны — на характер использования и экономию внешней памяти.
Рассмотрим несколько приемов реализации указанных характе­ристик при построении прикладных систем.
4.5.1. Структурирование программ на уровне текстовых модулей. Простые программы. Самый простой способ разработки программ не предполагает применения каких-либо приемов деления их на модули или на сегменты. Для составления такой программы обычно используется текстовый редактор общего назначения или редактор, встроенный в систему (как, например, в языке бейсик или в системе программирования TurboPascal). Процесс разработки программы соот­ветствует общей схеме, изображенной на рис. 4.3.
Простейшая программа на паскале, печатающая на экране слово «Hello», может выглядеть следующим образом:
144
PROGRAM Test; BEGIN
WRITELN ('Hello'); END,
Аналогичная программа на языке си имеет следующий вид: main ( )
printf ("Hello");
}
Более сложные программы включают описания типов данных, переменных, констант. Важнейшими компонентами программ на ЯВУ являются процедуры и функции, которые обеспечивают структуризацию программ на уровне исходных текстов. Так, например, общая структура программы на паскале может иметь вид:
PROGRAM имя-программы (параметры-программы)'; (описания глобальных объектов программы — типов данных, переменных, констант) PROCEDURE PI (параметры процедуры Р1); <описания локальных объектов процедуры- Pi> BEGIN
<тело процедуры Р1> END;
PROCEDURE Р2 (параметры процедуры Р2); (описания локальных объектов процедуры Р2) BEGIN
(тело процедуры Р2)
END;
BEGIN
(начало тела программы)
... Р1 (...);... {обращение к Р1}
. . . Р2 ( ...); ... {обращение к Р2}
(конец тела программы) END.
В этом тексте можно выделить три основных компонента:
— заголовок программы — название, список параметров, описания типов, глобальных переменных, констант;
— описания процедур — их заголовки с описаниями параметров и тела, состоящие из выражений;
— тело программы — последовательность выражений ( среди ко­торых встречаются обращения к определенным выше процедурам.
Таким образом, структуризация программы на уровне исходного текста обеспечивается благодаря оформлению отдельных частей алго-
ритмов в виде процедур и последующему вызову этих процедур в теле программы. Все необходимые связи между формальными и фактиче­скими параметрами процедур устанавливаются транслятором данного языка программирования. В разных языках способы оформления ука­занных компонентов различаются, но общий принцип сохраняется,
В частности, в языке Си отсутствует, как гаковой, заголовок про­граммы. Вместо него используется специальная «главная» процедура-функция с именем main, аргументы которой интерпретируются так же, как аргументы программы в паскале.
В начальной части программы на си можно, как и на паскале, ввести описания глобальных переменных и констант. В теле программы точно так же могут использоваться обращения к определенным ранее функциям (в языке си все процедуры являются функциями), а также к переменным и константам.
В бейсике, в отличие от паскаля и си, нет средства для явного определения процедур. Их роль играют просто участки программ, оканчивающиеся оператором возврата RETURN. Такие участки на­зываются подпрограммами, и к ним можно обращаться с помощью оператора GOSUB из любых других точек программы. При структурном программировании на бейсике подпрограммы обычно размещают в конце, а основные операторы — в начале текста программы.
Текстовая подстановка программных мо­дулей. Рассмотренный выше подход позволяет создавать программы, тексты которых представляют собой единое целое и хранятся в отдель-ных массивах на внешних носителях.
Один из приемов деления исходного текста программы на отдель­ные части состоит в использовании метода макрогенерации. В текст главной программы вводятся специальные выражения, указывающие компилятору на необхбдимость включения в нее текста других модулей, В системе программирования на основе паскаля «включение» тестового файла Ml.PAS в программу осуществляется с помощью выражения вида:
{$INCLUDE; 'Ml.PAS'}
На языке Си включение в программу текстового файла STDIO.H обеспечивается выражением вида:
#include "stdio.h"
Возможность текстовой подстановки позволяет при вводе (редакти­ровании) исходных текстов программ иметь дело с относительно не­большими фрагментами текста, каждый из которых содержит опре­деленную группу функций.
4.5.2. Раздельно компилируемые модули и библиотеки процедур. В рассмотренном выше методе соединение текстов отдельных модулей
146
происходит в самом начале процесса трансляции — при макроподста­новке; основная же работа транслятора производится над полностью собранным текстом. Если составленная таким образом программа велика по объему, например содержит от 500 до 1000 и более строк, то процесс трансляции может занимать довольно много времени — до нескольких минут, что весьма обременительно при интенсивной отладке, когда приходится часто вносить небольшие изменения в исход­ные тексты и вновь транслировать программу.
Чтобы избежать указанного недостатка, применяется другой под-код к построению больших программ — составление отдельных моду­лей, которые транслируются совершенно независимо друг от друга и должны связываться лишь на стадии окончательного формирования исполняемой программы в машинных кодах.
Так, в некоторых реализациях языка паскаль (в частности, в си­стеме IBM-Pascal) можно использовать два типа раздельно компилиру­емых модулей: MODULE и UNIT, Рассмотрим способы оформления указанных модулей.
Модуль типа MODULE. Модуль типа MODULE внешне оформляется почти как главная программа; его основной целью яв­ляется описание нескольких взаимосвязанных процедур вместе с не­обходимыми типами, переменными и константами. Тело у модуля обычно отсутствует. Рассмотрим простой пример такого модуля:
{--------------------------------- Модуль P1 .PAS--------------:------------------}
MODULE PI;
PROCEDURE PP1 (AiINTEGER); [PUBLIC]
BEGIN (тело процедуры РР1)
END; PROCEDURE PP2(B: REAL); [PUBLIC1
BEGIN (тело процедуры РР2)
END; BEGIN END.
{--------------------------------------------------------:----------------\
Описанные в этом модуле процедуры РР1 и РР2 снабжены спе­циальными указателями [PUBLIC], которыесвидетельствуют об общедоступности этих процедур для других программ.
Чтобы использовать указанные процедуры в главной программ» и в других модулях, их необходимо объявить там следующим образом:
PROCEDURE PP1 (A-.INTEGER); EXTERNAL; PROCEDURE PP2 (В:REAL); EXTERNAL;
Указатель EXTERNAL свидетельствует, что объявленные таким способом процедуры являются внешними по отношению к тому модулю, который их использует. Однако обращения к ним в его теле имеют самый обычный вид, и в этом смысле внешние процедуры не отличаются от тех, которые описаны непосредственно в данном модуле.
Этот способ применяется не только при модульном программиро­вании в рамках одного ЯВУ, но также и при составлении программ из модулей на разных языках, например на паскале и фортране или на паскале и ассемблере. Главная проблема в этом случае состоит в пра­вильной передаче параметров процедур и функций, поскольку в разных языках параметры могут обрабатываться по-разному.
Модуль типа UNIT. Модуль типа UNIT, который можно назвать иначе «блоком», описывается с помощью двух компонентов. Один из них — реализация блока — содержит тела процедур и вспо­могательные типы, переменные и константы. Другой компонент — описание блока, или интерфейс, — содержит описания типов, пере­менных и констант, а также заголовки процедур (без их тел), кото­рые предназначены для использования в других модулях и в главной программе. В интерфейс блока включается общий список имен ука­занных объектов, что делает их «видимыми» из других модулей.
Пример реализации блока P2.PAS:
{--------------------- Реализация блока P2.PAS ---------------------}
IMPLEMENTATION OF P2; PROCEDURE get_key; BEGIN
(тело процедуры get_key) END;
(описания и тела других процедур) BEGIN END.
Интерфейс этого блока может иметь следующий вид:
{---------------------Интерфейс блока P2.INT---------------------}
INTERFACE; UNIT P2;
(get_key, key_descr,...(HMeHa других процедур) ...); TYPE key_ descr= RECORD scan_code, ascii:byte end; PROCEDURE get_key;
(заголовки других процедур данного блока) i(
END;
{----------------------------------------------------------------------------}
Использование объектов модуля типа UNIT в главной программе требует, во-первых, включения его интерфейса перед заголовком программы; во-вторых, упоминания имени блока сразу после заголовка программы, для чего служит выражение вида:
USES (имя блока);
Начальная часть,программы приобретает в результате такой вид:
{--------------------- Главная программа — PP.PAS ---------------------}
{$INCLUDE: 'P2.INT'}
................
PROGRAM PP (input, output); USES P2;
...............
{-------------------------------------------------------------------}
Здесь текстовое включение интерфейса блока Р2 в программу PP.PAS осуществляется с помощью рассмотренного выше выражения $INCLUDE.
4.5.3. Генерация объектных модулей и загрузочных файлов. В результате компиляции отдельных текстовых модулей порождаются так называемые объектные модули. Например, обращение к трансля­тору IBM-Pascal для трансляции исходной программы PP.PAS имеет вид:
PAS1 PPi PAS2
Объектный модуль, который порождается после двух проходов трансляции (PAS1 и PAS2), можно считать «полуфабрикатом» — куском машинного кода, готовым к превращению в загрузочный файл. Объект­ный модуль заносится в особый файл, которому придается тип OBJ. Следовательно, паскаль-транслятор осуществляет преобразование файла типа PAS в файл типа OBJ. Для рассматриваемого нами примера этот процесс можно изобразить следующей условной схемой:
PP.PAS — транслятор -> PP.OBJ
Следующий этап состоит в преобразовании совокупности отдельных объектных модулей в загрузочный файл, т. е. в файл типа ЕХЕ или СОМ. Этот процесс называется связыванием объектных модулей или сборкой задачи. Соответствующая схема преобразования:
PP.OBJ -* РР.ЕХЕ или PP.OBJ -* PP.COM
Данный этап реализуется специальной системной программой LINK, которую называют редактором связей или компоновщиком. При обращении к LINK указываются все объектные модули, которые должны быть объединены в общую программу; указывается также имя файла с результирующей программой, имя файла с листингом (необязатель-
ный параметр) и имя файла с библиотекой процедур. Пример обраще­ния к LINK для связывания модулей, оттранслированных с паскаля:
LINK PP+P1+P2, РР, PP.LST, PASLIB.LIB
объектные эагру- файл- библиотека
модули зсчный листинг процедур
файл
4.5.4. Библиотеки объектных модулей. Один из способов оформле­ния независимых частей программы состоит в создании библиотек объектных модулей, которые затем можно включать в формируемую задачу на стадии сборки. Для формирования библиотеки объектных модулей служит вспомогательная программа LIB, которая позволяет создать новую библиотеку или пополнить старую библиотеку про­цедурами, которые извлекаются из оттранслированных заранее объ­ектных модулей или из другой библиотеки. Общий вид обращения к программе LIB:
LIB (старая-библиотека) (размер-страницы) (операции), (файл-с-листингом), (новая-библиотека)
При обращении к LIB могут указываться имена старой и новой библи­отек. Размер страницы (= 16,32, ... 512) задает величину буфера для обмена; это необязательный параметр. Главные действия задаются операциями. Операция может иметь следующие разновидности (mm — имя модуля):
+ mm {добавление модуля в библиотеку},
— mm {удаление модуля из библиотеки),
« mm {извлечение модуля из библиотеки}, — (- mm {замена модуля в библиотеке},
— * mm {извлечение модуля с удалением}. Пример обращения к LIB:
LIB OLDLIB +P2, .NEWLIB
Такое обращение вызывает создание новой библиотеки NEWLIB из старой OLDLIB с добавлением отдельно оттранслированного модуля Р2. После того как библиотека создана, достаточно упомянуть ее имя при связывании объектных модулей в единую программу. Обращение к .библиотечным процедурам в главной программе или в любом другом модуле требует их упоминания в начале программы с указателем EXTERNAL, — так же как и в случае использования модулей типа MODULE. При этом необходимо помнить о согласовании типов пара­метров библиотечных процедур и функций.
Каждая система программирования обыкновенно имеет собствен­ную библиотеку стандартных процедур/функций. Файлы с библиоте­ками для паскаль- и си-трансляторов обычно имеют тип LIB. Эти файлы указываются при обращении к компоновщику программ LINK,
Итак, весь процесс трансляции складывается, в общем случае, из следующих стадий:
— формирование текстовых модулей (с использованием текстовой подстановки);
— синтаксический анализ и выдача ошибок, найденных трансля­тором в тексте программы;
— генерация объектных модулей в машинных кодах, оптимизация;
— сборка из объектных модулей исполняемого кода программы. Отнюдь не во всех системах программирования присутствуют все
эти стадии. Например, в популярной системе TurboPascal не поддер­живается раздельная компиляция модулей. Как следствие, отпадает потребность в использовании редактора связей. Это возможно благо­даря тому, что в системе TurboPascal транслятор порождает сразу исполняемый код и работает очень быстро. Это весьма приклекатальнан черта для многих пользователей, несмотря на отсутствие раздельной компиляции модулей.
Большинство трансляторов имеют несколько фаз или проходов, предназначенных для выполнения специфической работы над полным текстом программы. Так, в системе IBM-Pascal транслятор двухпро-ходный, а в системе С86 — четырехпроходный.
Помимо фазы синтаксического анализа и генерации объектных модулей, часто отдельно выделяется фаза оптимизации. Чем больше таких фаз, тем дольше идет процесс трансляции, но зато результиру­ющая программа получается более качественной.
Рассмотренные приемы позволяют при составлении исходных текстов программ иметь дело с несколькими относительно автономными компонентами, которые собираются вместе либо в начале процесса трансляции (текстовое включение), либо при сборке исполняемых программ (использование раздельно компилируемых модулей и библи­отек процедур). Благодаря такому методу программы становятся более удобными для анализа и модификации. Кроме того, появляется воз­можность нескольким программистам участвовать в разработке одной системы; каждый из них может заниматься своими модулями, при усло­вии, что заранее оговорены «соглашения о связях», включающие имена и способы обращения к процедурам, входящим в разные модули. На­конец, раздельная компиляция позволяет собирать программы из модулей, составленных на разных языках программирования, при условии, что согласованы способы передачи и обработки параметров процедур и функций.
4.5.5. Реализация сегментированных программ с перекрытиями. Рассмотренные выше методы структурирования обеспечивают незави­симую разработку отдельных частей прикладной системы; однако получаемый в результате исполняемый программный код представляет собой единый файл, который при вызове программы должен полностью
151
разместиться в оперативной памяти. Это далеко не всегда устраивает разработчиков системы. Необходимы способы деления программ на такие части (сегменты), которые могли бы постоянно находиться во внешней памяти и загружаться в оперативную память лишь по мере необходимости.
В рамках развитой системы программирования, базирующейся на языке высокого уровня типа паскаль, один из распространенных приемов такого деления программ на части основан на создании пере­крывающихся (оверлейных) сегментов. При таком подходе программа составляется из отдельных кусков, которые во время работы могут по мере необходимости загружаться в оперативную память и частично-накладываться друг на друга.
Сегменты хранятся во внешней памяти (на диске) и лишь один из них — корневой — находится постоянно в оперативной памяти. Когда в корневом сегменте происходит обращение к процедуре, тело которой находится в одном из оверлейных сегментов, отсутствующих в данный момент в оперативной памяти, производится его загрузка с внешнего носителя в ОЗУ. При этом все связи между частями кор­невого сегмента и только что загруженным сегментом начинают выгля­деть так, как если бы они составляли с самого начала единую про­грамму. Точно так же происходит по мере необходимости загрузка других сегментов из внешней памяти.
Сегменты могут быть связаны в сложные деревообразные структуры и при загрузке размещаться в оперативной памяти так, чтобы наиболее эффективно использовать выделенное пространство.
Так, например, в системе TurboPascal можно объявлять оверлейные процедуры, тела которых после трансляции попадают в соответству* ющие оверлейные файлы. Пример такого объявления;
PROGRAM PP(input,output);
OVERLAY PROCEDURE PI; BEGIN
(тело процедуры PI) END; .
OVERLAY PFOCEDURE P25 BEGIN
(тело процедуры Р2) END;
PROCEDURE P3; BEGIN
(тело процедуры РЗ) END;
OVERLAY PROCEDURE P4j
BEGIN
(тело процедуры Р4) END;
BEGIN
(тело программы РР) END.
Трансляция такой программы приведет к созданию трех перекры­вающихся сегментов:
PP.COM
РР.000
PP.001
Первый из них — PP.COM — соответствует главной программе, два других сегмента — оверлейные. При этом по правилам системы TurboPascal процедуры Р1 и Р2 попадут в сегмент РР.ООО, поскольку в исходном тексте их описания следуют одно за другим. Процедура

Рис. 4.4. Соотношение корневого и оверлейных сегментов
Р4 окажется во втором оверлейном сегменте — PP.001. Такое разделе­ние обусловлено тем, что описание Р4 отделено от описаний двух пер­вых процедур внутренней (не оверлейной) процедурой РЗ. Получив­шаяся структура программы может быть отображена схемой, пред­ставленной на рис. 4.4.
Область памяти, выделяемая в корневом сегменте для размещения оверлейных сегментов, рассчитывается системой автоматически, исходя из длины максимального оверлейного сегмента. Процедуры разных оверлейных сегментов, например, Р1 и Р4, не могут вызывать друг друга, так как соответствующие им сегменты не могут одновременно размещаться в оперативной памяти. Чем больше число оверлейных
сегментов, тем больше будет происходить обменов с внешними накопи­телями, и работа системы будет замедляться.
Следовательно, применение перекрывающихся сегментов требует тщательного планирования, чтобы наилучшим образом использовать выделяемую оперативную память и при этом не слишком проигрывать б быстродействии системы.
4.6. Организация взаимодействия программ
Взаимодействие программных модулей, рассмотренное в преды­дущем параграфе, основывалось на механизме взаимного вызова про­цедур для конкретных ЯВУ. При этом предполагалось, что отдельные модули хотя и разрабатываются независимо, но достаточно тесно увязаны друг о другом, т. е. имеют согласованные процедурные интер­фейсы.
Довольно часто, однако, встает вопрос об организации взаимо­действия программ, которые составлены независимо и к тому же на разных языках программирования (например, си и паскаль). В этом случае для взаимного вызова программ можно воспользоваться пре­рываниями ДОС. Другой универсальный метод взаимодействия — использование подпрограмм на языке ассемблера, через посредство которых можно не только иметь прямой доступ к аппаратуре, но и осуществлять передачу параметров между разными программами на ЯВУ. Рассмотрим кратко особенности указанных методов.
4.6.1. Взаимодействие программ через прерывания ДОС. В ДОС имеется специальное прерывание с десятичным номером 33 (шестнад-цатеричный номер 21 Н), через которое любая прикладная программа может иметь доступ к внутренним функциям операционной системы. В их число входит несколько функций, с помощью которых может быть организован взаимный вызов программ. Дадим краткое описание этих функций.
Функция 31 Н (здесь символ Н означает, что число является шест? надцатеричным) останавливает данную программу и оставляет ее в оперативной памяти резидентной, что дает возможность позднее вновь обратиться к ней через соответствующую точку входа.
Функция 4В Н обеспечивает вызов (загрузку с диска и переход на исполнение) другой программы. Когда вызванная таким образом программа закончится, управление автоматически возвращается вызы­вавшей программе. Имеется вариант этой функции, когда файл только загружается с диска, но не исполняется; это используется для загрузки перекрывающихся сегментов программ или загрузки данных.
Функция 4С Н оканчивает работающую программу с засылкой в системный регистр AL кода возврата. Этот код может быть взят и проанализирован вызвавшей программой, для чего используется
154
функция 4D. Функция 4D позволяет выяснить, по какой причине окончилась вызванная программа, Причин может быть четыре:
— нормальное окончание;
— окончание в результат* нажатия пользователем клавиш Ctrl -j-4- Break;
— окончание в резу«»тате фатальной ошибки внешнего устройства;
— окончание в. результате применения функции 31. Функции 48 Н и 49 Н позволяют соответственно запросить у ДОС
оперативную память для работы программы и освободить ее. Функция 4А Н позволяет изменить (уменьшить или увеличить) выделенную па­мять. Указанные функции дают возможность прикладной программе регулировать объем занимаемой оперативной памяти.
Большинство развитых систем программирования на основе ЯВУ обеспечивает обращение к прерываниям ДОС через специальные про­цедуры. При этом в регистры микропроцессора засылаются необходимые параметры. Так, например, в системе TurboPascal обращение к преры­ванию ДОС осуществляется процедурой:
INTR (InterruptNo, Registers)
Здесь параметр InterruptNo: INTEGER — целое десятичное число, указывающее номер прерывания. Параметр Registers — это список базовых регистров микропроцессора:
Registers = RECORD
АХ, ВХ, СХ, DX, ВР, SI, Dl, DS, ES, Flags: INTEGER! END;
При обращении к прерыванию ДОС необходимо сначала занести в ре­гистры нужные значения, а после завершения прерывания из них можно извлечь результаты работы.
Каждый из этих двухбайтовых регистров состоит фактически из двух однобайтовых (полу)регистров. Например, двухбайтовый регистр АХ состоит из двух однобайтовых — АН и AL. Однобайтовые регистры используются для передачи информации в ДОС. Так, по принятому в ДОС соглашению регистр АН служит для задания номера функции, вызываемой через любое прерывание.
Если, например, в прикладной программе применяется прерывание 21 Н и через него вызывается функция 4В Н (загрузка и запуск другой программ-ы), то регистры заполняются следующим образом!
АН = 4В — номер вызываемой функции;
AL — признак загрузки программы с исполнением (AL «= 0) или без исполнения (AL = 1);
DS ; DX — два указанных регистра содержат «длинный» адрес строки с расширенным именем файла;
ES; BX — два этих регистра содержат длинный адрес управля­ющего блока запускаемой программы, который должен быть оформлен соответствующим образом.
Чтобы пользоваться указанным методом для организации взаимо­действия программ, от программиста требуется определенная профес­сиональная подготовка, в частности, знание архитектуры ПЭВМ и ДОС, уменение работать с значениями регистров и др.
Обладание этими приемами открывает доступ к мощным средствам управления программами. Использование разных языков программи­рования в этом случае уже не будет препятствием для сочетания раз­личных программ в рамках одной прикладной системы. Кроме того, через прерывания ДОС можно непосредственно обращаться к функ­циям, обслуживающим различные внешние устройства — дисплей, клавиатуру, дисковые накопители, принтер, коммуникационные ка­налы.
4.6.2. Взаимодействие с программами на языке ассемблера. Помимо возможности прямого обращения к прерываниям ДОС из программ на ЯВУ, при создании сложных прикладных систем обычно возникает необходимость в использовании машинно-ориентированных программ на языке ассемблера (часто говорят «программ на ассемблере» или «ассемб­лерных программ»). Более того, с целью повышения быстродействия или сокращения требуемых объемов памяти на ассемблере иногда со­ставляются значительные куски прикладных программ.
В этих случаях возникает задача организации взаимодействия программ на ЯВУ с ассемблерными программами. Прежде всего отме­тим, что ассемблерные программы могут объединяться с другими про­граммами на уровне объектных модулей — с помощью компоновщика LINK. Главная проблема состоит во взаимной передаче параметров между такими программами. Рассмотрим общий метод передачи пара­метров в ассемблерные программы.
Допустим, имеется ассемблерная процедура для установки поло­жения курсора в дисплейном окне, которая должна быть доступна из программ на паскале. Описание соответствующей процедуры в па-
скаль-программе может иметь вид:

PROCEDURE CURPOS (LINE : INTEGER; POS: INTEGER); EXTERNAL;
Соответственно обращение к этой процедуре в паска ль-программе
может иметь вид:
CURPOS (L, Р);
Вызываемая программа на ассемблере имеет следующий пример, вый вид:
WINDOW SEGMENT 'CODE' ;начало сегмента с именем
WINDOW PUBLIC CURPOS объявление «общедоступной»
процедуры CURPOS CURPOS PROC FAR ;обеспечение «дальнего» вызова
процедуры
PUSH BP ;сохранение старого указа-
теля на «фрейм» MOV BP, SP ;установка нового положения
;«фрейма» PUSH AX ;сохранение старых значений
регистров
PUSH ВХ ;АХ и ВХ
MOV ВХ, [ВР+6] ;перенос в регистр ВХ 2-го
;параметра MOV АХДВР+8] ;перенос в регистр АХ 1-го
параметра
(выполнение необходимых действий с использованием параметров, сохраненных в регистрах АХ и ВХ)
POP ВХ ;восстановление регистров ВХ
; и АХ
POP AX
POP BP ;восстановление старого указа-
теля на стек
RET 8 ;возврат из процедуры со сдви-
;гом указателя ;стека на 8 байт назад CURPOS . ENDP ;конец тела процедуры
CURPOS WINDOW END ;конец сегмента WINDOW
В приведенном примере можно отметить несколько характерных деталей. Прежде всего необходимо пояснить, что передача информации между вызывающей программой и данной процедурой осуществляется через стек — последовательность машинных слов, в которую данные «заталкиваются» оператором PUSH и «выталкиваются» оператором POP. В стек автоматически заносится также адрес возврата из процедуры. На текущую ячейку стека указывает содержимое регистра SP. В ре­гистре ВРнаходится указатель на фрейм,т.е. на ту часть стека, в кото­рой хранятся данные, относящиеся к вызванной процедуре.-
В начале процедуры происходит сохранение в стеке старого зна­чения регистра ВР, а также регистров АХ и ВХ, которые далее пона-
добятся для работы. Затем происходит очень важная операция -» из стека командой MOV извлекаются значения двух параметров (за­данных в обращении к Паскаль-процедуре CURPOS как значения пере­менных L и Р). Эти значения заносятся соответственно в регистры АХ и ВХ и используются затем для выполнения основных действий — установки положения курсора в дисплейном окне.
Положения параметров в стеке фиксированы относительно начала фрейма, заданного значением указателя ВР. Первые 4 байта заняты адресом возврата и старым значением SP, еще 2 байта — регистром счетчика команд, а параметры занимают по 2 следующих байта и по­этому адресуются конструкциями вида [ВР + 6] и [ВР + 8]. Следует иметь в виду, что при обращении к данной процедуре из Паскаля стек заполняется от старших адресов к младшим, поэтому первый параметр находится дальше всего от позиции, на которую указывает регистр ВР. Если бы параметров было 4, то они адресовались бы с помощью следующих выражений:
[ВР + 6] — адрес 4-го двухбайтового параметра,
[ВР + 8] — адрес 3-го двухбайтового параметра,
[ВР + 10] — адрес 2-го двухбайтового параметра,
, [ВР+12] — адрес 1-го двухбайтового параметра.
Важным моментом является то, что в данном примере процедура CURPOS не меняет значений указанных параметров. Это позволяет передать их из паскаль-программы по значению, т. е. попросту скопи­ровать в стек. Если же предполагается изменение параметров в ассемб­лерной процедуре, то их нужно передавать по ссылке. Для этого описа­ние процедуры CURPOS в паскаль-программе должно было бы содер­жать описания параметров с указателем VAR или VARS, т. е. иметь, например, следующий вид:
PROCEDURE CURPOS (VAR LINE : INTEGER; VAR POS : INTEGER); EXTERNAL;
В этом случае и извлечение параметров в ассемблерной процедуре должно быть оформлено по-другому. Сначала нужно извлечь из стека ссылку на параметр (его адрес), а затем уже взять по этому адресу значение ячейки. Соответствующие операторы для 1-го параметра выглядели бы следующим образом:
M0V ВХ, [ВР+8] -.занесение в ВХ адреса 1-го параметра M0V АХ, [ВХ] занесение в АХ значения 1-го параметра
Возврат значения этого параметра паскаль-программе должен быть в этом случае осуществлен обратными операциями:
M0V ВХ, [ВР -(- 8] установка в ВХ адреса 1-го параметра M0V [ВХ],АХ ;возврат значения из АХ в 1-й параметр
Аналогичным образом следует поступить со 2-м и со всеми последую­щими параметрами.
Следует иметь в виду, что в фортране передача параметров осуще­ствляется только по ссылке, вне зависимости от того, меняются ли значения параметров в вызываемых подпрограммах или нет.
В языке си по умолчанию параметры передаются по значению, но поскольку в этом языке очень часто сами значения являются адре­сами других ячеек, то при работе с передаваемыми параметрами сле­дует проявлять очень большую аккуратность. Поскольку ни в языке си, ни тем более в ассемблере нет никакого контроля за правильностью передачи параметров, вся забота о правильной обработке ссылок и зна­чений возлагается на программиста, В ся можно явно указать, что переменная должна содержать адрес, а не значение; для этого пере­менная снабжается префиксом *. Здесь проявляется некоторое сход­ство с языком паскаль, где для этой же цели служит указатель VAR.
Помимо того, в си порядок размещения параметров на стеке про­тивоположен рассмотренному выше и принятому в паскале, а разме­щаются они на два байта ближе к началу фрейма, чем в случае паскаля. Наконец, в си, в отличие от паскаля, допускается переменное число параметров при обращении к функциям, что может дополнительно усложнить их обработку в ассемблерной программе.
Из всего этого следует, что одна и та же ассемблерная подпрограмма не может обслуживать программы и на си, и на паскале, если только не применять специальных ухищрений. Для интерфейса с каждым из этих языков требуется свой подход к передаче и обработке пара­метров.
4.6.3. Резидентные программы. Часто бывает необходимо, чтобы служебная программа сработала один раз и осталась в памяти для того, чтобы к ней позднее могли обращаться другие программы. Такую программу называют резидентной, в отличие от обычных программ, которые по окончании работы освобождают занятую память.
Как указывалось выше, ДОС-функция 3! Н осуществляет остановку программы и оставляет ее резидентной в памяти. К этой функции можно обращаться непосредственно из программы на ЯВУ, если в нем обеспечивается доступ к прерываниям ДОС. Можно выполнить те же действия, используя соответствующую ассемблерную подпрограмму. Фрагмент программы на ассемблере, предназначенной для реали­зации указанной операции, имеет следующий вид:
PUSH ES запоминание начала программы в стеке
POP AX ;вь!талкивание адреса начала
программы из стека а регистр АХ
MOV DX, SEG ZZ ; занесение адреса конца программы ZZ
;в регистр DX
SUB DX, AX ;вычисление длины программы
INC DX ;увеличение длины на 1
MOV АН, 31Н ;задание в регистре АН номера
;функции 31 Н (остановить задачу и ;сделать ее резидентной)
ЩТ 21Н ;обращение к прерыванию 21 Н
ZZ SEGMENT 'ZZ' ;конец программы ZZ
ZZ ENDS
Такая подпрограмма может быть соединена с любой другой про­граммой на ЯВУ и использована для создания резидентной копии задачи.
4.6.4. Связывание программ через потоки ввода/вывода. Рассмо­тренные выше приемы основаны на проникновении внутрь операцион­ной системы и требуют, как правило, тщательного программирования . для обработки параметров, передаваемых между программами. Су­ществует, однако, гораздо более простой путь для организации взаимо­действия программ, основанный на стандартном сервисе, предостав­ляемом ДОС.
В ДОС имеется понятие стандартного входного и стандартного выходного устройства. По умолчанию »ти устройства соответствуют клавиатуре и дисплею. Имеется возможность переопределять стандарт­ные устройства (или потоки) ввода и вывода. Вместо клавиатуры и дисплея в этой роли могут выступать, во-первых, различные внешние устройства (например, принтер или коммуникационный канал), во-вторых, любые дисковые файлы, и, в-третьих, любые программы, работающие со стандартным входом и выходом.
В программе на ЯВУ стандартное входное и стандартное выходное устройства доступны через обычные операторы ввода/вывода: в па-скале ~ READ и WRITE, в языке си — getchar, putchar и printf. Любой начинающий программист знает, что такие операторы позво­ляют обмениваться информацией с клавиатурой и дисплеем, не заду­мываясь о том, что здесь кроются более широкие возможности.
В командной строке, обращенной к ДОС и предусматривающей .запуск какой-либо программы, можно указать, откуда должен посту­пать в программу стандартный входной поток и куда должен направ­ляться стандартный выходной поток. Благодаря этой возможности можно, не меняя программ, подключать к ним различные внешние устройства и файлы в качестве источников и приемников информации, а также организовывать взаимную передачу информации между от­дельными программами. Если имя программы — РР, то изменить
ее входной и выходной потоки можно командой следующего вида: РР (from) to
Здесь символ «from» соответствует стандартному входному потоку, а символ «to» — стандартному выходному потоку. Приведенная выше запись может иметь варианты, когда указывается только входной или только выходной поток:
РР to
Вместо символов from и to могут фигурировать имена файлов или зарезервированные .имена внешних устройств (CON:,PRN:,LPTl:, LPT2:, СОМ1:, COM2:, AUX:). Следует помнить, что одни внешние устройства могут использоваться только на выходе (например, прин­тер), другие только на входе (например, диджитайзер), но есть и такие устройства, которые способны передавать информацию в обоих направ­лениях (например, модемы).
Если источником или приемником информации для данной про­граммы является другая программа, то используется иное обозначение. Пример такого обозначения для трех взаимосвязанных программ:
РР1 | РР2 | РРЗ
В данном примере стандартный выходной поток программы РР1 свя­зывается со стандартным входным потоком программы РР2, а ее стан­дартный выходной поток, в свою очередь, поступает на стандартный вход программы РРЗ.
Для обозначения таких цепочечных связей между программами используют термин «канал» (англ. pipe). В ДОС такой канал реализуется с помощью временного файла, который операционная система сама создает в корневом каталоге и уничтожает после окончания работы программ. В системе Юникс этот же самый механизм реализуется при помощи внутренних файлов, благодаря чему обмен информацией между программами происходит гораздо быстрее.
Программа, которая принимает данные со стандартного входа и передает их (после обработки) на стандартный выход, называется фильтром. В приведенном выше примере роль фильтра играла про­грамма РР2. К фильтрам относятся некоторые системные утилиты ДОС: SORT, MORE.
Программа-фильтр «пропускает» через себя соответствующую информацию, осуществляя ее переработку. Так, фильтр SORT обеспе­чивает сортировку пропускаемых через него текстовых данных; MORE пропускает текст порциями по 24 строки с остановками (используется при выводе текстов файлов на экран). В принципе можно составлять собственные программы-фильтры, которые будут осуществлять необ­ходимую переработку последовательных потоков данных. Это может понадобиться, например, при организации связи ПЭВМ с большой
ЭВМ, при необходимости перекодировки текстов и при других опе­рациях.
Описанный метод взаимодействия программ очень прост, но имеет очевидные недостатки. Во-первых, передача информации между про­граммами осуществляется только посредством последовательного по­тока, а не с помощью параметров, как это имеет место при проце­дурном взаимодействии. Во-вторых,у программ занимаются стандартные каналы ввода-вывода, а это часто бывает неприемлемо. В-третьих, указанный обмен происходит сравнительно медленно, поскольку реализуется через обычную файловую систему.
Таковы основные методы разработки прикладных систем на язы­ках высокого уровня. В следующих главах мы рассмотрим некоторые прикладные системы уже с точки зрения пользователя. Будут рассмо­трены методы построения автоматизированных рабочих мест на основе персональных компьютеров, а также порядок работы с некото­рыми типами прикладных систем.
Г л а в а б
Прикладные системы на персональных компьютерах
6.1. Автоматизированное рабочее место на основе ПЭВМ
Персональные ЭВМ представляют новый класс средств вычисли­тельной техники. Они отличаются высокой надежностью, дешевизной, компактностью, малым потреблением энергии. Эти свойства позволяют создавать на их основе автоматизированные рабочие места широкого назначения. Они могут использоваться в органах государственного управления, проектно-конструкторских бюро, промышленных и сель­скохозяйственных предприятиях, научных и медицинских учреждениях, учебных заведениях.
ПЭВМ дает возможность построения систем нового типа, отлича­ющихся, с одной стороны, разнообразием средств отображения инфор­мации, с другой — интеграцией этих средств и обеспечением макси­мального удобства и простоты работы пользователей, не обладающих специальной подготовкой.
С начала появления ПЭВМ прикладные системы для разных видов работы создавались на них в виде автономных программ или пакетов программ. Наиболее распространенньми и популярными были и остаютсядо сих пор системы обработки текстов (текстовые процессоры), системы обработки «электронных таблиц» и базы данных. Следующими по распространенности являются системы «деловой графики» и комму­никационные подсистемы. Наконец, имеется множество прикладных систем более узкой ориентации — для поддержки планирования, фи­нансовых расчетов, автоматизации проектирования различных изделий и ДР-.
По мере накопления опыта разработки и использования различных прикладных систем стало ясно, что наиболее удобно сочетание не­скольких видов прикладных систем в рамках единой операционной
С* 1G3
среды. Было положено начало построению так называемых интегри­рованных систем, объединяющих наиболее часто используемые при­кладные программы и пакеты. Наиболее популярные интегрированные системы, созданные в 1983 — 85 гг., — Symphony, Framework, Lotus 1-2-3. В них сочетаются возможности обработки текстовой и табличной информации, могут создаваться простые базы данных, можно отобра­жать информацию в графическом виде. Правда, общение с этими си­стемами для неподготовленного пользователя все же затруднительно, — довольно много времени тратится на чтение «подсказок», изучение руководств и просто приобретение опыта общения с системой. Для каждой категории пользователей или для определенных видов ра­боты необходимо предварительно правильно сконфигурировать си­стему, заполнить ее релевантной информацией.
Работы по созданию более удобных для пользователей систем основываются на подборе более подходящих моделей человеко-машин­ного взаимодействия, учете особенностей определенных сфер приме­нения автоматизированных систем.
В данной главе рассматриваются общие черты интегрированной системы, которая может послужить основой для построения автомати­зированных рабочих мест на основе ПЭВМ. Такая система должна обеспечивать:
— удобный ввод проблемно-ориентированной информации,
— быстрый доступ к ранее введенной информации,
— формирование и обработку документов сложной структуры,
— создание личных картотек, деловых календарей, записных книжек и других средств оргтехники.
Интеграция в рассматриваемой системе должна проявляться, во-первых, в том, что все программные компоненты системы взаимно согласованы и могут обмениваться информацией друг с другом. Во-вторых, должен обеспечиваться единый стиль взаимодействия поль­зователя с системой, который предусматривает минимум манипуляций на клавиатуре, единообразное и наглядное отображение информации, простое управление ходом диалога, быстрое переключение между различными функциональными компонентами системы.
Концепция построения такой системы, которая лежит в основе разработок, выполняемых в Вычислительном центре АН СССР, пред­полагает, что представление данных и работа с ними с точки зрения пользователя основаны на объектно-ориентированном подходе. Сущ­ность этого подхода состоит в том, что каждая логически замкнутая информационная единица трактуется как отдельный объект, который может рассматриваться пользователем с разных точек зрения. Одни объекты представляются естественнее всего как таблицы или строки в них, другие — как текстовые документы, третьи — как графические изображения.
164
Какие виды деятельности можно автоматизировать с помощью описываемой системы? Ниже будет рассмотрено несколько типичных задач, в которых применяются текстовые, табличные и графические объекты. При описании метода взаимодействия пользователя с систе­мой будут рассмотрены типичные функции, которые предоставляются человеку при создании и обработке соответствующих документов. С целью конкретизации мы рассмотрим сначала несколько характерных применений интегрированной системы, с тем чтобы проиллюстрировать на реальных примерах общие приемы обработки текстовой, табличной и графической информации.
Рабочее место руководителя. Одно из наиболее частых применений ЭВМ связано с автоматизацией информационной деятельности руко­водителей государственных, проектных, научных учреждений, редак­ций, отделов и т. п. Рассмотрим типичные документы, с которыми имеет дело руководитель.
Основным документом, как правило, является общий план работы, в котором отражаются основные темы (проекты, задания), раскры­вается их содержание и ожидаемые результаты, указываются испол­нители, ресурсы, финансовые показатели и др. Кроме общего плана, необходимо иметь детальные планы работы отдельных подразделений и групп, вплоть до конкретных заданий и исполнителей.
Другой тип документов, с которыми имеет дело руководитель, — это различные ведомости, справки, отчеты. В них содержится более детальная информация об отдельных проектах, изделиях, материалах, исполнителях. Потребность в тех или иных документах возникает при просмотре планов работ или других аналогичных документов.
Наконец, у руководителей всегда есть необходимость в информа­ционной поддержке личной деятельности, для чего используются записные книжки, картотеки, календари и другие средства оргтехники. Для наглядного представления планов работ часто пользуются справочными таблицами (матрицами) следующего вида (рис. 5.1):
Проанализируем внешний вид такой таблицы и рассмотрим ти­пичный порядок работы с ней. Каждая тема (проект, задание) описы­вается в таблице несколькими строчками. Группу строчек, относя­щуюся к одной теме или подтеме, будем называть суперстрокой.
Суперстроки разделены на поля — ячейки таблицы. Два левых поля обыкновенно содержат порядковые номера и словесные формули­ровки тем и подтем, а остальные поля содержат значения различных показателей. Это могут быть текстовые описания содержания и резуль­татов работ по данной теме (подтеме), списки исполнителей, сроки, количественные и финансовые показатели и др.
Пользователь — руководитель или его помощник — должен иметь возможность внимательно просматривать такую таблицу по строкам или столбцам, анализируя и сопоставляя значения показателей ti.
165
Кроме того, должна иметься возможность занесения новых значений tl в отдельные ячейки таблицы.
Содержимое некоторых ячеек может раскрываться с помощью дополнительных таблиц, которые могут иметь примерно такую же структуру. Кроме того, раскрытие содержания отдельных позиций плана может осуществляться с помощью текстовых документов — пояснительных записок, аннотаций, рефератов и др.
Таблица 1.1. План работы ...

Наименование тем
Показатель
Показатель...

(проектов, заданий)
1
2
1
(Общая формулировка темы 1}



(формулировка подтемы 1.1)
till
1112

(формулировка подтемы 1.2)
1121
tl22
2
(Общая формулировка темы 2)



(формулировка подтемы 2.1)
t211
t212

(формулировка подтемы 2.2)
t221
t222
Рис. 5.1. Общий вид справочной таблицы
Рассмотрим, каким образом указанная информация может быть представлена в ПЭВМ. На экране дисплея ПЭВМ показать сразу всю таблицу обычно не удается, потому что формат экрана ограничен. Типичный экран ПЭВМ допускает вывод лишь 25 строк по 80 символов. Но здесь может помочь так называемое многооконное отображение информации.
При многооконном методе отображения на экран в каждый момент времени выводится лишь фрагмент таблицы, например, такой, как; показано на вышеприведенном рисунке. Выведенный фрагмент занимает дисплейное окно, соответствующее полному экрану или его части. В такое окно может быть выведена часть текстового документа. Поль­зователь имеет возможность выполнять три базовые операции: ;
а) изменять текстовые и числовые значения в отдельных ячейках справочной таблицы или в текстовых документах, выведенных на экран;
б) перемещаться вдоль таблицы или текста, открывая для про­смотра или изменения другие части, в том числе не видимые в данный момент на экране;
в) раскрывать содержимое отдельных ячеек таблицы или позиций текста, выводя на экран вспомогательные таблицы и текстовые до­кументы,
166
Поясним, как осуществляются указанные операции. Прежде всего заметим, что для любых операций, связанных с перемещениями, исполь­зуется специальный манипулятор «мышь» — коробочка, скользящая по столу и направляемая рукой в нужном направлении, или же кла­виши со стрелками «Вниз», «Вверх», «Вправо» и «Влево», имеющиеся на клавиатуре ПЭВМ.
При выводе окна на дисплей одна из ячеек таблицы помечается как активная. Технически такая пометка осуществляется выделением ее особым цветом, негативным изображением или с помощью специаль­ного мигающего знака. Будем говорить, что выделенная активная ячейка отмечается с помощью курсора. Пользуясь манипулятором «мышь» или клавишами со стрелками, курсор можно перемещать по таблице, указывая на ту или другую активную ячейку.
В активную ячейку можно занести новую информацию, для чего достаточно нажать любую алфавитно-цифровую клавишу и тем самым войти в режим редактирования. В этом режиме можно либо ввести совершенно новое значение ti в активную ячейку, либо отредактировать (изменить) старое значение. Конец редактирования фиксируется нажа­тием специальной клавиши «Исполнение».
Дисплейное окно можно смещать относительно таблицы, открывая для просмотра и изменения невидимые ранее ячейки. При этом поло­жение окна на экране не изменяется, а таблица как бы скользит под окном. Для выполнения такого смещения пользователь должен уста­новить курсор на одну из границ окна и затем как бы продолжать пе­ремещать его за эту границу. В результате будет происходить смеще­ние окна относительно таблицы шагами по одной ячейке, пока не будет достигнут соответствующий край таблицы.
При работе с текстовыми документами используется точно такая же техника работы, как и с таблицами, только курсором выделяется не целая ячейка, а отдельный символ, слово или строка текста.
В тех ячейках таблицы, где должны находиться значения показа­телей ti, при выводе на экран совсем не обязательно должны фигури­ровать конкретные текстовые формулировки или числа. Вместо них могут стоять лишь условные символы, обозначающие возможность раскрытия соответствующих значений. Осуществляется такое раскры­тие очень простыми действиями пользователя: в интересующую поль­зователя ячейку табл. 1.1 подводится курсор и нажимается специальная клавиша «Раскрыть» (эту роль может играть одна из функциональных клавиш на клавиатуре). В результате раскрытия на экран выводится новое окно с соответствующей таблицей или текстом, причем оно может полностью или частично перекрыть ранее выведенное исходное окно. Изображение на экране может приобрести вид, показанный на рис. 5.2. Просмотрев информацию во вспомогательном окне (в табл. 1.2 на рис. 5.2), пользователь может вернуться к исходному окну, нажав
167
специальную функциональную клавишу «Закрыть». При этом окно со вспомогательной табл. 1.2 исчезает с экрана, а изображение исходного окна с табл. 1.1 восстанавливается.
Поскольку работа со вспомогательными таблицами принципиально ничем не отличается от работы с исходной таблицей, ячейки вспомога­тельной таблицыможно раскрывать посредством таблиц или тексто­вых фрагментов следующего уровня.

Рис. 5.2. Вид экрана при вызове двух таблиц
Таким образом, представление планов работы и других докумен­тов с помощью описываемого метода сохраняет привычные формы, но дает удобные возможности их быстрого просмотра и изменения. При этом от пользователя практически не требуется никаких специальных навыков, кроме умения перемещать курсор и нажимать две-три спе­циально выделенные функциональные клавиши.
Рассмотренный метод представления деловой документации яв­ляется общим для разных видов автоматизированных рабочих мест и разных типов документов. Ниже рассматривается еще несколько ти-повкх вадач, иллюстрирующих общий подход.
Рабочее место экономиста, бухгалтера. В то время как руководи­тели и их помощники имеют дело со структурированной информацией, в которой основными элементами являются формулировки тем, проектов, заданий, фамилии людей, названия организаций, изделий и т. п., другая категория работников административно-управленческого аппа­рата — экономисты, бухгалтеры и плановики работают в основном с числовыми данными. Эти данные характеризуют бюджет учреждения, различные фонды, распределение денежных средств по отделам, мате­риальные ресурсы, финансовые расчеты с банками и другими учреж­дениями.
Для автоматизации обработки экономической информации больше всего подходит метод электронных таблиц. Простой пример такой таблицы показан на рис. 5.3.
В представленной на рис. 5.3 таблице в первых строках содержатся текстовые пояснения к обрабатываемым данным. Обрабатываемые дан-. ные размещаются в строках с номерами 1 — 6. Столбцы таблицы снаб­жены однобуквенными метками — А, Б, В, Г, Д, Е. Использование вместо них цифр, как это обычно принято в документах такого типа, несколько затруднило бы дальнейшие рассуждения.

Рис. 5.3. Представление данных в электронной таблице
Рассмотрим, в чем заключается обработка данных в этом простом примере. Каждая из строк 1 — 5 содержит данные по командировочным расходам (в определенный город). Исходные данные — название го­рода, стоимость проезда туда и обратно, расходы одного человека в день, число дней и количество командируемых — задаются в первых пяти ячейках каждой строки.
Последняя, б-я ячейка заполняется числом, которое рассчиты­вается по следующей формуле:
Е = (Б * Г) + (В * Г * Д) (1)
где Б — стоимость проезда туда и обратно, В — расходы одного че­ловека в день, Р — количество командируемых, Д — продолжитель­ность командировки.
На отдельную ячейку таблицы удобно ссылаться, указывая ее метку. Так, например, метка Б1 указывает на ячейку, которая нахо­дится на пересечении столбца Б и 1-й строки таблицы. Тогда вышепри­веденная формула для 1-й строки будет иметь вид:
Е1 = (Б1 * П) + (В1 * П * Д1) (2)
Для строк со 2-й по 5-ю в этой формуле достаточно изменить единицу на номер строки.
В 6-й строке, в ячейке Е6 должна стоять общая сумма расходов на все командировки, которая получается сложением значений, взятых из ячеек Е1 — Е5; т. е. по формуле:
Е6= Е1+Е2+ ЕЗ + -Е4+Е5 (3)
Эта зависимость может быть сформулирована более сжато:
Е6 = СУММА (Е1..Е5) (За)
Ячейку Е6 можно в данном случае назвать итоговой для табл. 2.1. Для других аналогичных таблиц, где число строк с фактическими дан­ными может быть иным, итоговая ячейка может иметь другую метку. Далее будет показано, что понятие итоговой ячейки имеет особое зна­чение для установки взаимосвязей между таблицами.
В чем заключается привлекательность электронной таблицы по сравнению с представлением ее на обычной бумаге, как это делается пока в большинстве учреждений? Причин несколько:
Во-первых, вводить исходные данные в электронную таблицу во многих случаях легче и быстрее, чем это можно сделать в бумажном документе. Например, в приведенной выше таблице в колонке В, где задана величина расходов в день на одного человека, почти все значения одинаковы, за исключением одного числа. В такой ситуации достаточно было ввести число 6,60 в одну ячейку В1, затем скопировать ее в ячейки В2,*ВЗ и В5. Операция копирования осуществляется очень просто и при большом количестве исходных данных может существенно сократить время ввода информации. К тому же копировать можно не только значения отдельных ячеек, но и целые строки, столбцы или прямоугольные области — вырезки из таблицы.
Во-вторых, в электронной чаблице можно с помощью формул за­давать зависимость одних значений от других. Например, достаточно ввести в ячейку Е1 формулу (2), а затем скопировать ее в ячейки Е2 — Е5; при этом соответствующие индексы у термов формулы автомати­чески корректируются. Ввод формул осуществляется примерно так же, как и ввод чисел в ячейки таблицы. Введя в ячейку Е6 формулу (3), мы окончательно определим все зависимости — бухгалтеру уже не нужно при помощи калькулятора или других средств проводить вычисления и вносить в таблицу соответствующие числа. Все необ­ходимые вычисления выполняются автоматически. Более того, при работе с электронной таблицей легко осуществить проверку «что будет, если.,.». Так, например,стоит изменить какое-либо из исходных вна-чений, например, число командируемых в город Таллин (ячейка Г2), и произойдет автоматический пересчет всех зависящих от него вели­чин — чисел в ячейках Е2 и Е6, Это свойство электронных таблиц,
позволяющее соединять формирование документов с автоматическими вычислениями по формулам, является их главной привлекательной чертой для экономистов, бухгалтеров и плановиков.
В-третьих, сформированная электронная таблица сразу же становится документом, который может многократно использоваться, легко модифицироваться и выводиться на печать в нужном числе экзем­пляров. На основе одной таблицы можно очень быстро создать анало­гичную таблицу с другими исходными данными и, возможно,

Рис. 5.4. Представление сводной ведомости
с измененными формулами. Техника ввода формул, их копирования в другие ячейки, а также копирования строк, столбцов и областей здесь не рассматривается; важно осознать основные возможности электронных таблиц.
Как и в случае работы с другими типами документов, рассмотрен­ными в предыдущих задачах, электронные таблицы представляются на экране ПЭВМ через дисплейные окна. Окон может быть несколько, и в каждом из них представляется своя информация. Для экономиста, в частности, может оказаться полезным вывод нескольких взаимо­связанных таблиц. Например, в сводной ведомости — таблице вида 2.2 (рис. 5.4) могут в качестве исходных данных фигурировать итоговые значения нескольких таблиц вида 2.1.
Значения столбца Ж этой таблицы рассчитываются по формуле вычисления среднего из значений, фигурирующих в ячейках Б — Е. В свою очередь значения ячеек Бб — Жб подсчитываются как суммы чисел в соответствующих столбцах. Все эти зависимости легко задаются с помощью формул.
Если на экран выведена табл. 2.2, а затем пользователь Захочет посмотреть, каким образом получено некоторое число, например,
в ячейке El, достаточно установить курсор на эту ячейку и нажать клавишу «Раскрыть». Поскольку значение Е1 определяется как итого­вое значение табл. 2.1, эта таблица будет выведена па экран в отдельное дисплейное окно. Таким образом, взаимосвязь между разными табли­цами через итоговые значения позволяет экономисту быстро просма­тривать и анализировать все относящиеся к делу данные.
Кроме удобства работы с электронными таблицами как с таковыми, экономист имеет возможность графического представления данных, содержащихся в таблице. Соответствующие программные средства называют деловой графикой. Сущность работы с этими средствами очень проста. Пользователь выделяет в таблице данные, которые он хотел бы представить в графическом виде. Обычно такие данные содержатся

Рис. Б.5. Графическое представление данных табл. 2.2
в смежных столбцах и строках. Один из столбцов или одна из строк выбирается в качестве основы для разметки оси X. Значения других столбцов (строк) используются для построения графиков. Сами гра­фики могут иметь разный вид — они могут изображаться столбиками разной высоты (столбиковые гистограммы), линейными графиками, точками на координатной плоскости или круговыми диаграммами, раз­битыми на сектора.
Например, данные из строк 1 — 4 и столбцов Б — Е табл. 2.2 можно представить в виде графика, показанного на рис. 5.5.
Высота каждого столбца пропорциональна значению одной из ячеек табл. 2.2. Четыре левых столбца соответствуют ячейкам Б1 — Б4, следующая группа соответствует ячейкам В1 — В4 и т. д. Надписи на графике могут переноситься из соответствующих надписей таблицы или же наноситься на картинку с изображением графика независимыми средствами.
Возможны и другие способы графического отображения этих данных. Важно, что при изменении исходных данных происходит автоматическая перестройка графиков.
Средства деловой графики повышают наглядность отображения числовой информации и особенно ценны при проведении финансового анализа, составлении отчетов и другой документации.
Таким ебразом, сочетание методов работы с электронными табли­цами и средств деловой графики дает в руки финансовых работников
удобный инструмент для обработки и отображения числовой экономи­ческой информации. Поскольку стиль взаимодействия с ПЭВМ при этом остается таким же, как и при использовании обычных справочных таблиц, рассмотренных в задаче 1, все описанные средства могут легко сочетаться и эффективно использоваться в административно-управлен­ческой работе.
Рабочее место проектировщика, исследователя. В отличие от работ­ников адмцнистративно-управленческого аппарата, для которых боль­шая часть служебной информации может быть представлена в виде достаточно однородных табличных или текстовых документов, проек­тировщики и исследователи нуждаются в более разнообразных средствах представления и обработки информации. Проектируемый или исследуе­мый объект обычно характеризуется множеством структурных описа­ний, которые необходимо хранить в базе данных; он часто сопровож­дается графическими изображениями (схемами, чертежами) отдельных компонентов; для расчета параметров используются вычислительные модели, реализованные в виде программ; текстовая документация также является необходимой составной частью информации об объекте. Проектировщик должен иметь возможность быстро ориентироваться в этом множестве и находить нужные фрагменты информации, много­кратно изменять их, проводить соответствующие вычисления и выдавать твердые копии документов.
Рассмотрим несколько типичных способов задания информации о проектируемых/исследуемых объектах. Чтобы не связывать вообра­жение читателя, рассмотрим в качестве примера некий абстрактный объект, описываемый следующим образом.
Основные компоненты типового объекта:
— центральный обрабатывающий узел (ЦУ),
— накапливающие узлы (Н), :
— терминальные узлы (Т),
— соединительные коммуникации (К).
Конкретные объекты формируются из указанных компонентов, причем число экземпляров каждого компонента (узла или коммуника­ции) зависит от конкретной конфигурации проектируемого объекта.
Взаимное расположение узлов вадается схемой компоновки, от­дельные узлы описываются чертежами и текстовой документацией.
Каждый узел характеризуется совокупностью параметров {AijJ, соотношения между которыми формально задаются уравнениями и фактически рассчитываются с помощью программ [Р], решающих.эти уравнения.
Подобное описание может характеризовать объекты самой разной природы — электронное изделие, станок, обрабатывающий центр, производственное предприятие, нефтедобывающий район, транспортный узел, аэровокзал и др.
Рассмотрим способы представления указанной информации в ПЭВМ. Общий состав конкретного объекта X может быть представлен инфор-мационной структурой, которая на экране ПЭВМ выглядит следующим образом (рис. 5.6).

Рис. 5.6. Представление общей структуры объекта

Рис. 5.7. Представление информации об узле HI
Начиная с этого представления верхнего уровня, проектировщик может «погружаться» на следующие уровни с целью более детального исследования различных компонентов объекта X. Картина, представ­ленная на рис. 5.6, фактически составлена из:
а) поясняющих надписей к отдельным свойствам объекта,
б) значений этих свойств, представленных именами компонентов или просто условными обозначениями (например, пустыми квадра­тиками).
Подобную картину можно представить как трафарет с текстовыми пометками и «отверстиями», сквозь которые видны значения отдельных свойств.
Чтобы выбрать для дальнейшего исследования какой-либо элемент объекта X, пользователю достаточно установить курсор в соответству»
ющую позицию и нажать клавишу «Исполнение». В ответ на это дей­ствие система выведет в новое дисплейное окно соответствующий фраг­мент информации. Например, если для очередного этапа исследования выбран узел HI, то на экран может быть выведено окно с описанием параметров этого узла, которое наложится на общее представление структуры объекта X (рис. 5.7).
Точно так же можно получить информацию о других компонентах объекта X. Если же установить курсор в позицию трафарета, помечен­ную надписью «Схема компоновки», то после нажатия клавиши «Испол­нение» произойдет раскрытие соответствующего значения и на экран

Рис. Б.8. Графическое представление схемы компоновки
будет выведено окно с графическим изображением. В зависимости от природы объекта X такое изображение может представлять условную схему, эскиз чертежа или карту местности с нанесенными условными обозначениями узлов и коммуникаций (рис. 5.8).
Выбор на трафарете рис. 5.6 позиции с пометкой «Общий расчет» вызывает программу, которая осуществляет необходимые вычисления, используя в качестве исходных данных параметры объекта или его отдельных компонентов.
Все вышеприведенные рассуждения применимы к описаниям. отдельных узлов и их компонентов, — и так до любой степени детали­зации. Информация может представляться не только с помощью струк­турных описаний и графических изображений, но также с помощью справочных и вычисляемых электронных таблиц, которые были рас­смотрены в предыдущих разделах.
Таким образом, особенностью данного метода является, с одной стороны, возможность применения различных средств представления информации о проектируемых/исследуемых объектах и их составных частях; с другой стороны, такая организация информации, которая позволяет легко переключаться между общим и частным, текстовыми представлениями и графическими, режимом просмотра/модификации параметров и режимом вычисления. Эти особенности дают пользовате­лям удобные средства для анализа, модификации и расчетов, при проек­тировании и исследовании объектов разного назначения.
Рассмотренные принципы применимы для организации рабочих мест и других специалистов — преподавателей и учащихся, врачей, агрономов, администраторов гостиниц и др. На основе рассмотренного метода легко построить автоматизированные справочные системы, доступные широкой публике через специальные терминалы; такие системы могут обеспечивать выдачу информации об имеющихся това­рах, о том, «как проехать», о текущих культурных мероприятиях, о службе быта, о трудоустройстве, об основных юридических положе­ниях, о предлагаемых обменах жилой площадью и многом другом.
5.2. Персональная информационная система
Любой человек нуждается в организации личной деятельности в в простых, удобных для использования информационных системах, В повседневной жизни для этого служат записные книжки, календари, картотеки. Имея на рабочем столе персональный компьютер, есте» ственно возложить на него реализацию указанных функций. Рассмотрим устройство и способ работы с автоматизированной картотекой, которую цожно использовать либо как личную записную книжку, либо как аростейшую базу данных с доступом к хранимым объектам через упо­рядоченный список ключевых слов.
Автоматизированная картотека. Картотека — это множество тек­стовых объектов — карточек, содержащих информацию о людях, учреждениях, публикациях, изделиях и др.
Выбранные карточки можно просто читать и убирать назад в кар­тотеку, но можно при этом наносить на них пометки, вносить дополни­тельную информацию. Разумеется, нужно иметь возможность созда­вать новые карточки. Размещение карточек в картотеке должно упо­рядочиваться по какому-либо признаку, — например, по ключевым словам, по датам, по выделенным классификационным индексам.
Тексты карточек имеют произвольный формат, они не обязаны быть похожими друг на друга. В каждой карточке особо выделяется одно или несколько слов или чисел, являющихся ключами к данной кар­точке. Ключи вносятся в общий упорядоченный список, через который затем и осуществляется поиск и выбор нужных карточек.
При реализации картотеки на ПЭВМ удобно использовать такой же метод многооконного представления информации, как и при реали­зации справочных таблиц в рассмотренных выше вадачах. При этом каждый выводимый на экран объект — список ключей, тексты карто­чек, перечень возможных действий («меню») — отображается в отдельное дисплейное окно. Окна ограничены рамками, они могут по желанию пользователя перемещаться в разные позиции экрана и изменять размеры. Примерный вид экрана при выводе списка ключевых слов и одной карточки представлен на рис. 5.9.
176

Рис. 5.9. Вид экрана при выводе списка ключей и одной карточки
В работе с картотекой можно выделить следующие характерные операции:
— вывод списка ключевых слов в отдельное окно;
— поиск ключа, интересующего пользователя;
— «раскрытие» ключа, — показ первых строчек карточек, со­держащих данный ключ;
— вывод на экран карточки по данному ключу;
— просмотр текста карточки путем ее «прокрутки» в окне;
— «откладывание» просмотренной карточки в отдельное окно;
— изменение текста карточки и занесение ее назад в картотеку;
— создание новой карточки и занесение ее в картотеку;
— удаление карточки из картотеки;
— вывод отдельной карточки или всей картотеки в файл или на печатающее устройство;
— ввод в картотеку новых карточек из заранее подготовленного файла.
Состав картотеки. В качестве примера рассмотрим устройство и работу с картотекой NOTES, разработанной в ВЦ АН СССР (автор — А. Б. Борковский). Содержимое этой картотеки -размещается в четы­рех специальных файлах, содержащих:
— ключевые слова,
— первые строки карточек,
— основные тела карточек,
— параметры размещения окон.
Имена этих файлов складываются из двух компонентов — основное имя придумывает пользователь при создании картотеки, а расширение имени (тип файла) задается программой NOTES. COM, которая под­держивает работу с картотекой. Пусть, например, при образовании картотеки пользователь называет ее TEL. Тогда соответствующие файлы будут иметь такие полные имена:
TEL.ABO TEL.AB1 TEL.AB2 TEL.ABP
Вызов картотеки осуществляется, как обычно, указанием имени программы, которой в качестве параметра дается имя конкретной картотеки, например:
notes tel
В зависимости от того, создается ли новая картотека или проис­ходит вызов уже существующей, происходят разные действия.
Создание новой картотеки. При создании новой картотеки работа системы начинается с запроса у пользователя имени исходного тексто­вого файла, из содержимого которого создается картотека. Пример такого файла представлен на рис. 5.10.

Рис. 5.10. Пример исходного текстового файла для создания картотеки
Каждая карточка в исходном файле должна представлять собой отдельный абзац, т. е. фрагмент текста, у которого первая строчка начинается хотя бы с одного пробела. В приведенном примере на рис. 5.10 таких абзацев три; они начинаются со слов:
^Алексеев, ^Николаев, ^Тарасов
Значком ^ обозначается символ, который получается после на­жатия клавиш Ctrl + К (десятичный код этого символа 11). Этот сим­вол играет роль указателя ключевого слова. Это значит, что после ввода карточек в картотеку слова, имеющие в качестве префиксов указанные символы, превратятся в ключи и попадут в файл ключевых слов.
В приведенном примере в качестве ключевых слов отмечены не только фамилии людей, но и другие слова в карточках — МФТИ, МГУ. Это позволит выбирать данные карточки по разным ключам.
Строка в пределах абзаца не может начинаться с пробела, поэтому некоторые строчки начинаются с символов «.», после которых могут стоять пробелы. В картотеке символ «.» будет исключен из текста кар­точки. В исходном файле должен содержаться текст хотя-бы одной кар­точки, которая становится зародышем будущей картотеки. После юго, как в ответ на вопрос системы пользователь укажет имя исход­ного файла для создания новой картотеки, происходит ввод информации и формирование указанных выше файлов, образующих картотеку.

Рис. 5.11. Главное управляющее меню
Основные режимы работы. Когда карто­тека создана, программа NOTES.COM под­держивает три основных режима работы с ней:
— выбор карточек и работу с ними,
— выделение подсписка ключей по шаб­лону,
— обмен информацией между картотекой и файловой системой ДОС.
Для выбора одного из этих режимов используется главное управ­ляющее меню, в котором имеется три позиции (рис. б. 11):
Перебор ключей. При выборе первой позиции главного управля­ющего меню, а также при вызове системы с заранее приготовленной картотекой, первое что появляется на экране, это окно ключевых слов, в каждой строчке которого виден ровно один ключ. Курсор указывает на первую позицию выведенного списка.
Просмотр списка ключей в указанном окне можно осуществлять несколькими способами:
A. Нажимая стрелки «Вниз» и «Вверх», можно перемещать курсор по списку ключей. Когда достигается крайняя нижняя или верхняя позиция, дальнейшее нажатие стрелок вызывает «прокрутку» списка ключей в окне. Такой способ просмотра ключей наиболее подходит, когда их число не очень велико. Прокрутка в этом режиме может идти с максимальной скоростью 5 — 8 строк в секунду.
Б. Нажимая клавиши PgDn и PgUp («Следующая порция» и «Пре­дыдущая порция»), можно перемещаться по списку ключей скачкооб­разно — порциями по 8 — 12 строк — соответственно высоте окна ключевых слов. Это позволяет ускорить подвод, курсора к нужному ключу и удобно, когда длина списка ключей в несколько десятков раз превышает высоту окна.
B. Нажав клавишу F2, можно вызвать запрос шаблона, после чего ввести одну или несколько букв (цифр), с которых должен начинаться искомый ключ. После этого достаточно нажать клавишу «Исполнение», и курсор установится на первый по порядку ключ, совпавший с шабло­ном. Этот способ поиска требует от пользователя некоторого навыка для работы с клавиатурой* но зато обеспечивает самый быстрый выбор нужного ключа.
Г. Нажав клавишу (5) в центре управляющей части клавиатуры я вслед за ней клавишу со стрелкой «Вниз» или «Вверх», можно сразу перейти в самый конец или в самое начало списка ключей. Клавиша <5> означает, что «следующую операцию нужно повторить максимально возможное число раз». В таком же смысле она используется и в других случаях, например, при просмотре и редактировании текста карточки в рабочем окне.
Выбрав искомый ключ и нажав клавишу «Исполнение», пользова­тель инициирует выбор первой по порядку и, возможно, единственной карточки, в которую входит данный ключ. При этом в рабочее окно выводится текст выбранной карточки.
Если пользователь предполагает, что данному ключу может соот­ветствовать несколько карточек, то он может применить операцию «раскрытие ключа», которая позволит увидеть первые строки всех карточек с данным ключом. Для выполнения этой операции нужно нажать клавишу Plus(+ в правой части клавиатуры). При этом в окне ключевых слов вместо одного ключа появляется одна или несколько строчек, выделенных особым цветом. Это первые строчки всех тех карточек, куда входит данный ключ.
По первым строчкам пользователь может определить, нужен ли ему полный текст какой-либо карточки. Если ни одна карточка не подходит, можно закрыть данный ключ, для чего вторично нажимается клавиша Plus.
Если в главном управляющем меню выбрать 2-ю позицию — «Шаблон», то система запросит шаблон для отбора подмножества ключей.
Указав в качестве ответа какой-либо текст, например, М*, поль-вователь получит в окне ключевых слов лишь те ключи, которые соответствуют этому шаблону (например, МГУ, МФТИ и другие слова, начинающиеся с буквы М). Это позволяет сократить перебираемое множество ключей и соответствующих им карточек.
Работа с текстом карточки. Отобрав по списку ключевых слов нужную карточку и нажав клавишу «Исполнение», пользователь вы­водит ее полный текст в рабочее окно с указанным номером, по умол­чанию — в окно № 1.
Всего в системе может использоваться до 4-х рабочих окон. Для задания номера рабочего окна достаточно перед клавишей «Исполне­ние» нажать клавишу с цифрой 1, 2, 3 или 4.
Выведенный в рабочее окно текст карточки можно:
— прочитать,
— изменить и записать в картотеку на прежнее место,
— ванести в картотеку в качестве новой карточки,
— удалить из картотеки,
— «отложить» временно в другое рабочее окно.
180
Чтение карточки не требует каких-либо манипуляций на клавиа­туре, если текст полностью умещается в рабочем окне. Если же это не так, то можно, нажимая стрелки «Вниз», «Вверх», «Следующая пор­ция» (PgDn) и «Предыдущая порция» (PgUp), перемещаться по тексту карточки по одной строчке или порциями, равными высоте окна. &ги

Рис. 5.12. Сводка команд мини-редактора
манипуляции совершенно аналогичны тем действиям, которые выпол­няются при движении по списку ключей. Можно «прыгнуть» в самый конец или самое начало карточки, для чего последовательно нажимается сначала клавиша (5) в центре управляющей части клавиатуры и вслед за этим клавиша со стрелкой «Вниз» или «Вверх». При всех способах перемещения по вертикали происходит прокрутка текста карточки в рабочем окне. Кроме того, ниже будет описано, как можно изменить размеры рабочего окна. Ключи в тексте карточки выделяются особым цветом.
После просмотра текста карточки можно вернуться на верхний Уровень — в окно ключевых слов — с целью выбора другой карточки.
Для возврата достаточно нажать клавишу возврата на верхний уро­вень: F10.
Изменение текста карточки, выведенного в рабочее окно, осуще­ствляется с помощью мини-редактора. Краткая сводка команд мини-редактора представлена на рис. 5.12.
Отредактированная или только что созданная карточка остается в оперативной памяти, пока она не будет занесена в картотеку спе­циальной операцией. Для этого применяется команда записи измененной

Рис. 5.13. Управляющее меню, вызываемое по ко­манде Ctrl + F10
карточки в картотеку, вызываемая од­новременным нажатием двух клавиш!
Shift+ F10
Создание новых карточек. Помимо просмотра и изменения введенных ранее карточек, пользователи должны иметь возможность создания совершенно новых карточек и связывания с ними со­ответствующих ключей. Такая операция может осуществляться двумя путями.
Во-первых, тексты карточек с ключами могут извлекаться из зараьее приготовленного текстового файла — такого же, как и при создании новой картотеки.
Во-вторых, отдельные карточки могут создаваться во время обыч­ной работы с картотекой. Для этого достаточно вызвать чистое рабочее окно с помощью команды F7.
Сформированная затем с помощью мини-редактора карточка за­носится в картотеку в результате применения команды
Ctrl + F10
При этом на экран выводится вспомогательное управляющее меню (рис. 5.13).
Выбор первой позиции этого меню ведет к выполнению указанной операции — то есть занесению в картотеку новой карточки. При этом все отмеченные в тексте карточки ключевые слова попадут в список ключей.
Вторая позиция позволяет сохранить старую карточку, но занести в список ключей все те новые ключи, которые появились при послед­нем редактировании. Кроме того, если пользователь при нажатии Ctrl + F10 ошибся и на самом деле не хочет заводить новую карточку, то здесь он имеет возможность поправить себя и записать карточку на прежнее место, а не заводить новую.
Третья позиция в указанном меню служит для удаления данной карточки из картотеки. При удалении карточек пространство в карто­теке не освобождается; его можно восстановить для нового использова
ния лишь путем вывода всего содержимого картотеки в текстовый файл и повторного создания новой картотеки с тем же именем (см. ниже).
Использование вспомогательных рабочих окон. Часто бывает необходимо сопоставлять содержимое нескольких карточек. С этой целью можно «отложить» карточку в дополнительное рабочее окно № 2. После этого можно переключаться между двумя окнами — основным и дополнительным, нажимая всего одну клавишу. Реализуются эти действия следующими командами:
F8 — открыть дополнительное рабочее окно № 2 и перенести в него содержимое основного рабочего окна (1-го, 3-го или 4-го},
F9 — переключиться из основного-рабочего окна в дополнительное или обратно.
Все используемые в системе окна можно перемещать по экрану и изменять их размеры. Режим изменения положения или размеров любого окна вызывается нажатием клавиш
Alt + W
Это должно происходить в тот период, когда, соответствующее окно активизировано. Управление окнами осуществляется клавишами: Стрелки Вправо/Влево/Вверх/Вниз — смещение окна на экране, Shift + Стрелки Вправо/Влево — сдвиг правой границы окна, Shift + Стрелки Вверх/Вниз — сдвиг нижней границы окна; В результате указанных манипуляций можно добиться таких размеров и взаимного расположения окон на экране, чтобы это наилуч­шим образом соответствовало вкусам пользователя и позволяло удобно просматривать тексты карточек.
Окна могут располагаться на экране, частично перекрывая друг друга. Для переключения между рабочими окнами необходимо нажи­мать клавиши
АН + (номер окна)
Вызов подсказок. Подсказка вызывается нажатием клавиш F1 или Shift + F1. В первом случае появляется окно с текстом подсказки, относящейся к данному режиму работы (например, различаются под­сказки, вызываемые из окна ключевых слов или из рабочего окна). Во втором случае выводится справочный текст общего характера.
Ввод/вывод. Переход в режим ввода/вывода, в котором обеспечи­вается обмен информацией с файловой системой ДОС, происходит через соответствующую позицию главного управлющего меню. Попасть в это меню можно из окна ключевых слов, нажав клавишу F10.
Выбор позиции в главном управляющем меню осуществляется, как обычно, перемещением курсора с помощью стрелок и нажатием клавиши «Исполнение».
После выбора режима ввод/вывод на экран выводится вспомо­гательное управляющее меню (рис. 5.14).
Работа с этим меню осуществляется так же, как и с главным управ­ляющим меню. Первая позиция обеспечивает вывод в файл ДОС со­держимого всей картотеки. Вторая позиция меню позволяет задать вывод лишь части картотеки — для ключей, которые удовлетворяют заданному пользователем шаблону. При этом в качестве стандартного имени файла вывода используется имя данной картотеки с расшире­нием OUT. Например, для картотеки TEL стандартный файл вывода

Рис. 5.14. Меню
управления вводом/выводом
будет именоваться TEL.OUT. Заметим, что такой файл создается в текущем каталоге.
Если стандартный файл вывода почему-либо не устраивает пользователя, он может перевести курсор в третью позицию меню, нажать клавишу «Исполнение» и на запрос системы ответить новым именем выводного файла. Можно изменить все имя, или только тип файла, или указать в качестве префикса имя другого каталога. Эта возможность позво­ляет, в частности, задать в качестве файла вывода одно из стандартных внешних устройств с последовательным доступом, например, принтер или коммуникационный канал. Для вывода на одно из этих устройств достаточно в качестве имени вывода указать соответствующее стандартное имя внешнего устройства: PRN LPT1 LPT2 — для принтеров, СОМ1 COM2 — для коммуникационных каналов. Можно вывести в файл ДОС или на принтер не только всю карто­теку, но и отдельную карточку. Для этого, установив курсор на соот­ветствующий ключ в окне ключевых слов, нужно нажать одновременно две клавиши:
Shift + F8
Строчка с выбранным ключом засветится особым цветом; это зна­чит, что в этот момент происходит ее вывод в указанный заранее вы­водной файл. Имя выводного файла в этом случае также может быть установлено пользователем через 3-ю позицию меню.
Важно помнить, что информация в выводной файл все время до­бавляется. Поэтому, если дважды вывести одну и ту же карточку в один и тот же файл, то там образуется два ее экземпляра.
Выведенный текстовый файл приобретает такой вид, который пригоден для его использования в качестве источника для загрузки в картотеку. Это значит, что каждая карточка превращается в отдель­ный абзац, оформленный по тем правилам, которые были описаны выше в разделе «Создание картотеки».
Выведенные в файл тексты карточек можно редактировать любыми имеющимися средствами, а затем использовать вновь для загрузки в картотеку, в том числе для образования совершенно новой картотеки.

Рис. 5.15. Сводка команд автоматизированной картотеки NOTES
Загрузка исходного файла в картотеку осуществляется, когда после выбора четвертой позиции управляющего меню система запра­шивает имя загружаемого файла и пользователь сообщает его в ответ.
Таким образом, работа с картотекой достаточно проста. На рис. 5.15 приведена общая сводка команд картотеки NOTES. Данную картотеку можно с успехом использовать вместо личной записной книжки, делового календаря, справочника по той или иной проблеме, словаря и др. Программа, поддерживающая работу с картотекой, невелика по объему и может использоваться на машинах с ограничен­ным объемом оперативной памяти (до 128 Кбайт). Вместе с другими прикладными системами общего назначения — текстовым редактором, базой данных, графическим процессором — автоматизированная кар­тотека является эффективным средством оргтехники, доступным на любом персональном компьютере.
5.3. Интегрированные прикладные системы
Решение многих профессиональных задач на персональном компь­ютере требует, с одной стороны, использования некоторых универ­сальных средств, таких как пакет текстовой обработки или база дан­ных; с другой стороны, определенные задачи требуют использования специализированных программ, например, для обработки электрокар­диограмм, для выполнения статистических расчетов и др.
Для большинства применений оказываются вполне достаточными только универсальные средства общего назначения. Однако здесь у человека часто возникают технические проблемы: сначала он поль­зуется средствами текстовой обработки для составления документа, аатем хочет быстро перейти к использованию базы данных для поиска определенных объектов, а еще через некоторое время у него возникает потребность перенести в текстовый документ значения некоторых ве­личин из базы данных и т. д. Если пользоваться отдельными приклад­ными пакетами для каждого вида работы, то описанные выше действия приводят к неудобствам пользователя, замедляют общий процесс ра­боты, усложняют обучение.
Именно это и послужило одной из причин появления на персо­нальных компьютерах интегрированных прикладных систем.
Целью создания интегрированной системы является объединение :«под одной крышей» наиболее часто используемых прикладных про­грамм. Считается, что хорошая интегрированная система должна вклю­чать следующую «большую пятерку» прикладных систем общего назна­чения: пакет текстовой обработки, процессор электронных таблиц, базу данных, пакет графического отображения данных (деловую гра­фику) и коммуникационный пакет.
Преимущества интегрированных систем проявляются в первую очередь в том, что они удобны для пользователя. Система предоставляет одинаковые средства доступа к различным пакетам. Упрощается сты­ковка различных пакетов по данным. Увеличивается скорость работы, так как не требуется перекачки данных из одного хранилища в другое, а переключение с одного пакета на другой осуществляется простым выбором соответствующих позиций в управляющем меню.
Правда, интегрированные системы имеют и недостатки по сравне­нию с изолированными прикладными пакетами. Главный из этих недо­статков — повышенные требования к оперативной памяти. Как пра­вило, для работы с типичной интегрированной системой требуется от 200 до 400 Кбайт оперативной памяти, не говоря о довольно значи­тельных объемах внешней памяти (600 — 1000 Кбайт) для хранения всех необходимых компонентов. Каждый пакет в рамках интегриро­ванной системы неизбежно реализуется с некоторыми ограничениями на функциональные возможности по сравнению с лучшими образцами
186
в своем классе. Эта плата за интеграцию неизбежна, и она с лихвой компенсируется преимуществами таких систем для пользователя.
Плюсы и минусы интегрированных систем. Наибольшую популяр­ность среди интегрированных систем завоевали Lotus 1-2-3, Symphony и Framework, созданные в 1983 — 1984 гг. Первая из этих систем, став­шая в свое время бестселлером, фактически открыла дорогу другим подобным системам, продемонстрировав все достоинства интеграции, хотя в ее состав входили лишь три компонента: очень хороший пакет для работы с электронными таблицами, база данных со средними воз­можностями и пакет деловой графики. Одним из важных достоинств системы Lotus 1-2-3 был относительно небольшой объем требуемой оперативной памяти — всего 192 Кбайт, а работать с ней можно было при наличии только одного гибкого диска. Это достоинство было утра­чено всеми более поздними системами.
Две другие системы — Symphony и Framework — долгое время конкурировали друг с другом. Обе они предоставляют пользователям примерно одинаковые возможности и обе требуют для работы примерно одинакового объема оперативной памяти — около 320 Кбайт для Framework и 390 Кбайт для Symphony. Это довольно большие объемы, приводящие к определенным неудобствам. Так, например, на машине с общим объемом оперативной памяти 512 Кбайт при использовании любой из этих систем уже становится невозможным заказ виртуального диска объемом более 100 — 120 Кбайт, поскольку не остается места для их совместного размещения в ОЗУ. Эти системы, как говорят про­граммисты, чересчур тяжелы для простых применений.
Тем не менее гибкие возможности и удобство использования прив­лекает к этим системам многих пользователей ПЭВМ. По их образу и подобию создаются и другие прикладные системы.
Руководитель работ по созданию систем Lotus 1-2-3 и Symphony — Митч Кэйпор — дал однажды такое определение: «Интегрированной называется система, которую пользователь включает утром и работает на ней весь день, не испытывая никакой потребности в других програм­мах». Это определение частично объясняет привлекательность интегри­рованных систем для пользователей, которые каждодневно решают примерно одни и те же задачи.
Далее приводится более подробное описание системы Framework, в которую встроено несколько замечательных свойств, позволяющих создавать на ее основе как простые проблемно-ориентированные си­стемы, предназначенные для применения в деловой сфере, так и сложные автоматизированные рабочие места.
Основные свойства системы Framework. Система Framework (произ­носится «фреймворк») обеспечивает следующие основные возможности: создание и обработку текстовых материалов, структурное представле­ние документов, использование электронных таблиц и баз данных ре-
187
яяционного типа, графическое представление данных. Пользователю, обладающему программистской квалификацией, система предоставляет специальный язык программирования — Fred, с помощью которого можно описать сложные алгоритмы управления процессом обработки данных.
Отличительной чертой системы Framework является принцип, согласно которому все создаваемые пользователем информационные объекты рассматриваются с единой точки зрения: все они объявляются фреймами. Фрейм — это некоторый универсальный носитель информа­ции, который, в свою очередь, может состоять из фреймов или же содержит конкретные данные, представленные в виде текста, таблиц, записей базы данных или графиков разного вида.
При появлении любого фрейма на экране дисплея он представляется либо в закрытом виде — как прямоугольничек, в котором содержится только название фрейма, либо в открытом виде — как дисплейное окно, в котором может быть представлена часть текстового документа, таб­лицы, базы данных или график. Окно с выбранным фреймом может занимать лишь часть экрана, а может быть увеличено до размеров полного экрана.
Вызов системы и начало работы с ней. При вызове системы на экране выделяется несколько рабочих зон. Главное меню располагается в верхней части вкрана и содержит девять слов, являющихся коман­дами верхнего уровня:
Disk Create Edit Locate Frames Words Numbers Graphs Print
Эти команды соответствуют основным режимам работы. Выбор команды в этом меню осуществляется одновременным нажатием кла­виши Ctrl и клавиши с первой буквой имени команды. При этом выде­ляется соответствующая позиция меню, и вслед за этим появляется вспомогательное меню, которое как бы «выпадает» из главного. Вспомо­гательное меню имеет вид столбца, в строчках которого расположены слова, поясняющие отдельные операции. Выбор позиции вспомогатель­ного меню осуществляется с помощью стрелок «Вверх», «Вниз» с по­следующим нажатием клавиши «Исполнение» (рис. 5.16).
Рабочая область располагается в центральной части экрана. В начале она пуста, но затем на ней начинают размещаться окна с фрей­мами, в которых содержится определенная информация.
Панель состояния расположена под рабочей областью и служит для отображения промежуточной рабочей информации — текста об­рабатываемой формулы, имени текущего (активизированного) фрейма, индикаторов нажатых клавиш и др.
Поле сообщений располагается под панелью состояний в самом низу вкрана и состоит из двух строк. В верхней строке отображается .текст редактируемого имени фрейма, формулы или числового значения.
188
В нижнкнЬ строку выдаются сообщения об ошибках, когда пользова­тель применяет неправильные действия, а также другие вопросы й сообщения системы.
Список имен внешних накопителей — А:, С:, D:, Е: — разме­щается в правой части экрана в виде узкого столбца. В правом нижнем

Рис. 5.16. Вид экрана в начале работы с системой Framework
углу экрана во время работы возникает столбец сименами активизи­рованных фреймов — это список рабочих фреймов. На рис. 5.16, яв­ляющемся графической копией экрана, в этом списке видны рабочие фреймы с именами «Оглавление», «Таблица 1», «Текст», «График». Метафора рабочего кабинета. При работе с системой человек может представить себя находящимся в рабочем кабинете. Обстановка этого «кабинета», имитируемого системой, включает «шкафы», в которых лежат «папки» с документами. Кроме того, имеется «рабочий стол», который можно использовать, во-первых, для того, чтобы сложить на углу нужные папки, во-вторых, для того, чтобы на его рабочей поверхности можно было раскладывать папки и вынимаемые из них документы и работать с ними.
Сначала пользователь видит лишь «шкафы», роль которых играют накопители с именами А:, С:, D:, Е: (рис. 5.17). Первое действие, которое совершает пользователь, — «открыть шкаф». Для этого он
выбирает с помощью курсора имя соответствующего накопителя, на­пример, С:, и нажимает клавишу «Исполнение». В рабочей области возникает вертикальное окно-столбец с именами фреймов (файлов), находящихся на данном внешнем накопителе. Это «папки», лежащие в «шкафу».
Далее из выведенного списка можно выбрать один или несколько фреймов, нажимая клавишу «Исполнение» в соответствующих пози­циях. Выбранные фреймы, точнее, их имена перемещаются в список

Рис. 5.17. Вид экрана при выборе рабочих фреймов
рабочих фреймов в правом нижнем углу экрана. Эту операцию можно представить как вынимание нужных «папок» из «шкафа» и складыва­ние их в стопку на углу стола. На рис. 5.17 видна стопка фреймов с именами Tabl, txl, DB1.
Операции открытия любого «шкафа» и выбора из. него нужных «папок» можно повторять многократно как в начале, так и в середина рабочего сеанса. После того как собрана необходимая пачка «папок» — рабочих фреймов, можно приступать к основной работе.
Папка «открывается», если на нее указать курсором и нажать «Исполнение». При этом в рабочем поле появляется раскрытый фрейм с соответствующим содержимым. На рис. 5.17 виден раскрытый фрейм типа «база данных». Его имя — DB1.
Далее можно «погрузиться» в данный фрейм и начать работу с его содержимым. Способ работы определяется типом фрейма. Текстовый фрейм можно редактировать. Электронную таблицу можно просмат­ривать и заполнять информацией. Базу данных можно просматривать, заполнять, сортировать и производить в ней поиск по значениям вы­деленных полей. Графики, диаграммы и гистограммы можно строить по данным, выбираемым из электронной таблицы или базы данных.

Рис. 5.18. Вид экрана с перекрывающими друг друга фреймами
Можно создавать, просматривать и модифицировать структурирован­ные документы. Это и есть основные типы фреймов.
Дисплейное окно, в которое выводится фрейм, можно перемещать по экрану и изменять его размеры. Один особый случай изменения размеров фрейма реализуется нажатием клавиши F9, после чего акти­визированный в данный момент фрейм показывается во весь экран. Эта операция называется Zoom (укрупнение). Повторное нажатие кла­виши F9 возвращает окно с фреймом к прежнему размеру и ставит его на прежнее место в рабочей области экрана. Раскрытые в рабочей об­ласти фреймы могут частично или полностью перекрывать друг друга — точно так же, как лежащие на столе раскрытые папки с документами (рис. 5.18).
Всем описанным выше действиям соответствуют обратные действия, которые обычно вызываются повторными нажатиями клавиши «Испол­нение». Так, раскрытый фрейм — папку можно сложить и убрать назад.
в стопку на столе. Закрытые фреймы — папки можно убрать в «шкаф» или удалить совсем, если они больше никогда не понадобятся. Можно закрыть «шкаф», т. е. убрать с экрана окно с каталогом соответствую­щего накопителя.
Для выполнения таких операций, как удаление или сохранение фрейма на диске, нужно использовать главное управляющее меню,

Рис. 5,19. Вид экрана при создании структурного документа
т. е. нажать клавиши Ctrl+ (первая буква команды) и затем в соот­ветствии с выведенным списком вспомогательного меню выполнить требуемую операцию. По ходу выполнения возможен небольшой диа­лог между пользователем и системой — по поводу имен файлов и пр.
Подобный способ действий сравнительно легко и быстро осваи­вается любым пользователем. Когда у пользователя появляются проб­лемы, он всегда может обратиться к системной «подсказке»: нажатие специальной клавиши выводит на экран подробный текст с разъясне­ниями. Текст подсказки структурирован по разделам и содержит пояснения по всем возможным операциям.
«Обработка идей». Одна из замечательных возможностей в си­стеме Framework связана с так называемой обработкой идей. Пользо­ватель может начать работать с фреймом типа структурированный документ. При этом первое, что появляется в соответствующем дисплей­ном окне, это пронумерованный и пока безымянный перечень разделов.
Пользователь может начать с того, что для каждой позиции этого-пе-речня указать сначала только имя и тип соответствующего подраздела.
При этом закладывается основа для новых, пока пустых фреймов. Получившуюся структуру можно трактовать как общий перечень идей, которые нужно развивать. При другом взгляде на такую структуру ее можно считать черновиком, оглавления будущего документа или общим планом работы (рис. 5.19).
Сделав начальный набросок, можно углубиться в разработку любого раздела, который в свою очередь может представлять собой подобную же структуру или содержать фактические данные, т. е. быть фреймом определенного типа.
Структурный документ можно дополнять новыми разделами. Можно копировать информацию из одного раздела в другой. Можно заставить систему сделать полное (текстовое) оглавление по созданным перечням разделов. Можно, наконец, вывести на печать любой раздел или весь структурный документ. При этом отдельные содержательные компо­ненты — текстовые, табличные и графические фреймы — будут выво­диться на печать по соответствующим правилам.
Описанное свойство выгодно отличает систему Framework от дру­гих интегрированных систем, поскольку стимулирует работу «сверху вниз» и позволяет легко создавать иерархические модели и документы.
Каждый фрейм в системе отображается в отдельный файл ДОС. Это очень важное свойство, позволяющее создавать информационные модели и документы произвольной сложности (ограничением является лишь доступный объем внешних устройств).
- При работе в системе Framework пользователь может временно прервать основной процесс и обратиться к ДОС, а затем вновь вернуться к прерванной работе. Следуя общему принципу, обращение к ДОС оформляется просто как вызов специального фрейма с именем DOS. Выйдя в ДОС, можно, например, запустить какую-либо программу и результаты ее работы передать назад в систему — в другой фрейм. Чтобы вернуться из ДОС в Framework, достаточно дать команду EXIT. Эта возможность делает систему очень близкой по свойствам к операцион­ным оболочкам, основной целью которых является интегрирование автономных программ.
Язык Fred позволяет задавать различные связи между компонен­тами одного и того же или разных фреймов. С его помощью можно также описывать управляющие структуры, благодаря которым конеч­ный пользователь может быть вообще избавлен от необходимости вво­дить какие-либо сложные команды. Его действия могут быть сведены К нажатию лишь одной или нескольких клавиш по указаниям системы. Таким способом можно реализовать информационные системы и авто­матизированные рабочие места, ориентированные на пользователей с элементарной подготовкой.
7 В. М. Брябрин 193
Интеграторы — средства объединения прикладных пакетов. В от­личие от готовых интегрированных систем, которые имеют, подобно Symphony и Framework, закрытый характер, т. е. не дают возможности подключения новых прикладных пакетов, в последнее время стал прак­тиковаться другой подход — создание инструментальных средств, с помощью которых можно было бы собирать из разных прикладных пакетов, как из детского конструктора, свою интегрированную систему.
Такие средства называют интеграторами или операционными оболочками. К системам такого рода относятся TopView (фирма IBM), Concurrent DOS и OEM (фирма Digital Research), Windows (фирма Microsoft). Эти системы различаются по ряду характеристик, но имеют и ряд общих свойств:
1. Работа с несколькими дисплейными окнами, иногда с возмож­ностью псевдопараллельной выдачи информации во все окна.
2. Предоставление возможности управления работой программ через меню, с выбором позиций меню с помощью клавиш управления курсором или манипулятора «мышь».
% Автоматическое распределение памяти между программами, иногда — обеспечение обмена данными между ними через окна.
Некоторые системы делают упор на использование графического режима дисплея, обеспечивая большую наглядность представления информации. Одна из наиболее привлекательных систем этого типа — Windows (фирмы Microsoft). Рассмотрим ее основные свойства.
Графический интерфейс. При вызове системы Windows в централь­ной части экрана появляется большое рабочее окно, в верхней части которого изображены условные графические символы (пиктограммы) с изображениями подключенных в этот момент накопителей А:, С:, D:. Над рабочим полем выведена линейка с именами трех главных команд, доступных в этот момент:
FILE VIEW SPECIAL
На экране появляется стрелка-курсор, которая перемещается синхронно с перемещением по столу манипулятора «мышь». Что в этот .момент может делать пользователь?
Можно подвести курсор к пиктограмме с изображением одного из накопителей, например С:, и нажать кнопку на манипуляторе «мышь». При этом в рабочем поле возникает столбец с каталогом фай­лов данного накопителя. Дальше можно подвести курсор к имени од­ного: из файлов и снова нажать кнопку; при этом данное имя будет выделено негативным изображением. Допустим, это имя файла с про­граммой калькулятора CALC.EXE.
Затем можно подвести курсор к имени системной команды FILE. Лосле нажатия кнопки на манипуляторе появится новый столбец-меню с именами команд, расшифровывающих команду FILE: Run, Load,
Close и др. Если, не отпуская Кнопку, выбрать с помощью курсора одну из этих команд, например, Load, и затем отпустить кнопку мани­пулятора, то инициируется загрузка выбранного файла CALC.EXE в оперативную память, контролируемую системой Windows.
После завершения загрузки программа CALC.EXE оказывается готовой к исполнению, но пока не исполняется. Ее присутствие в опе­ративной памяти отображается тем, что в специальном окне в нижней части экрана появляется пиктограмма калькулятора (рис. 5.20). По­добным же образом можно загрузить с разных накопителей и другие программы. Их пиктограммы при этом появятся в нижнем окне.

Рис. 5.20. Вид экрана при работе системы Windows
Запуск любой из этих программ производится очень просто. Нужно подвести курсор к одной из пиктограмм и, нажав кнопку манипулятора, «вытащить» затем эту пиктограмму вместе с курсором в рабочее поле. Как только после этого пользователь отпустит кнопку манипулятора, программа, соответствующая данной пиктограмме, запускается. В част­ности, работа упомянутого выше калькулятора состоит в том, что в рабочем окне возникает графическое изображение обычного ручного калькулятора, на котором можно нажимать соответствующие кнопки и производить вычисления.
Чтобы остановить работу любой запущенной программы, нужно в тот момент, когда она ждет от пользователя ввода информации, под­вести курсор к другой пиктограмме и запустить в работу соответствую­щую ей программу. Ранее запущенная программа освобождает рабочее поле и возвращается на свое место в окне пиктограмм, а новая программа вступает в работу.
Одна постоянно доступная программа обеспечивает работу с ДОС. Ей соответствует пиктограмма с изображением дискеты. Как только начинает работать любая прикладная программа, пиктограмма ДОС появляется в нижнем окне рядом с другими пиктограммами. Если поль­зователь затем выберет ее в качестве очередного кандидата для работы, т. е. «вытащит» в рабочее поле, то система приходит в описанное выше состояние — ранее работавшая программа «сворачивается» в соответ­ствующую пиктограмму, а в рабочем поле появляются условные изобра­жения накопителей и выводится каталог одного из накопителей.
Описанная выше техника работы очень проста и не требует ника­кого обучения. Любой человек, хотя бы немного разбирающийся в пер­сональных компьютерах, за несколько минут овладевает основными приемами работы. Сложнее обстоит дело при подготовке прикладных программ для работы совместно с системой Windows. Далеко не каждая прикладная программа может быть легко приспособлена для этого.
По оценке самой фирмы-разработчика только 80 процентов про­грамм, написанных для ДОС, пригодны к совместной работе с Windows. Причина заключается в том, что многие программы для увеличения эффективности пользуются особенностями аппаратуры, минуя средства операционной системы.
Система основана на стандартизованном графическом интерфейсе GDI — Graphic Device Interface, который, по сути дела, является пакетом графических подпрограмм, играющих роль посредника между прикладной программой и аппаратурой. GDI — это язык абстрактного графического устройства. Прикладная программа выдает приказы на этом языке, а драйвер конкретного графического устройства переводит их в систему команд, понятных аппаратуре.
Стандартизованный графический интерфейс позволяет системе Windows быть независимой от конкретной аппаратуры. Ее можно рассматривать как загружаемый специализированный драйвер консоли.
Возможности и ограничения операционных оболочек. В системе Windows, как и в большинстве других подобных систем, может исполь­зоваться несколько рабочих окон. В Windows отдельные окна не могут перекрывать друг друга, а располагаются рядом; в других системах окна могут накладываться друг на друга.
Размеры окон и их положение на экране могут изменяться во время работы. Для этого курсор подводится к углу окна, в котором изображен значок увеличения его размеров. Если теперь нажать на кнопку мани­пулятора, то окно начнет расти.
Большинство систем обеспечивает обмен информацией между окнами. 6 системе Windows, например, можно, работая в одном окне, сформулировать заказ на информацию из другого окна. Это похоже на задание значения в ячейке электронной таблицы в виде зависимости от значений других ячеек.
196
Во многих системах описываемого типа можно одновременно управлять многими прикладными программами через несколько окон. Это особенно выделяется в системах, которые сами начинают играть роль ОС. Так, например, система Concurrent DOS является, в отличие от Windows, не надстройкой над ДОС, а самостоятельной операцион­ной системой. Эта ОС задумана как дальнейшее развитие операционных систем семейства СР/М-86 с обеспечением совместимости с ДОС. Система позволяет запускать программы, разработанные и для СР/М-86, и для ДОС. В меню, которое появляется на экране при загрузке системы, входят следующие подсистемы: программа работы с файлами, тексто­вый процессор, система поддержки телекоммуникаций, автоматизиро­ванный каталог и программа управления принтером. Можно войти в любую из этих систем, и она окажется связанной с окном, которое отображается на экране терминала и позволяет управлять выбранной системой. Программы в разных окнах будут выполняться одновременно. Приказ смены окна работает асинхронно, что позволяет в любой момент переключиться на любое окно и наблюдать развитие событий в программе, связанной с этим окном.
В системах — надстройках над ДОС, таких как Top View и Windows, также есть средства для поддержки многозадачной работы. Но для их использования приходится модифицировать сами прикладные программы, предназначенные для псевдопараллельного испол­нения.
В использовании операционных оболочек есть определенные проб­лемы. Эти системы, хотя и предлагаются всего лишь как средства интеграции, требуют для своей работы значительных объемов памяти. Так, система Windows требует 192 Кбайт оперативной памяти, не счи­тая различных вспомогательных файлов, хранимых на внешних уст­ройствах.
Кроме того, как указывалось, на объединяемые прикладные про­граммы также накладывается много ограничений: они не должны рабо­тать с устройствами напрямую, например, читать данные из порта клавиатуры или писать их в память дисплея; используемая ими память ограничивается естественным образом в связи с необходимостью предо­ставления места для самой системы и для других программ. Работа с графикой в прикладных программах должна осуществляться через стандартизованный графический интерфейс.
Резидентные сервисные системы. Резидентные сервисные системы представляют особую разновидность интегрированных пакетов. Они дают возможность оперативного выполнения некоторых вспомогатель­ных действий с приостановкой ранее начатой работы.
Резидентная система инициируется перед запуском основных прикладных программ. При инициации она размещается в оперативной памяти, откуда впоследствии ее можно быстро вызвать простым пре-
197
рыванпгм основной работы. Прерывание обычно осуществляется нажа­тнем некоторой комбинации клавиш, например, Shift + Alt.
В состав резидентной системы вводятся программы и данные, которые хочется всегда иметь под рукой: это, например, калькулятор, автоматизированный календарь, записная книжка, часы с будильни­ком, таблица ASCII-кодов, подпрограмма просмотра текстовых файлов, подпрограмма шифровки/дешифровки и др.
С целью экономии места в оперативной памяти резидентные системы обычно можно конфигурировать, устанавливая лишь некоторые, необходимые пользователю компоненты. При этом объем требуемой оперативной памяти колеблется от 15 до 150 Кбайт.
При вызове системы на экран почти мгновенно выводятся соответ­ствующие рабочие окна, через которые пользователь общается с той, или иной подпрограммой резидентной системы. Закончив эту работу, пользователь повторным нажатием клавиш вызова закрывает резидент­ную систему. Ее окна исчезают с экрана, а прежнее изображение пол­ностью восстанавливается, и продолжается нормальная работа приклад­ной программы.
Наиболее известны системы Sidekick, Pop-Up, Spotlight. В Вычис­лительном центре АН СССР реализована система Ассистент (автор — Г. Г. Гнездилова), в состав которой входят следующие подпрограммы:
— просмотр файлов,
— просмотр таблицы ASCII-кодов,
— установка будильника и выдача по нему звукового сигнала. К категории резидентных сервисных систем можно отнести также
макрогенераторы, которые позволяют приписывать отдельным клави­шам и их комбинациям целые последовательности команд, часто вво­димых с клавиатуры.
При нажатии запрограммированной таким образом клавиши про­исходит вызов соответствующего макроса и выполнение всех припи­санных этой клавише команд.
Эти системы часто предоставляют дополнительные возможности, такие как переопределение кодов клавиш клавиатуры, автоматическая блокировка клавиатуры и очистка экрана дисплея при длительном отсутствии пользователя, шифровка/дешифровка файлов с целью их защиты от несанкционированного доступа и др.
Известные системы этого типа — Superkey, Smartkey, Prokey.
Таким образом, интегрированные системы разных типов дают воз­можность создания на персональном компьютере удобной операцион­ной обстановки, объединяющей наиболее важные и часто используемые прикладные и сервисные программы. Во многих случаях на основе интегрированной системы можно создать законченное автоматизиро­ванное рабочее место, не привлекая больше никаких других программ. Это удобно для пользователей, так как обеспечивает единый способ
198
взаимодействия со всеми компонентами, легкий и быстрый переход от одного вида работы к другому и обмен данными между разными подсистемами.
5.4. Системы подготовки текстов
Системы подготовки текстов или текстовые процессоры (Word Processors) представляют одну из самых популярных категорий при­кладных систем на персональных компьютерах. Объясняется это вполне понятными причинами.
Во-первых, появление дешевых персональных компьютеров и принтеров стимулировало их применение в таких сферах, как дело­производство, журналистика и др., где подготовка текстовой докумен­тации является главным видом деятельности.
Во-вторых, любая работа так или иначе бывает связана с составле­нием текстовых документов. Текстовые процессоры служат для подго­товки самых разнообразных видов текстовой документации — статей, писем, технических описаний, приказов, отчетов и др. Практически любой документ, который обычно готовится на пишущей машинке, мо­жет быть создан с помощью текстового процессора; прн этом появля­ется возможность многократно исправлять его отдельные фрагменты, не вводя заново весь текст, вносить в текст другие материалы, также приготовленные на компьютере, и, наконец, печатать на принтере в нужном количество экземпляров. Можно автоматически составлять оглавления документов, проверять правильность написания слов, со­ставлять по заданным текстам словари и выполнять другие операции. Таким образом, обработка текстовых материалов на компьютере может выполняться не только быстрее и эффективнее, чем на пишущей ма­шинке, но и предоставляет новые, недоступные ранее возможности.
Все это послужило стимулом к созданию множества текстовых процессоров, предоставляющих пользователям персональных компью­теров целый спектр возможностей — от составления текстов программ или обычных документов до систем коррекции грамматических оши­бок, автоматического составления индексов, оглавлений, заполнения писем по формам и др.
Ниже приводится краткое описание двух систем подготовки текс­тов, разработанных в Вычислительном центре АН СССР, — АБВ и ЛЕКСИКОН. Эти системы предоставляют основные средства, необхо­димые для составления программ и подготовки текстовых материа­лов разного назначения.
Основные черты системы подготовки текстов АБВ. Система АБВ, разработанная в ВЦ АН СССР А. Б. Борковским, предназначена для работы с текстами программ и различными текстовыми документами. Система основана на использовании многооконного интерфейса. Тексто-
199
вые файлы, обрабатываемые системой АБВ, могут содержать произволь­ную смесь русских и латинских букв. Редактор опирается на исполь­зование двух вспомогательных резидентных программ — драйвера кодовых таблиц ALFA. EXE и администратора дисплейных окон WM.EXE, которые поддерживают работу других систем, обращающихся к клавиатуре и дисплею..
В состав системы АБВ входит несколько программ (сокращенные имена этих программ, заданные латинскими буквами, могут быть изме­нены) :
FF — файлер — программа, поддерживающая работу с катало­гами файловой системы, а также обеспечивающая простые операции редактирования текстовых файлов;
FE — форматирующий редактор — программа, осуществляющая подготовку и печать текстовых документов в соответствии с задаваемой пользователем разметкой; по функциям эта программа является, рас­ширением файлера;
FM — формирователь шрифтов — программа, обеспечивающая соз­дание новых шрифтов; во время работы этой программы происходит формирование рисунка каждой буквы, представляющего собой точечную матрицу.
При вызове любой из указанных программ и по ходу их работы на экране появляются дисплейные окна, в которые выводятся различ­ные объекты — рабочие каталоги, тексты файлов, форматы, управляю­щие меню, информационные сообщения (подсказки). Окна могут иметь произвольное расположение на экране, они могут частично или пол­ностью перекрывать друг друга. Пользователь может по своему усмотре­нию легко изменять положение, размеры и цвета всех окон.
Наличие нескольких рабочих окон очень удобно для работы. Например, в разных окнах можно независимо редактировать различ­ные фрагменты программ. Можно в одном окне работать с текущим каталогом, а в других окчах — с текстовыми файлами из этого каталога. В отдельные окна можно выводить форматы — специальные разметоч­ные структуры, задающие параметры абзацев и строк.
Для работы программ FF и FE необходимы вспомогательные файлы!
PARM.ABC — текущие параметры окон,
HELP — F.ABC — тексты подсказок.
Для печати на разных типах принтеров необходимы вспомогатель­ные файлы с загружаемыми шрифтами:
EPSO8I2.ABC — шрифт для печати на принтере типа Epson FX (высота заглавных букв — 2,5 мм);
EPS1612.ABC — шрифт для печати на принтере типа Epson FX (высота заглавных букв — 3,5 мм);
TOSH2418.ABC — шрифт для печати на принтере типа Toshiba Р1350 (высота заглавных букв — 3,5 мм),
200
Программные файлы имеют тил ЕХЕ и, следовательно, могут раз­мещаться в текущем или в любом общедоступном каталоге. Вспомога­тельные райлы типа ABC берутся из текущего каталога или из каталога «операционной среды ABC», который должен быть заранее установлен комащой SET. Такая установка обычно осуществляется командой в файле автозапуска AUTOEXEC.BAT. Вид этой команды:
set ABC = (имя каталога)
Запуск программ осуществляется, как обычно в ДОС, вводом командной строки, в которой указывается имя программы (FF, FE или

PjiC 5.21. Клавиши управления курсором
FM) и, возможно, параметров. В качестве параметров можно ука­зать имя одного или нескольких текстовых файлов, подлежащих редактированию; можно также указать имя рабочего каталога,
Если параметры не заданы, то в первое дисплейное окно вы­водится текущий каталог, и пользователь может дальше про­должать работу с этим ката­логом или же выделить в нем один из файлов и, нажав кла­вишу «Исполнение», вывести текст этого файла в другое дисплей­ное окно с целью просмотра или редактирования.
Если указанное в качестве параметра имя не соответствует никакому файлу текущего каталога, то система создает новый файл с этим именем.
Техника редактирования. При редактировании текста все команды задаются либо нажатием одной клавиши, либо одновременным нажатием клавиш Shift, Ctrl, Alt и какой-либо другой клавиши. В приводимой ниже сводке команд одновременное нажатие клавиш обозначается знаком +. Дадим краткую сводку основных команд редактирования.
Перемещение по тексту. Для перемещения по тексту используются клавиши управления курсором (рис. 5.21). Простое действие этих клавиш обеспечивает перемещение на один символ вправо или влево и на одну строку вниз или вверх. Кроме того, возможны перемещения порциями по 16 строк. Наконец, возможны предельные перемещения по горизонтали или по вертикали. Для этогс используется особая кла-вила в центре клавиатуры управления курсором, на которой изобра­жена цифра (5). Нажатие этой клавиши действует как команда, имею­щая смысл: «повторить следующую команду максимально возможное, число раз».
Действие указанных клавиш:
(Вправо) — сдвиг курсора вправо на один символ, ,
(Влево) — сдвиг курсора влево на один символ, (Вниз) — сдвиг курсора вниз на одну строку, (Виерх) — сдвиг курсора вверх на одну строку, (Ноте) — перевод курсора в начало текущей строки, (End) — перевод курсора в конец текущей строки, (PgUp) — перевод курсора на 16 строк вверх, (PgDn) — перевод курсора на 16 строк вниз, (5) (Вправо) — переход в конец текущей строки, (5) (Влево) — переход в начало текущей строки, (5) (Вниз) — переход в самый конец файла, (5) (Вверх) — переход в самое начало файла. Другие способы перемещения по тексту: Plus — сдвиг курсора на слово вперед (вправо), Minus — сдвиг курсора на слово назад (влево), Shift + (Вверх) — двигать текст вниз, оставляя курсор на месте, Shift -f (Вниз) — двигать текст вверх, оставляя курсор на месте, Tab — перемещение по заранее установленным отметкам табу­ляции;
F8 — запоминание текущей позиции курсора, Shift -j- F8 — возврат к запомненной по F8 позиции курсора. Обработка фрагментов. Редактор дает возможность выделять, а затем удалять и копировать различные фрагменты текста. Для этого сначала указываются границы фрагмента. Отмеченный фрагмент вы­деляется на экране негативным изображением, после чего его можно удалить, а затем вставить в то же или в другое место; можно также ско­пировать или переместить его, не удаляя со старого места. Фрагменты могут быть трех видов:
— строки (одна или несколько) (выделяются клавишей F3),
— цепочки символов (выделяются клавишей F5),
— блоки (прямоугольные области) (выделяются клавишей F7). Клавиша Alt, нажатая одновременно с одной из этих клавиш,
отменяет выделение. Если же выделение не отменено, то можно выпол­нять следующие манипуляции над фрагментами:
Ctrl -f- (F3 или F5 или F7) — удаление выделенного фраг­мента,
Shift + (F3 или F5 или F7) — вставка ранее удаленного фраг­мента на новое место,
Ctrl + F4 — перестановка фрагмента на новое место,
Shift + F4 — вставка выделенного фрагмента на новое место без его удаления со старого места.
Удаление символов и строк осуществляется командами;
Del — удалить символ над курсором,
BackSp — удалить символ перед курсором,
(5) Del — удалить от курсора дй конца строки,
(5) BackSp — удалить от курсора до начала строки,
Ctrl -\- End. — другой способ удаления конца строки,
Ctrl + F6 — удаление текущей строки.
Удаляемые строки и фрагменты запоминаются в буфере (не более 50 строк) и затем могут быть вставлены на старое или на новое место.
Вставка символов и строк. По умолчанию любой символ вставляется в строку, отодвигая остальную часть строки вправо. Выходящая за пределы окна часть строки становится не видна (если не включено авто­форматирование, при котором не умещающееся на строке «лишнее» слово переносится на следующую строку). Этот способ ввода может быть изменен следующими командами:
Shift + Ins — переход из режима вставки в режим замены и об­ратно; в режиме замены вводимые символы не раздвигают текст, а пе­чатаются вместо ранее введенных символов,
F6 — вставка перед текущей строкой пустой строки,
Shift + F6 — вставка строки, удаленной посредством Ctrl + F6.
Поиск и замена осуществляются командами:
Shift -f- F2 — задание образца поиска и строки для замены,
F2 — поиск очередного вхождения образца от текущей позиции курсора,
Ctrl + F2 — замена найденного вхождения образца на строку, заданную командой Shift+ F2. Нажатие клавиши (5) перед этой коман­дой вызывает глобальную подстановку от текущего положения курсора до конца текста.
Общее управление:
F1 — вывод справочной информации (подсказки),
F10 — вызов управляющего меню,
Alt + 0 — активизация служебного окна со списком рабочих окон,
Alt + (номер) — активизация рабочего окна с указанным номе­ром (номер может изменяться от 1 до 30),
Ctrl + F10 — удаление текущего рабочего, окна,
Shift + (стрелки) — сдвиг текста в окне вправо или влево,
Cap sLock — переключение алфавита из русского в латинский и обратно,
Shift — смена регистра для алфавитно-цифровых клавиш,
Shift + CapsLock — фиксация/отпускание верхнего регистра.
Экранное форматирование абзацев. Форматирование абзацев вклю­чает задание левого и правого полей, отступа для первой строки, центри­рование и размещение отметок для табуляции. По умолчанию формати­рование текста выключено, но его можно включить, указав специальной командой имя файла с форматами. Форматы задаются особыми форма­тирующими линейками.
Линейка задает следующие параметры!
— левая граница строки,
— правая граница строки,
— позиция отступа первой строки абзаца,
— отметки табуляции,
— необходимость выравнивания по правому краю.
Любая линейка активизируется и начинает действовать на текущую и следующие строки, если нажать одновременно клавиши:
Alt + (имя линейки)
При этом происходит размещение текущей строки в рабочем окне согласно формату, описанному данной линейкой. После этого начинает действовать автоформатирование. Когда строка переполняет простран­ство между установленными линейкой полями, ее хвост перемещается на следующую строку и вызывает переформатирование оставшейся части абзаца. Это происходит при вводе текста, при вставке символов и при нажатии Backspace в начале строки.
Любой ранее отформатированный абзац можно переформатировать вновь с той же самой или другой линейкой. Для этого достаточно дать команду Alt ~\- (имя линейки) или Alt + Z.
В каждом файле с форматами может быть несколько линеек. Редак­тируя этот файл обычными средствами, можно устанавливать необхо­димую разметку рабочих текстовых файлов.
Общее управление работой системы. При нажатии клавиши F10 в правом нижнем углу рабочего окна появляется вспомогательное окно с управляющим меню. В позициях этого меню указываются основные операции, которые можно выполнять над данным рабочим объектом, а в нижней строке экрана появляется текстовый комментарий к каждой позиции. Пользуясь вертикальными стрелками, в управляющем меню можно выбрать необходимую операцию, а нажатие клавиши «Исполне­ние» является сигналом к ее выполнению. Повторное нажатие F10 вновь активизирует текущее рабочее окно.
Для окна, в которое выведен текстовый файл, управляющее меню имеет следующий вид (справа приводятся строки комментариев):
Список окон Перейти в служебное окно «Список окон»
Сохранить Записать файл на диск
Еще окно Создать новое окно с тем же файлом
Имя Изменить имя данного файла
Цвет Изменить цвета окна
Выход Закончить работу
Очистить Уничтожить данное окно
ДОС Выполнить команду ДОС
Окно, в которое выведен каталог, снабжается управляющим меню следующего вида:
Список окон Перейти в служебное окно «Список окон»
Нов файл Создать новый файл
Нов каталог Создать новый подкаталог
Копировать Копировать отмеченные файлы
Удалить Удалить отмеченные файлы
Транслировать Транслировать отмеченные файлы
Цвет Изменить цвет окна
Выход Закончить работу
Очистить Уничтожить данное окно
Выбор той или иной позиции меню требует от пользователя даль­нейших действий, в зависимости от характера выполняемой операции. Например, переход в служебное окно, содержащее список всех рабочих1 окон, выполняется без всяких дополнительных манипуляций. В слу­жебном окне каждому рабочему окну — а их всего может быть до 30 — сопоставлена текстовая строка, указывающая имя выведенного в дан­ное окно объекта. Из служебного окна можно перейти в любое рабочее окно, установив маркер в соответствующую позицию и нажав клавишу «Исполнение».
Сохранение файла на диске Также происходит без дополнительных переспросов и манипуляций пользователя на клавиатуре. Следует иметь в виду, что при этом сохраняется не только новая, но и старая копия редактируемого файла. Эта копия образуется в файле типа ВАК, имя которого совпадает с именем редактируемого файла.
В ответ на выбор позиции «Цвет» система предлагает пользо­вателю изменять цвет фона текущего окна и цвет знаков в нем путем нажатия клавиш со стрелками.
Некоторые операции, указанные во втором управляющем меню («Копировать», «Удалить», «Транслировать»), имеют смысл лишь после предварительного выделения в рабочем окне строчек с именами файлов, подлежащих копированию, удалению или трансляции. Такое выделение выполняется, как и при редактировании обычных текстовых файлов, клавишей F3.
При выполнении операции «Выход», если перед этим редактирова­лись и не были сохранены какие-либо текстовые файлы, у пользователя спрашивается, следует ли сохранять измененные файлы. При отрица­тельном ответе сохранения не происходит, а при положительном изме­ненные или вновь созданные файлы записываются на диск, после 4tro происходит выход в ДОС (вызов командного процессора или возврат в другую программу, вызвавшую АБВ).
Кроме управления работой через меню, ряд действий может быть выполнен с помощью клавишных команд. Эти действия и соответствую­щие им клавишные команды, перечислены в нижней строке экрана. Так, для окна с каталогом перечислены следующие клавишные команды:
F2 — задание шаблона для селекции файлов в текущем каталоге,
F3 — отметка файлов с целью удаления, копирования или трансля­ции,
F5 — смена имени файла в текущем каталоге,
F6 — копирование отмеченных файлов в другие файлы или в каталог,
+ — запуск исполняемой программы (типа СОМ, ЕХЕ или ВАТ).
Для окна с обычным текстовым файлом доступны следующие часто используемые команды:
F2 . — поиск по образцу, замена,
F3 — отметка, удаление, вставка строк,
F4 — перемещение, копирование,
F6 — вставка новой строки,
F8 — пометка строки для последующего возврата (с помощью Shft + F8).
При необходимости получить краткую справку (подсказку) о ра­боте системы пользователь должен нажать клавишу F1. В ответ на это в отдельное окно выдается соответствующий текст; прочитав его, пользователь с помощью дополнительных клавишных команд может получить более детальную справочную информацию или, нажав Esc, продолжить прерванную работу.
Вывод на печать. Печать текстовых файлов на принтере требует предварительного задания параметров печати. К основным параметрам относятся следующие:
— тип принтера,
— число строк на странице,
— интервал между строками (в точках),
— длина страницы (в сантиметрах),
— останов в конце страницы (да/нет),
— номер первой печатаемой страницы,
— размер левого поля (в знаках или сантиметрах),
— имя файла с загружаемым шрифтом.
Указанные параметры задаются в особой табличке, которая пы-водится системой перед началом печати. Все параметры по умолчанию имеют определенные значения, однако пользователь может менять их по своему усмотрению.
Разбиение текста на страницы может быть автоматическим (по заданному числу строк на страницу). Это соответствует так называемой мягкой разбивке на страницы; в текст не вводится никаких пометок, означающих переход на новую страницу, а просто редактор считает строки при печати и осуществляет останов в конце каждой страницы или прокручивает бумагу до начала следующей страницы.
С другой стороны, пользователь может сам установить в нужных местах жесткие границы между страницами. Для этого служит спе­циальная клавишная команда. После установки жесткой границы i остальная часть текста подвергается мягкой разбивке, пока снова не
встретится жесткая граница. Таким образом, пользователь может явно указывать строчки, с которых следует начинать отдельные стра­ницы.
Останов в конце каждой страницы бывает необходим при исполь­зовании отдельных листов бумаги. Когда принтер остановится после печати очередной страницы, можно заправить новый лист бумаги, а затем, нажав клавишу, продолжить печать. Если же используется непрерывная бумажная лента, те можно задать непрерывную печать с автоматической протяжкой в конце каждой страницы на нужное число строк. Для этого нужно предварительно точно задать длину страничного листа.
Можно выводить на печать не весь текст, а только его часть — фрагмент, состоящий из выделенных строк. Это очень удобно при пере­печатке отдельных страниц или фрагментов текста.
Таковы основные возможности редактора АБВ. Описанное состоя­ние системы, разумеется, не является застывшим навечно. Данная система, как и все программное обеспечение для персональных компью­теров, очень быстро обновляется. Вполне возможно, что когда читатель возьмет в руки эту книгу, появятся новые, более совершенные версии описанной системы. Тем не менее общее знакомство с ее возможностями дает представление о том, как можно готовить текстовые документы на персональных компьютерах.
Редактор Лексикон. В ВЦ АН СССР разработан еще один тексто­вый редактор — Лексикон. Автор разработки — Е. Н. Веселое. В этом редакторе, как и в АБВ, для представления редактируемых объектов используются дисплейные окна, которые можно размещать в любом месте на экране, менять их размеры и цвет. Рабочие окна идентифи­цируются цифрами от 1 до 9. В любой момент во время работы в редакторе возможен переход из текущего окна в любое другое. Это выполняется командой:
ALT + (номер окна)
Во время работы всегда доступна «подсказка» — поясняющий текст, который выводится на экран при нажатии клавиши F1. Дру­гая функциональная клавиша — F10 — обеспечивает вызов главного управляющего меню, и через него выбор таких функций, как изме­нение параметров текущего окна, загрузка и сохранение файлов, очистка окна, вызов макрокоманд или выход из системы.
Так, например, изменение положения окон на экране, их раз­меров и цветов выполняются после выбора в главном меню позиции «Установить». При этом в двух верхних строчках экрана появляется подсказка, указывающая, что с помощью клавиш Ins, De! или Plus можно выбрать нужное действие и затем клавишами со стрелками произвести необходимые изменения параметров текущего окна.
207
Все изменения параметров окон могут быть запомнены при выходе из редактора, если- пользователь ответит утвердительно на соответ­ствующий вопрос системы.
Манипуляции с фрагментами текста. При выделении фрагмента текста, состоящего из одной или нескольких строк, используется, как и в АБВ, клавиша F3, но отменяется выделение клавишей F4. В пре­делах выделенного фрагмента большинство обычных операций редак­тирования заблокировано, зато действуют операции над целым фраг­ментом — удаление, вставка, копирование, сдвиг вправо-влево. Фраг­менты можно переносить из одного окна в другое.
Двигать по горизонтали можно не только выделенный фрагмент, но и весь текст. Это полезно в том случае, если окно недостаточно широко или если текст выходит за пределы окна по горизонтали. Для сдвига служат клавиши:
F5 — весь текст в окне сдвигается влево,
F6 — весь текст в окне сдвигается вправо,
Ctrl + F5 — сдвиг фрагмента влево,
Ctrl -j- F6 — сдвиг фрагмента вправо.
Задание образцов для поиска и замены производится следующим образом. Прямо в рабочем поле, в любой строке, пишется выраже­ние вида:
/искомая строка/и или
/искомая строка/s
Точно так же можно задать образец для замены:
/заменяющая строка/з или /заменяющая строка/г
В данном примере тексты «искомая строка» и «заменяющая строка» представляют собой образцы для поиска и замены, а знаки / играют роль ограничителей. Буква и или s является кодом команды «искать», а буква з или г — кодом команды «заменить».
Под действием клавиши F2 заданные образцы запоминаются в бу­фере и убираются из рабочего поля. Собственно поиск и последующая замена инициируются командами:
Ctrl + F1 — поиск вхождения образца, Ctrl + F2 — замена образца.
Глобальная замена по всему тексту осуществляется, если перед нажатием Ctrl + F2 нажать клавишу-повторитель (5).
Особенности экранного форматирования. Форматирование вво­димого текста или выделенных фрагментов определяется сос­тоянием (режимом работы) редактора. В режиме подготовки до-
кументов, который обозначается словом ДОК, можно устанавли­вать левую и правую границытекста и отступ для красной строки. В режиме работы с простым текстом (который обозначается словом ТЕКСТ) формат строки не устанавливается. Признаком работы в том или ином режиме является слово ДОК или ТЕКСТ, высвечиваемое в специальной рамке на верхней границе рабочего окна. В этой же рамке высвечиваются признаки включения выравнивания по правому краю текста (символ ВЫРАВ) и автоматического переноса слов по слогам (символ « — »). Кроме того, в этой же рамке высвечивается имя рабочего файла, общее число строк в нем, номер текущей строки и позиции в ней, признак выбранного алфавита (русского или латин­ского) и текущая дата. Переключение режимов форматирования осу­ществляется следующими комбинациями клавиш:
Shift + F10 — переключение между режимами ДОК и ТЕКСТ, Shift + F6 — включение/выключение автоматического переноса слов,
Shift + F4 — включение/выключение автоматического выравни­вания текста по правому краю.
Установка левой и правой границ текста и отступа для красной строки в режиме ДОК осуществляется по текущему положению кур­сора клавишами:
F7 — фиксация левой границы текста,
Alt + F7 — фиксация правой границы текста, Ctrl -f- F7 — фиксация отступа для красной строки. Другие важные функциональные клавиши: F9 — переключение алфавита (русск./лат.),
Alt + F9 — переключение языка подсказок (русск./англ.), Shift + F9 — переключение режима экрана (текстов./графич.), Ctrl + F9 — выход в ДОС (с возвратом по команде EXIT). Форматирование абзацев состоит в выравнивании строк слева и справа непосредственно при вводе текста. Это достигается тем, что при пересечении курсором правой границы в момент ввода очередного символа происходит автоматический перенос последнего слова на следующую строку и вставка пробелов между словами текущей строки, чтобы выровнять ее по правому краю. При переносе слова делятся на слоги по общим правилам.
При вводе нового текста нажатие клавиши «Исполнение» автомати­чески завершает текущий абзац и переводит курсор в начало первой строки нового, пока не созданного абзаца.
Повторное переформатирование абзаца осуществляется командой Ctrl + F8
Таким образом, в редакторе Лексикон форматирование произво­дится не на основе специальных линеек, как в редакторе АБВ, а прямо в рабочем окне на готовом али вновь вводимом тексте.
Редактор Лексикон удобен для редактирования программ, так как получающийся в результате файл в точности соответствует тому, что программист видит на экране, в отличие от АБВ, где файл, кроме основного текста, может содержать еще и ссылки на форматирующие линейки. В целом обе рассмотренные системы подготовки текстов пол­ностью удовлетворяют потребности в составлении и редактировании программ и текстовых документов средней сложности.
Что еще можно делать с помощью текстовых процессоров? Ввиду того, что для персональных компьютеров уже разработано и продолжает разрабатываться много новых текстовых процессоров, имеет смысл выделить некоторые параметры и функциональные характеристики, по которым их можно было бы сопоставлять друг с другом.
Наибольшее значение имеет набор функциональных возможностей, предоставляемых тем или иным текстовым процессором. К расширен­ному набору возможностей относятся следующие.
Редактирование текста на экране:
— перемещение по строкам, абзацам, страницам, в конец и в начало текста, запоминание позиций и возврат к ним;
— выделение фрагментов, состоящих из символов, слов или строк, их удаление, вставка, копирование;
— поиск вхождений образцов, их однократная или глобальная замена;
— форматирование отдельных строк и абзацев — выравнивание по левому/правому краю, задание отступа для первой строки абзаца, задание полей, задание переносов слов;
— разбивка на страницы — автоматическая или ручная установка границ между страницами;
— выделение заголовков, их центрирование, автоматическая или ручная нумерация.
Разметка/выделение отдельных элементов текста:
— изменение шрифта отдельных слов, строк, абзацев;
— подчеркивание, разрядка слов, усиление яркости (жирности)}
— введение верхних и нижних индексов.
Введение в текст «посторонних», нетекстовых фрагментов;
— рисунков;
— математических выражений;
— химических формул. Взаимодействие с файловой системой;
— сохранение/загрузка текстовых файлов;
— выдача каталога файлов и выбор из него файлов для работы;
— слияние текстов из разных файлов, взаимные переносы фраг­ментов текстов между разными файлами.
Вывод текстов на печатающие устройства разных типов с заданием параметров печати:
210
— типа принтера;
— размера страницы;
— левого поля и длины строки или левого и правого поля;
— интервала между строками;
— порядка нумерации страниц;
— колонтитулов — стандартных надписей на верхнем и нижнем поле каждой страницы;
— необходимости печати в два столбца;
— порядка работы принтера по окончании каждой страницы (ждать/не ждать).
Далеко не все из указанных возможностей нужны в одинаковой мере для всех видов работы с текстами. Например, при использовании текстового процессора преимущественно для составления программ на языках высокого уровня совсем не нужны средства форматирования и выделения элементов, в то время как для литературной работы эти средства крайне важны. Подготовка и печать колонтитулов бывает нужна в основном при работе с документами. В то же время предостав­ление пользователям максимума возможностей естественно увеличи­вает размеры программы и усложняет работу с текстовым процес­сором.
При оценке удобства работы с тем или иным текстовым процессо­ром имеют значение следующие параметры:
— количество необходимых нажатий клавиш для выполнения той или иной операции, которое может колебаться от 1 — 2 до 20 — 30;
— скорость отображения текста на экране при начальной загрузке, при разных способах перемещения по тексту, а также при удалении, вставке и копировании фрагментов, что может занимать от нескольких секунд до нескольких десятков секунд;
— удобство вызова поясняющих текстов — подсказок, их полнота, структурирование, скорость вывода на экран;
— возможность получения «чистого» текста, не содержащего ни­каких управляющих или разметочных символов;
— ограничения на длину текстов;
— количество одновременно обрабатываемых файлов;
— возможность введения новых шрифтов и алфавитов;
— общий объем оперативной памяти, занимаемой текстовым процессором.
Указанные параметры по-разному оцениваются пользователями. Для всех пользователей важно максимальное быстродействие системы, которое определяется количеством необходимых нажатий клавиш при разных операциях и скоростью отображения текста на экране. При этом для некоторых пользователей принципиально важно иметь воз­можность одновременной работы со многими файлами или обрабаты­вать тексты на разных языках.
8* 211
В связи с обработкой текстов на разных языках следует отметить, что проблема здесь может заключаться не только в замене одного алфа­вита на другой. Некоторые языки требуют другого алгоритма ввода текста. Например, в арабском языке ввод осуществляется справа налево; кроме того, отдельные буквы могут изменяться, в зависимости от того, употребляются ли они в начале, в конце или в середине слова. Работа с иероглифическими текстами (китайским, японским) еще более затруднена.
Большое значение имеет набор дополнительных услуг, предостав­ляемых либо самими текстовыми процессорами, либо сопровождающими сервисными программами. К таким услугам относятся, в частности:
— проверка и коррекция орфографических ошибок путем сопо­ставления каждого слова рабочего текста со словарем; при обнаружении расхождений можно заменять в тексте неправильно написанные слова или пополнять словарь новыми словами;
— автоматическая индексация, т. е. выделение из текста слов по определенному критерию и занесение их в упорядоченные индексные списки;
— автоматическое составление оглавления по заданному тексту;
— подготовка текста для фотонаборного автомата, обеспечивающего высококачественное воспроизводство документа в большом количестве экземпляров.
Для коррекции ошибок наобходимы заранее составленные словари. В некоторых системах словари содержат от 50 до 100 тысяч слов (для английского языка). Для русского языка и других флективных языков простым словарем ограничиваться нельзя; необходимо исполь­зование морфологического анализа, учигывающего различные формы одних и тех же слов. Специально организованный словарь может использоваться не только для коррекции ошибок, но и для подстроч­ного перевода с одного языка на другой.
Одно из новых направлений развития текстовых процессоров связано с обработкой структурных текстов. В структурном тексте (или гипертексте) любой фрагмент, например, отдельное слово, абзац или раздел, может иметь несколько версий; он может раскрываться «в глубину», где содержится его другая трактовка или представление. На структурный текст можно взглянуть «издали» и увидеть только его общую форму, например, абзацную структуру, а можно рассмотреть внимательно вплоть до отдельных слов и символов. Фрагментом струк­турного текста может быть ссылка на рисунок или на математическую или химическую формулу, которую можно раскрыть и рассмотреть в ее естественном изображении.
Работа со структурными текстами может быть очень большим под­спорьем при подготовке документации, при разработке программ на языках высокого уровня, в литературной работе. Появление дисплеев
212
с высокой разрешающей способностью позволит получить еще больше преимуществ при работе со структурными текстами. В этом случае можно будет на ходу изменять начертание отдельных литер и немедленно получать текст с измененными символами. При использовании дисплеев с высокой разрешающей способностью легко сочетать чисго текстовое представление с графическим — формулами, рисунками, графиками. Таким образом, системы обработки текстов могут предоставлять самые разнообразные возможности для работы с документацией. Диа­пазон таких систем очень широк — от простых экранных редакторов, встраиваемых в интегрированные системы, до сложных текстовых про­цессоров, предоставляющих пользователям различные интеллектуаль­ные услуги.
5.5. Системы машинной графики на персональных компьютерах
Одно из важнейших отличий современных персональных компью­теров от их предшественников — терминалов больших и малых ЭВМ — состоит в возможности вывода на экран дисплея графических изобра­жений. Правда, не все персональные компьютеры имеют графические дисплеи и не все они являются цветными. Однако с появлением все большего числа прикладных систем, ориентированных на использо­вание цветной графики, аппаратная поддержка графических режимов становится стандартной чертой современного персонального компьютера.
Системы машинной графики на персональных компьютерах можно отнести к нескольким классам, среди которых особо выделяются сле­дующие: .
— деловая графика,
— иллюстративная графика,
— инженерная графика,
— научная графика.
Рассмотрим основные особенности некоторых систем, относящихся к этим классам.
5.5.1. Деловая графика. Системы деловой графики предназна­чаются для графического отображения данных, хранимых в электрон­ных таблицах или в базах данных. Широкое применение персональных компьютеров в управлении предприятиями, в экономических расчетах и имитационном моделировании стимулирует создание систем деловой графики, которые позволяют наглядно отображать соотношение раз­личных числовых показателей в удобной для восприятия форме.
Кроме отображения на дисплее, большинство пакетов деловой графики позволяет создавать «твердые» копии изображений. Это осу­ществляется на матричных принтерах, на графопостроителях (плотте­рах); можно также изготавливать черно-белые или цветные слайды, являющиеся фотокопиями изображений на экране.
213
Большинство пакетов деловой графики позволяет немедленно после ввода исходных данных и выбора способа представления получать на экране дисплея изображения диаграмм, гистограмм или графиков, отображающих эти данные. При этом изображение сопровождается заранее подготовленными текстовыми комментариями и разметкой, которые располагаются в фиксированных местах экрана. Работа с ис­пользованием таких пакетов проста, оперативна и требует на подго­товку минимум времени. Однако возможности изменения структуры изображения и относительного размера различных компонентов в этом случае ограничены.
Более развитые пакеты деловой графики дают возможность поль­зователю не только выбирать способ отображения данных, но и варьи­ровать размер, относительное расположение различных частей изобра­жения на экране дисплея, дополнять это изображение декоративными элементами, хранящимися в библиотеке. Кроме гого, большинство пакетов, относящихся к этой группе, позволяют применять различные трансформации отдельных элементов изображения, такие как полу­чение зеркального отображения, вращение, вытягивание вдоль одной из осей, наложение двух и более изображений друг на друга. Все это позволяет делать изображения разнообразными, непохожими одно на другое, подчеркивать графическими средствами одни стороны отобра­жаемой информации, затенять другие. Однако за все это приходится платить необходимостью применения многих команд при формировании изображения, что существенно увеличивает время, затрачиваемое на получение одного изображения.
Исходные данные для отображения с помощью пакета деловой графики в простейшем случае включают:
— двумерный массив числовых данных, подлежащих отображению {некоторые пакеты допускают отображение трехмерных массивов);
— текстовую разметку по каждой из осей (размерностей) массива;
— формат и название единицы измерения;
— общий текстовый комментарий к отображаемой информации. Рассмотрим простой пример. Пусть имеются исходные данные,
показывающие изменение спроса на товары народного потребления в зависимости от сезона. Покажем, каким образом эти данные могут быть отображены средствами деловой графики. Предположим, что массив исходных данных (в виде таблицы с разметкой по осям) имеет вид;

Костюмы
Платья
Плащи
Пальто
Январь
24,5
25
26
41
Февраль
23
23
26
35
Март
21
12,3
2
— 2
Апрель
26
67
56
74,4
Май
20
42
62
57
214
Здесь разметка одной оси задается словами, входящими в самый левый столбец таблицы:
Январь Февраль Март Апрель Май
Разметка второй оси соответствует верхней строке таблицы:
Костюмы Платья Плащи Пальто
Формат единицы измерения: ххх.хх.
Название единицы измерения: тыс. шт.
Общий текстовый комментарий: Сезонный спрос на верхнюю одежду.
Происхождение исходных данных для пакета деловой графики безразлично, — они могут поступать из электронной таблицы, из базы данных или даже из обычного текстового файла. Важно лишь, чтобы указанные данные поступили на вход пакета деловой графики в оп­ределенном формате.
Наиболее распространенными формами графического отображения данных являются столбиковые диаграммы (гистограммы) с вертикаль­ной или горизонтальной ориентацией столбцов, круговые диаграммы и линейные графики. Практически все пакеты деловой графики позво­ляют формировать на экране дисплея эти типы изображений. Различия заключаются в основном в технических деталях — максимальном коли­честве столбцов, круговых секторов или линий, которые могут быть выведены на экран одновременно. Рассмотрим, как можно отобразить приведенные выше исходные данные с помощью гистограмм, круговых диаграмм и линейных графиков.
Гистограммы. Гистограммы представляются в виде групп столб­цов, высоты которых пропорциональны определенным числовым зна­чениям. Число групп в одной гистограмме обычно колеблется от трех до десяти, каждая группа может состоять из нескольких столбцов (обычно не более десяти). Разные группы соответствуют различным значениям вдоль одной оси исходного массива данных, а столбцы в пре­делах каждой группы упорядочены в соответствии с другой осью ис­ходного массива.
Для приведенного выше примера гистограмма может иметь вид, представленный на рис. 5.22. Такая гистограмма получается при работе пакета деловой графики ДГРАФ, разработанного в ВЦ АН СССР. На данной гистограмме группы столбцов соответствуют горизонтальной оси (видам товаров), а в пределах каждой группы упорядоченность столбцов соответствует вертикальной оси (распределению спроса на товары по месяцам). Однако взаимное соответствие между осями ис­ходного массива (колонками/строками исходной таблицы) и группами/ столбцами гистограммы может изменяться по усмотрению пользователя. Это осуществляется транспонированием исходного массива перед началом построения.
215
На экране цветного дисплея столбцы имеют разную окраску, а на монохромном дисплее, так же как и при черно-белой печати, окраска отображается разными интенсивностями черного цвета и штриховкой. В правом нижнем углу гистограммы на рис. 5.22 выведена табличка, в которой расшифровывается окраска столбцов. Такая расшифровка иногда называется легендой.

Рис. 5.22. Гистограмма, полученная при работе системы ДГРАФ
В пакете ДГРАФ имеется возможность перебора и выделения отдельных столбцов с помощью специального маркера, перемещаю­щегося под действием клавиш со стрелками «Вправо», «Влево» и «Вниз», «Вверх». На рис. 5.22 этот маркер в виде маленького кружка размещен над 1-м столбцом 2-й группы. Соответствующее выделенному столбцу число в заданном формате выводится в особой рамке в правом верхнем углу изображения. Это число сопровождается текстовым названием единицы измерения: 25.00 тыс. шт. При перемещении маркера на дру­гой столбец происходит вывод нового числа, так что пользователь может для каждой отображаемой величины определить ее точное число­вое значение. По верхнему краю изображения выведен текстовый комментарий.
В некоторых пакетах деловой графики предусматривается не­сколько способов построения столбиковых гистограмм. В частности, столбцы могут быть сегментированы по высоте; при этом каждый сег­мент имеет свою окраску или штриховку и отображает значения вели-
чин по третьей оси исходного массива данных. При другом способе построения гистограммы столбцы в пределах каждой группы как бы частично перекрывают друг друга, благодаря чему удается отобразить .большее число групп или большее число столбцов в группе.
При чрезмерно большом числе групп, столбцов или сегментов вос­приятие данных из-за обилия мелких деталей бывает затруднено, поэ­тому многие пакеты ограничивают максимальное число столбцов в группе десятью-пя!надцатью, а число столбцов или сегментов в одном столбце пятью-десятью. Однако имеется несколько коммерческих пакетов,

Рис. 5г23. Круговые диаграммы, полученные при работе системы
ДГРАФ
которые могут оперировать с 60 и большим числом групп. При этом одна группа столбцов отображается в виде гистограммы на экране дисплея, а все остальные в это время хранятся в памяти.
Круговые диаграммы. В круговой диаграмме значения величин отображаются в виде секторов круга, углы которых пропорциональны значениям отдельных элементов дайных. Секторы обычно раскраши­ваются или штрихуются, так чтобы их можно было отличить друг от друга. Один круг позволяет отобразить одну строку или колонку исходного массива данных. Для отображения двумерных массивов используется несколько круговых диаграмм, располагающихся на экране таким образом, чтобы дать пользователю возможность сопоста­вить их между собой.
На рис. 5.23 представлены три круговые диаграммы, полученные с помощью пакета ДГРАФ и отображающие данные из трех строк приведенного выше исходного массива.
Как и в случае столбиковых гистограмм, можно перед началом построения транспонировать исходный массив, т. е. отображать в каж-
дом круге не строку, а столбец исходного массива. Как и при исполь­зовании гистограмм, пакет ДГРАФ в данном случае гакже выводит на экран табличку, поясняющую раскраску секторов. У пользователя также имеется возможность выделять с помощью перемещаемого мар­кера отдельные секторы на разных кругах и получать в ответ точные числовые значения, которые выводятся в заданном формате в отдельную рамку.
В других пакетах деловой графики применяются диаграммы с вы­резанием отдельных секторов. При этом выделенный сектор как бы слег­ка выдвигается из круга. Большинство пакетов позволяют делить круг диаграммы на 10 — 20 секторов, представляющих соответствующие величины.
Попытки разнообразить диагра(«ы для улучшения их визуаль­ного восприятия и повышения информативности привели к исполь­зованию в некоторых пакетах трехмерных диаграмм в виде цилиндров с возможностью выдвигания секторов от оси цилиндра. Этот способ как бы комбинирует представление данных с помощью круговых диа­грамм и гистограмм. При этом в каждом цилиндре используются две переменные для представления информации — одна соответствует угловым величинам секторов у основания цилиндра (как в обычной круговой диаграмме), другая — длинам образующих для каждого сектора (подобно столбцам гистограммы). Основное достоинство такого способа представления данных заключается в его визуальной привле. кательности, в возможности внести большее разнообразие в изображе­ние, особенно если приходится просматривать большое количество информации.
Линейные графики. В линейном графике происходит отображение исходных величин в виде точек, соединенных отрезками прямых линий. На рис. 5.24 приведен пример отображения вышеприведенных исходных данных с помощью линейных графиков.
По оси ординат откладываются значения величин вдоль одной оси исходного массива, по оси абсцисс — значения величин вдоль другой оси. Соотношение осей массива и осей графика можно менять.
Прямые отрезки, соединяющие разные значения одной и той же величины, образуют линейный график. Графики разных величин на экране проводятся разноцветными линиями или же снабжаются спе­циальными значками-пометками, которые расшифровываются в соот­ветствующей табличке.
С помощью линейных графиков наиболее естественно отображаются также и функциональные зависимости одних величин от других. В этом случае по оси абсцисс откладываются значения независимого пара­метра, по оси ординат — зависимого. Вместо исходного массива зна­чений может быть задана функция и вектор числовых значений незави-
218
симого параметра. Пакет деловой графики в этом случае должен обеспе­чивать вычисление заданной функции.
Большинство пакетов допускают одновременное изображение на одном графике 5 — 6 линий. Однако некоторые из них позволяют по­строить двадцать и даже более функциональных зависимостей. При этом каждая линия может формироваться несколькими десятками точек.

Рис. 5.24. Линейные графики, полученные при работе системы
ДГРАФ
Помимо рассмотренных выше основных способов представления числовой информации — в виде гистограмм, круговых диаграмм и линейных графиков, в последнее время получают распространение и несколько новых, менее привычных способов. Рассмотрим некоторые из них.
Временные диаграммы. Временные диаграммы или так называемые графики Ганта применяются, когда нужно изобразить последова­тельность взаимосвязанных операций или процессов определенной длительности. Окончание одних операций вызывает начало других, а не­которые операции могут выполняться одновременно. Ход такого гра­фика позволяет проследить очередность выполнения операций и при­ближение к конечной цели. С помощью таких графиков можно изобра­жать течение во времени и взаимосвязь нескольких динамических про­цессов. На экране дисплея временная диаграмма такого типа изобра­жается в виде цепочек горизонтальных линий в прямоугольной системе координат: по оси абсцисс откладываются единицы времени (дни, меся­цы, годы и др.), а равномерно по оси ординат — названия соответствую­щих операций или процессов. Длина и расположение каждой линии
определяется длительностью и временем начала данной операции. Некоторые пакеты позволяют строить графики такого вида для 10 — 12 операций. Общее число графиков может достигать 50, при этом на экране дисплея может изображаться либо один, либо несколько нало­женных друг на друга графиков.
Структурные схемы. Данный способ графического представления ориентирован на построение структурных схем сложных объектов. По внешнему виду такая схема напоминает дерево. Ветви дерева (блоки) соответствуют определенным объектам; они изображаются прямоуголь­никами или кругами, внутри которых помещаются поясняющие надписи. Блоки соединяются между собой линиями, которые соответствуют тем или иным связям между объектами. С помощью такого метода можно отображать структуру самых разных систем. Это может быть, напри­мер, архитектура компьютера, структура управления промышленным предприятием и др. Некоторые пакеты позволяют разместить на схеме одновременно до 50 блоков. При этом максимальное число линий, соединяющих блоки, может доходить до 80. Для обозначения каждого блока на экране дисплея может использоваться один из- хранящихся в библиотеке графических символов. Иногда допускается изменение размеров этих символов при сохранении их формы.
Круговые гистограммы. Этот способ отображения позволяет нагляд­но представить относительные величины объектов, которым на изображе­нии сопоставляются размеры и расположение кругов в прямоугольной системе координат.
Сфера приложения деловой графики постоянно расширяется. При этом растет и число конкретных задач, для решения которых необхо­димы те или иные графические средства. Среди этих задач часто возни­кают весьма нестандартные, требующие нового подхода. Это стимули­рует появление новых форм графического представления данных. Большое внимание в пакетах деловой графики уделяется разнообразию стилей оформления изображения на экране дисплея. Это связано с тем, что деловая графика призвана решать сразу две важные задачи: во-пер­вых, обеспечить быстрый вывод данных в наглядной графической форме, во-вторых, интенсифицировать процесс осмысления данных человеком с целью установления определенных закономерностей. Первая цель достигается упрощением работы с пакетами. Так, например, большая яасть пакетов деловой графики ориентирована на извлечение данных из каких-либо стандартных баз данных или электронных таблиц. Вто­рая цель достигается совершенствованием выразительности пакетов. Создатели пакетов деловой графики часто больше внимания уде­ляют средствам, которые позволяют делать изображения более яркими, разнообразными, чем, например, увеличивать число способов представ­ления данных. Некоторые весьма дорогие и совершенные пакеты огра­ничивают число способов представления гистограмм, диаграмм и гра-
220
фиков, однако предлагают использовать при формировании изображе­ний несколько различных типов обрамлений с возможностью варьиро­вания их размеров. Кроме того, допускается размещение на одном изображении нескольких типов графиков и диаграмм. При этом можно независимо устанавливать размер каждой детали изображения, вра­щать их на экране дисплея, получать зеркальные отображения и др.
Еще одним эффективным средством деловой графики является библиотека графических форматов. Графические форматы содержат заранее сформированные изображения, которые с некоторыми изме­нениями могут быть использованы для представления исходных данных в виде различных гистограмм, диаграмм или графиков. Графические форматы иногда содержат набор профессионально выполненных изобра­жений, которые можно целиком или отдельными частями использовать для того, чтобы украсить и сделать более наглядной представляемую информацию. При этом можно варьировать цветовую гамму, исполь­зуемую для раскрашивания фона, отдельных деталей изображения, написания сопровождающего текста.
Информация, предназначенная для отображения с помощью пакета деловой графики, должна быть предварительно введена в базу данных, в файл на внешнем носителе или в оперативную память в определен­ном формате. Для этого могут быть использованы стандартные форматы, которые используются широко распространенными коммерческими пакетами.
Ряд пакетов позволяет производить простейшую обработку дан­ных перед их представлением в графической форме. Такая обработка включает, как правило, вычисление средних значений и стандартных отклонений величин, выполнение простейших арифметических действий.
Изображения, полученные на экране дисплея, могут быть записаны во внешнюю память или выданы на печать. Иногда обеспечивается по­следовательное появление изображений на экране через заданный про­межуток времени {режим «показа слайдов»). На одном флоппи-диске можно хранить до 40 таких слайдов, а на жестком диске их может быть, конечно, гораздо больше. Это позволяет иллюстрировать с помощью компьютера лекции и доклады, исключив трудоемкую и длительную операцию изготовления фотодиапозитивов.
Следует сказать несколько слов о графических пакетах, которые входят в состав интегрированных систем. Преимущество таких систем состоит в естественном использовании исходных даннцх, находящихся в электронной таблице или в базе данных интегрированной системы. Как правило, большие интегрированные системы предоставляют поль­зователям простые средства для построения круговых диаграмм, гистограмм или линейных графиков. Пользователь сначала должен выбрать и отметить на электронной таблице диапазон ячеек, содержимое которых должно быть отображено в виде графика, а затем с помощью
221
нескольких клавишных команд сформировать соответствующий график или диаграмму. Способ вывода согласуется с общим стилем работы в конкретной интегрированной системе. Например, в системе Frame­work изображения графиков выводятся в дисплейные окна, при зтом они автоматически масштабируются в зависимости от размеров окна. В последнее время графические пакеты интегрированных систем до­полняются новыми возможностями, Присущими системам иллюстра­тивной графики. Это дает пользователям дополнительные средствп для наглядного представления информации и построения удобных приклад­ных систем.
5.5.2. Иллюстративная графика. Системы иллюстративной гра­фики предназначаются для создания машинных изображений, которые играют роль иллюстративного материала. Это могут быть условные схемы, эскизы, географические карты и др. При создании систем иллю­стративной графики основные усилия направлены на то, чтобы графи­ческие объекты можно было столь же легко формировать и преобразо­вывать, как мы формируем и преобразуем массивы чисел с помощью электронных таблиц или тексты при помощи систем подготовки текстов.
Решение такой задачи наталкивается на ряд специфических труд­ностей. Если при обработке числовой информации можно опираться на хорошо разработанный математический аппарат, а при текстовой обработке — на элементарные операции ввода, сравнения и замены текстовых фрагментов, то для обработки графической информации определить набор базовых операции не так просто. Если применять методы обработки изображений на основе сложного математического аппарата, то это во многих случаях вступит в противоречие с основной целью — созданием пакетов, с которыми было бы легко и приятно работать на ПЭВМ.
С точки зрения внутреннего представления выделяются два класса объектов иллюстративной графики.
1. Изображения на основе регулярных структур. Изображения этого типа имеют вполне определенную форму, их можно однозначно определить на основе простейших геометрических понятий. Примерами могут служить прямоугольники, круги, треугольники. Все эти фигуры задаются определенными наборами параметров. Для того чтобы их копировать, перемещать, масштабировать или изменять цвет, доста­точно присвоить соответствующим параметрам новые значения. Способ создания изображений на основе регулярных структур можно сопоста­вить со способом черчения изображения на листе бумаги с использова­нием линеек, циркулей и трафаретов. Данный тип изображений относят к так называемой векторной или координатной графике, поскольку каждый элементарный объект задается координатами опорных точек и некоторыми дополнительными параметрами.
2. Изображения на основе нерегулярных структур. В эту катего­рию попадают такие изображения, которые можно сопоставить с кар­тинами, создаваемыми художником. На ПЭВМ такие изображения создаются методом так называемого свободного рисования, где вместо кистей и красок используются специальные функции, управляемые под действием клавишных команд или сигналов от манипулятора типа «мышь». Первая проблема состоит здесь в том, чтобы нарисовать нере­гулярную структуру, а вторая — чтобы произвести в ней различные изменения. Если такие графические операции, как перемещение и ко­пирование, сохраняют свое значение и для нерегулярных структур, то, скажем, одномерное масштабирование оказывается здесь бессмыслен­ным, Данный тип изображений относят к растровой графике, поскольку все изображение слагается в конечном счете из множества (цветных) точек растра.
При помощи систем иллюстративной графики пользователь должен иметь возможность строить изображения путем их компоновки из дру­гих, ранее созданных изображений, объединения с текстами и числами, изменения цвета и др. С этой целью в системе иллюстративной графики должны быть реализованы функции, позволяющие:
— «резать», «склеивать» и «стирать» произвольные части изобра­жения;
— обращаться в библиотеку заранее сформированных изображе­ний и вставлять их во вновь создаваемые рисунки;
— применять для рисования разнообразные «кисти», «краски» а трафареты;
— запоминать сформированные иллюстративные материалы на внешних носителях, осуществлять их поиск и воспроизведение.
Графические системы делового и иллюстративного назначения должны обеспечивать вывод информации как на экран дисплея, так и на бумагу (создание «твердой копии»).
Основные черты систем иллюстративной графики. В одной из первых популярных систем иллюстративной графики Execuvision формирование изображения осуществлялось при помощи курсора, управляемого клавишами. Меняя размер курсора, пользователь кав бы брал в руки рисовальную кисть другой ширины. Для того чтобы про­вести линию, пользователю достаточно переместить курсор в требуемом направлении или же указать начальную и конечную точки прямой, а всю остальную работу возложить на программу. В системе имеются электронные «ножницы», с помощью которых можно отрезать «частиэ изображений, с тем чтобы «переклеить» их на другое место экрана. Возможно «оживление» изображений на основе специального алго­ритма. Для наложения текста на рисунок пользователю предоставляются десять шрифтовых комплектов с возможностью выбора размера и цвета букв. Система обеспечивает показ слайдов в двух режимах — ручном
223
я автоматическом. Процесс взаимодействия пользователя с системой управляется посредством иерархического меню.
Другая популярная система — PC PAINT также относится к си­стемам растровой графики. Она устроена так, что клавиатура ПЭВМ используется только для ввода имени создаваемого изображения или имени текущего каталога. Все операции, связанные с формированием изображения, управляются с помощью манипулятора «мышь». Функции представлены в позиционном меню, и их выбор осуществляется путем указания на соответствующий условный символ — пиктограмму. Для рисования можно использовать макеты геометрических фигур (прямая, прямоугольник, окружность, дуга), которые также изображены в меню. Выбранную фигуру можно разместить в рабочем поле и затем изменить ее параметры путем растягивания или сжатия отдельных элементов. Цвета выбираются из цветового меню. Имеется возможность установле­ния шести палитр, каждая из которых содержит три цвета. Вдоль ниж­ней границы расположены образцы для закрашивания в виде прямо­угольников, заполненных точками, полосками, штрихами и другими образцами.
Меню шрифтов позволяет выбрать один из шести шрифтов и уста­новить размер литер в тексте. Меню редактора позволяет редактиро­вать изображение, предоставляя электронные способы копирования, перемещения и «переклеивания» фрагментов изображения. Инструмен­тальное меню дает возможность изменять образцы кистей. Можно вы­делить и увеличить часть изображения с целью тонкой корректировки небольших деталей. PC PAINT позволяет сохранять изображения на дисковом накопителе в двух различных растровых форматах и выводить изображение на матричные принтеры.
Сходными чертами обладает другая популярная система — PC PAINT BRUSH. Отличия в основном состоят в возможности формиро­вание собственных образцов для закрашивания и собственных шрифтов.
Некоторые системы позволяют комбинировать видеоизображение, полученное с видеомагнитофона или видеоканала телевизора, и компью­терную графику. Другая возможность связана со вводом изображения, полученного с помощью фотоаппарата, которое после этого можно ре­дактировать, преобразовать, сохранять во внешней памяти и выводить на бумагу.
Ряд систем ориентирован на создание высококачественных рисунков и иллюстраций. Как правило, в таких случаях предусматривается при­менение дисплея и графического адаптера с повышенной разрешающей способностью. Так, при использовании в персональном компьютере типа IBM PC усовершенствованного графического адаптера появляется возможность использования шестнадцати различных цветов при разре­шающей способности 640X350 точек растра. Это позволяет создавать изображения телевизионного качества и делает системы иллюстратив-
224
ной. графики еще более привлекательными. В системах этого типа имеется много дополнительных функций, позволяющих улучшать из­ображение. К ним относится, в частности, сглаживание ломаных не­прерывными линиями, смешивание цветов и др.
В ВЦ АН СССР Б. Т. Сираджовым разработаны две системы иллю­стративной графики — графические процессоры ВГРАФ и ВИКОНТ, Первая из этих систем обеспечивает формирование растровых изобра­жений, вторая — векторных (координатных) изображений. Системы взаимно согласованы по формируемым графическим объектам; это означает, что изображения, полученные с помощью одной системы, могут быть введены и дополнительно преобразованы с помощью другой системы. Для создания изображений в обоих процессорах используется несколько способов:
— построение и трансформация элементарных геометрически» фигур;
— формирование изображений из отрезков прямых;
— динамическое перемещение объектов из одной позиции в другую, их копирование, закраска или заштриховка;
— наложение заранее созданных библиотечных элементов на вновь создаваемые изображения.
Оба процессора ориентированы на выполнение следующих основных функций:
1У создание и редактирование изображений, с возможностью нало­жения текстов на изображения;
2) воспроизведение одиночных изображений или их демонстрация в режиме показа слайдов;
3) вывод изображений на устройства твердой копии;
4) взаимодействие с объектной базой и другими компонентами ин­тегрированной системы СПЕКТР.
Ниже приведено краткое описание указанных процессоров.
Графический процессор ВГРАФ. Процессор ВГРАФ управляется с помощью двухуровневого позиционного меню, в котором на 1-м уровне указаны основные операции, а на 2-м уровне выбранная операция мо­жет быть уточнена путем указания ее разновидности. На рис. 5.25 представлена копия экрана, полученная при работе системы ВГРАФ. В верхней части экрана выводится строка меню 1-го уровня. Отдельные операции представлены в этом меню пиктограммами. Для выбора опе­рации нужно нажать клавишу Esc и затем, нажимая стрелки «Вправо», «Влево», выделить пиктограмму с соответствующей операцией. Выде­ленная позиция отмечена негативным изображением.
Имеется м другой способ выбора операции — путем нажатия алфа­витно-цифровой клавиши, соответствующей коду операции. Коды основных операций и их расшифровка приведены в нижеследующей таблице (в скобках даны английские названия операций, начальные
225
буквы которых послужили основой для выбора мнемоничных кодов):
L — построение прямой линии (Line),
N — построение ломаной линии (N-line),
В — построение прямоугольника (Box),
Е — построение эллипса (Ellipse),
F — закраска (штриховка) замкнутой области (Fill),
С — выбор цвета (Color),
W — выбор толщины линий (Width),
Т — нанесение текста (Text),
D — работа с диском (Disk),
А — выделение прямоугольной области (Area),
S — выбор режима экрана (Screen),
Р — вывод изображения на печать (Print).
В меню на рис. 5.25 негативным изображением выделена пикто­грамма, соответствующая операции закраски. Справа внизу экрана выведено сокращенное название этой операции и соответствующий ей

Рис. 5.25. Копия экрана при работе системы ВГРАФ
код — буква F. Кроме того, в нижней части экрана выведено меню 2-го уровня, в котором показаны образцы закраски или штриховки. Каждая позиция этого меню имеет номер, и пользователю для выбора образца достаточно нажать клавишу с соответствующей цифрой. Если после этого нажать клавишу «Исполнение», то система перейдет в режим дви­жения маркера по рабочему полю экрана.
Крестообразный маркер перемещается под действием клавиш «Вправо», «Влево», «Вниз», «Вверх» или под действием сигналов от ма­нипулятора «мышь». Шаг перемещения может быть изменен нажатием функциональной клавиши F3.
После того как маркер будет помещен в нужную позицию (внутри некоторой области, ограниченной замкнутой линией), нажатие клавиши :«Исполнение» активизирует выбранную операцию, и произойдет за­штриховка данной области указанным образцом.
Действия пользователя в случае выбора других операций подчи­няются описанным выше правилам, но, конечно, смысл каждой опе­рации и их разновидности, задаваемые в меню 2-го уровня, весьма раз­личны. Дадим краткое описание основныхопераций.
Построение прямой линии. При выборе этой опе­рации в меню 2-го уровня указываются типы линий — сплошная, пунк­тирная и точечная. После выбора типа (по умолчанию действует сплош­ная линия) и нажатия клавиши «Исполнение» в рабочем поле появляет­ся перемещающийся маркер. Пользователь должен выбрать положение одного конца линии и зафиксировать его нажатием клавиши «Исполне­ние», а затем точно так же зафиксировать положение второго конца линии.
Построение ломаной линии. В этом случае тип ли­нии не уточняется, поскольку действует ранее установленный тип. Меню 2-го уровня отсутствует. Остальные действия похожи на вышеописан­ные. Конец построения каждого отрезка ломаной завершается нажа­тием клавиши «Исполнение», а завершение построения всей ломаной — нажатием клавиши «+» в правой части клавиатуры.
Построение прямоугольника. После выбора этой операции Меню 2-го уровня отсутствует. Пользователь выбирает мар­кером место в рабочем поле экрана и нажатием клавиши «Исполнение» начинает построение прямоугольника. Клавиши со стрелками позво­ляют изменить размеры прямоугольника, а вторичное нажатие клавиши «Исполнение» завершает его построение. Стороны прямоугольника ри­суются линиями заданного типа и текущим цветом.
Построение эллипса. Здесь также не задается меню 2-го уровня, и действия пользователя похожи на те, которые применяются при построении прямоугольника. Клавиши «Вправо», «Влево» позво­ляют менять радиус эллипса, а клавиши «Вниз», «Вверх» меняют его эксцентриситет.
Выбор цвета. В меню 2-го уровня для данной операции ука­зываются три основных цвета и один — стирающий, совпадающий с цве­том фона. Выбранный цвет действует на все последующие построения, включая все виды штриховки.
Выбор толщины линий. В меню 2-го уровня для данной операции указываются 5 вариантов толщины линий. Выбранная тол­щина линий действует на все последующие построения.
227
Нанесение текста. Меню 2-го уровня здесь указывает на два варианта размера шрифта. После нажатия клавиши «Исполнение» и выбора маркером места на экране пользователь может вводить произ­вольный текст, пока не будет нажата клавиша Esc. Переключение между русским и латинским шрифтом, а также между маленькими и большими буквами может происходить по ходу ввода текста клавишами CapsLock и Shift. Клавиша Backspace вызывает последовательное стирание всех введенных за один прием букв и цифр в направлении от конца к началу.
Работа с диском. Меню 2-го уровня в этом случае содержит следующие вторичные операции: 1 — задание имени файла, 2 — загрузка изображения из файла с заданным именем, 3 — сохранение изображе­ния в файле с заданным именем, 4 — временный выход в ДОС (с воз­можностью возврата по команде EXIT), 0 — полный выход из системы.
Выделение прямоугольной области. Данная операция позволяет выделить на изображении произвольную прямо­угольную область с целью: 1) перемещения ее на новое место, 2) перевода в негативное изображение, 3) стирания, 4) вывода на диск в качестве библиотечного элемента. Эти варианты указываются посредством меню 2-го уровня. Нажатие клавиши «Исполнение» переводит маркер в ра­бочее поле, где можно выделить прямоугольную область точно такими же действиями, как при построении обычного прямоугольника. Однако после вторичного нажатия клавиши «Исполнение» выделенная область подвергается указанной трансформации. Здесь следует заметить, что для управления перемещением и копированием выделенных областей используются функциональные клавиши:
F3 — изменение шага перемещения,
F4 — копирование,
F5 — переход в режим перемещения.
Все эти клавиши действуют как двоичные переключатели, причем не только в случае работы с выделенной областью, но и при построении отдельных примитивных фигур (прямых, ломаных, прямоугольников и эллипсов).
Выбор режима экрана. Меню 2-го уровня в данном слу­чае позволяет менять цвет и фон изображения, стирать все изобра­жение и переходить из цветного режима в черно-белый и обратно.
Вывод изображения на печать. В данной опера­ции меню 2-го уровня позволяет задать левое поле для печати, нормаль­ную или-двойную плотность печати и, наконец, начать собственно вы­вод на принтер (типа Epson FX-80).
Таковы основные операции при построении изображений. Остается добавить, что меню 1-го уровня можно убирать с рабочего поля и вновь возвращать на место нажатием клавиши F10. Оперативная подсказка выдается после нажатия клавиши F1.
228
Во внешней памяти изображения, созданные с помощью процессора ВГРАФ, могут сохраняться в нескольких форматах. Каждый формат определяется типом файла при указании его имени для сохранения изо­бражения. Возможные типы и соответствующие им форматы:
PIC — сохранение в виде копии экрана,
РАС — сохранение в упакованном виде,
LBR — сохранение выделенной области в качестве библиотечного элемента,
EPS — сохранение в упакованном виде для печати на принтере.
При сохранении в формате PIC объем файла всегда постоянен и довольно велик — около 16,4 Кбайт. В формате РАС объем файла в среднем колеблется от 2 — 3 до 5 — 8 Кбайт (зависит от заполненности экрана). Объем библиотечных элементов минимален.
При вызове процессора ВГРАФ можно в качестве параметров указать несколько заранее приготовленных изображений, для чего в качестве параметров вызова должны быть указаны их имена. После такого вызова в рабочее поле сразу выводится первое из указанных изо­бражений, а при нажатии клавиш Ctrl + (стрелка Вправо) или Ctrl + (стрелка Влево) происходит перебор указанных изображений в ре­жиме показа слайдов. При этом меню не выводится, чтобы не засорять экран. Такой режим удобен для демонстраций во время докладов. При загрузке изображений, сохраненных как библиотечные элементы, ранее выведенные в рабочее поле изображения не стираются; библиотечные элементы могут перемещаться и накладываться на основной рисунок. Благодаря этому в ходе демонстрации можно получать интересные зри­тельные эффекты.
Графический процессор ВИКОНТ. Процессор ВИКОНТ является второй частью пакета иллюстративной графики, разработанного в ВЦ АН СССР. Эта система позволяет строить векторное графическое изобра­жение, которое включает в себя примитивы — элементарные геометри­ческие фигуры и сегменты — композиции примитивов.
Основными примитивами являются прямая, прямоугольник, тре­угольник, окружность, цветная замкнутая область, буквы и цифры ал­фавита. При построении изображения каждый примитив характери­зуется такими параметрами, как координаты опорных точек, радиус, цвет, эксцентриситет и т. д. Над примитивами определены операции, позволяющие их преобразовывать. Для каждого примитива определен свой набор операций. Например, можно перемещать любую сторону или вершину треугольника, изменять радиус или эксцентриситет окруж­ности, изменять длину линии, перемещать по экрану и копировать лю­бой примитив и др. Изображение строится путем выбора нужного при­митива и преобр!азования его до нужных размеров, формы и располо­жения на экране Для выборки примитивов и операций над ними ис­пользуются простые клавишные команды.
229
Примитивы могут объединяться в группы, называемые сегментами. Сегмент — это не просто набор независимых примитивов, а единая структура, которая, как и примитивы, может подвергаться изме­нениям и использоваться для построения более сложного изобра­жения. У каждого сегмента, как и у любого примитива, есть своя опорная точка или точка привязки к общему изображению.
Реализована возможность поиска, выделен я и выбора примитивов и сегментов. Поиск осуществляется с помощью маркера, который пере­мещается по экрану под действием управляющих клавиш и подводится к выбираемому примитиву или сегменту; после нажатия управляющей клавиши происходит выделение того примитива или сегмента, точка привязки которого ближе всего расположена к маркеру. Выделенный примитив или сегмент отображается мерцанием. Выделенный элемент можно затем под управлением клавишных команд перемещать, копиро­вать и удалять.
Текстовые сегменты образуются из букв русского и латинского ал­фавита, а также цифр и знаков. Это позволяет объединять текстовую информацию с графической.
Работа пользователя складывается из следующих этапов.
1. Создание изображения. При этом на экран выводятся образцы примитивов, осуществляется их преобразование и при необходимости объединение в сегменты.
2. Редактирование созданного изображения. Включает поиск и выборку примитивов или сегментов с целью их преобразования, преоб­разование изображения в целом.
3. Работа с диском. Сюда относится сохранение изображения на диске, считывание его с диска и воспроизведение на экране, объедине­ние двух изображений, обращение к файлу — подсказке.
4. Создание твердых копий. К операциям этой группы относится подготовка и вывод изображений на принтеры нескольких типов и на плоттеры.
При создании изображений на экран под действием управляющих клавиш выводятся образцы примитивов. Используемые при этом кла­виши следующие:
Примитивы
Клавиши
Прямая Прямоугольник Треугольник Окружность Ластик Цвет
L В Т С
Е
1/2/3/4
230
После вывода на экран образца примитива инициируется проце­дура его преобразования. Над каждым примитивом могут выполняться свои операции. Общее управление при этом осуществляется клавишами управления курсором и некоторыми другими клавишами:
Изменение шага перемещения кур-
F1

Переключение с цветного экрана

S
на черно-белый и обратно


Изменение цвета рисования

С
Изменение фона

В
Изменение палитры

F
Прямая линия может растягиваться и сжиматься, ее второй конец может перемещаться по экрану относительно опорного первого конца. Прямоугольник, треугольник и окружность (эллипс) также могут подвергаться различным трансформациям.
Любые фигуры, ограниченные замкнутыми линиями, могут быть закрашены изнутри заданным цветом. Особый примитив «ластик» имеет вид прямоугольника, под которым происходит стирание любого изоб­ражения. Размер этого прямоугольника и его положение на экране мо­жет быть изменено, прежде чем произойдет фактическое стирание. Следующие операции применимы ко всем примитивам:
(ALT) С
Изменение цвета примитива
Del
Удалить примитив
Backspace
«Отпустить» примитив
F5
Перейти в режим перемещения
«Исполнение»
Зафиксировать примитив
Перемещение примитива осуществляется с помощью стрелок и клавиш Home, PgUp, End, PgDn. Находясь в этом режиме, можно скопи­ровать примитив нажатием клавиши R. При этом текущий примитив фиксируется, а копия находится в режиме перемещения.
Переключение в режим ввода текста осуществляется клавишной командой F3. После завершения ввода можно вновь нажать F3, после чего введенный текстовый фрагмент объявляется сегментом.
Образование сегмента (т. е. объединение выведенных и преобразо­ванных примитивов в единое целое) осуществляется нажатием клавиши F2. Текущая позиция маркера при этом становится точкой привязки данного сегмента.
На этапе редактирования можно иметь доступ как к сегментам, так и к составляющим их примитивам. Поиск примитивов осуществ­ляется после нажатия клавиши F8. При этом на экране начинает мер­цать ближайший к маркеру примитив. Его можно выбрать клавишей
231
«Исполнение» или начать последовательный перебор примитивов с по­мощью стрелок «Вниз», «Вверх». Отказ от поиска происходит при нажа­тии клавиши Backspace. К выбранному в результате поиска примитиву можно затем применить все операции, описанные выше.

Рис. 5.26. Преобразование текстового сегмента в системе ВИКОНТ
Поиск сегментов осуществляется после нажатия F7. После этого все происходит так же, как и при поиске и выделении примитивов. Над сегментами определены следующие операции:
— повороты на любой угол,
— масштабирование,
— перемещение,
— копирование,
— добавление в сегмент нового примитива,
— удаление из сегмента некоторого примитива,
— объединение двух сегментов,
— разделение сегмента на два сегмента,
— изменение последовательности рисования сегмента,
— изменение точки привязки сегмента,
— изменение цвета сегмента,
— зеркальное отображение сегмента вокруг координатных осей,
— удаление сегмента.
На рис. 5.26 показаны результаты различных преобразований текстового сегмента, состоящего из слов ГРАФИЧЕСКИЙ ПРОЦЕССОР, Переход к работе с диском осуществляется после нажатия клавиши F10. При этом в углу экрана появляется управляющее меню со следую­щими .позициями:
" " Каталог
Загрузить Объединить Сохранить Подсказка Удалить Выход FI0
Первая позиция предназначена для ввода имени файла с изображе­нием. Назначение остальных позиций понятно из их названий. Как и в системе ВГРАФ, тип файла определяет формат его хранения. Воз­можные типы файлов и соответствующие им форматы:
VIC — векторный формат,
PIC — копия экрана,
ТХТ — текстовый файл (используется только для загрузки с диска).
Основным здесь является формат VIC, однако совместимость с си­стемой ВГРАФ обеспечивается через файлы типа PIC.
5.5.3. Инженерная графика. Основное направление развития си­стем инженерной графики связано с автоматизацией чертежных и кон­структорских работ. Системы автоматизации проектирования (САПР), в которых применяется инженерная графика, имеют самое разное назна­чение. Наиболее широко они применяются при проектировании компо­нентов и систем механических, электрических, электромеханических и электронных устройств, в строительстве и архитектуре. Объектами проектирования являются сложные устройства и сооружения — здания, химические и энергетические установки, кузова автомобилей, фюзеляжи самолетов и корпуса судов, их внутренние части, оптические системы, электронные устройства, печатные платы, микросхемы и др. Системы машинной графики при этом могут служить как для эскизирования, так и для создания точных чертежей. В данном разделе будут лишь кратко затронуты некоторые проблемы, связанные с построением систем инже­нерной графики на персональных компьютерах.
В системах инженерной графики большое внимание уделяется вопросам стандартизации. Первые стандарты на графические системы и языки начали разрабатываться задолго до появления персональных компьютеров.
Главная идея стандартизации состоит в том, чтобы основная часть программного обеспечения машинной графики была аппаратно-незави-симой. Она должна обеспечивать интерфейс с любым устройством ввода через специальный согласователь, который, конечно, должен быть аппа-ратно-зависимым. Точно так же необходим интерфейс к любому типу устройств отображения через специальные драйверы. Аппаратно-неза-висимое программное обеспечение должно обслуживать различные аппаратные реализации. Оно должно быть переносимым с одной графи­ческой системы на другую.
Стандарты обеспечивают высокий уровень мобильности приклад­ного программного обеспечения, включающего в себя средства машин­ной графики; в то же время они способствуют облегчению изучения и использования методов машинной графики прикладными программи­стами. Производители оборудования для машинной графики благодаря стандартам определяют наиболее эффективное сочетание графических возможностей, подлежащих реализации.
233
Аппаратно-независимое программное обеспечение имеет две четко выраженные функции: конструирование объектов и манипулирование ими при генерации изображения объекта. Такое разделение привело к концепции двух координатных систем: независимой (мировой) си­стемы координат, в которой конструируется объект, и аппаратной си­стемы координат, в которой описывается выводимое изображение.
В 1979 г. был разработан один из известных стандартов машинной графики — CORE. К настоящему времени предложено еще несколько стандартов такого же класса. К ним, в частности, относятся:
IGES — стандартный протокол обмена графической информацией, принятый в 1981 г. Американским институтом национальных стандар­тов. В нем предусмотрены средства для обмена графическими данными между системами автоматизированного проектирования и произ­водства.
NAPLPS — североамериканский стандарт, принятый в Канаде и США в конце 1983 г. Этот стандарт использует последовательность байтов в коде ASCII и коды расширения для описания графической и текстовой информации в отдельных кадрах изображения.
GK.S — графическая корневая система. Этот наиболее распростра­ненный стандарт определяет границу между прикладными пакетами и графическим обеспечением; в нем определяется содержимое обеспечи­вающего пакета. GKS является общепринятым стандартом для двумер­ной графики.
VDM — метафайл для виртуального устройства, который пред­ставляет собой аппаратно-независимый формат, функционирующий на уровне, следующем за драйверами устройств. Метафайл обеспечивает передачу информации об изображениях между различными графиче­скими устройствами.
VDI — интерфейс виртуального устройства, действующий на том же уровне, что и метафайл, и определяющий протокол двусторон­ней связи. Этот стандарт определяет интерфейс между аппаратно-неза-висимым программным обеспечением и аппаратно-зависимыми кодами для внешних устройств.
GKS представляет собой наиболее распространенный международ­ный стандарт на системы машинной графики. В рамках GKS определены функции генерации, представления, сегментирования, преобразования и ввода изображений. Важным аспектом в решении задач стандартиза­ции является то, что в рамках GKS впервые вводится методологически цельное и полное описание различных концепций машинной графики. Это описание служит основой для выработки общего понимания и об­щей терминологии в разработке систем машинной графики, в использо­вании систем машинной графики, в беседах о машинной графике, а также для обучения студентов методам, концепциям и приложениям машин­ной графики.
234
В GKS функции машинной графики выполняются на уровне, обсо печивающем их независимость от конкретных устройств ввода и вывода. В рамках GKS совокупность устройств графического ввода и вывода называется рабочей станцией. Преобразование независимого от уст­ройств ввода/вывода представления графических функций в представ­ление, специфическое для конкретной рабочей станции, осуществляется драйверами устройств.
К основным концепциям GK.S относятся следующие понятия:
— объекты (примитивы) вывода, из которых строится выходное изображение;
— системы координат и их преобразование;
— рабочие станции, объединяющие вводные и выводные графиче­ские устройства;
— сегментация изображений и преобразование сегментов;
— метафайл как средство, обеспечивающее возможность долго­временного хранения и передачи изображений;
— списки состояний графической системы;
— уровни, на которые разбито множество функций;
— окно и поле обозрения в пространстве независимых и нормали­зованных координат и др.
Известен ряд систем инженерной графики для ПЭВМ. Некоторые из них имеют универсальный характер, как, например, известная система Autocad; другие ориентированы на конкретные приложения. В Вычислительном центре АН СССР разработана система геометриче­ского моделирования в трехмерном пространстве с ориентацией на тех­нические изделия машиностроительного профиля. В рамках этой работы был создан язык геометрического моделирования ГЕОМАЛ, который позволяет создавать описание абстрактного геометрического тела, ограниченного кусочно-гладкой поверхностью. Использование такого языка поставило задачу разработки универсального графического ре­дактора как постпроцессора системы геометрического моделирования. Такой редактор — РЕДГРАФ был реализован в ВЦ АН СССР на ПЭВМ. Эта система позволяет в интерактивном режиме формировать сложные геометрические объекты и выдавать их в виде чертежей на бумажные но­сители. Над внутренним представлением чертежа — графическим фай­лом — определен обширный набор процедур, позволяющих строить, модифицировать и отображать файл на графические устройства вывода. Архивная система в составе РЕДГРАФа позволяет накапливать боль­шие объемы графической информации в хорошо структурированном виде.
В настоящее время все большее число систем инженерной графики, ориентированных на поддержку работ в САПР машиностроения и элек­троники, реализуется на персональных компьютерах. Несмотря на ограниченную разрешающую способность стандартных дисплеев ПЭВМ, многие виды графических документов могут готовиться с помощью
235
соответствующих систем. Подключение дополнительных дисплеев с высокой разрешающей способностью (до 1024Х 1024 точек растра), а также использование быстродействующих микропроцессоров в составе ПЭВМ позволяет превращать их в мощные графические станции, не уступающие мини-ЭВМ.
В качестве одного из примеров широких возможностей, которые предоставляют персональные компьютеры, можно упомянуть систему моделирования объемных объектов — Modelmaker, которая позволяет формировать и анализировать модели объемных объектов для таких областей, как автоматизация проектирования, автоматизация производ­ства, автоматизация инженерных работ и научно-технических расчетов.
5.5.4. Научная графика. Использование средств машинной гра­фики для научных исследований столь же широко, как и в инженерном-деле. В данном разделе будет кратко рассмотрено лишь одно из возмож­ных научных применений машинной графики на ПЭВМ. Рассматривае­мая область связана с изучением географических и природных явлений. Графические системы, предназначенные для такого использования, должны обеспечивать создание и обработку географических и рельефных карт, исследовательских карт для бурения и горных работ, океаногра­фических карт, карты погоды и изолиний и др.
Следовательно, карта является особой разновидностью графиче­ского объекта. Ее можно представить как изображение, состоящее из нескольких слоев:
— координатной сетки;
— топоосновы — (контурного) изображения некоторого района;
— графического отображения распределенных данных;
— условных знаков, нанесенных в определенные точки карты;
— легенды — объяснения смысла условных знаков;
— позиционного меню, наложенного на изображение карты.
Такая карта может служить разным целям. Во-первых, с ее по­мощью может изучаться характер распределения данных на фоне изоб­ражения исследуемого района, причем здесь важна привязка данных к заданной координатной сетке. Данные могут соответствовать физиче­ским замерам или могут рассчитываться по заданным алгоритмам. Так, в частности, изучаются различные явления в геофизике, распреде­ление биомассы в экологических исследованиях и др. На рис. 5.27 при­веден пример контурной карты Крыма с нанесенными изолиниямиГха-рактеризующими сейсмическую активность этого района.
Во-вторых, через посредство карты, играющей роль позиционного меню, может осуществляться запуск определенных расчетных процедур, зависящих от привязки к координатной сетке.
В-третьих, карты могут служить основой при расчете различных вариантов освоения территорий — при прокладке коммуникаций, раз­мещении промышленных объектов и т. п.
236
При создании объекта типа «карта» часть исходного материала должна готовиться заранее. Так, топооснова обычно задается в виде массива координат, данные вводятся через электронные таблицы или рассчитываются с помощью специальных пакетов программ, условные знаки формируются в виде набора пиктограмм с соответствующими пояснениями. Пользователь при формировании карты связывает все .исходные данные в один комплексный объект и наносит необходимые

Рис. 5.27. Пример вывода контурной карты с изолиниями
дополнительные пометки — устанавливает в соответствующие точки карты условные знаки, фиксирует точки позиционного меню и др. Под­держка работы с такими системами чрезвычайно важна для принятия решений по различным вопросам, связанным со строительством объек­тов оценкой влияния различных факторов на природу и др.
К системам научной графики можно отнести также средства форми­рования научной документации с использованием специальной нота­ции — прежде всего математических и химических формул. Математи­ческий текст — это особый вид объекта, ориентированный на поддержку работы математиков и других исследователей, использующих матема­тическую нотацию. Обычные текстовые редакторы не дают возможности формирования математических текстов, поскольку математические фор­мулы во многих случаях имеют двумерное графическое представление: помимо специальных букв, верхних и нижних индексов, в них могут употребляться графические символы переменной высоты, такие как знак интегрирования, суммы, ограничители матриц, многострочные скобки, дроби и др.
Проблем в данном случае несколько. Во-первых, формулы нужно иметь возможность вводить с клавиатуры, для чего необходимо разра­ботать соответствующий командный язык и стандартизованное внутрен­нее представление. Во-вторых, необходимо обеспечить генерацию внеш­него (экранного) представления, формул из стандартизованного вну­треннего представления. В-третьих, желательно обеспечить преобразр|-ванне вводимых формул в такую запись, которая дала бы возможность подключить систему аналитических преобразований. При этом из од­них формул могут порождаться другие, которые, в свОю очередь, нужно будет выводить на экран.
Точно такие же проблемы возникают при вводе и обработке хими­ческих формул. В настоящее время разработано несколько систем для ввода и отображения математических и химических формул, однако пока еще эти системы далеки от совершенства.
Завершая рассмотрение систем машинной графики на персональных ЭВМ, назовем еще несколько областей их применения.
Моделирование и мультипликация. Все большую популярность приобретает изготовление с помощью ЭВМ мультфильмов, демонстрирующих поведение различных моделируемых объектов. С помощью мультипликации можно изучать такие явления, как течение потоков жидкости и газа, ядерные и химические реакции, работу физиологических систем, деформацию конструкций под нагруз­кой и другие эффекты.
Тренажеры. Программы на ПЭВМ позволяют моделировать не только неподвижный мир, но и среду, в которой движется самолет, включая такие специальные эффекты, как облака, туман, ночные огни и др. Тренажеры могут служить для тренировки операторов сложных энергетических установок, диспетчеров аэропортов и железнодорожных узлов и др.
Управление технологическими процессами. На больших предприятиях в условиях гибких автоматизированных производств графическое отображение технологических процессов позволяет следить за состоянием отдельных станков и целых цехов, информировать персонал о критических ситуациях и елужить многим другим целям.
Публикация газет, журнал о в и книг. Не вызы­вает сомнений, что с помощью графических систем на основе ПЭВМ можно существенно упростить и ускорить подготовку и изготовление печатных материалов разного назначения. При этом на компьютере можно подбирать шрифты, компоновать страницы, вставлять в текст рисунки и в конечном счете автоматически управлять высокопроизво­дительными печатающими установками.
Искусство и реклама. С помощью систем иллюстра­тивной графики с успехом создаются произведения искусства и рекламы.
238
Создатели компьютерных изображений могут пользоваться развитыми средствами для интенсификации восприятия создаваемых произведений. Одним из экономически эффективных применений машинной графики в этой области является изготовление слайдов для представления ком­мерческой, научной и учебной информации, а также подготовка отдель­ных информационных и рекламных кадров для телевидения.
5,6. Объектно-ориентированные прикладные системы
Реализация конкретной прикладной автоматизированной системы на ПЭВМ может осуществляться по двум направлениям. Одно из них, более распространенное, предполагает первоочередную разработку отдельных функциональных компонентов, которые затем связываются в единую систему.
Возникающие при этом проблемы выбора внутреннего пред­ставления данных и реализации пользовательского интер­фейса решаются, исходя из потребностей конкретной группы пользова­телей, для которых создается система. При таком подходе автоматизи­рованная система наиболее точно соответствует исходным требованиям и, вообще говоря, наилучшим образом использует ресурсы ЭВМ. Однако процесс разработки в этом случае сильно затягивается, а возможности переноса конкретных компонентов и полученного опыта на системы других классов весьма ограниченны — новые автоматизированные си­стемы разрабатываются обычно заново.
Другое направление предполагает создание ряда унифицированных компонентов, которые в совокупности образуют как бы обрамление для специальных функциональных подсистем. В этом случае разработчики могут воспользоваться готовыми модулями и пакетами для компоновки конкретной автоматизированной системы, дополняя их в случае необ­ходимости специализированными пакетами. При этом, возможно, утра­чивается оптимальность с точки зрения наилучшего использования ре­сурсов ЭВМ для решения данного класса задач, зато сроки разработки резко сокращаются. Новые классы автоматизированных систем при таком подходе могут создаваться с существенным использованием преж­него опыта.
Рассматриваемый здесь объектно-ориентированный подход, при­нятый в ВЦ АН СССР, направлен на поддержку разработки автомати­зированной системы по второму пути. Проблема в-этом случае состоит в том, чтобы сформировать типовую архитектуру прикладной системы, выбрать и реализовать компоненты, которые будут наиболее часто ис­пользоваться в конкретных разработках.
На рис. 5.28 представлена в общем виде типовая архитектура при­кладной системы, основанной на объектно-ориентированном подходе. Основные универсальные компоненты такой системы:
аз 9
1) унифицированный интерфейс с пользователем, включающий систему управления дисплейными окнами, библиотеку программ управ­ления меню и интерпретатор схем диалога;
2) система управления объектной базой, основанная на работе со специально организованной виртуальной памятью на основе файловой системы;

Рис. 5.28. Структура прикладной автоматизированной системы
3) унифицированные функциональные процессоры, обеспечивающие работу со стандартизованными типами объектов.
Унифицированный интерфейс обеспечивает стандартизованный метод взаимодействия пользователей с ПЭВМ, что предусматривает:
— единообразное использование экрана при выводе текстовой и графической информации,
— единообразное использование управляющих клавиш клавиа­туры,
— единую кодировку символьной информации и порядок подста­новки специальных кодовых таблиц,
— единый способ оформления и выдачи подсказок,
— стандартный способ вывода и использования управляющих меню,
— стандартный способ оформления схем диалога.
Первые четыре функции обеспечиваются применением резидентной системы управления дисплейными окнами (администратора окон). Работа с меню и подсказками поддерживается специальной библиотек
кой подпрограмм (администратором меню). Управление диалогом осу­ществляется через интерпретатор схем диалога.
Система управления объектной базой (СУОБ). Обеспечивает стан­дартное представление терминальных данных (целых и десятичных чисел, строк, примитивных графических элементов) и структурных объектов, состоящих из отдельных компонентов (текстов, таблиц, изоб­ражений, составных объектов).
СУОБ включает специальный пакет, обеспечивающий работу с виртуальной памятью; при этом отдельные элементы данных разме­щаются в общем хранилище и снабжаются уникальными внутренними именами (ключами), по которым к ним осуществляется доступ из функ­циональных процессоров и любых прикладных программ. Виртуальная память реализуется на обычных файлах с прямым доступом. Кроме того, стандартная файловая система ДОС используется для хранения больших текстов и некоторых специальных объектов.
Для представления информационных моделей может быть приме­нена организация данных, основанная на фреймовом подходе, основы которого будут рассмотрены ниже.
Унифицированные функциональные процессоры обеспечивают ра­боту с типовыми объектами — текстами, таблицами, графиками, ри­сунками и др.
Эти объекты могут служить носителями содержательной информации данной предметной области. Благодаря единому подходу к их реализации обеспечивается взаимное согласование представлений данных и обмен между компонентами разных объектов. Функциональные процессоры снабжаются двумя средствами доступа к обрабатываемым объектам:
— взаимодействие с пользователями осуществляется на основа унифицированного пользовательского интерфейса;
— обращение к функциональным процессорам из прикладных программ обеспечивается через процедурный интерфейс.
Интерпретатор схем диалога. Взаимодействие человека и машины при решении прикладной задачи всегда протекает в рамках сценария, задуманного и реализованного создателем системы. Во многих тради­ционных прикладных системах подпрограммы или отдельные операторы, обеспечивающие диалог с пользователем, перемежаются с содержатель­ной частью программы. В таком случае внесение изменений в диалог влечет за собой новую трансляцию соответствующих программ. Это препятствует удобной настройке системы для конкретных задач и поль­зователей.
Предлагаемый метод, в отличие от традиционного, предполагает работу с формальным описанием диалогового сценария, отделенным от содержательной части прикладной системы, что дает удобную возмож­ность его модификации. Тем самым обеспечивается адаптивность си-
стемы, т. е. ее способность к динамической подстройке в .соответствии с конкретными потребностями пользователей.
Основная информационная единица D, описывающая этап диалога, называется в соответствии с развиваемым подходом диалоговым состоя­нием или Д-объектом. Множество Д-объектов {D} определяет схему диалога (СД) или Д-схему. Вводится четыре основных типа Д-объектов:
(1) текстовое меню,
(2) графическое меню,
(3) запрос значения,
(4) заполнение формата.
Первые два типа Д-объектов будем относить к обобщенной катего­рии «меню», два других типа — к категории «ввод значений». Рассмо­трим способы работы,пользователя с каждым из указанных типов Д-объектов.
(1) Текстовое меню обеспечивает выбор одной из нескольких зара­нее составленных альтернатив.. При инициации такого Д-объекта на

Рис. 5.29. Вид экрана при выводе текстового меню и запросе формата
экране дисплея появляется окно, в котором отображаются альтерна­тивные позиции меню, представленные текстовыми строками или от­дельными словами (рис. 5.29). Эти строки или слова называются мет­ками меню. Окно с метками может иметь форму столбца, строки или таблицы. Перебор позиций осуществляется перемещением манипуля-
тора «мышь» либо нажатием клавиш со стрелками на клавиатуре, — при этом выделенная позиция меню на экране отмечается инверсией цвета или другим визуальным способом.
Во второе, вспомогательное, окно при нажатии специальной кла­виши «Подсказка» выводится текст комментария к соответствующей по­зиции меню. Комментарий содержит более пространное пояснение данной позиции по сравнению с лаконичным текстом метки меню. Окно с комментарием может быть удалено с экрана повторным нажатием клавиши «Подсказка».
С каждой позицией меню связывается также действие. Действие задается текстовой строкой, которая является командой схемы диалога. В качестве команды может, в частности, фигурировать любая команда ДОС, что обеспечивает вызов произвольных служебных и прикладных программ. Кроме того, в качестве команд могут использоваться специ­альные операторы GOSUB, GOTO, RUN, RETURN, EXIT, позволяю­щие организовать структурное управление диалогом.
Действие, как и комментарий, выводится в отдельное дисплейное окно при нажатии специальной клавиши «Показать действие», и здесь его перед исполнением можно отредактировать; однако в нормальном режиме тексты команд, задающих действия, не видны пользователю.
Пример оформления текстового меню:
*tmenu (I 12 10 14 4 25) / Основные показатели
Фонды/Таблица для расчета основных фондов/sp fonds
Мощности/Сводка мощностей агрегатов/sp powers
Территория/Карта-схема предприятия/vis terr
План-график/Расчет сетевого графика/pert gg
end of tmenu
Первая строка приведенного текста является заголовком: в ней содержится указатель текстового меню «tmenu, параметры дисплейного окна и текстовый комментарий. Всего в данном меню 4 позиции.
Каждая позиция включает 3 текстовых компонента, разделенных знаком /:
(метка) / (комментарий) / (действие)
При инициации данного меню на экране появляется рабочее окно с метками, а при нажатии клавиши «Подсказка» в нижней части экрана появится еще одно окно с комментарием. Картина на экране приобре­тает вид, показанный на рис. 5.29а.
Пользователь может выбрать в рабочем окне нужную позицию, перемещая маркер с помощью управляющих стрелок на клавиатуре или манипулятора «мышь». Нажатие клавиши «Исполнение» вызывает срабатывание действия, соответствующего выбранной позиции меню. По окончании исполнения действия управление возвращается в данное состояние СД.
(2) Графическое меню, как и текстовое, служит для выбора одной из нескольких заранее описанных альтернатив. Но, в отличие от тек­стового меню, в данном случае на экран выводится не таблица с метками, а изображение, приготовленное с помощью графического процессора, — это может быть географическая карта, условная схема изделия,органи­зационная структура предприятия, рекламный текст и др. На изобра­жении заранее выделяются прямоугольные области — графические позиции, по которым перемещается управляемый пользователем мар­кер. В описании каждой альтернативы вместо текстовой метки стоит четверка чисел, которые задают координаты прямоугольной области, ограничивающей данную графическую позицию. Координаты указы­ваются, исходя из разрешающей способности дисплея в графическом режиме: 320 точек по горизонтали, 200 по вертикали. Комментарии и действия оформляются точно так же, как и в текстовом меню.
Пример описания графического меню:
gmenu / WORLD.PIC
7 17 12 40 /Северная Америка / gosub NoAmer
13 20 16 35 / Центральная Америка / gosub CeAmer 17 19 22 39/ Южная Америка / gosub SoAmer 10 126 18 141 / Западная Европа / gosub WeEur 10 142 14 190/ Восточная Европа / gosub EaEur
7 150 20 290/ СССР / gosub USSR
20 135 24 185/ Африка / gosub Africa
17 180 21 215/ Ближний Восток . /gosub MiEast
16 220 22 270/ Южная Азия. / gosub SoAsia
14 272 20 290/ Юго-Восточная Азия / gosub SoEast 19 270 24 300 / Австралия, Океания / gosub Austr
end of gmenu
В данном примере на фоне карты мира, выводимой на экран из файла WORLD.PIC, задано 11 графических позиций, соответствующих разным географическим регионам. При перемещении из одной позиции в другую на экране выделяется соответствующий прямоугольник, ограниченный указанными координатами. Нажатие клавиши «Испол­нение» означает выбор данной позиции и начало выполнения указанных действий. В приведенном примере в качестве действий во всех пози­циях указаны команды перехода на подсхемы, где, в свою очередь, мо­гут быть описаны новые диалоговые состояния или заданы команды для исполнения.
(3) Запрос значения — особый вид диалогового состояния, пред­назначенный для запроса у пользователя некоторой величины с целью ее передачи для обработки прикладной программе. В описании данного состояния указывается:
— позиция (номер строки экрана) для выдачи текста вопроса;
— текст вопроса, в котором поясняется смысл вводимой величины;
— фильтр-предикат, с помощью которого оценивается правиль­ность введенной величины (фильтр не обязателен);
— диалоговая переменная, в которую заносится введенное зна­чение.
Человек должен ответить на заданный системой вопрос вводом определенной величины. Введенное значение присваивается диалого­вой переменной с целью последующего использования в данной СД или в прикладных программах. При этом оно может быть подвергнуто пред­варительной проверке с помощью заранее определенных фильтров-пре­дикатов. Так, например, можно проверить, является ли введенное зна­чение символьной или числовой константой, попадает ли числовая кон­станта в заданный диапазон и др. Пример оформления запроса в СД.
askval 24 «Коэффициент прироста?»/Ш1ег RANGE I 9/putvar I .
При инициации данного состояния в 24 строке экрана появляется вопрос «Коэффициент прироста?». Пользователь должен ввести в ответ числовое значение, которое затем проверяется предикатом RANGE на попадание в диапазон (1 .. 9), а затем заносится программой putvar в диалоговую переменную под номером 1. Если значение введено не­правильно, то предикат RANGE выдаст диагностическое сообщение и запрос повторится. Значение диалоговой переменной может далее ис­пользоваться в прикладной программе, вызываемой из данной СД.
(4) Заполнение формата — еще одна разновидность диалогового состояния, обеспечивающего ввод значений для их последующей обра­ботки прикладными программами. В отличие от запроса значения, здесь пользователю выдается формат — таблица, в которой определенным тек­стовым комментариям сопоставляются позиции для ввода требуемых величин. Пример оформления состояния данного типа:
«format (1 7 5 14 4 25)/Годовой бюджет (тыс. руб.) Капит. затраты / Расходы на подготовку помещений / var 1 Оборудование /Затраты на приобретение оборудования/var 2 Зарплата/Общий фонд зарплаты/var 3 Экспл. расходы / Расходы на эксплуатацию/var 4
end of format
По внешнему виду описатель состояния данного типа похож на описатель текстового меню. При инициации на экран выводится таблица меток, а рядом с ней таблица для ввода значений. В отдельное окно, как и в случае текстового меню, может быть выведен комментарий к вы­бранной позиции. Изображение на экране приобретает вид, показанный на рис. 5.296.
245
В отличие от текстового меню, здесь пользователь не просто выби­рает одну из позиций, а может вводить в соседнем окне значения запра­шиваемых величин. Эти значения присваиваются диалоговым перемен­ным с номерами 1 .. 4. Как и при использовании askval, здесь можно применять предикаты для фильтрации полученных значений. Оформле­ние фильтра-предиката выглядит так же, как и в случае askval, на­пример:
filter range 100 150/putvar 1
Значения диалоговых переменных могут далее передаваться в качестве аргументов прикладным программам.
Схема диалогапредставляет собой обычный текстовый файл, кото­рый обрабатывается интерпретатором СД. Строки или фрагменты этого файла могут содержать:
1) описания диалоговых состояний,
2) обращения к встроенным командам ДОС,
3) обращения к любым внешним-программам,
4) команды управления,
5) метки.
К командам управления относятся уже упоминавшиеся выше операторы!
GOSUB — переход на подсхему данной СД,
GOTO — переход на помеченную строку в данной СД,
RUN — вызов другой (подчиненной) СД,
RETURN — возврат из подсхемы или из подчиненной СД,
EXIT — выход из интерпретатора СД.
Операторы GOSUB и GOTO используются для передач управления внутри данной СД. При этом GOSUB передает управление на помечен­ный фрагмент, который должен заканчиваться оператором RETURN. Такой фрагмент называется подсхемой. Подсхема может также оканчи­ваться оператором EXIT или же статически находиться в конце файла, содержащего СД.
Оператор GOTO передает управление на помеченный участок данной СД, и выход с этого участка может быть оформлен любым способом.
Оператор RUN, в отличие от первых двух, обеспечивает вызов по имени подчиненной СД, которая содержится в другом файле. При вызове подчиненной СД интерпретация ведущей схемы приостанавли­вается и возобновляется вновь после исполнения команды RETURN в подчиненной схеме.
Метки в СД оформляются так же, как в командных файлах ДОС, — это идентификаторы, префиксируемые знаком : . Благодаря этому ин­терпретатор СД может обрабатывать обычные командные файлы ДОС, считая их разновидностями СД.
Диалоговые переменные, вводимые в СД в состояниях типа askval и format, как указывалось, могут использоваться Для передачи значе.
246
ний в прикладные программы. «Взятие» значения диалоговой перемен­ной, сформированной программой putvar, осуществляется с помощью программы getvar. Пример взятия значения диалоговой переменной номер 1:
getvar 1
Программа getvar считывает указанное значение из внутреннего буфера и посылает его на стандартное устройство вывода. Это позволяет передать его через механизм «каналов» ДОС любой прикладной про­грамме, воспринимающей данные со стандартного устройства ввода, или в любой внешний файл. Примеры пересылки диалоговой переменной с номером п:
getvar n | имя_программы getvar n } имя_файла
При обращении к getvar с аргументом — n берутся значения n диа­логовых переменных и передаются в виде массива прикладной программе или во внешний файл.
Ниже приведен пример схемы диалога, включающей два тексто­вых меню. При инициации данной схемы сначала на экран выводится главное меню, содержащее позиции для выбора текстового или графи­ческого процессора, транслятора Бейсик или системы Альфа, а также для перехода на подчиненную схему (с именем games) или на подсхему с меткой dos. В то время как в первых трех позициях происходит пря­мой вызов внешних программ, в других позициях происходят переходы на подсхемы, возврат из которых осуществляется операторами RETURN. В данном примере видно, что обычные команды ДОС, на­пример, els, cd естественно сочетаются с описаниями диалоговых сос­тояний: scheme els * tmenu (1 10 12 24 7 24) / Альфа-Диалог — ВЦ АН СССР
Текст / Вызов текстового процессора / lex
Графика / Вызов графического процессора / vgraf
Бейсик / Вызов интерпретатора Бейсик / basic
Альфа / Вызов системы Альфа / gosub alfa
ДОС / Некоторые команды ДОС / gosub dos
Игры / Вызов подсхемы для выбора игры / run games
Выход / Возврат в ДОС / exit end of tmenu s alfa
cd \ alfa
sp aifa
cd ..
return : dos
*tmenu (1 14 15 24 7 24) / Альфа-ДОС-16 Каталог / Выдача текущего каталога / dir 5 Печать файла / Введите имя файла / type ;
Копирование файлов / Укажите (источник) и (назначение) /сору; Диск С: / Переход на жесткий диск/с: Диск А: /Переход на гибкий диск/а: Дата /Установка даты/date Время /Установка времени/time end of tmenu return end of scheme
Использование интерпретатора схем диалога особенно удобно при компоновке прикладных автоматизированных систем из разнородных компонентов Схемы диалога создаются с помощью специального кон­структора или путем применения обычного текстового редактора. Ин­терпретатор СД, реализованный в ВЦ АН СССР В. А. Рыжовым, бази­руется на использовании администратора окон и администратора меню. Благодаря этому обеспечивается унифицированный интерфейс пользо­вателя с прикладными системами на всех уровнях взаимодействия.

Рис. 5.30. Представление объектов на основе фреймового подхода
Фреймовый подход к организации объектной базы. Фреймы яв­ляются основой организации объектной базы в рассматриваемом под­ходе. Общая структура проблемно-ориентированных объектов на основе фреймов представлена на рис. 5,30,
Ядром данной структуры является ее описатель, в котором содер­жится:
— уникальный ключ (системное имя) данного фрейма,
— внешнее имя фрейма (комментарий),
— ссылка на список свойств,
— ссылка на список экземпляров,
— ссылка на список точек зрения,
— ссылка на список ассоциированных с данным фреймом программ.
Уникальный ключ формируется при создании фрейма и остается его постоянным идентификатором на всем протяжении жизни данного фрейма. Все остальные компоненты фрейма могут изменяться с течением времени либо под воздействием команд пользователя, либо при выпол­нении определенных внутрисистемных функций.
Внешнее имя фрейма — это текстовая строка, в частности, одно слово, которое служит для пояснения роли данного объекта и его со­держимого. При выводе на экран списка фреймов выдаются прежде всего их внешние имена, что дает человеку возможность сориентиро­ваться по такому списку в круге основных понятий предметной области.
Список свойств (pi .. рт) задает типы значений в экземплярах фрейма. Каждое свойство снабжается внешним именем — коммента­рием и, кроме того, имеет порядковый номер, по которому к нему может осуществляться доступ с использованием процедурного интерфейса. Число свойств определяет максимальное число элементов данных в эк­земплярах данного фрейма.
Список экземпляров указывает на основные носители содержатель­ной информации — экземпляры фрейма. Отдельный экземпляр может содержать набор элементов данных, удовлетворяющих описателям свойств. Элементом данных в экземпляре может быть значение одного из следующих типов:
— число,
— текстовая строка,
— вычисляемая формула,
— дата,
— время,
— ссылка на команду ДОС, в частности, на любую программу,
— ссылка на другой информационный объект или его компоненты. В этом перечне указаны простые значения — числовые, текстовые,
обозначения времени и дата, и ссылочные значения. Последние играют особенно важную роль, поскольку с их помощью легко организуются сложные взаимосвязи между объектами. Подчинен­ные объекты могут быть активными (программами и пакетами про­грамм) и пассивными (структурами данных). Такая организация фрей­мового объекта ставит его в ряд с абстрактным типом данных,
249
В частности, рассматриваемая организация позволяет имитировать иерархические и сетевые модели данных, а при одинаковом числе эле­ментов данных во всех экземплярах описываемая структура становится идентичной отношению реляционной базы данных.
Таким образом, фрейм с экземплярами представляет особую ин­формационную модель, на основе которой могут имитироваться другие традиционные модели данных и абстрактные типы.
Список точек зрения представляет собой важнейший компонент пользовательского интерфейса к объектной базе. Фреймовый объект, как таковой, является лишь носителем информации; пользователем он может рассматриваться с разных точек зрения, т. е. иметь разные виды. Основные виды фреймовых объектов: базовый, табличный, трафаретный.
Базовый вид обеспечивает доступ пользователя ко всем компонен­там описателя фрейма, к описателям всех свойств и ко всем экземплярам данного фрейма. Следовательно, это наиболее полный и соответственно наиболее сложный способ доступа к фреймовым объектам.
Табличный вид дает естественное представление группы экземпля­ров. При этом в конкретной таблице могут быть показаны лишь некото­рые избранные свойства фрейма. Разные таблицы, привязанные к од­ному и тоуу же фреймовому объекту, позволяют просматривать содер­жимое экземпляров в разных аспектах, Таблица имеет внешнее имя, которое становится вариантом имени данного фрейма. В таблице также задается заголовок; в ней определены столбцы, отображающие свойства фрейма, а каждый экземпляр отображается в одной из строк. Таблицу можно прокручивать по горизонтали, получая доступ к невидимым на экране столбцам, или по вертикали, получая доступ к новым экземп­лярам.
Трафаретный вид предназначен для создания и просмотра отдель­ных экземпляров и для задания образцов поиска. Трафарет аналогичен листу бумаги с надписями и прорезями, через которые видны определен­ные свойства экземпляров. Через такие прорези, называемые слотами, можно вводить и просматривать данные.
При поиске и отборе подмножества экземпляров трафарет исполь­зуется для формирования поискового предписания. При этом в соответ­ствующих слотах указываются ограничения на отдельные свойства. Результат поиска отображается в таблицу.
Таким образом, указанные стандартные виды фреймовых объектов дают возможность создавать и просматривать экземпляры в удобной для пользователя форме. Их сочетание используется естественным образом при поиске в объектной базе и при других операциях над фреймовыми объектами.
Список ассоциированных программ является еще одним важным компонентом рассматриваемой модели. Под программой здесь пони­мается произвольная прикладная программа, в которой используются
250
обращения к компонентам данного фрейма. Эти обращения оформляются с использованием процедурного интерфейса, обеспечивающего работу с экземплярами. Программы составляются либо на внутреннем языке данной системы (типа паскаль), либо на любом другом алгоритмическом языке (си, паскаль, бейсик, фортран), для которого разработан проце­дурный интерфейс. Конкретная программа может запускаться либо по прямому указанию пользователя, либо неявно — ввиду срабатыва­ния определенной формулы в процессе работы системы.
Использование ассоциированных с фреймами программ является мощным универсальным средством для организации интегрированной обработки данных в прикладных системах. При этом для конечного пользователя такие программы могут оставаться «невидимыми», в то время как производимые ими расчеты могут быть существенными ком­понентами данной информационной модели.
Рассмотренный подход открывает путь к построению прикладных систем разного назначения. Наиболее естественно применение данного метода при создании систем принятия решений и различных информа­ционных систем, в частности, систем для руководства учреждений и предприятий. Для каждой предметной области может быть подобран наиболее естественный набор информационных объектов, которые свя­зываются друг с другом через взаимные ссылки или через схемы диа­лога. Функциональными компонентами такой прикладной системы ста­новятся как универсальные прикладные пакеты, так и специализиро­ванные программы.
5.7. Обучающие системы
Появление персональных компьютеров открыло огромные возмож. ности для разработки и применения самых разнообразных обучающих систем. Диапазон таких систем чрезвычайно широк — от простейших игровых программ, которые помогают 5 — 7-летнему ребенку осваивать грамоту, до весьма сложных программ, ориентированных на изучение разделов физики и математики или помогающих взрослому человеку в овладении определенными знаниями и навыками.
Обучающие системы реализуют и на простых 8-разрядных ПЭВМ, и на более сложных 16- и 32-разрядных машинах. Применяемые методы обучения также весьма различны. Это может быть просто тренировка памяти и сообразительности, основанная на серии примеров и задач; иногда в ходе общения с обучающей программой человеку приходится основательно подумать. Обучающие программы могут играть роль консультантов при решении тех или иных задач; в этом случае при­меняются так называемые экспертные системы, работа которых бази­руется на использовании заранее введенных знаний о данной предмет­ной области. Ниже будут кратко рассмотрены две обучающие системы,
251
имеющие совершенно разное назначение. Одна из них — система Эрудит — предназначена для тренировки памяти и сообразительности, проверки приобретенных знаний, изучения иностранного языка. Важно, что эта система может быть настроена на разные сферы знания. Система Эрудит разработана на факультете вычислительной математики и кибернетики Московского государственного университета И. В. Го­рячей, Т. Н. Щегловой и Л. Л. Щербатюк. Другая система — Дебют, разработанная в Вычислительном центре АН СССР А. К. Дудоладовым с участием А. В. Боткина, служит для информационной подготовки шахматистов. В ее состав входит несколько функциональных компо­нентов, свойственных обучающим пакетам. Описываемые пакеты могут дать общее представление о методах построения обучающих систем и способах их использования.
Эрудит — конструктор обучающих игр. Система Эрудит была разработана на основе идеи о применении методики компью­терных игр для создания учебных программ. Главное назначение си­стемы — тренировка памяти и реакции, контроль знаний в определен­ной предметной области. Одновременно происходит овладение навы. ками обращения с клавиатурой ПЭВМ.
Задания, предъявляемые ученику, предусматривают поиск и под­бор соответствий между различными элементами; при этом ученик должен переводить с иностранного языка отдельные слова и фразы, отгадывать загадки, находить синонимы или антонимы, давать ответы на численные задачи, подбирать формулы, угадывать названия, даты и др. Оценка за каждое упражнение и за весь урок зависит от правиль­ности и скорости ответов. Обучение проходит в режиме игры, что под­держивает азарт и интерес учащегося к повторению сеансов.
Система Эрудит не является конкретной игрой или учебной про­граммой. Это своеобразный инструмент, посредством которого препо­даватель может самостоятельно определять содержание обучения, выбирая при этом игровые формы взаимодействия с учеником. Эти формы различны по сюжету и сложности, они дают возможность пред­ставить учебный материал живо и занимательно.
Система Эрудит не заменяет учителя, а, напротив, дополняет, расширяет его возможности. Учитель же, руководствуясь своей методи­кой преподавания, подбирает упражнения таким образом, чтобы обеспе­чить прогресс в освоении предмета. Еще одно возможное применение системы Эрудит — для самообучения. При этом учащийся может само­стоятельно заложить необходимый учебный материал в систему и затем регулярно упражняться на этом материале, поддерживая тег,: самым определенные знания в активном состоянии.
В системе Эрудит упражнения задаются двумя упорядоченными множествами: Ml и М2, между элементами которых установлено соот. ветствие. Каждое из множеств может одновременно включать элементы
262
только одного типа: текст либо образ. Под текстом понимается любая последовательность слов или символов, отображаемая на экране ди­сплея внутри прямоугольной рамки. Образ — это некоторая картинка, также вмещающаяся в прямоугольную область экрана. Элементы, представляющие множество Ml, составляют так называемую опор­ную композицию. Элементы из множества М2 образуют игровую композицию. Задача ученика — установить правильные соответствия между отдельными элементами Ml и М2. Тип соответствий и игровая форма предъявления упражнения ученику задаются учителем.
Для различных предметных областей множествам Ml и М2 могут соответствовать разные понятия. Приведем несколько примеров.
1) Начальное изучение языка (родного или иностранного): Ml — названия предметов, объектов;
М2 — графические образы (картинки) предметов, объектов.
2) Углубленное изучение иностранного языка: Ml — слова, фразы на родном языке;
М2 — слова, фразы на иностранном языке.
3) Арифметика:
Ml — математические формулы, выражения; М2 — их значения.
4) Геометрия:
Ml — изображения геометрических фигур; М2 — их названия.
5) История: Ml — даты;
М2 — исторические события.
6) География:
Ml — названия географических объектов; М2 — их местонахождение.
7) Литература:
Ml — литературные цитаты; М2 — их авторы.
8) Логические задачи (поиск закономерностей): Ml и М2 — абстрактные картинки.
Ясно, что такое перечисление может быть продолжено. В системе Эрудит реализуются два типа соответствий между множествами эле­ментов:
— Простое соответствие (1: N): опорная композиция (множество Ml) содержит лишь один элемент; игровая композиция (множество М2) содержит N элементов. В этом случае элементу опорюй композиции
соответствует единственный (первый по порядку номеров) элемент Из игровой композиции.
— Взаимно однозначное соответствие (N: N): в опорной и игровой композициях содержится одинаковое число элементов. Соответству. ющие друг другу элементы множеств Ml и М2 идентифицируются одним и тем же порядковым номером.
В качестве упражнений первого типа (1: N) могут выступать, к примеру, следующие:
а) подобрать для слова, словосочетания или предложения на иностранном языке правильный перевод из предложенных N вариантов ответа;
б) отгадать загадку: для некоторого описываемого явления, пред­мета или процесса выбрать правильное название (или изображение) из нескольких вариантов;
в) дана картинка: угадать ее смысл (возможные интерпретации смысла картинки могут быть заданы в виде текстов или других кар­тинок)
Примерами упражнений второго типа (N: N) могут служить сле­дующие:
а) имеется некоторый набор фраз, представляющий правильный, логически связный текст на родном языке (диалог, стихотворение и т. п.) и соответствующее ему множество неупорядоченных фраз на иностранном языке; требуется расставить фразы иностранного языка в правильном порядке;
б) установить соответствия между картинками и их названиями.
Функционирование системы осуществляется в двух основных ре­жимах: Учитель и Ученик. Перед началом работы пользователь выби­рает нужный режим с помощью графического меню и особого маркера в виде человечка — Ведущего. Этот веселый человечек выполняет роль посредника между пользователем и ПЭВМ и присутствует прак-тически на всех этапах работы системы.
Режим Учитель предназначен для ввода и последующей корректи. ровки информации, используемой в процессе обучения. Для удобства эта информация, в зависимости от области применения, объединяется в темы (ведется специальный каталог тем). Над темами допустимы следующие операции:
— создать новую тему;
— исключить тему из каталога;
— выбрать тему для дальнейшей работы с ней.
Выбор операции и конкретной темы осуществляется путем переме­щения Ведущего на ту или иную позицию графического меню. Выбрав определенную тему, преподаватель имеет возможность работать с объ­ектами двух типов: упражнениями и уроками. На экране при этом появляется список пронумерованных упражнений (или уроков) с ком-
254
ментариями к ним. Пользователь может выбрать конкретный объект (упражнение или урок) для дальнейшей работы, либо начать создание нового упражнения. Выбор осуществляется с помощью Ведущего, который перемещается на экране под действием управляющих клавиш или манипулятора «мышь».
При создании нового упражнения учитель должен проделать следующее:
— объявить тип соответствия в будущем упражнении (1: N или Я: N);
— задать игровую и опорную композиции, предварительно опре­делив тип элементов в каждой из них;
— сформулировать задание (комментарий) к упражнению, т. е. смысл установленного соответствия;
— определить степень сложности упражнения (по шкале от 1 до 9)}
— выбрать игровую форму предъявления упражнения ученику. Ввод содержимого опорной и игровой композиций осуществляется
с помощью двух окон, симметрично расположенных на экране дисплея;. в зависимости от указанного типа соответствий окна автоматически разбиваются на соответствующее число равных частей.
При формировании композиции, содержащей текстовые элементы, преподавателю достаточно уметь работать с обычным текстовым редак­тором. А при задании композиции с графическими элементами ия нужно выбирать из специальной, встроенной в систему библиотеки образов. В режиме Учитель имеется возможность создавать такую библиотеку. Работая с ней, пользователь может создавать, корректи­ровать, сохранять картинки во внешней памяти или удалять некоторые из них. Использование графических элементов позволяет активизиро­вать образное восприятие у ученика, которое часто гораздо эффектив­нее, чем вербальное.
Если объектом работы является созданное ранее упражнение, учитель может:
— отредактировать упражнение, т. е. изменить -содержимое ком. позиций, формулировку задания, сложность и метод предъявления упражнения (игровую форму)}
— удалить упражнение;
— перейти к предыдущему или следующему по порядку упраж. нению;
— «пометить» упражнение для того, чтобы не забыть включить его в состав какого-либо урока.
На основе созданных упражнений учитель составляет уроки и задает комментарии к ним. Урок в системе Эрудит определяется как простая последовательность упражнений. При формировании нового урока учитель просматривает список существующих в данной теме упражнений с комментариями к ним и выбирает те из них, которые
. . 255
считает нужным включить в урок. Созданному уроку автоматически присваивается определенный номер. В режиме Учитель имеется также возможность редактирования выбранного урока (исключение из со­става этого урока некоторых упражнений и включение других, измене­ние комментария). Ненужный урок можно удалить.
В режиме Ученик происходит собственно обучение. Учащемуся предстоит выполнить созданные в режиме Учитель уроки. При: этом можно либо сразу приступить к выполнению выбранного урока, либо предварительно просмотреть «десятку лучших» (она содержит список лучших учеников и количество набранных ими очков по данному уроку). Обучающийся всегда имеет шанс, повторно пройдя урок, повысить свои результаты и попасть в десятку лучших или переместиться на более высокий уровень в ней.
Перед началом сеанса обучения система запрашивает у обучающе­гося степень его подготовленности (по шкале от 1 до 9), и эта величина учитывается при начислении очков. Общее время на выполнение каж­дого упражнения ограничивается и фиксируется с помощью высвечи­вающихся на экране дисплея часов. В процессе выполнения упраж­нения ведется учет числа правильных и ошибочных ответов ученика, а также других показателей, фигурирующих при подсчете итога упраж­нения.
Элементы опорной и игровой композиций могут определенным образом интерпретироваться и участвовать в различных игровых ситуациях. Ученику при этом следует проявлять не только свои зна­ния, но и соответствующую сообразительность и реакцию, чтобы успеть «поймать», «удержать», отгадать нужный объект. В системе Эрудит использованы две базовые игровые формы.
В первой «з них требуется выбрать ответ из заданного множества возможных значений. Это схема облегченного типа, в ней содержится элемент подсказки. Она полезна для закрепления в памяти ученика не очень прочцых ассоциативных связей, когда ответ как бы «крутится на языке», но не припоминается. Диалог с учеником при этом ведется с помощью двух человечков — помощников Ведущего. Человечки выражают свое мнение по поводу ответов ученика различными же­стами — они пританцовывают, жестикулируют руками, качают голо. вами. Каждый из человечков отвечает за свою композицию: первый — за опорную, в которой элементы выводятся на экран в порядке, задан, ном учителем; второй — за игровую, элементы которой располага­ются в случайном порядке. При помощи управляющих клавиш ученик должен установить каждого человечка напротив соответствующих эле. ментов и зафиксировать свой ответ. Если ответ верен, соответству­ющие элементы игровой и опорной композиций помещаются друг против яруга, а человечки выражают свое одобрение небольшим танцем,
256
Другая схема предъявления упражнений дает ученику возмвистюсть ответить на заданный вопрос самостоятельно, без подсказки. Игровая форма, в которую Эрудит предлагает облечь эту схему, использует «плавающие» по экрану объекты (рыбки), за которыми закреплены элементы опорной композиции. В течение короткого промежутка вре. мени ученик должен ввести ответ с клавиатуры. При этом он может успеть опробовать несколько вариантов, что, однако, повлечет за собой начисление штрафных очков.
В описанных методах предусматриваются поощрения за правильно выполненные упражнения. При этом используются элементы мульти. пликации, звуковое сопровождение и другие приемы для поддержания интереса. Разрабатываются и другие оригинальные методы предъяв­ления упражнений ученику.
Для работы в системе Эрудит от пользователя не требуется почти никакой специальной подготовки. В случае необходимости система предоставит ему помощь. Дружественность и простота в использовании делают эту систему доступной как профессионалу, так и дилетанту.
Дебют — система обработки шахматной ин. формации. На протяжении всей истории шахматных соревнований важнейшим условием успешного выступления шахматиста является тщательная подготовка к турнирам. Эта подготовка включает подроб­ный анализ партий, сыгранных в разное время будущими соперниками. Анализируются также дебютные продолжения, избиравшиеся данным шахматистом или его противниками. Это приобрело особое значение в наши дни, с развитием теории дебютов, поскольку от информационной подготовки игрока часто непосредственно зависит результат каждой сыгранной партии и всего турнира.
В настоящее время ежегодно в официальных соревнованиях иг­раются десятки тысяч партий, из них около 30 тысяч представляют теоретический интерес. Большая часть партий публикуется в журна-лах, и работа шахматистов по отбору и изучению необходимой инфор­мации превращается в весьма тяжелый труд. Многие из них поль­зуются при подготовке специальными картотеками, работа с которыми весьма трудоемка. Многие гроссмейстеры создают свои собственные дебютные картотеки, а гроссмейстерам экстра-класса в этом помогают ассистенты.
Появление персональных компьютеров дает возможность органи­зовать на их основе хранение и обслуживание шахматных банков информации. При этом важнейшим обстоятельством является обще­доступность ПЭВМ, их малые физические размеры, отсутствие необ­ходимости в обслуживающем персонале. Благодаря этим качествам ПЭВМ может сопровождать шахматистов на любом турнире. Кроме использования в качестве непосредственного инструмента информа­ционной подготовки шахматистов, ПЭВМ на шахматных турнирах, как
257
я на любых спортивных соревнованиях, может служить для визуали­зации результатов и их трансляции по телевидению, для комментиро­вания и разбора партий и др. Технические средства современных персо­нальных компьютеров, такие как цветная графика, твердый диск боль­шой емкости, устройство ввода типа «мышь» и др. позволяют создавать программы, значительно облегчающие разыгрывание партий и их анализ.
Система обработки шахматной информации Дебют, разработанная в Вычислительном центре АН СССР, ориентирована на пользователей шахматистов различной квалификации. Система состоит из блока ввода и анализа партий, подсистемы поиска партий в базе данных, подсистемы обучения, программы автоматической классификации партий по де­бютам и подсистемы обработки результатов турниров. Система состоит из 7 функциональных модулей, взаимодействующих через общие обла-сти памяти.
Модуль MAIN — это программа инициализации, которая считы­вает из базы данных закодированные изображения фигур и заполняет ими соответствующие массивы. Затем эта программа обеспечивает выбор одного из следующих модулей. Модуль PLAYER осуществляет ввод текстов партий, программно-логический контроль ходов и автома. тическое разыгрывание партий. Этот модуль поддерживает анализ позиций, во время которого шахматист может передвигать фигуры на изображении доски с использованием манипулятора «мышь».
Модуль INDEX автоматически классифицирует партию по де­бютам. При этом применяется закодированный классификатор, который приписывает данной партии определенный индекс в зависимости от порядка ходов соперников. Модуль READER кодирует тексты партий и заполняет каталоги базы данных при вводе информации. Каждый ход вводится либо путем его набора на клавиатуре, либо в результате пере­мещения фигур на экране при помощи манипулятора «мышь». Другой модуль осуществляет поиск в базе данных, декодирование и вывод текстов партий в файлы или на печать. Модуль FILER обеспечивает просмотр каталогов и коррекцию информации. Модуль TEACHER позволяет получать справочную информацию по дебютам.
Файлы данных в системе подразделяются на 4 группы.
1) Файлы типа CHS составляют информационный архив: закодиро­ванные тексты партий, позиций, каталоги индексов, фамилий шахма-тистов и т. д. Это изменяемая часть системы.
2) Файлы типа DEB содержат закодированные изображения фи­гур, дебютный классификатор партий и другую служебную инфор, мацию.
3) Файлы типа ТХТ содержат турнирные таблицы или выведенные Для дальнейшей обработки и печати тексты партий.
4) Файлы типа FW содержат данные подсистемы Рейтинг,
258
Все партии перед выводом на печать или при занесении в базу данных классифицируются по специальным шахматным индексаторам. Цель этой классификации состоит в более точной идентификации де. бютного варианта. Именно индекс является во многих случаях главным признаком при поиске партий. Автоматическая индексация партий) реализованная в системе, основана на дебютном классификаторе Ра-бара. В основе алгоритма индексации лежит возможность представле. ния классификатора древовидной структурой: ребрам дерева припи­саны полуходы, вершинам соответствуют индексы.
Поиск индексов демонстрируется построением дерева рассматри­ваемых вариантов. Пользователь может управлять работой алгоритма индексации, иаменяя ряд параметров в эвристических критериях и допустимую глубину перестановки ходов. Таким образом, для одной и той же партии можно получать различные мнржества индексов — канди. датов (дерево рассматриваемых вариантов меняет свою глубину и ши. рину) и различные конечные индексы партии. Это удобное средство позволяет шахматисту — индексатору исследовать различные варианты алгоритма.
Дерево классификатора представлено в базе данных однонаправ­ленным списком с записями переменной длины. Каждый элемент списка содержит полуходы и соответствующие им индексы, а также ссылки на следующие вершины дерева. Количество ссылок определяется ветв­лением в данном узле.
База данных системы содержит тексты партий и их параметры; индекс, фамилии игроков, соревнование, год, результат, а также пози. ции и дебютный классификатор. В целях экономии памяти тексты партий при записи в базу кодируются, что позволяет занимать лишь один байт для хранения полухода. Для обеспечения быстрого поиска система содержит 4 инвертированных файла прямого доступа — список дебютных индексов партий, фамилии шахматистов, список соревнова­ний и список стран.
Для облегчения, и ускорения ввода текста партий разработаны следующие cpeflcfea:
— каждый ход проходит синтаксический и семантический контроль, при этом проверяется правильность записи хода и его соответствие шахматным правилам; неправильные ходы не вводятся в систему;
— текст партии вводится прямо с листа, при этом производится автоматическая нумерация ходов;
— ввод очередного хода демонстрируется изменением позиции на экране.
При выводе партий пользователь формирует запрос, в котором может указать произвольную, но осмысленную комбинацию ключей-Система поддерживает около 50 различных видов запросов. Самым про­стым и наиболее быстрым способом вызыва партии или позиции яв-
259
ляется загрузка по номеру в каталоге. Специальный режим предусмо­трен для поиска дебютных аналогов указанной партии. При этом до­статочно вывести на одну из двух диаграмм на экране дисплея наваль­ные ходы партии, и система будет последовательно разыгрывать на второй диаграмме все партии из базы данных с указанным дебютом. Отобранные по запросу партии могут быть выведены на печать или рассмотрены с помощью средств анализа.
Функция просмотра каталогов системы предназначена для озна. комления пользователя с тем, какая информация уже введена в систему Программист имеет возможность контролировать правильность занесе­ния информации в базу данных, просматривать ссылки и тексты партий во внутреннем представлении системы.
При обычном анализе партий и позиций возникают неудобства связанные с необходимостью работы с двумя объектами: позицией на доске и текстом партии в журнале. При автоматическом разыгрывании партии шахматист не отвлекается на «чтение» партии и перестановку фигур: розыгрыш осуществляет программа. Во время разыгрывания можно ускорить, замедлить, приостановить игру, вернуть назад несколько последних ходов. Предусмотрена возможность комменти­рования партий с помощью введения различных альтернативных ва­риантов для любого хода. Если партия была записана в архив с коммен­тариями, то при разыгрывании они автоматически выводятся на вто­рую доску.
Устройство типа «мышь» позволяет имитировать взятие и переме­щение фигуры. При вводе позиции нужно, двигая устройство по столу, подвести курсор к выбранной фигуре, «взять» ее с помощью нажатия правой кнопки манипулятора, переместить курсор на нужное поле и «поставить» фигуру с помощью левой кнопки. Клавиатура и устройство «мышь» работают в режиме параллельного ввода. При вводе ходов с помощью манипулятора «мышь» генерируется их текстовое представ­ление и имеется возможность дальнейшей работы с текстом партии.
При анализе позиции каждый рассмотренный вариант записы. вается в текстовом виде, и затем можно автоматически повторить все рассмотренные ранее варианты.
Система поддерживает одновременную работу с двумя партиями или позициями. Это полезно для ввода и анализа комментариев, сравни­тельного анализа партий или позиций. Предусмотрен поиск партий, в которых встречалась расставленная позиция. На одной из диаграмм с помощью манипулятора «мышь» устанавливается произвольная по­зиция, на другую выводятся и разыгрываются партии, в которых она встречалась. Если позиция относится к дебютной стадии, то с помощью системы классификации поиск будет проведен быстро. В других же случаях для ускорения поиска можно задать один или несколько предполагаемых признаков партии: соревнование, фамилию шахма-
260
тиста и др. Таким образом, при достаточном банке партий для любой указанной позиции можно узнать, встречалась ли она когда-либо ранее и какие ходы были при этом сделаны.
Пользуясь манипуляторами «мышь», два соперника могут сыграть блиц-партию. При 5том ведется автоматическая запись текста партии, что позволяет сделать по окончании игры ее анализ, автоматически пе­реключаются часы соперников. При этом нельзя сделать неправиль­ный ход, так как некорректные ходы не вводятся в машину; партию легко отложить, сохранив текущую позицию, не возникает недоразу­мений по поводу положения той или иной фигуры, падения фигур и т. д.
Обучение дебютам построено на основе дебютных вариантов клас­сификатора Рабара. На первом этапе инициатива полностью пере­дается пользователю. Он указывает интересующий его дебют из при­водимого списка. Далее, на экран выводится и последовательно разы­грывается фиксированная часть дебюта. Затем пользователь может рассматривать различные варианты, выбирая тот или иной ход в при­водимом меню. Если дебютный вариант исчерпан, то указывается его индекс. Рассмотренный вариант можно повторить. Таким образом, одна из функций подсистемы обучения состоит в том, чтобы предоставить пользователю возможность получения справочной информации о том или ином варианте и его индексе.
Путем возврата ходов можно рассматривать различные варианты указанного дебюта. Для контроля полученных знаний предлагается выполнить ряд заданий. В 1-м задании необходимо указать ходы, определяющие данный дебют. Во 2-м и 3-м заданиях система генерирует некоторую позицию, характерную для данного дебюта, и просит сде­лать какой-либо из рекомендованных теорией ходов соответственно за белых или за черных. Далее машина отвечает на указанный пользовате­лем ход и снова передает очередь хода человеку. Обучаемый может использовать также ограниченное число подсказок.
Подсистема Рейтинг предназначена для автоматической обработки информации в турнирных таблицах, расчета индивидуальных коэффи­циентов и международных рейтингов. Данная подсистема позволяет на основе начальных рейтингов прогнозировать результаты турниров, поддерживает полуавтоматическое заполнение турнирных таблиц, формирование таблиц движения по турам и очередности игры, графиче­ски отображает соотношение рейтингов нескольких шахматистов, из. менения коэффициентов одного или группы шахматистов за последние 2 года и т. д. Система может быть использована в процессе подготовки и организации турниров.
Некоторые характеристики системы Дебют: объем программ — 90 Кбайт, среднее время выборки партии — 7 секунд, автоматической индексации — 15 секунд; диск объемом 360 Кбайт может вместить около 1500 партий, твердый диск объемом 10 Мбайт — до 50 000 партий.
261
Обе рассмотренные системы — Эрудит и Дебют — включают ха­рактерные компоненты, которые должны быть в любом обучающем пакете. К таким компонентам относится база данных, средства визуа­лизации (как правило, с активным использованием цветной графики), удобный интерфейс с пользователем, определенная схема или методика предъявления материала. Обязательно также выделение двух базовых режимов работы — в одном из них происходит заполнение базы дан­ных, т. е. обучение самой системы; в другом режиме человек общается с системой и приобретает при этом новые знания или тренирует свои интеллектуальные способности.
Часто при обсуждении методов построения обучающих систеи для школ или вузов говорят об «авторских» системах; при этом под­разумевается, что такая система должна прежде всего давать учителю возможность ввода в машину своего материала и своей методики его предъявления будущему ученику. Система Эрудит отвечает этому требованию в полной мере, хотя набор допустимых методик обучения ограничен. В системе Дебют методика предъявления материала зало­жена разработчиками, что объясняется специальной ориентацией данного пакета; что же касается ввода нового материала в базу данных, то в этом отношении здесь предоставляются широкие возможности. Использованный подход может быть с успехом применен для создания обучающих систем в профориентации, в начальном, среднем и высшем образовании. Кроме того, аналогичный подход может быть применен для построения систем, предназначенных для обучения конкретным профессиональным навыкам — например, налаживанию станков, сборке-разборке сложных изделий и др.
Экспертные системы как средство обуче­ния. Один из многообещающих подходов к построению обуча­ющих систем может основываться на применении методов искусствен­ного интеллекта, получивших развитие в последние годы в связи с соз­данием экспертных систем. Экспертные системы разрабатываются с целью применения в таких областях, где для принятия решений не­обходимо учитывать множество разнородных факторов. Основу типовой экспертной системы составляет база знаний, в которую закладывается информация о данной предметной области. Имеется две главных формы представления знаний в экспертных системах: факты и правила. Факты фиксируют количественные и качественные показатели предметов и процессов. Правила описывают соотношения между фактами, обычно в виде логических условий, связывающих посылки и следствия.
Как и в обучающих системах, в типичной экспертной системе выделяются два главных процесса: формирование базы знаний и под. держка общения с человеком, который обращается к экспертной системе за советом и помощью.
Формирование базы знаний осуществляется разными методами.
262
Самый простой метод — это запись фактов и правил в текстовой форме и ввод такого текста в машину, Синтаксическое оформление текстовых записей регламентируется конкретной инструментальной системой Так, например, одним из общепринятых инструментальных средств для построения экспертных систем является язык пролог. Факты и правила на этом языке оформляются в точном соответствии с синтаксисом про. лога. В более сложных инструментальных системах ввод фактов и правил в базу знаний может происходить на ограниченном естественном языке, Могут применяться также специальные методы познания — обу. чение по аналогии, по конкретным примерам, путем обобщения и ком­позиции знаний и др., однако такие методы пока находятся в стадии отработки.
Функционирование экспертной системы обычно выглядит следу, ющим образом. Человек формулирует в общих терминах стоящую перед ним задачу. Экспертная система выбирает определенный раздьл своей базы знаний и начинает диалог с человеком на основе имеющихся пра­вил и фактов. Человек (обучающийся) в таком диалоге обычно Пасси­вен — он лишь отвечает на вопросы системы, выбирая ответ из не­скольких предъявляемых альтернатив. Во время и после завершения серии вопросов-ответов система производит анализ ответов пользова­теля, сопоставляя их с имеющимися в базе знаний фактами. При этом производится логический вывод на основе подходящих правив и, в ко­нечном счете, формируется ответ на интересующий человека вопрос. Один из важных компонентов экспертной системы — объяснение сделанного вывода. Если человек запросит у системы такое объяснение, то оно выдается в соответствующей форме. Объясняющая подсистема пытается ответить на вопросы пользователя относительно Своего пове­дения. В простых системах такое объяснение сводится просто к выдаче записанных фрагментов текста, извлекаемых по ключевым словам. Более развитые системы могут пересказывать правила из естественном языке и описывать ход своей работы в терминах таких йравил. Объяс­нения необходимы также и разработчикам базы знаний при ее отладке. Если экспертная система может объяснить, как она пришла к тому или иному выводу, то ошибочныерешения могут быть прослежены с целью обнаружения пропусков или несоответствий в базе знаний-Экспериментальная экспертная система КЭС, ориентированная на специалиста в области сельскохозяйственного производства, раз работана во ВНИПТИК ВАСХНИЛ Д. М. Блиновым. Эта система, реализованная на основе языка пролог, может быть использована для определения болезни сельскохозяйственной культуры по внешним признакам растения, для определения вредителя культуры* исходя из описания его внешнего вида, для определения болезни животного по симптомам ее проявления и данным лабрраторного анализа, для прогнозирования урожайности культур и др. Знания в этой системе
S63
представлены в виде фактов и правил, состоящих из утверждений с условиями. Утверждения содержат посылки (классы объектов, их свойства и другие возможные сущности) и отклики С определенными характеристиками. Условия указывают на сочетания фактов или других условий, при удовлетворении которых устанавливается соответствие между посылками и откликами. Утверждение без условий трактуется как факт.
Правила организуются в иерархические структуры. База знаний представлена сетью из правил. Путь перехода по этой сети в каждом случае определяется ответами пользователя в процессе диалога. Диа­лог протекает следующим образом:
— программа сообщает пользователю возможные посылки, кото­рые можно задать системе в процессе диалога. Примеры посылок: «бо­лезни яровой пшеницы», «вредители яровой пшеницы», «болезни овощ­ных культур»;
— пользователь задает предмет диалога, выбирая одну из на­чальных посылок;
— система проводит опрос пользователя на предмет истинности или ложности соответствующих условий для данной посылки.
Если для какой-то посылки в процессе опроса пользователя вы. полнены все условия, то пользователю сообщается отклик, который становится посылкой для следующего этапа диалога. Так продолжается до тех пор, пока не будет достигнуто состояние выхода на конечный отклик. При этом пользователю предлагаются возможные пути пере­хода: продолжить диалог, пополнить знания системы или прекратить диалог.
Если просмотрены все условия и ни для одной посылки не вы­полнены условия, то пользователю сообщается распределение вероят­ностей между анализируемыми посылками. В этом случае пользова­телю выдается напоминание, что желательно пополнить, базу знаний. Механизм выбора очередного условия для опроса пользователя опре­деляется стратегией, реализованной в модуле логического вывода. На каждом шаге опроса пользователя сужается набор претендентов-утверждений и претендентов-условий. В списке утверждений остаются только те, для которых выполнены все их условия. В списке условий остаются только те, которые принадлежат утверждениям с удовлетво­ренными посылками для всех опросов пользователя.
При вводе знаний в систему происходит диалог, в ходе которого программа для каждого правила запрашивает у пользователя посылку, отклик и перечень условий, определяющих принадлежность отклика к заданной посылке. По окончании диалога программа создает в базе данных новое правило в виде нескольких записей, определяющих утверждение, условие или факт. При начальном создании базы знаний осуществляется подготовка всех правил и фактов в виде текстов, ко-
264
торые создаются текстовым редактором, встроенным в систему. Про­граммное обеспечение системы КЭС включает три программных модуля объемом 76, 72 и 32 Кбайт и файлов, представляющих собой базу знаний.
Таким образом, методы работы с экспертными и-обучающими системами весьма сходны. Формирование и корректировка баз знаний, диалог с пользователем, выдача объяснений — все эти процессы яв­ляются чрезвычайно важными, и их эффективная реализация в обу­чающих системах может основываться на опыте разработки и примене­ния экспертных систем. В то же время такие элементы обучающих систем, как графическая визуализация изучаемых объектов и процес­сов, удобный интерфейс с пользователем, ввод игровых компонентов в процесс общения, может существенно обогатить практику разработки и применения экспертных систем. Персональные компьютеры, благо, даря своей массовости, Дешевизне и общедоступности, безусловно стимулируют развитие и симбиоз обоих типов систем. Обучающие и экспертные системы на ПЭВМ могут стать достоянием любого человека.
Программное обеспечение персональных ЭВМ чрезвычайно много­образно. Может показаться, что при обилии прикладных пакетов для ПЭВМ отпадает необходимость в разработке новых систем, поскольку почти любую задачу можно пытаться решать на основе имеющегося программного обеспечения. Однако и технические, и программные сред­ства ПЭВМ постоянно развиваются, и эта эволюция, в свою очередь, стимулирует постановку все новых задач и создание все новых программ­ных средств для их решения.

Приложение
Краткий терминологический словарь
Внешние накопи­тели
Устройства хранения информации (программ и данных); имеют логические имена А:, В:, С:
Виртуальный диск
Реализуется в оперативной памяти; обычно имеет логическое имя D:
Системный диск
-Основной диск, с которого происходит запуск системы; должен содержать два «скрытых файла» ДОС, командный процессор COMMAND. COM, файл конфигурации CONFIG. SYS и файл авто­запуска AUTOEXEC.BAT
Метки дисков
Произвольные имена, длиной до 11 символов (буквы, цифры, знаки __ и —), используемые для идентификации различных физических но­сителей; метка приписывается командой LABEL и выдается командами VOL и DIR
Файл
Именованная область памяти ка одном из ди­сков, в которой может храниться текст про­граммы, какое-либо из ее промежуточных пред­ставлений, исполняемая программа или данные для ее работы. В файлах могут содержаться Любые текстовые документы, электронные таб­лицы или закодированные графические изобра­жения
Имя и тип файла
Образуют вместе расширенное имя файла, ис­пользуемое для его идентификации в командах ДОС и прикладных программах. При задании имя и тип разделяются знаком «.». Имя может содержать до 8-ми символов, тип — до 3-х
Дата и время
Фиксируются в машине встроенным календа­рем и часами и приписываются в качестве атри­бутов файла в момент его создания или изме­нения. Формат задания даты: месяц—день—год или день—месяц—год. Формат задания време­ни — час : мин : с
Продолжение
Каталог файлов (директорий)
Специальная информационная структура, со­держащая информацию о группе файлов, хра­нимых совместно на одном носителе. Каталог выдается командой DIR
Корневой ката­лог
Каталог файлов данного накопителя, в котором начинается регистрация обычных файлов и под­каталогов 1-го уровня
Подкаталог
Каталог файлов, зарегистрированный в KaTat логе более высокого уровня
Маршрут
Обозначение, состоящее из логического имени накопителя и цепочки имен взаимно подчинен­ных каталогов. Маршрут указывает, где сле­дует искать файл(ы). Используется в качестве префикса имени файла, а также как аргумент команды PATH
Префикс имени файла
Указывает маршрут (местонахождение) кон­кретного файла или группы файлов
Рабочий (теку­щий) накопитель и каталог
Накопитель и каталог, на которые система на­строена в данный момент; приглашение ДОС обычно выдает имена текущего накопителя и каталога
Альтернативные
маршруты
Маршруты, по которым ДОС ищет файл(ы), если они не обнаружены в текущем каталбге; задаются заранее командой PATH
Приглашение ДОС
Цепочка символов, которую ДОС выдает на дисплей, приглашая пользователя ко вводу команд; стандартное приглашение содержит лишь имя накопителя, расширенные пригла­шения могут содержать имя текущего каталога, время, дату и любые текстовые сообщения; формат устанавливается командой PROMPT
Команды ДОС
Текстовые строки, которые вводятся пользова­телем с клавиатуры в ответ на приглашение ДОС или задаются в командных файлах
Встроенные команды
Исполняются командным процессором
Внешние коман­ды
Реализуются программами, которые находятся в текущем или одном из альтернативных ката­логов
Параметры команд
Маршруты, имена файлов, идентификаторы, числа, специальные флажки, следующие за име­нем команды и указывающие объекты или ре­жимы исполнения
Продолжение
Шаблон имени файла
Употребляется в командах для сокращения за­писи или обозначения групп файлов с похожи­ми именами; в шаблонах используются маски­рующие символы ♦ (любое число любых зна­ков) и ? (любой одиночный знак)
Курсор
Мигающий или выделенный другим способом значок на экране дисплея, который указывает позицию для вывода очередного символа. В гра­фическом режиме курсор создается искусствен­но и выводится на экран специальной про­цедурой
ASCII
Стандарт кодирования символов (American Standard Code for Information Interchange). Регламентирует порядок кодирования 7-бито­вым двоичным кодом 128 различных управля­ющих сигналов и алфавитно-цифровых симво­лов. Первые 32 кода (от 0 до 31) соответствуют управляющим символам, как правило, не пе­чатаемым на принтере и не выводимым на дисплей. Остальные коды (от 32 до 126), кроме особого кода 127, представляют знаки пунктуа­ции, знаки математических операций, цифры и буквы английского алфавита. Код 127 соот­ветствует специальному символу
Расширение ASCII
Модификация стандарта ASCII, указывающая на способ интерпретации 256 8-битовых кодов, из которых первые 128 (от 0 до 127) соответ­ствуют управляющим сигналам и символам основного стандарта ASCII, а следующие 128 кодов (от 128 до 255) предназначены для кодирования символов национальных алфави­тов, символов псевдографики, математических и других символов. Их называют расширен­ными ASCII-символами
Символы псевдо­графики
Подмножество расширенных ASCII-символов, используемых для вывода на дисплей и принтер изображений, состоящих из горизонтальных и вертикальных линий, уголков, стыковочных соединений, штриховок и др. Такие символы используются в текстовом режиме для изобра­жения рамок, столбиковых гистограмм и т. п.
Табдиф ASCII-кодов
Таблица, в которой десятичным или шестнадца-теричным кодам сопоставляются управляющие сигналы и символы, согласно ASCII или рас­ширению ASCII
Продолжение
Расширенные ASCII-коды
2-байтовые последовательности, служащие для кодирования сигналов, поступающих с клавиа­туры ПЭВМ при нажатии некоторых специаль­ных клавиш — функциональных (Fl—F10), уда­ления и вставки (Del и Ins), перемещения кур­сора (стрелки, Home, End, PgUp, PgDn), а также при одновременном нажатии пар кла­виш — Alt -f- (другая клавиша), Ctrl -f- (дру­гая клавиша) или Shift + (другая клавиша). Первый байт расширенного хода является слу­жебным и всегда равен 0; второй байт является информационным, его код равен -порядковому номеру нажатой клавиши (нумерация клавиш зафиксирована, номера лежат в диапазоне от 1 до 132). Благодаря указанному методу кодиро­вания исключается совпадение кодов специаль­ных сигналов с кодами основной таблицы ASCII
Исполнение
Управляющий сигнал, посылаемый с клавиату­ры при нажатии специальной клавиши, которая часто обозначается символами Enter или Re­turn. Данный сигнал обычно используется для завершения набираемой цепочки символов (в частности, для завершения любой команды ДОС, набираемой на клавиатуре). Десятичный ASCII-код этого сигнала — 13
Стирание влево
Управляющий сигнал, посылаемый с клавиату­ры при нажатии специальной клавиши «Жир­ная стрелка влево» (английское название — Backspace). Используется для стирания сим­вола, находящегося слева от курсора. Десятич­ный ASCII-код этого сигнала — 8
Удаление симво­ла
Управляющий сигнал, посылаемый с клавиату­ры при нажатии специальной клавиши Del. Используется для удаления символа, находя­щегося над курсором. Посылаемый сигнал ко­дируется расширенным ASCII-кодом, информа­ционный байт которого содержит код 83
Вставка символа
Сигнал, посылаемый с клавиатуры при нажа­тии специальной клавиши Ins. Используется для переключения между двумя режимами ввода символов: «ввод с раздвижкой строки» и «ввод с перебивкой ранее набранных симво­лов». Английские названия этих режимов — Insert и Overtype. Посылаемый сигнал коди­руется расширенным ASCII-кодом, информа­ционный байт которого содержит код 82
Продолжение
Функциональные клавиши
Клавиши с обозначениями F1 ... F10; про- граммируются и используются для разных це­лей, в частности, для замены набора длинных цепочек символов, для изменения режимов ра­боты прикладных программ, для переключения между дисплейными окнами и др. При нажатии этих клавиш посылаемые сигналы кодируются расширенными ASCII-кодами с информацион­ными байтами в диапазоне от 59 до 68
Esc
Служебная клавиша на клавиатуре, которая является источником особого сигнала, отлич­ного от букв, цифр и знаков. Часто использует­ся в качестве сигнала «Отменить», или «Выйти из данной программы», или «Приготовиться к приему Esc-последовательности». Десятичный ASCII-код символа Esc — 27
Esc-последова- тельность
Последовательность символов, начинающаяся с символа Esc и квадратной скобки, за которы­ми обычно следуют параметры и код Esc-коман-ды. Такая последовательность обрабатывается в ПЭВМ драйвером ANSI. SYS и используется для управления дисплеем и переопределения клавиш на клавиатуре. Esc-последовательности используются также для установки режимов принтеров и других устройств, работающих совместно с ПЭВМ
Esc-команда
Esc-последовательность, предназначенная для задания определенной операции. Операция рас­познается по коду Esc-команды, завершающему последовательность
Список литературы
1. Борковский А. Б. Многооконное текстовое взаимодействие с персональной ЭВМ//Микропроцессорные средства и системы. — 1984. — № 4. — С. 47 — 50.
2. Брябрин В. М. Профессиональные персональные ЭВМ//При-кладная информатика. — М.: Финансы и статистика- 1984. — Вып. 2 (7). — С. 143 — 162.
3. Брябрин В. М. Интеллектуальный интерфейс на основе пер­сональной ЭВМ//Микропроцессорные средства и системы. — 1984, — № 3. — С. 38 — 44.
4. Б р я б р и н В. М. Профессиональная персональная ЭВМ — рабочее место будущего/У Кибернетика. Становление информатики. — М.: Наука, 1986. — Сер. Кибернетика.
б. ГнездиловаГ. Г. К созданию интегрированной операционной среды персонального компьютера. — Препринт/ВЦ АН СССР. — М., 1985.
6. Г р о м о в Г. Р. Национальные информационные ресурсы. — М.: Наука, 1985.
7. Громов Г. Р. Персональные вычисления — новый этап ин­формационной технологии//Микропроцессорные средства и систе­мы. — 1984. — № 1.
8. Е р ш о в А. П. Автоматизация работы служащих//Персональные ЭВМ в задачах информатики. — Препринт/ВЦ СО АН СССР. — Новосибирск; 1984. — С, 6 — 39.
9. Кочетков Г. Б. Автоматизация конторской работы. — М.: Наука, 1985.
10. Л а в р о в С, С. Кому и для чего нужна персональная машина// Микропроцессорные средства и системы. — 1984. — № 1.
11. Программное обеспечение персональных ЭВМ/Под ред. В. М, Бря­брина — Препринт/ВЦ АН СССР. — М., 1985.
12. ТИИЭР. Тематический выпуск «Персональные ЭВМ». — М.: Мир, 1984. — Т. 72, № 3.
«71
13. А 1 p e r s о n В., F 1 u e g e I m a n A., M a g i d L. The Fully Powered PC//PC World Books. — Simon & Schuster. 1985.
14. BYTE. The Small Systems Journal. — McGraw-Hill, 1983 — 1986. — Vol. 8 — 11.
15. В a r s t о w D. R., S h г о b e H. E., S a n d e w a 1 1 E. Inter­active Programming Environments. — McGraw-Hill, 1984.
16. Comer D. Operating System Design. The XINU Approach. — Prentice-Hall, 1984.
17. Disk Operating System Version 3.00. — IBM Personal Computer Software. — May, 1984.
18. Disk Operating System Technical Reference. — Microsoft Corp. 1984.
19. G i ) d e r T. H. The Integrated Software Book. — Addison-Wesley, 1985.
20. IBM Personal Computer XT Technical Reference. — IBM PC Hard­ware Reference Library. May, 1984.
21. Making MS-DOS & PC-DOS Work for You//The Human Connec­tion. — TAB Books, 1984.
22. M a r к о w s к у G. A Comprehensive Guide to the IBM PC. — Prentice-Hall, 1984.
23. N о r t о n P. Inside the IBM PC. Access to advanced features and programming. — Brady Communications Co., Prentice-Hall, 1983.
24. N о г t о n P. Programmer's Guide to the IBM PC. — Microsoft Press, 1985.
25. P a r к С. Interactive Microcomputer Graphics. — Addison-Wesley, S985.
26. PC Magazine. — Ziff-Davis Publishing, 1985 — 1986. — Vol. 3-4.
27. PC World. — CW Communications Inc., 1985 — 1986. — Vol. 3 — 4.
28. PlemmensP. Essential applications for the IBM PC and XT. — Simon & Schuster, 1984.
29. TurboPascal Version 3.0 Reference Manual. — Borland International, 1985.
30. V о I к s t о r f J. E. Graphics Programming on the IBM Personal Computer. — A Spectrum Book, Prentice-Hall, 1983.
81. Персональные компьютеры. Информатика для всех. — М.: Наука, 1987.