Главная » Каталог    
рефераты Разделы рефераты
рефераты
рефератыГлавная

рефератыБиология

рефератыБухгалтерский учет и аудит

рефератыВоенная кафедра

рефератыГеография

рефератыГеология

рефератыГрафология

рефератыДеньги и кредит

рефератыЕстествознание

рефератыЗоология

рефератыИнвестиции

рефератыИностранные языки

рефератыИскусство

рефератыИстория

рефератыКартография

рефератыКомпьютерные сети

рефератыКомпьютеры ЭВМ

рефератыКосметология

рефератыКультурология

рефератыЛитература

рефератыМаркетинг

рефератыМатематика

рефератыМашиностроение

рефератыМедицина

рефератыМенеджмент

рефератыМузыка

рефератыНаука и техника

рефератыПедагогика

рефератыПраво

рефератыПромышленность производство

рефератыРадиоэлектроника

рефератыРеклама

рефератыРефераты по геологии

рефератыМедицинские наукам

рефератыУправление

рефератыФизика

рефератыФилософия

рефератыФинансы

рефератыФотография

рефератыХимия

рефератыЭкономика

рефераты
рефераты Информация рефераты
рефераты
рефераты

Комплекс программ построения справочников по формальным языкам

Аннотация. Настоящий дипломный проект посвящен проблеме построения
справочников по формальным языкам и содержит три программы. Данная разработка применяется в области САПР вычислитель-
ных систем по подготовке их описаний на языке VHDL (ПОП
VHDL). При выполнении поставленной задачи был решен вопрос
формализации процесса построения справочника и составлен алго-
ритм его выполнения, в основу которого положен объектно-ориен-
тированный подход. Результатом дипломного проектирования является комплекс
программ построения справочников по формальным языкам. Дипломный проект содержит 7 разделов. В 1-м разделе содержится постановка задачи, описание мето-
да решения, структуры входных данных и формат выходных, приве-
дены алгоритмические решения поставленной задачи, а также ана-
лиз полученных характеристик эффективности программы и возмож-
ностей их улучшения. Второй раздел посвящен разработке технологии тестирования
программ. В нем содержится обоснование выбора технологии,
рассмотрены основные цели и задачи тестирования, подробно
рассмотрены все этапы технологического процесса и приведены
фрагменты реализации технологии тестирования на примере прог-
раммы построения справочников по формальным языкам. В экономико-организационной части дипломного проекта расс-
мотрены вопросы расчета сметной стоимости и определения трудо-
емкости программирования. Эта часть содержит технико-экономи-
ческое обоснование целесообразности разработки программы пост-
роения справочников по формальным языкам. В разделе "Охрана труда" освещаются возможные вредные и
опасные производственные факторы на участке ПЭВМ, приводится
выбор и расчет системы защиты оператора ПЭВМ от поражений
электрическим током, а также рассматривается пожарная профи-
лактика на участке ПЭВМ. В разделе "Приложения" содержится программная документа-
ция, подготовленная в процессе разработки программ. 2.1. Введение. Понятия процесса программирования качественно изменились.
Производство программ приобрело массовый характер, существенно
увеличились их объем и сложность. Разработка программных комп-
лексов потребовала значительных усилий больших коллективов
специалистов. Программы перестали быть только вычислительными
и начали выполнять важнейшие функции по управлению и обработке
информации в различных отраслях. Развитие и применение технологий проектирования комплексов
программ приводит к необходимости измерения и сравнения их эф-
фективности прежде всего по степени влияния на качество прог-
раммного продукта. Обеспечение высокого качества сложных комплексов программ
связано со значительными затратами труда разработчиков. Затра-
ты на создание программ быстро увеличиваются при возрастании
требований, причем для сложных комплексов весьма сложно дос-
тичь высокого качества функционирования, и после обеспечения
общей работоспособности могут понадобится годы труда для полу-
чения необходимых показателей качества. Поэтому уже сегодня
требуются методы и средства, которые позволили бы заметно по-
высить качество программ программ при относительно невысоких
затратах труда. 2.2. Обоснование выбора технологии тестирования. Как известно, при создании типичного программного проекта
около 50% общего времени и более 50% общей стоимости расходу-
ется на проверку (тестирование) разрабатываемой программы или
системы. Кроме того, доля стоимости тестирования в общей стои-
мости программ имеет тенденцию возрастать при увеличении слож-
ности комплексов программ и повышения требований к их качест-
ву. Учитывая это, при отработке технологии тестирования прог-
рамм следует четко выделять определенное (по возможности не
очень большое) число правил отладки, обеспечивающих высокое
качество программного продукта и снижающих затраты на его соз-
дание. Тестирование - это процесс исполнения программы с целью
обнаружения ошибок. Одним из способов изучения поставленного
вопроса является исследование стратегии тестирования, называе-
мой стратегией черного ящика, тестированием с управлением по
данным, или тестированием с управлением по входу-выходу. При
использовании этой стратегии программа рассматривается как
черный ящик. Тестовые данные используются только в соответст-
вии со спецификацией программы (т.е. без учета знаний о ее
внутренней структуре). При таком подходе обнаружение всех ошибок в программе яв-
ляется критерием исчерпывающего входного тестирования. Послед-
нее может быть достигнуто, если в качестве тестовых наборов
использовать все возможные наборы входных данных. Следователь-
но, мы приходим к выводу, что для исчерпывающего тестирования
программы требуется бесконечное число тестов, а значит постро-
ение исчерпывающего входного теста невозможно. Это подтвержда-
ется двумя аргументами: во-первых, нельзя создать тест, гаран-
тирующий отсутствие ошибок; во-вторых, разработка таких тес-
тов противоречит экономическим требованиям. Поскольку исчерпы-
вающее тестирование исключается, нашей целью должна стать мак-
симизация результативности вложения капиталовложений в тести-
рование (максимизация числа ошибок, обнаруживаемых одним тес-
том). Для этого необходимо рассматривать внутреннюю структуру
программы и делать некоторые разумные, но, конечно, не облада-
ющие полной гарантией достоверности предположения. Стратегия белого ящика, или стратегия тестирования, управ-
ляемого логикой программы, позволяет исследовать внутреннюю
структуру программы. В этом случае тестирующий получает тесто-
вые данные путем анализа логики программы. Сравним способ построения тестов при данной стратегии с
исчерпывающим входным тестированием стратегии черного ящика.
Неверно предположение, что достаточно построить такой набор
тестов, в котором каждый оператор исполняется хотя бы один
раз. Исчерпывающему входному тестированию может быть поставле-
но в соответствие исчерпывающее тестирование маршрутов. Подра-
зумевается, что программа проверена полностью, если с помощью
тестов удается осуществить выполнение этой программы по всем
возможным маршрутам ее потока (графа) передач управления. Последнее утверждение имеет два слабых пункта: во-первых,
число не повторяющих друг друга маршрутов - астрономическое;
во-вторых, даже если каждый маршрут может быть проверен, сама
программа может содержать ошибки (например, некоторые маршруты
пропущены). В результате всех изложенных выше замечаний можно отме-
тить, что ни исчерпывающее входное тестирование ни исчерпываю-
щее тестирование маршрутов не могут стать полезными стратегия-
ми, потому что оба они не реализуемы. Поэтому реальным путем,
который позволит создать хорошую, но, конечно не абсолютную
стратегию, является сочетание тестирования программы несколь-
кими методами. 2.3. Разработка технологического процесса тестирования. Если отказаться от тестирования всех путей, то можно пока-
зать, что критерием покрытия является выполнение каждого опе-
ратора программы по крайней мере один раз. В качестве примера тестирования возьмем модуль Param.
Предназначение модуля - разбирать командную строку с парамет-
рами на отдельные параметры. Объектом тестирования изберем правило ParamStr объекта
Parameters. function Parameters.ParamStr(ParamNum : byte) : string; begin if ParamNum = 0 then if Delux then ParamStr:='' else if Lo(DosVersion) >= 3 then ParamStr:=system.ParamStr(0) else ParamStr:='' else ParamStr:=OptionStr(ParamNum); end; Схема алгоритма этой функции: ЪДДДДДДДДДДДДДДДДДДДї і Начало і АДДДДДДДДДВДДДДДДДДДЩ і / \ / \ нет /ParamNum \ ДДДДДДДДДДДДДДДДї \ = 0 / і \ / ЪДДДДДДДДДБДДДДДДДДДї \ /да і ParamStr = і і іOptionStr(ParamNum)і / \ АДДДДДДДДДВДДДДДДДДДЩ да / \ і Ъ= 3 / і і і \ / і і і \ /да і і і ЪДДДДДДДДДДБДДДДДДДДДї ЪДДДДДДДДБДДДДДДДДї і і і ParamStr = System.і і ParamStr = '' і і і і ParamStr(0) і АДДДДДДДДВДДДДДДДДЩ і і АДДДДДДДДДДВДДДДДДДДДЩ і і АДДДДДДДДДДДДДДДД>Е 3. При тестировании по данно-
му критерию эта ошибка не будет обнаружена. Более сильный критерий покрытия логики программы известен
как покрытие решений, или покрытие переходов. Согласно данно-
му критерию должно быть записано достаточное число тестов, та-
кое, что каждое решение на этих тестах примет значение истина
и ложь по крайней мере один раз. Можно показать, что покрытие решений обычно удовлетворяет
критерию покрытия операторов. Поскольку каждый оператор лежит
на некотором пути, исходящем из оператора перехода, либо из
точки входа программы, при выполнении каждого направления пе-
рехода каждый оператор должен быть выполнен. Следовательно,
тесты приведенные выше подходят и для этого критерия. Однако существуют исключения, например, оператор case. В
этом операторе возможны не двузначные решения. CASE условие OF m1 : оператор1; m2 : оператор2; m3 : оператор3 ELSE m4 : оператор4 END Критерием для таких случаев является выполнение каждого
возможного результата всех решений по крайней мере один раз. Лучшим критерием по сравнению с предыдущим является покры-
тие условий. В этом случае записывают число тестов, достаточ-
ное для того, чтобы все возможные результаты каждого условия
в решении выполнялись по крайней мере один раз. Рассмотрим пример на функции OptionStr. function Parameters.OptionStr(ParamNum : byte) : string; var I, Len : Byte; begin Len := 0; I := OptPosition(ParamNum); if I 0 then while (I В 6. Литература. 1. Отчет по теме 1012ГБ за март-июнь 1991г. Структура под-
системы анализа САПР микропроцессорных систем. Требование к
формальному языку описания МПС. 2.Перминов О.Н. Язык программирования Паскаль. М: Радио и
Связь, 1989-128С. 3.Грис Д. Конструирование компиляторов для цифровых вычис-
лительных машин. М: Мир, 1975 - 544С. 4. Руководство по объекно-ориентированному программирова-
нию на языке Turbo Pascal 5.5. 5. Г.Майерс. Искусство тестирования программ. М: Финансы и
статистика, 1982г. 6. В.В.Липаев, А.И.Потапов. Оценка затрат на разработку
программных средств. М: Финансы и статистика, 1988. 7. Методические указания по экономическому обоснованию
технических решений в дипломных проектах. Москва, МИЭМ, 1983. 8. "Временные санитарные нормы и правила для работников
ВЦ", инструкции управления ТБ и промышленной санитарии N
4559-88, утвержденные 02.03.88. 9. ГОСТ 12.2.032-84 - Рабочее место при выполнении работ
сидя. Общие эргономические требования. 10. Т.Алимова, Л.Лямин К вопросу о профессиональных забо-
леваниях пользователей ПК. Компьютер пресс, 9'92, стр.27. 11. Охрана труда в машиностроении : Учебник для машиност-
роительных вузов / Под ред. Е.Я.Юдина, С.В.Белова - 2-е изд.,
перераб. и доп.- М.:Машиностроение, 1983. 12. Денисенко Г.Ф. "Охрана труда". Содержание.
1. Специальная часть........................................3
1.1. Введение...............................................4
1.2. Постановка задачи......................................8
1.2.1. Дано.................................................8
1.2.2. Требуется............................................8
1.2.3. Условия..............................................8
1.2.4. Внешняя спецификация................................8
1.2.4.1. Входные данные.....................................8
1.2.4.1.1. Структура информации.............................9
1.2.4.1.2. Представление синтаксиса ПОЯ на языке описания
грамматик (ЯОГ).............................................9
1.2.4.1.3. Дополнительная справочная информация.............13
1.2.4.1.4. Неформальное описание разделов...................14
1.2.4.1.5. Тексты примеров..................................15
1.2.4.1.6. Описание проблемных подмножеств.................15
1.2.4.1.7. Описание дополнительных разделов.................16
1.2.4.1.8. Представление синтаксических диаграмм............17
1.2.4.2. Выходные данные....................................17
1.2.4.2.1. Директивы........................................17
1.2.4.2.2. Управляющие символы.............................20
1.3. Структура комплекса...................................21
1.4. Общее описание алгоритмов и внутренних данных.........22
1.4.1. Разработка структуры данных..........................22
1.4.2. Основной алгоритм программы..........................26
1.4.3. Структура программы..................................29
1.4.4. Состав программы.....................................31
1.5. Характеристики программы и возможности их
улучшения...................................................32
2. Конструкторско-технологическая часть.....................34
2.1. Введение...............................................35
2.2. Обоснование выбора технологии тестирования.............35
2.3. Разработка технологического процесса тестирования......37
3. Экономико-организационная часть..........................47
3.1 Технико-экономическое обоснование выбора темы...........48
3.2 Расчет сметной стоимости................................48
3.3 Определение трудоемкости программирования задачи для
ЭВМ.........................................................50
3.4 Оценка экономической эффективности......................52
4. Охрана труда.............................................54
4.1. Оценка возможных опасных и вредных факторов на
участке ПЭВМ................................................55
4.2. Выбор и расчет системы защиты оператора ПЭВМ от пора-
жений электрическим током...................................58
4.3. Пожарная профилактика на участке ПЭВМ..................60
5. Заключение...............................................63
6. Литература...............................................64
7. Приложения...............................................65
7.1. Руководство оператора..................................66
7.2. Руководство системного программиста....................75
7.3. Описание применения....................................99
7.4. Программа и методика испытаний.........................102
7.5. Описание программы.....................................108
7.6. Листинги программ......................................133
7.6.1. TextMake.............................................
7.6.2. MekeRep..............................................
7.6.3. CheckNet............................................. 4.1. Оценка возможных опасных и вредных факторов на участ-
ке ПЭВМ. В процессе трудовой деятельности при нарушении безопасных
условий труда на человека могут воздействовать опасные и вред-
ные производственные факторы. Случай воздействия на работающего опасного производствен-
ного фактора при выполнении им задания руководителя работ или
трудовых обязанностей называется несчастным случаем. Воздействие на человека вредного фактора может привести к
профессиональному заболеванию. Результатом несчастного случая
является травма. К вредным производственным факторам относятся: а) неоптимальный состав и состояние воздуха: - повышенная запыленность воздуха; - повышенная или пониженная влажность; - повышенная подвижность; б) неоптимальное освещение: - недостаток освещенности; - неравномерность освещения; в) повышенный уровень шума. Один из факторов воздействия внешней среды - микроклимати-
ческие условия. Атмосферный воздух в своем составе содержит (в процентах
по объему): - азот - 78,08; - кислород - 20,95; - аргон,неон и другие инертные газы - 0,93; - углекислый газ - 0,03; - прочие газы - 0,01. Воздух такого состава наиболее благоприятен для дыхания.
Пары и газы образуют с воздухом смеси, а твердые и жидкие
частицы вещества - дисперсные системы: аэрозоли, которые де-
лятся на пыль (размер твердых частиц более 1 мкм), дым (менее
1 мкм) и туман (размер жидких частиц менее 10 мкм). Пыль быва-
ет крупно- (размер частиц более 150 мкм), средне- (50-100 мкм)
и мелкозернистой (менее 10 мкм). Источником пыли в машинном
зале ВЦ являются трущиеся механические части внешних устройств
ЭВМ, бумага для АЦПУ и недостаточное кондиционирование возду-
ха. Вредные вещества, хорошо растворяясь в биологических сре-
дах, способны вступать с ними во взаимодействия, вызывая нару-
шения нормальной жизнедеятельности. В результате их действия у
человека возникает болезненное состояние - отравление,
опасность которого зависит от продолжительности воздействия,
концентрации и вида вещества. Человек постоянно находится в процессе теплового взаимо-
действия с окружающей средой. При благоприятных условиях труда
характеристика метеорологических показателей в производствен-
ных помещениях и на рабочем месте следующая: температура от
20"С до 23"С при преимущественно умственной или легкой мышеч-
ной работе, допустимая температура - от 19"С до 21"С. При воз-
действии высокой температуры, интенсивного теплового излучения
возможен перегрев организма, который характеризуется повышени-
ем температуры тела, обильным потовыделением, учащением пульса
и повышением частоты дыхания, резкой слабостью, головокружени-
ем, а в тяжелых случаях - появлением судорог или теплового
удара. Источником высокой температуры в машинном зале ВЦ явля-
ются внешние устройства ЭВМ: АЦПУ, дисплеи, а также плохая ра-
бота кондиционеров. Влажность воздуха оказывает большое влия-
ние на терморегуляцию организма. Оптимальная величина относи-
тельной влажности составляет 40-60%. Движение воздуха в поме-
щениях является важным фактором, влияющим на тепловое само-
чувствие человека. Скорость движения воздуха не должна превы-
шать 0,1 м/с. Правильно спроектированное и выполненное освещение на
предприятиях машиностроительной промышленности обеспечивает
возможность нормальной производственной деятельности. При
освещении производственных помещений используют естественное и
искусственное освещение. Недостаток естественного света пре-
дусматривает применение системы смешанного освещения. Освещен-
ность на рабочем месте должна соответствовать характеру зри-
тельной работы, который определяется следующими тремя парамет-
рами: - объект различения - наименьший размер рассматриваемого
предмета; - фон - поверхность, прилегающая непосредственно к объекту
различения; - контраст объекта с фоном - характеризуется соотношением
яркостей рассматриваемого объекта. При работе за дисплеем освещенность определяется минималь-
ным объектом различения - шириной линии рукописного или печат-
ного текста, который читает программист с листа. Для данного
вида работы нормируемая освещенность составляет 400 люкс. Недостаточное освещение приводит к напряжению зрения,
преждевременной усталости и ослабляет внимание. Чрезмерно яр-
кое освещение вызывает ослепление, раздражение и резь в гла-
зах. Неправильное направление света на рабочее место может
создать резкие тени, блики и дезориентировать работающего. Это
может привести к профессиональным заболеваниям. Сохранность зрения человека, состояние его центральной
нервной системы и безопасность на производстве в значительной
мере зависят от условий освещения. В помещениях ВЦ применяется, как правило, боковое естест-
венное освещение с К е.о. = 1% и E = 150 лк. Для общего освещения помещения ВЦ используются люми-
несцентные лампы. Их достоинство: - высокая световая отдача (до 75 лм/вт и более); - продолжительный срок службы (до 10000 часов); - малая яркость светящейся поверхности; - спектральный состав излучаемого света. Одним из недостатков таких ламп является высокая пульсация
светового потока, вызывающая утомление зрения. По этому коэф-
фициент пульсации освещенности регламентирован в пределах 10 -
20 % в зависимости от разряда зрительной работы. Одним из наиболее распространенных факторов внешней среды,
неблагоприятно воздействующих на организм человека, является
шум. Любой источник шума характеризуется прежде всего звуковой
мощностью. Мощность источника Р - это общее количество звуко-
вой энергии, излучаемой источником шума в окружающее прост-
ранство за единицу времени. Шум вредно действует на организм и
снижает производительность труда. Уровень звукового давления
по отношению к порогу слышимости L=120-130 Дб соответствует
порогу болевого ощущения. Звуки, превышающие по своему уровню
этот порог, могут вызывать боли и повреждения в слуховом аппа-
рате. Шум создает значительные нагрузки на нервную систему че-
ловека, оказывает на него психологическое воздействие. Источником шума в машинном зале ВЦ являются механические
устройства ЭВМ. Человек, работая при шуме, привыкает к нему,
но продолжительное действие сильного шума вызывает общее утом-
ление, может привести к ухудшению слуха, а иногда и к глухоте,
нарушается процесс пищеварения, происходит изменение объема
внутренних органов. Эти вредные последствия шума тем больше,
чем сильнее шум и продолжительнее его действие. Таким образом,
шум на рабочем месте не должен превышать допустимых уровней,
значения которых приведены в ГОСТ 12.1.003-83. Допустимые уровни шума.
ЙННННННННННННННННННННННСННННННННННННННННННННННННННННННННННННННН»
Уровни звукового давления в дБ є
Рабочее место і в октавных полосах со среднегеометри- є
ческими частотами, Гц є
ГДДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДД¶
63 і 125і 250і 500і1000і2000і4000і8000є
ЗДДДДДДДДДДДДДДДДДДДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДД¶
Помещение для размещеі 71 і 61 і 54 і 49 і 45 і 42 і 40 і 38 є
ния шумных агрегатов і і і і і і і і є
ЭВМ і і і і і і і і є
ИННННННННННННННННННННННПННННПННННПННННПННННПННННПННННПННННПННННј К опасным производственным факторам относятся: повышенное
напряжение в электрической сети и повышенная пожароопасность. 4.2. Выбор и расчет системы защиты оператора ПЭВМ от пора-
жений электрическим током. Проходя через организм, электрический ток оказывает терми-
ческое, электролитическое и биологическое действие. В резуль-
тате могут возникнуть различные нарушения и даже полное прек-
ращение деятельности органов дыхания и кровообращения. Величи-
на тока, протекающего через тело человека, является главным
фактором, от которого зависит исход поражения: чем больше ток,
тем опаснее его действие. Пороговый ощутимый ток - 0,6-1,5 мА
(50 Гц). Пороговый неотпускающий ток - 10-15 мА (50 Гц) вызы-
вает сильные и весьма болезненные судороги мышц грудной клет-
ки, что приводит к затруднению или даже прекращению дыхания.
При 100 мА ток оказывает непосредственное влияние также и на
мышцу сердца, что в конечном результате приводит к смерти. На-
иболее опасным является переменный ток с частотой 20-100 Гц. Исход воздействия тока зависит от ряда факторов, в том
числе от значения и длительности протекания через тело челове-
ка тока, рода и частоты тока и индивидуальных свойств челове-
ка. Электрическое сопротивление тела человека и приложенное к
нему напряжение также влияет на исход поражения, но лишь
постольку, поскольку они определяют значение тока. Предельно
допустимые уровни напряжений прикосновений и тока даются в
ГОСТ 12.1.038-82.
ЙННННННСННННННННННСНННННННННННННННСННННННННННННННННННННННННННННННН»
сила і ощутимый і допускающийся і є
тока і ток і ток с длит. і Фибриляционный ток є
(мА) і і не более 30с і є
ЗДДДДДДЕДДДДДДДДДДЕДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД¶
const і 1 і 15 і є
ЗДДДДДДЕДДДДДДДДДДЕДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД¶

Длительность протекания є
ГДДДВДДДДДВДДДДДВДДДДДВДДДДДДДДД¶
var і 0,3 і 6 і 1 і 0,5 і 0,2 і 0,1 і0,08-0,01є
(50Гц) і ГДДДЕДДДДДЕДДДДДЕДДДДДЕДДДДДДДДД¶
50 і 100 і 250 і 500 і 650 є
ИННННННПННННННННННПНННННННННННННННПНННПНННННПНННННПНННННПНННННННННј Электрооборудование ВЦ относится к установкам напряжением
до 1000 В. В помещении машинного зала основными техническими
средствами, обеспечивающими безопасность работ, являются: - заземление; - зануление; - отключение. Защтным заземлением называется намеренное соединение нето-
коведущих частей, которые могут случайно оказаться под напря-
жением, с заземляющим устройством. Заземлению подлежат корпуса ЭВМ, трансформаторов, металли-
ческие оболочки кабелей и проводов, металлические ограждения. Для электроустановок с напряжением до 1000 В сопротивление
заземляющего устройства должно быть не менее 10 Ом. Занулением называется намеренное соединение нетоковедущих
частей, которые случайно могут оказаться под напряжением, с
многократно заземленным нулевым проводом. Защитный эффект зануления заключается в уменьшении дли-
тельности замыкания на корпус, а следовательно, в сокращении
времени воздействия электрического тока на человека. Защитное отключение - система защиты, автоматически отклю-
чающая электроустановку при возникновении опасности поражения
электрическим током. Для участка персональных компьютеров наиболее приемлемым
вариантом является защитное заземление, т.к. корпуса компьюте-
ров и периферии обычно выполнены не из токопроводящих материа-
лов, а также имеются специальные клеммы для подключения зазем-
ления. 4.3. Пожарная профилактика на участке ПЭВМ. Пожар - это неконтролируемое горение вне отведенного для
этого очага. Пожары представляют большую опасность для работа-
ющих и могут причинить огромный материальный ущерб. Для того, чтобы оценить пожарную опасность, существует
следующая классификация: 1. Строительных материалов и конструкций по возгораемости: - несгораемые; - трудносгораемые; - сгораемые. 2. Конструкций по огнестойкости: предел огнестойкости - время в часах от начала испытания до возникновения трещин. 3. Помещений ПУЭ ("Правила Устройства Электроустановок"): - взрывоопасные; - пожароопасные. Критерий оценки: - содержание сгораемых материалов; - тепловой режим обработки. 4. Производств по пожарной опасности: - взрывоопасные; - взрывопожароопасные; - пожароопасные; - непожароопасные; Участок ПЭВМ по пожарной опасности относится к категории
пожароопасных и характеризуется тем, что в помещении находятся
несгораемые вещества и материалы в холодном состоянии. Пожар на производстве может возникнуть вследствие причин
неэлектрического и электрического характера. К причинам неэлектрического характера относятся: - неисправность производственного оборудования и нарушение
технологического процесса; - халатное и неосторожное обращение с огнем (курение,
оставление без присмотра нагревательных приборов); - неправильное устройство и неисправность вентиляционной
системы; - самовоспламенение или самовозгорание веществ. К причинам электрического характера относятся: - короткое замыкание; - перегрузка проводов; - большое переходное сопротивление; - искрение; - статическое электричество. Пожарная безопасность может быть обеспечена мерами пожар-
ной профилактики и активной пожарной защитой. Понятие о пожар-
ной профилактике включает комплекс мероприятий, необходимых
для предупреждения возникновения пожара или уменьшения его
последствий. Под активной пожарной защитой понимаются меры,
обеспечивающие успешную борьбу с возникающими пожарами или
взрывоопасными ситуациями. Профилактические методы борьбы с пожарами на участке ПЭВМ
предусматривают: 1. Организационные: правильное содержание
помещений, противопожарный инструктаж служащих, издание прика-
зов по вопросам усиления пожарной безопасности и т.д. 2. Технические: соблюдение противопожарных правил, норм
при проектировании помещений, при устройстве электропроводов и
оборудования, отопления,вентиляции, освещения. 3. Режимные: запрещение курения в неустановленных местах,
производство пожароопасных работ в помещении машинного зала ВЦ
и т.д. 4. Эксплуатационные: своевременные профилактические осмот-
ры, ремонты оборудования. При проектировании и строительстве зданий и помещений (в
частности, машинного зала) также должны быть соблюдены проти-
вопожарные меры: - защита деревянных конструкций достигается пропиткой ог-
незащитными химическими препаратами (например, антипирена-
ми),покрытием огнезащитными красками; - для ограничения распространения пожара устраивают проти-
вопожарные преграды: стены, перегородки, перекрытия, двери,
ворота,люки, окна. Все это должно быть выполнено из несгорае-
мых материалов; Необходимо предусмотреть безопасную эвакуацию людей на
случай возникновения пожара. При пожаре люди должны покинуть
помещение в течение минимального времени. В соответствии с
СНиП 11-2-80 число эвакуационных выходов из зданий, помещений
должно составлять не менее двух. Активные методы борьбы с пожарами на участке ПЭВМ: - изоляция очага горения от воздуха с помощью твердых ве-
ществ (например, песок, покрывала и т.п.); - охлаждение очага горения ниже определенных температур.
Достигается с помощью воды, но у нее есть ограничения на туше-
ние легковоспламеняющихся веществ, электроустановок и др., по-
этому чаще применяют углекислый газ, который при соединении с
атмосферой снижает температуру до -78"С; - интенсивное торможение скорости химической реакции в
пламени. В основном для этой цели применяют порошки; - механический срыв пламени в результате воздействия на
него сильной струи газа или воды. Для тушения пожаров в машинном зале ВЦ необходимо приме-
нять углекислотные и порошковые огнетушители, которые обладают
высокой скоростью тушения, большим временем действия, возмож-
ностью тушения электроустановок, высокой эффективностью борьбы
с огнем. Исходя из норм пожарной безопасности (см. "Справочник по
ТБ" П.А.Долина), для машинного зала ВЦ площадью до 100 мэ (для
нашего случая около 40 мэ) требуются следующие первичные
средства пожаротушения: - один углекислотный огнетушитель типа ОУ-5 или ОУ-8, с
помощью которого можно тушить загорания различных материалов и
установок напряжением до 1000 В; - один химпенный (ОХП-10) или воздушно-пенный огнетушитель
(ОВП-5 или ОВП-10), с помощью которого можно тушить твердые
материалы и горючие жидкости (кроме установок под напряжени-
ем); - войлок, кошму или асбест (1Х1; 2Х1,5; 2X2 м). Вместо углекислотного допускается применение порошкового
огнетушителя (например, типа ОК-10). Помещение машинного зала должно быть оборудовано пожарными
извещателями, которые позволяют оповестить дежурный персонал о
пожаре. Пожарные извещатели преобразуют неэлектрические физические
величины (излучение тепловой или световой энергии, движение
частиц дыма) в электрические, которые в виде сигнала опреде-
ленной формы направляются по проводам на приемную станцию. В качестве пожарных извещателей в машинном зале устанавли-
ваются дымовые фотоэлектрические извещатели типа ИДФ-1 или
ДИП-1. Исходя из высоты потолка (4 м) и площади помещения (30-40
мэ) по нормам достаточно одного извещателя на машинный зал.
Эти устройства характеризуются высокой скоростью и надежностью
срабатывания и работают на принципе рассеяния частицами дыма
теплового излучения. Преимуществом извещателей является их безинерционность,
большая контролируемая площадь. Недостатком является возмож-
ность ложного срабатывания и высокая стоимость. 7. П р и л о ж е н и я 1.1. Введение. По мере развития средств вычислительной техники и внедре-
ния их в повседневную практику все большее значение приобрета-
ют справочные системы. Языки проектирования и программирования
все более усложняются, а их число увеличивается. Соответствен-
но к этим языкам подстраиваются справочно-обучающие програм-
мы, которые позволяют оперативно выдавать требуемую помощь по
языку, позволяют качественно и, главное, быстро обучать прог-
раммистов. Изобилие языков проектирования и программирования и
привело к идее унификации справочников. Одним из мировых ли-
деров, позволяющих встраивать мощные справочные системы в свои
программы, являются фирмы Borland International, а также Tur-
boPower Software. Вместе с тем в Российском Научно Исследовательском Инсти-
туте Информационных систем и на кафедре "Специализированные
Вычислительные Комплексы" МИЭМ ведутся разработки справочно
обучающих систем по языкам VHDL и Паскаль. Эти разрабатываемые
системы потребовали унифицированной программы построения спра-
вочников по формальным языкам программирования, проектирова-
ния и управления. Коротко рассмотрим место комплекса программ
построения справочников по формальным языкам в комплексе прог-
раммных средств поддержки формальных языков на примере языка
VHDL. Язык VHDL в настоящее время используется в качестве миро-
вого стандарта описания вычислительных систем (ВС) любого
уровня сложности (микросхема, плата, блок, устройство, ЭВМ,
комплекс). Разработка средств подготовки описаний на языке
VHDL позволит интегрировать процесс проектирования ВС, приоб-
щиться к богатству моделей ВС, наработанных во всем мире. Подсистема САПР вычислительных систем по подготовке их
описаний на языке VHDL (ПОП VHDL) предназначена для ввода и
анализа текстов на языке VHDL под управлением системы и с ее
помощью, получения справочной информации по языку VHDL, обуче-
ния синтаксису языка VHDL. ПОП VHDL может использоваться как на этапе освоения языка
VHDL, так и в качестве помощника при подготовке текстов на
языке VHDL. Пользователь системы при этом освобождается от не-
обходимости запоминания подробностей синтаксиса языка. При использовании ПОП VHDL для целей обучения и подготов-
ки текста пользователь должен иметь представление о принципах
построения описания ВС на языке VHDL. ПОП VHDL может также использоваться для проверки знаний о
синтаксисе языка VHDL с возможностью обучения по отдельным
разделам. Структура комплекса программных средств поддержки языка VHDL.
ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
ЪДДДДДДДДДДДДДДДї ЪДДДДДДДДДДДДДДї і ЪДДДДДДДДДДї
Текстовый Гґ Интегриро- і і і і
редактор ЖНННН>µ ванная і і і Диспетчері
АДДДДДДД^ДДДДДДДЩ ісреда подго- Гґ іµСинтаксически- і ^ ^ ^ ^ і і
управляемый ЖНННННННННј і і і і і
ЪДД>ґввод текста ГНµИнтерфейс і і
V і є і Программа і є і є іс лексическ.і і
ЪДДДДБДДДДДї і є і обработки і є і є іпроцедурами і і
ЖНШН№ ісинтаксичесі є і є АДДДД^ДДДДДДДЩ і
ЪДДДґСинтаксис і і є ЙН>µ ких і є і є `АДДДДДДДДї і
ЖНШНєН» є ідиаграмм і є і є ЪДДДДДДДДДДДДї і і
АДДДДВДДДДДЩ і є є є АДДДДДТДДДДДЩ є і є іСемантичес- і і і
^ і є є є V ИНШНєН>µкие проце-рыі і і
ХННННННКНННННё і є АДДДДДД^ДДДДДЩ і і
ЪДДДДБДДДДДї і є є є іСинтаксичес-і і є ЪДДДДДДБДДДДДї і і
Формальнаяі і є є є ікие диаграм-і і є іСинтакси-кийГДЩ і
семантика ЖНШНј є є імы для ЖН» і МН>µ автомат Гµ СУ-ввод і і і
ная ЖНШНННКНєНН>µПрограмма і ИНШНН>Нµ і і і
инфор-ция і і є іпостроенияі і ЪДДБДДДДДДВДДДДДЩ і і
АДДДДДДДДДДЩ і МНН>µсправочни-і і і ЪДДДДДД^ДДДДДї і і
ков і і і іИнтегри-ная ГДЩ і
АДДДДДДДДДДДДДДДДДДЩ є АДДДДДТДДДДЩ і і і среда і і є є і і АДДДДДДВДДДДДЩ і
ХННННННННННННННННННё є V і і V і
Синтаксические і є ХНННННКННННё і і ЪДДДДДДБДДДДДї і
диаграммы ЖНННННј і Help- і і АД>ґHelp-интер- і і
АДДДДДДДДДДДДДДДДДДЩ і файл ЖНННШНН>Нµпретатор і і АДДДДДДДДДДЩ і АДДДДДДДДДДДДЩ і АДДДДДДДДДДДДДДДДДДДДДЩ Рис. 1.2. 1.2. Постановка задачи. 1.2.1. Дано: множество текстовых файлов, содержащих следующую информа-
цию о формальном языке: - синтаксис проблемно-ориентированного языка; - справочная информация; - проблемные подмножества; - лексика проблемно-ориентированного языка; - семантика проблемно-ориентированного языка; - основные понятия; - моделирование; - предопределенные объекты; - комментарии. 1.2.2. Требуется: - разработать и написать программу, конвертирующую вход-
ные данные в файл, представляющий собой данные для специально-
го компилятора MakeHelp фирмы TurboPower Software. (Формат
файла см. ниже); - разработать и написать программу, конвертирующую вход-
ные данные в текстовый файл документации (отчета) о входном
языке в виде, пригодном для распечатки; - разработать и написать программу, предназначенную для
проверки имен нетерминалов. 1.2.3. Условия: - входная информация может быть представлена любым коли-
чеством текстовых файлов; - наличие синтаксических диаграмм Вирта является не обяза-
тельным. 1.2.4. Внешняя спецификация. 1.2.4.1. Входные данные. 1.2.4.1.1. Структура информации. Входная информация представлена на языке описания грамма-
тик (ЯОГ), которые являются входными данными для ряда прог-
раммных систем. Для построения справочников должна быть задана следующая
информация о проблемно-ориентированном языке (ПОЯ): - синтаксис ПОЯ с учетом ограничений, накладываемых мето-
дом синтаксического анализа; синтаксис задается в модифициро-
ванной расширенной форме Бэкуса-Наура (МРБНФ) и в форме син-
таксических диаграмм Вирта; перевод; - справочная информация, включающая неформальное описание
синтаксиса и семантики и примеры текста на ПОЯ для различных
синтаксических конструкций, а также дополнительную справочную
информацию; - информация для форматирования набранного текста; Следующая информация должна игнорироваться: - лексика ПОЯ - процедуры лексического анализа; - семантика ПОЯ; - комментарии. Информация должна быть представлена в следующих файлах: - файл грамматики (расширение "по умолчанию" - "grm"),
представляющий грамматику ПОЯ в МРБНФ, нагруженную на справоч-
ную информацию и семантические процедуры. В головном файле
грамматики могут подключаться с помощью конструкции $include
другие файлы; - файл синтаксических диаграмм (расширение по "умолчанию"
- "grd"). 1.2.4.1.2. Представление синтаксиса ПОЯ на языке описания
грамматик (ЯОГ). Текст описания на ЯОГ содержит некоторую совокупность пра-
вил, описывающих некоторое понятие (нетерминал), ограниченных
символом "точка с запятой" Текст записывается в свободном формате. Пробелы, не заклю-
ченные в кавычки, апострофы и угловые скобки игнорируются.
Комментарии заключаются между парами символов /* и */. Имя нетерминала - произвольная последовательность букв,
цифр, символов тире, подчеркивания, апостроф, пробел. Имя нетерминала заключается в угловые скобки. Пример обозначения нетерминалов: Длина имени нетерминала не должна превышать 80 символов.
Терминальные цепочки языка должны быть заключены в кавычки
или апострофы. Пример цепочек терминальных символов: ЪДДДДДДДДДДДДДВДДДДДДДДДї іОБОЗНАЧЕНИЕ і ЦЕПОЧКА і ГДДДДДДДДДДДДДЕДДДДДДДДДґ і 'IF' і IF і і "IF" і IF і і ""; = ! ; = ( )... ; = () ... ; = ! ! ! "_" ! "-" ! "'" ! " " ; = ; Первый нетерминал в тексте на ЯОГ считается начальным сим-
волом грамматики. 1.2.4.1.3. Дополнительная справочная информация. В файле описания грамматик, помимо синтаксиса ПОЯ в
МРБНФ, представлена следующая дополнительная справочная инфор-
мация, используемая при формировании справочника: - неформальное описание (в частности синтаксиса и семанти-
ки) разделов, соответствующих синтаксическим конструкциям; - тексты примеров по отдельным разделам; - описание конструкций лексического уровня; - описание проблемных подмножеств; - описание дополнительных разделов. Приведем пример представления информации для конструкции , а затем сформулируем правила. = /H В операторе вызова процедуры после \Bимени процедуры\b
() в круглых скобках указан . Процедура должна быть предварительно описана в данном
программном модуле. Допустимы \Iстандартные процедуры\i : Read - читать Write - писать /X MYPROC (A,5,7) (* обращение к процедуре MYPROC с параметрами A,5,7 *) ------------------------------------------------------ READ (A,B) (* обращение к стандартной процедуре READ с параметрами А,В - читать значения переменных *) Х/ Н/ '(' ')'; 1.2.4.1.4. Неформальное описание разделов. Текст неформального описания раздела ограничивается симво-
лами /H в начале текста и H/ в конце. Текст располагается на
следующей строке после имени нетерминала и знака равенства пе-
ред описанием нетерминала в МРБНФ. Рекомендуется строки текста начинать с символа пробела. В
этом случае осуществляется перевод строки при выводе текста.
Допустимы следующие директивы управления форматом вывода: !PAGE - перейти к следующему кадру !LINE - перейти к следующей строке Директивы должны располагаться в начале строки. В тексте могут быть указаны имена нетерминалов, заключен-
ные в угловые скобки (в примере - , ). Таким образом можно организовать пе-
реход к соответствующим разделам справочника. Для выделения фрагментов текста, на которые следует обра-
тить внимание, другим цветом следует использовать, в зависи-
мости от цвета, конструкции: \Bтекст\b \Iтекст\i . В конце справочного раздела может содержаться раздел при-
меров. 1.2.4.1.5. Тексты примеров. Тексты примеров ограничены символами /X и X/. Также, как
и при неформальном описании раздела, рекомендуется строки на-
чинать с пробела; допускается использовать директивы !PAGE и
!LINE. Конструкции выделения текста не допускаются. 1.2.4.1.6. Описание проблемных подмножеств. Для ПОЯ может быть определено несколько проблемных подмно-
жеств. Например, для языка VHDL можно выделить подмножества,
связанные со способом описания вычислительной системы (струк-
турное, поведенческое, потоковое описание) и с уровнем слож-
ности описания (уровни 0,1,2). Таким образом можно определить
девять подмножеств языка VHDL. Формат описания грамматики для подмножества тот же, что и
для основного множества. При этом все синтаксические конструк-
ции подмножества заключаются в операторные скобки /U ........ U/ В определение подмножества включаются только синтаксичес-
кие конструкции, описание которых отличается от полного ПОЯ.
Первым указывается головной нетерминал подмножества. Пример: /U = /H .... H/ "arhitecture"...; = ....... U/ 1.2.4.1.7. Описание дополнительных разделов. К дополнительным разделам относятся разделы, несвязанные
с конкретными синтаксическими конструкциями. В частности, для
языка VHDL можно выделить разделы: - основные понятия; - семантика; - моделирование; - предопределенные объекты. В свою очередь эти разделы могут включать список разделов
нижнего уровня, например, для предопределенных объектов: - предопределенные типы; - предопределенные атрибуты и пр. Для задания дополнительных разделов используют следующий
синтаксис: /A=...определения...; список определений входящих разделов A/ Определение раздела может отсутствовать. Пример: /А= /H объекты,предопределенные в языке и в стандартных пакетах H/; =; =; ..... A/ /A = /H....H/; ... A/ 1.2.4.1.8. Представление синтаксических диаграмм. Синтаксические диаграммы размещаются в текстовом файле,
имеющем расширение GRD. Синтаксические диаграммы отделяются
друг от друга с помощью пустых строк. Длина строк в файле синтаксических диаграмм не должна пре-
вышать 43 символа. Желательно, чтобы одна синтаксическая диаг-
рамма занимала не более 12 строк. В противном случае следует
учесть разделение диаграмм на кадры, содержащие 12 и 19 строк. Примеры построения синтаксических диаграмм приведены в
разделе 1.2.4.1.2. 1.2.4.2. Выходные данные. Выходная информация представлена в виде промежуточного
файла, который должен быть обработан специальным компилятором
MakeHelp - фирмы TurboPower Software. Расширение файла "по умолчанию" - "txt". 1.2.4.2.1. Директивы. Ключевыми элементами являются директивы. Директивы в текс-
товом файле помечаются восклицательным знаком в первой позиции
строки, за ним сразу следует имя директивы, а затем параметры
модификации, отделенные от имени директивы одним или несколь-
кими пробелами. Далее следует описание директив. !WIDTH ______ Определяет число позиций, занимаемых активной порцией окна
подсказки. По умолчанию, ширина окна устанавливается на 40 по-
зиций. Директива !WIDTH должна применяться до первой директивы
!TOPIC. Пример: !WIDTH 70 !TOPIC [имя] ______ Каждый пункт подсказки должен начинаться с директивы
!TOPIC. Номер пункта 0 зарезервирован для внутреннего исполь-
зования системой. Директива !TOPIC может также специфицировать
имя пункта, которое начинается с первого непустого символа,
следующего за номером пункта. Имя пункта обычно выводится как
заголовок окна помощи и является точкой входа в индекс пунктов
(каталог). Каждый файл должен иметь по крайней мере один пункт и со-
ответственно директиву !TOPIC. Пример: !TOPIC 1 Первый раздел помощи !TOPIC 22 !INDEX !NOINDEX ______________________ Эта директива управляет появлением пункта в главном индек-
се пунктов (каталоге). Директивы !INDEX и !NOINDEX при исполь-
зовании должны быть введены на строке, которая следует сразу
же за директивой !TOPIC. Если этих директив нет, то в главном
индексе этот пункт появится в алфавитном порядке. Любое имя пункта может быть исключено из главного индекса
с помощью директивы !NOINDEX. Изменить порядок расположения пунктов в главном индексе
(каталоге) можно с помощью директивы !INDEX и следующего за
ней индексного номера. Пункты с более низкими индексными номе-
рами будут выводится в начале главного индекса пунктов, а с
высшими в конце индекса, не обращая внимания на обычный алфа-
витный порядок. Пункты в главном индексе сортируются в следующем порядке: 1. Пункты с индексными номерами меньше $7777 в восходящем
алфавитном порядке. 2. Пункты без директив !INDEX в восходящем алфавитном по-
рядке. 3. Пункты с индексными номерами больше $7777 в восходящем
алфавитном порядке. Примеры: !TOPIC 1 Help on Help !INDEX 1 !TOPIC 2 Второстепенный подпункт !NOINDEX !TOPIC 3 Алфавитный порядок !TOPIC 4 Последний пункт !INDEX 32000 !LINE _____ Эта директива заставляет закончить текущую строку текста,
вставив разделитель строки. Так как слова в тексте автомати-
чески переносятся, то разделители строк при окончательном по-
явлении справки на экране не обязательно будут такими же как
и в изначальном текстовом файле. !PAGE _____ Эта директива заставляет закончить текущую страницу текс-
та, вставив разделители строк для того, чтобы текст выглядел
лучше. !INCLUDE ________ С того места, где поставлена эта директива в нормальный
ход текста справки будет считываться указанный файл. Пример: !INCLUDE special.txt Кроме того, можно ввести комментарии - они не появляются
на экране при выводе окна справки. Комментарий начинается с
точки с запятой в первой позиции любой строки. Пример: ;Этот текст игнорируется. 1.2.4.2.2. Управляющие символы. Особые управляющие символы позволяют разнообразить вывод
файла справки на экран. С их помощью можно добавить специаль-
ные видео атрибуты или определить перекрестную ссылку перехо-
да к пунктам другой помощи. Символы, управляющие видео атрибутами: ^A Включает специальный атрибут A ^B Включает специальный атрибут B ^C Включает специальный атрибут C Пример: Нормальные атрибуты ^Aвыделенный текст^A нормальный текст. Для того, чтобы указать на какую перекрестную ссылку пе-
рейти, необходимо использовать конструкцию: ^Dnnn^Etext^E Управляющий символ ^D предшествует ссылочному номеру пунк-
та "nnn", который выражается десятичными цифрами. Номер пункта
заканчивается ^E, за которым непосредственно следует текст пе-
рехода, который надо выделить. Второй символ ^E заканчивает
выделенный текст. Пример: Выберите ^D1^E HelpOnHelp ^E для получения информации о том, как пользоваться ^D8^EСправочником^E. В настоящем тексте подсказки символы, показанные крышечкой,
будут в действительности управляющими символами. Если пользо-
ватель переместит высвеченную полосу на слово HelpOnHelp и
нажмет клавишу , то появится пункт справки номер 1. 1.3. Структура комплекса. В комплекс программ построения справочников по формальным
языкам входят следующие программные средства: - программа преобразования МРБНФ и синтаксических диаг-
рамм Вирта в промежуточный файл, пригодный для обработки ком-
пилятором MakeHelp; - программа, конвертирующая входные данные в файл отчета о
входном языке; - программа, проверяющая имена нетерминалов. Для создания этих программных компонентов требуется набор
инструментальных средств. Основное требование к инструментальным средствам: освобо-
дить разработчика справочников и обучающих программ от необхо-
димости создания проблемно-независимых компонентов и потребо-
вать от него задания только проблемно ориентированной информа-
ции. При этом требуется,чтобы исходная информация для созда-
ния различных компонентов справочников и подсистем подготовки
описаний была построена по единому принципу и не дублирова-
лась. Для построения различных компонентов пользователь должен
описать грамматику ПОЯ в модифицированной расширенной форме
Бэкуса-Наура (МРБНФ) (РБНФ описана в работе [2,3]). Далее не-
обходимо "нагрузить" грамматику на информацию о лексике, се-
мантике ПОЯ и справочную информацию, а также задать дополните-
льную информацию в зависимости от создаваемых компонентов. Структура комплекса программ построения справочников по
формальным языкам представлена на рисунке 1.3. ЪДДДДДДДДДДї ХННННННННННННННННННё ЙНННННННН>µПрограмма і ХННННННННННё і Исходный файл і є іпостроенияЖН>Нµ Help- і і грамматики і є ЙННННН>µсправочни-і і файл і і ЪДДДДДДДДДДї і є є і ков і АДДДДДДДДДДЩ і і і і є є АДДДДДДДДДДЩ і ЪДДДґСинтаксис і і є є і і і ЖНШННН№ є ЪДДДДДДДДДДї і і АДДДДДДДДДДЩ і МННєННННН>µПрограмма і ХННННННННННё і і і є є іпостроенияЖН>Нµ файл і і і ЪДДДДДДДДДї і є є і отчета і і отчета і і АДДДґСправоч- і і є є АДДДДДДДДДДЩ АДДДДДДДДДДЩ і і ная ЖННШННН№ є і іинфор-цияі і є є і АДДДДДДДДДЩ і є є ЪДДДДДДДДДДї АДДДДДДДДДДДДДДДДДДЩ ИННєННННН>µПрограмма і ХННННННННННННННё є і контроля ЖН>Нµ файл і ХННННННННННННННННННё МННННН>µ имен і іпредупрежденийі і Синтаксические і є інетермин-ві АДДДДДДДДДДДДДДЩ і диаграммы ЖННННННј АДДДДДДДДДДЩ АДДДДДДДДДДДДДДДДДДЩ Рис. 1.3. 1.4. Общее описание алгоритмов и внутренних данных. Комплекс программ построения справочников по формальным
языкам реализован средствами Turbo Pascal 6.0. При программи-
ровании использовались средства Object Professional 1.10 (уп-
равление экраном и клавиатурой, объекты данных, обработка
строк, интерфейс DOS/BIOS, распределение памяти, сортировка). Комплекс состоит из трех программ, которые имеют одинако-
вые входные данные, принцип построения, основные алгоритмы и
организацию ввода-вывода. Далее будет подробно рассмотрена
лишь одна из программ - TextMake. 1.4.1. Разработка структуры данных. Комплекс программ был разработан и написан языке Turbo
Pascal 6.0 с использованием объектно-ориентированного подхода
в программировании. Объектно-ориентированное программирование (ООП) - это ме-
тод программирования, имитирующий способы, какими, по нашим
представлениям, выполнены предметы. Три основных свойства ха-
рактеризуют язык объектно-ориентированного программирования: - инкапсуляция: объединение записей с процедурами и функ-
циями, что превращает их в новый тип данных - объект; - наследование: задание объекта, затем использование его
для построения иерархии порожденных объектов, с наследованием
доступа каждого из порожденных объектов к коду и данным пред-
ка; - полиморфизм: задание одного имени действию, которое пе-
редается вверх и вниз по иерархии объектов, с реализацией это-
го действия способом, соответствующим каждому объекту в иерар-
хии. Расширение языка Turbo Pascal предоставляет все возможнос-
ти объектно-ориентированного программирования: наибольшую
структурность, абстрактность, модульность, встроенные непос-
редственно в язык. Все эти свойства присущи и коду, являющему-
ся наиболее структурным, расширяемым и легким для поддержки. В связи с вышеизложенными достоинствами объектно-ориенти-
рованного программирования структура данных программы, там
где это возможно и целесообразно, базировалась именно на этом
подходе. Одним из базовых объектов в программе TextMake является
объект Root, который представляет собой абстрактный родительс-
кий объект. type Root = object constructor Init; destructor Done; virtual; end; Объекты, которые непосредственно используются для поддерж-
ки нетерминалов и терминалов являются потомками объекта Root.
Преимущества такого подхода: возможность наследовать поля дан-
ных и правила для использования в новом типе, возможность ссы-
лок на объекты разного типа с помощью указателя одного типа,
уменьшение исполнимого кода программы. Как пример можно привести объект HeapStr: type HeapStrPtr = ^ HeapStr; HeapStr = object(Root) Name : StringPtr; ................. end; Так как имена нетерминалов и терминалов содержатся в дина-
мически распределяемой памяти, то был создан объект для насле-
дования, который позволяет легко создавать динамические стро-
ки. При этом памяти отводится столько, сколько требует длина
строки. В программе можно выделить следующую иерархию данных: ЪДДДДДДДДДДДДДї і данные і і программы і АДДДДДДВДДДДДДЩ ЪДДДДДДДДДДДБДДДДДДДДДДДДДДДї ЪДДДДДДБДДДДДДї ЪДДДДДБДДДДДї і нетерминалы і і терминалы і АДДДДДДВДДДДДДЩ АДДДДДДДДДДДЩ ЪДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї ЪДДДДДБДДДДДї ЪДДДДДБДДДДДї інетерминалыі інетерминалыі і в МРБНФ і і в СД і АДДДДДВДДДДДЩ АДДДДДВДДДДДЩ ЪДДДДДДДБДДДВДДДДДДДДДДДДДДї ЪДДДДДДДБДДДї
ЪДДДДБДДДДїЪДДДДДБДДДДДїЪДДДДДДДБДДДДДДДїЪДДДДБДДДДїЪДДДДДБДДДДДї
основногоііпроблемных ііразделов с доп.ііосновногоііпроблемных і
раздела ііподмножествііинформацией ііраздела ііподмножестві
АДДДДДДДДДЩАДДДДДДДДДДДЩАДДДДДДДДДДДДДДДЩАДДДДДДДДДЩАДДДДДДДДДДДЩ Рис. 1.4. Для хранения нетерминалов был выбран следующий базовый
тип: type PapaPtr = ^Papa; Papa = object(HeapStr) Brat : PapaPtr; Son : PapaPtr; Pred : PapaPtr; ............... end; Этот тип можно представить в виде рисунка: ^ і Ссылка на предка ЙНННННННННННШННННННН» є х є ЗДДДДДДДДДДДДДДДДДДД¶ є Имя нетерминала є ЗДДДДДДДДДВДДДДДДДДД¶ Ссылка на брата є х і хДДДДЧДДДД> ИННННШННННПНННННННННј і V Ссылка на сына Для хранения терминалов был выбран следующий тип: ЙННННННННННННННН» є Имя терминала є ЗДДДДДДДВДДДДДДД¶ Ссылка на следующий є х і хДДДЧДДДДД> терминал ИННННШННПНННННННј і V Ссылка на список нетерминалов, где был найден данный терминал Иерархия объектов в программе от предка Root: Root базовый объект ГДДДДДДДHeapStr строка в динамич. памяти і ГДДДДДДДNetStack базовый список нетерминалов і АДДДДДДДPapa базовый для нетерминалов і АДДДДДДДNetSd нетерминалы в СД і АДДДДДДДNetRf нетерминалы в МРБНФ АДДДДДДДPointerStack базовый для создания списка АДДДДДДДNameStack базовый список терминалов АДДДДДДДTermStack список терминалов 1.4.2. Основной алгоритм программы. Исходный текст обрабатывается в два прохода. На первом
этапе считываются и запоминаются все терминалы и те нетермина-
лы, для которых есть описание. То же происходит и с синтакси-
ческими диаграммами (СД), за исключением терминалов. На вто-
ром этапе создается файл, который объединяет файл с СД и ос-
новной файл с модифицированной расширенной формой Бэкуса-Нау-
ра (МРБНФ), проблемными подмножествами и пр. В результате то-
го, что все терминалы получили уникальный номер ( на первом
этапе), становится возможным установить перекрестные ссылки.
Кроме того, в выходной файл заносится список терминалов, где
каждому терминалу соответствует список нетерминалов, в которых
данный терминал употреблялся. Схема общего алгоритма решения
задачи приведена на рисунке 1.5. ЪДДДДДДДДДДДДДДДДДДДДДДДї і Инициализация таймера і АДДДДДДДДДДДВДДДДДДДДДДДЩ ЪДДДДДДДДДДДБДДДДДДДДДДДї і Установка обработчика і і прерывания для і і ошибочных ситуаций і АДДДДДДДДДДДВДДДДДДДДДДДЩ ЪДДДДДДДДДДДБДДДДДДДДДДДї і Обработка командной і і строки і АДДДДДДДДДДДВДДДДДДДДДДДЩ ЪДДДДДДДДДДДБДДДДДДДДДДДї і Инициализация і і переменных і АДДДДДДДДДДДВДДДДДДДДДДДЩ ЪДДДДДДДДДДДБДДДДДДДДДДДї і Инициализация і і структуры данных і і нетерминалов і АДДДДДДДДДДДВДДДДДДДДДДДЩ ЪДДДДДДДДДДДБДДДДДДДДДДДї і Инициализация і і структуры данных і і терминалов і АДДДДДДДДДДДВДДДДДДДДДДДЩ ЪДДДДДДДДДДДБДДДДДДДДДДДї і Первый проход і і основного файла. і і Формирование структурыі і данных і АДДДДДДДДДДДВДДДДДДДДДДДЩ Щ / \ /Нет ни\ да ЪДДДДДДДДДДДДДї /одного не\ ДДДДДДґ Останов і \ терми- / АДДДДДДДДДДДДДЩ \нала / \ /нет і / \ /Есть \ нет / файл с \ ДДДДДДДДДДДї \ СД / і \ / і \ /да і ЪДДДДДДДДДДДБДДДДДДДДДДДї і і Первый проход файла і і і с СД. Формирование і і і структуры данных і і АДДДДДДДДДДДВДДДДДДДДДДДЩ і і 5. Заключение. В ходе дипломного проектирования был разработан комплекс
программ построения справочников по формальным языкам. Напи-
санные программы предназначены для использования в справоч-
но-обучающей системе по языкам проектирования, программирова-
ния, управления. В дипломном проекте разработана технология тестирования
программ. Проведен расчет экономического эффекта от внедрения
программ и обоснование необходимости создания. На основании
приведенных расчетов можно сделать вывод: внедрение комплекса
программ построения справочников по формальным языкам экономи-
чески оправдано и целесообразно. В ходе дипломного проектирования оценены опасные и вредные
факторы на участке ПЭВМ, а также разработаны меры по охране
труда программиста и оператора. Разработаны важные сопроводительные документы, позволяю-
щие эффективно использовать и модифицировать написанные прог-
раммные продукты. Таким образом, внедрение разработанного комплекса программ
имеет принципиальное значение для решения задач проектирова-
ния, управления,а также для обучения этим языкам.
      МОСКОВСКИЙ ИНСТИТУТ ЭЛЕКТРОННОГО
МАШИНОСТРОЕНИЯ
                          кафедра:
        Специализированные вычислительные
комплексы
                              
"УТВЕРЖДАЮ"
                              Зав. кафедрой
                      ______________
/Иванников А.Д./
                      "__"
______________________    
           Т Е Х Н И Ч Е С К О Е   З А Д А Н И Е
                на дипломное проектирование
         Комплекс программ построения
справочников
                    по формальным языкам
                          Листов 5
Консультант
по специальной части     Дата выдачи
задания _______
___________
/Сохацкий А.А./          Задание принял
к исполнению
"__"____________
1992 г.             студент гр. С-113
                                    
__________ /Григоркин П.Б./
Консультант
по экономической части  
"__"____________ 1992 г.
___________
/Саприн В.В./         
"__"____________
1992 г.             Руководитель
дипломного
                                     проектирования    
Консультант
по охране труда          ___________
/Сохацкий А.А./
___________
/Данилин О.К./          
"__"____________ 1992 г.
"__"____________
1992 г.            
                                    
Нормконтроль
                                    
______________ /Зыкова Л.В./  
                                    
"__"____________ 1992 г. 
                          Аннотация.
    Настоящий дипломный проект  посвящен 
проблеме  построения
справочников
по формальным языкам и содержит три программы.
    Данная разработка применяется в области
САПР  вычислитель-
ных  систем 
по  подготовке  их 
описаний на языке  VHDL  (ПОП
VHDL).
При  выполнении поставленной  задачи 
был решен  вопрос
формализации
процесса построения справочника и составлен алго-
ритм
его выполнения, в основу которого положен объектно-ориен-
тированный
подход.
    Результатом  дипломного  проектирования
является  комплекс
программ
построения справочников по формальным языкам.
    Дипломный проект содержит 7 разделов.
    В 1-м разделе содержится постановка
задачи, описание мето-
да
решения, структуры входных данных и формат выходных, приве-
дены
алгоритмические решения поставленной задачи, а также ана-
лиз
полученных характеристик эффективности программы и возмож-
ностей
их улучшения.
    Второй раздел посвящен  разработке технологии тестирования
программ.
В  нем 
содержится  обоснование  выбора 
технологии,
рассмотрены
основные  цели  и  задачи  тестирования,  подробно
рассмотрены
все  этапы технологического  процесса 
и приведены
фрагменты
реализации технологии тестирования  на
примере прог-
раммы
построения справочников по формальным языкам.
    В экономико-организационной части
дипломного проекта расс-
мотрены
вопросы расчета сметной стоимости и определения трудо-
емкости
программирования. Эта  часть содержит
технико-экономи-
ческое
обоснование целесообразности разработки программы пост-
роения
справочников по формальным языкам.
    В 
разделе  "Охрана труда"
освещаются возможные  вредные и
опасные  производственные факторы на участке
ПЭВМ,  приводится
выбор и
расчет  системы  защиты оператора  ПЭВМ  от  поражений
электрическим  током, а также рассматривается пожарная  профи-
лактика
на участке ПЭВМ.
    В 
разделе "Приложения" содержится  программная документа-
ция,
подготовленная в процессе разработки программ.
                        5. Заключение.
    В 
ходе  дипломного проектирования
был разработан комплекс
программ  построения 
справочников по формальным языкам. Напи-
санные  программы 
предназначены  для использования
в справоч-
но-обучающей
системе  по языкам проектирования,
программирова-
ния,
управления.
    В 
дипломном проекте 
разработана  технология
тестирования
программ.
Проведен расчет  экономического эффекта
от внедрения
программ
и обоснование  необходимости
создания.  На  основании
приведенных
расчетов можно  сделать вывод: внедрение
комплекса
программ
построения справочников по формальным языкам экономи-
чески
оправдано и целесообразно.
    В ходе дипломного проектирования оценены
опасные и вредные
факторы
на  участке ПЭВМ, а  также разработаны меры  по охране
труда
программиста и оператора.
    Разработаны важные  сопроводительные документы,  позволяю-
щие
эффективно  использовать и
модифицировать написанные прог-
раммные
продукты.
    Таким образом, внедрение разработанного комплекса
программ
имеет
принципиальное  значение  для решения задач проектирова-
ния,
управления,а также для обучения этим языкам.
    2.1. Введение.
    Понятия процесса программирования  качественно изменились.
Производство
программ приобрело массовый характер, существенно
увеличились
их объем и сложность. Разработка программных комп-
лексов  потребовала 
значительных  усилий  больших коллективов
специалистов.
Программы перестали  быть только
вычислительными
и
начали выполнять важнейшие функции по управлению и обработке
информации
в различных отраслях.
    Развитие и применение технологий
проектирования комплексов
программ
приводит к необходимости измерения и сравнения их эф-
фективности  прежде всего по степени влияния на качество
прог-
раммного
продукта.
    Обеспечение  высокого качества сложных комплексов программ
связано
со значительными затратами труда разработчиков. Затра-
ты на
создание программ  быстро  увеличиваются при возрастании
требований,
причем для  сложных  комплексов весьма сложно дос-
тичь  высокого качества  функционирования, и после обеспечения
общей
работоспособности могут понадобится годы труда для полу-
чения  необходимых показателей  качества. 
Поэтому уже сегодня
требуются  методы и средства, которые позволили бы
заметно по-
высить  качество программ  программ при относительно невысоких
затратах
труда.
    2.2. Обоснование выбора технологии
тестирования.
    Как известно,  при создании типичного программного проекта
около
50%  общего времени и более 50% общей
стоимости расходу-
ется
на  проверку (тестирование)
разрабатываемой программы или
системы.
Кроме того, доля стоимости тестирования в общей стои-
мости
программ имеет тенденцию возрастать при увеличении слож-
ности
комплексов программ и повышения требований 
к их качест-
ву.
    Учитывая это,  при отработке технологии тестирования прог-
рамм
следует четко выделять 
определенное  (по
возможности  не
очень
большое)  число правил  отладки, 
обеспечивающих высокое
качество
программного продукта и снижающих затраты на его соз-
дание.
    Тестирование  - это процесс исполнения программы  с  целью
обнаружения  ошибок. Одним из способов  изучения поставленного
вопроса
является исследование стратегии тестирования, называе-
мой  стратегией черного ящика, тестированием с
управлением  по
данным,  или тестированием с управлением по
входу-выходу.  При
использовании  этой 
стратегии  программа  рассматривается как
черный
ящик. Тестовые данные используются только 
в соответст-
вии  со 
спецификацией  программы (т.е.
без учета знаний о  ее
внутренней
структуре).
    При таком подходе обнаружение  всех ошибок в программе яв-
ляется
критерием исчерпывающего входного тестирования. Послед-
нее
может быть достигнуто,  если в  качестве 
тестовых наборов
использовать
все возможные наборы входных данных. Следователь-
но, мы
приходим к  выводу, что для
исчерпывающего тестирования
программы
требуется бесконечное число тестов, а значит постро-
ение
исчерпывающего входного теста невозможно. Это подтвержда-
ется
двумя аргументами: во-первых, нельзя создать тест, гаран-
тирующий
отсутствие  ошибок; во-вторых,
разработка таких  тес-
тов противоречит
экономическим требованиям. Поскольку исчерпы-
вающее
тестирование исключается, нашей целью должна стать мак-
симизация
результативности вложения капиталовложений 
в тести-
рование
(максимизация  числа ошибок,
обнаруживаемых одним тес-
том).
Для  этого необходимо рассматривать
внутреннюю структуру
программы
и делать некоторые разумные, но, конечно, не облада-
ющие
полной гарантией достоверности предположения.
    Стратегия белого ящика, или стратегия
тестирования, управ-
ляемого  логикой программы, позволяет  исследовать 
внутреннюю
структуру
программы. В этом случае тестирующий получает тесто-
вые
данные путем анализа логики программы.
    Сравним способ  построения  тестов
при  данной стратегии с
исчерпывающим
входным  тестированием стратегии
черного  ящика.
Неверно
предположение,  что  достаточно построить  такой набор
тестов,  в котором каждый  оператор  исполняется
хотя  бы один
раз.
Исчерпывающему входному тестированию может быть поставле-
но в
соответствие исчерпывающее тестирование маршрутов. Подра-
зумевается,
что программа  проверена полностью, если
с помощью
тестов
удается  осуществить  выполнение этой программы по всем
возможным
маршрутам ее потока (графа) передач управления.
    Последнее утверждение имеет два
слабых  пункта: во-первых,
число
не  повторяющих  друг друга маршрутов - астрономическое;
во-вторых,
даже если каждый  маршрут может быть
проверен, сама
программа
может содержать ошибки (например, некоторые маршруты
пропущены).
    В результате  всех  изложенных  выше замечаний можно отме-
тить,
что ни исчерпывающее входное тестирование ни исчерпываю-
щее
тестирование маршрутов не могут стать полезными стратегия-
ми,
потому что оба они не реализуемы. 
Поэтому реальным путем,
который
позволит  создать  хорошую, 
но, конечно не абсолютную
стратегию,
является сочетание  тестирования
программы несколь-
кими
методами.
    2.3. Разработка технологического процесса
тестирования.
    Если отказаться от тестирования всех
путей, то можно пока-
зать,
что критерием покрытия является выполнение 
каждого опе-
ратора
программы по крайней мере один раз.
    В 
качестве  примера  тестирования  возьмем модуль  Param.
Предназначение  модуля - разбирать командную строку с
парамет-
рами на
отдельные параметры.
    Объектом 
тестирования  изберем  правило 
ParamStr объекта
Parameters.
    function Parameters.ParamStr(ParamNum :
byte) : string;
    begin
      if ParamNum = 0 then
        if Delux then
          ParamStr:=''
        else
          if Lo(DosVersion) >= 3 then
             ParamStr:=system.ParamStr(0)
          else
             ParamStr:=''
      else
        ParamStr:=OptionStr(ParamNum);
    end;
    Схема алгоритма этой функции:
                   ЪДДДДДДДДДДДДДДДДДДДї
                   і      Начало       і
                   АДДДДДДДДДВДДДДДДДДДЩ
                             і
                            / \
                          /     \ нет
                        /ParamNum \
ДДДДДДДДДДДДДДДДї
                        \   = 0   /                 і
                          \     /        
ЪДДДДДДДДДБДДДДДДДДДї
                            \ /да         і   
ParamStr =     і
                             і            іOptionStr(ParamNum)і
                            / \           АДДДДДДДДДВДДДДДДДДДЩ
                     да   /    
\                   і
           Ъ<ДДДДДДДДДДД/  Delux 
\                 і
           і            \  = true /                 і
 ЪДДДДДДДДДБДДДДДДДї      \     /                   і
 і 
ParamStr = ''  і        \ /нет                  і
 АДДДДДДДДДВДДДДДДДЩ         і                     

           і                / \                     і
           і              / Lo( \ нет               і
           і            /DosVersion ДДДДДДДДДДДДДДї АДДДДДДДДї
           і            \ ) >= 3 
/               і          і
           і              \     /                 і          і
           і                \ /да                 і         

           і      ЪДДДДДДДДДДБДДДДДДДДДї ЪДДДДДДДДБДДДДДДДДї і
           і      і  ParamStr = System.і
  ParamStr = ''  і і
           і      і    ParamStr(0)     і АДДДДДДДДВДДДДДДДДЩ і
           і      АДДДДДДДДДДВДДДДДДДДДЩ          і          і
          
АДДДДДДДДДДДДДДДД>Е<ДДДДДДДДДДДДДДДДДДДБ<ДДДДДДДДДЩ
                   ЪДДДДДДДДДБДДДДДДДДДї
                   і       Конец       і
                   АДДДДДДДДДДДДДДДДДДДЩ
                          Рис 2.1.
                                                     
Табл. 2.1.
ЙНННСННННННННННННННННННСНННННННННННННННННННСНННННННННННННННННННН»
N і
Входные данные   іОжидаемый
результатіПолученный результатє
ЗДДДЕДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДД¶
1 і
ParamNum = 1     і ParamStr =        і ParamStr =         є
   і                  іOptionStr(ParamNum)іOptionStr(ParamNum) є
ЗДДДЕДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДД¶
2 і
ParamNum = 0     і ParamStr = ''     і ParamStr = ''      є
   і Delux = true     і                   і                    є
ЗДДДЕДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДД¶
3 і
ParamNum = 0     іParamStr =         іParamStr =          є
   і Delux = false    і System.ParamStr(0)і System.ParamStr(0) є
   і Lo(DosVersion)=3 і                   і                    є
ЗДДДЕДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДД¶
4 і
ParamNum = 0     іParamStr = ''      іParamStr = ''       є
   і Delux = false    і                  
                    є
   і Lo(DosVersion)=2 і                   і                    є
ИНННПННННННННННННННННННПНННННННННННННННННННПННННННННННННННННННННј
    Данный 
критерий тестирования хуже,  чем
кажется на первый
взгляд.
Например, если условие Lo(DosVersion) 
>= 3 будет оши-
бочно
записано Lo(DosVersion) > 3.  При
тестировании по данно-
му
критерию эта ошибка не будет обнаружена.
    Более сильный критерий  покрытия логики программы известен
как
покрытие решений,  или покрытие
переходов. Согласно данно-
му
критерию должно быть записано достаточное число тестов, та-
кое,
что каждое  решение на этих тестах
примет значение истина
и ложь
по крайней мере один раз.
    Можно показать,  что покрытие решений обычно удовлетворяет
критерию
покрытия  операторов. Поскольку каждый
оператор лежит
на
некотором  пути,  исходящем 
из оператора перехода, либо из
точки
входа программы, при выполнении каждого направления  пе-
рехода  каждый 
оператор должен  быть выполнен.
Следовательно,
тесты
приведенные выше подходят и для этого критерия.
    Однако существуют  исключения, например, оператор  case. В
этом
операторе возможны не двузначные решения.
    CASE условие OF
      m1 : оператор1;
      m2 : оператор2;
      m3 : оператор3
    ELSE
      m4 : оператор4
    END
    Критерием для таких  случаев 
является выполнение  каждого
возможного
результата всех решений по крайней мере один раз.
    Лучшим критерием по сравнению с предыдущим
является покры-
тие
условий.  В этом случае записывают число
тестов, достаточ-
ное для
 того, чтобы  все возможные результаты каждого условия
в
решении выполнялись по крайней мере один раз.
    Рассмотрим пример на функции OptionStr.
    function Parameters.OptionStr(ParamNum :
byte) : string;
    var
      I, Len : Byte;
    begin
      Len := 0;
      I := OptPosition(ParamNum);
      if I <> 0 then
        while (I <= SLen) and not
(ParStr[I] in OptDelim) do
        begin
          Inc(Len);
          OptionStr[Len] := ParStr[I];
          Inc(I);
        end;
      OptionStr[0] := Char(Len);
    end;
    Алгоритм этой функции:
                   ЪДДДДДДДДДДДДДДДДДДДї
                   і      Начало       і
                   АДДДДДДДДДВДДДДДДДДДЩ
                   ЪДДДДДДДДДБДДДДДДДДДї
                   і Len = 0;          і
                   і I = OptPosition(  і
                   і   ParamNum)       і
                   АДДДДДДДДДВДДДДДДДДДЩ
                            / \
                          /     \ 
да
                        /  I = 0 
\ ДДДДДДДДДДДДДДДДї
                        \         /                 і
                          \     /                   і
                            \ /нет                  і
             ЪДДДДДДДДДДДДДДДґ                      і
             і              / \                     і
             і            /     \                   і
             і          /I <= SLen\ 
да             і
             і        /    и не     \ ДДДДДДДДДДДДД>ґ
             і        \ParStr(I) в  /               і
             і          \OptDelim /                 і
             і            \     /                   і
             і              \ / нет                 і
             і     ЪДДДДДДДДДБДДДДДДДДДї            і
             і     і Len = Len + 1;   
            і
             і     і OptionStr(Len) = 
            і
             і     і  ParStr(I)        і            і
             і     АДДДДДДДДДВДДДДДДДДДЩ            і
             АДДДДДДДДДДДДДДДЩ                      і
                             ЪДДДДДДДДДДДДДДДДДДДДДДЩ
                   ЪДДДДДДДДДБДДДДДДДДДї
                   і       Конец       і
                   АДДДДДДДДДДДДДДДДДДДЩ
                        Рис 2.2.
    Функция содержит три условия:
         I=0, I<=SLen, not (ParStr[i] in
OptDelim).
    Следовательно, требуется достаточное  число тестов, такое,
чтобы
реализовать ситуации, где  I=0,
I<>0  в первом условии и
I<=SLen,  I>SLen, 
(ParStr[i] in OptDelim)=true, (ParStr[i] in
OptDelim)=false
во втором условии.
    Тесты, удовлетворяющие критерию  покрытия условий пиведены
в
таблице 2.2. (пусть  стока  параметров 
имеет вид:  MAIN.GRM
/Q/P,
SLen=13, ParamNum=1):
                                                    
Табл. 2.2.
ЙНННСННННННННННННННННННСНННННННННННННННННННСНННННННННННННННННННН»
N і
Входные данные   іОжидаемый
результатіПолученный результатє
ЗДДДЕДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДД¶
1 і I
= 0            і OptionStr(0) = 0  і OptionStr(0) = 0   є
   і                  і                   і                    є
ЗДДДЕДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДД¶
2 і I
= 1            і OptionStr(0) = 0  і OptionStr(0) = 0   є
   і (ParStr[i] in    і                  
                    є
   і 
OptDelim) = trueі                  
                    є
ЗДДДЕДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДД¶
3 і I
= 1            і OptionStr(0) = 8  і OptionStr(0) = 8   є
   і (ParStr[i] in    і                  
                    є
   і 
OptDelim)=false і                  
                    є
ЗДДДЕДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДД¶
4 і I
= 11           і OptionStr(0) = 0  і OptionStr(0) = 0   є
   і (ParStr[i] in    і                  
                    є
   і 
OptDelim) = trueі                  
                    є
ЗДДДЕДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДД¶
5 і I
= 11           і OptionStr(0) = 0  і OptionStr(0) = 0   є
   і (ParStr[i] in    і                   і                    є
   і 
OptDelim)=false і                  
                    є
ИНННПННННННННННННННННННПНННННННННННННННННННПННННННННННННННННННННј
    Хотя 
применение  критерия  покрытия 
условий   на  первый
взгляд
удовлетворяет  критерию покрытия
решений, это не всегда
так.
Если тестируется решение
   if 
A and B then ...
   то при критерии покрытия условий
требовались бы  два теста:
A =
true,  B = false и  A  =
false, B = true. Но в этом случае
не
выполнялось бы then-предложение оператора if.
    Существует  еще один  критерий,  названный покрытием реше-
ний/условий.  Он 
требует  такого  достаточного набора тестов,
чтобы  все возможные результаты  каждого условия в решении вы-
полнялись
по крайней мере один раз, все результаты каждого ре-
шения
выполнялись по крайней мере один раз и каждой точке вхо-
да
передавалось управление по крайней мере один раз.
    Недостатком критерия покрытия
решений/условий является не-
возможность  его применения для  выполнения  всех  результатов
всех
условий;  часто подобное выполнение
имеет место в следст-
вии
того, что определенные условия скрыты 
другими  условиями.
Например,
если условие AND есть  ложь, то никакое
из последую-
щих
условий в  выражении  не будет выполнено. Аналогично, если
условие
OR есть истина, то  никакое из
последующих  условий не
будет
выполнено. Следовательно,  критерии  покрытия 
условий и
покрытия
решений/условий недостаточно 
чувствительны к ошибкам
в
логических выражениях.
    Критерием, который  решает 
эти и некоторые другие пробле-
мы,
является комбинаторное покрытие условий. Он требует созда-
ния
такого числа тестов, чтобы  все
возможные комбинации резу-
льтатов  условия 
в каждом  решении и все точки
входа выполня-
лись по
крайней мере один раз.
    Рассмотрим правило CheckTreeNil  в модуле TmObejct объекта
Main.
    procedure Main.CheckTreeNil;
    var
      tn : boolean;
    begin
      tn := (GetPtrOfClass(SCl)=nil) and
             (GetPtrOfClass(UCl)=nil) and
             (GetPtrOfClass(ACl)=nil);
      if tn then Error('не найден ни один
нетерминал');
    end;
    Алгоритм процедуры:
                   ЪДДДДДДДДДДДДДДДДДДДї
                   і       Начало      і
                   АДДДДДДДДДВДДДДДДДДДЩ
                             і
                             /\
                           /    \
                         /        \
                       / G(SCl)=nil \
                     /       и        \  нет
                   /     G(UCl)=nil    
\ДДДДДДДДДДДї
                    \        и        /             і
                      \  G(ACl)=nil /               і
                        \         /                 і
                          \     /                   і
                            \ / да                  і
                             і                      і
        
ЪДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДї   і
         і Error('не найден ни один
нетерминал')і   і
        
АДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДЩ   і
                            
Г<ДДДДДДДДДДДДДДДДДДДДДЩ
                   ЪДДДДДДДДДБДДДДДДДДДї
                   і       Конец       і
                   АДДДДДДДДДДДДДДДДДДДЩ
                          Рис 2.3.
    Для 
того,  чтобы  протестировать эту процедуру необходимо
восемь
тестов, хотя она покрывается всего двумя путями.
                                               
Табл. 2.3.
ЙНННСНННННННННННННННННННННННННННСННННННННННННСНННННННННННН»
N і
Входные данные            і Ожидаемый  і Полученный є
   і                           і результат  і результат  є
ЗДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДЕДДДДДДДДДДДД¶
   і GetPtrOfClass(SCl) =  nil і            і            є
1 і
GetPtrOfClass(UCl) =  nil і tn =
true  і tn = true  є
   і GetPtrOfClass(ACl) =  nil і            і            є
ЗДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДЕДДДДДДДДДДДД¶
   і GetPtrOfClass(SCl) <> nil і            і            є
2 і
GetPtrOfClass(UCl) =  nil і tn = false і
tn = false є
   і GetPtrOfClass(ACl) =  nil і            і            є
ЗДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДЕДДДДДДДДДДДД¶
   і GetPtrOfClass(SCl) =  nil і            і            є
3 і
GetPtrOfClass(UCl) <> nil і tn = false і tn = false є
   і GetPtrOfClass(ACl) =  nil і            і            є
ЗДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДЕДДДДДДДДДДДД¶
   і GetPtrOfClass(SCl) <> nil і            і            є
4 і
GetPtrOfClass(UCl) <> nil і tn = false і tn = false є
   і GetPtrOfClass(ACl) =  nil і            і            є
ЗДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДЕДДДДДДДДДДДД¶
   і GetPtrOfClass(SCl) =  nil і            і            є
5 і
GetPtrOfClass(UCl) =  nil і tn = false і
tn = false є
   і GetPtrOfClass(ACl) <> nil і            і            є
ЗДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДЕДДДДДДДДДДДД¶
   і GetPtrOfClass(SCl) <> nil і            і            є
6 і
GetPtrOfClass(UCl) =  nil і tn = false і
tn = false є
   і GetPtrOfClass(ACl) <> nil і            і            є
ЗДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДЕДДДДДДДДДДДД¶
   і GetPtrOfClass(SCl) =  nil і            і            є
7 і
GetPtrOfClass(UCl) <> nil і tn = false і tn = false є
   і GetPtrOfClass(ACl) <> nil і            і            є
ЗДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДЕДДДДДДДДДДДД¶
   і GetPtrOfClass(SCl) <> nil і            і            є
8 і
GetPtrOfClass(UCl) <> nil і tn = false і tn = false є
   і GetPtrOfClass(ACl) <> nil і            і            є
ИНННПНННННННННННННННННННННННННННПННННННННННННПННННННННННННј
    В 
случае циклов  число тестов для
удовлетворения критерию
комбинаторного  покрытия условий  обычно больше, чем число пу-
тей.
    Легко 
видеть, что набор тестов, удовлетворяющий  критерию
комбинаторного
покрытия условий, удовлетворяет также и 
крите-
риям
покрытия решений, покрытия условий и покрытия решений/ус-
ловий.
    Таким образом, для  программ, содержащих только одно усло-
вие на
каждое  решение, минимальным  является 
критерий, набор
тестов
которого:
    - вызывает выполнение всех результатов
каждого  решения по
крайней
мере один раз;
    - передает управление каждой точке входа
(например, опера-
тор
CASE).
    Для 
программ, содержащих решения, каждое из которых имеет
более  одного условия, минимальный  критерий состоит из набора
тестов,
вызывающих всех возможных комбинаций результатов усло-
вий в
каждом решении и передающих управление каждой точке вхо-
да
программы по крайней мере один раз.
    В 
свете всего  вышеизложенного, можно
изобразить алгоритм
выбора
минимального критерия,  по которому
необходимо тестиро-
вать
программу (см. рис. 2.4.).
                          
ЪДДДДДДДДДДДДДДДДДДДї
                           і       Начало      і
                          
АДДДДДДДДДВДДДДДДДДДЩ
   ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД>ґ
   і                       ЪДДДДДДДДДБДДДДДДДДДї
   і                       і 
Выбрать оператор і
   і                       і условного переходаі
   і                       АДДДДДДДДДВДДДДДДДДДЩ
   і                                 /\
   і                               /   
\
   і                             /        \  нет
   і                           /Это оператор\ ДДДДДДДДДї
   і                           \    
IF     /          і
   і                             \        /            і
   і                               \   
/              і
   і                                 \/да              і
   і                                 і                 і
   і                                 /\               

   і                               /   
\              і
   і                        да  
/Условие \  нет       і
   і                 ЪДДДДДДДДД/ 
содержит  \ДДДДДДДДД>ґ
   і                 і        
\более одного/          і
   і                 і          
\ комп-та/            і
   і                 і            
\    /              і
   і                 і              
\/                і
   і ЪДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДї
ЪДДДДДДДДДДДДДДДБДДДДДДДДДДДДДї
   і і Набор тестов, вызывающий все  і і Набор тестов, вызывающий    і
   і і возможные комбинации резуль-в і і
выполнение всех результатов і
   і і условий в каждом решении не   і і каждого решения не менее    і
   і і менее одного раза.            і і одного раза.                і
   і АДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДЩ
АДДДДДДДДДДДДДДДВДДДДДДДДДДДДДЩ
   і                 АДДДДДДДДДДДДДДД>В<ДДДДДДДДДДДДДДДЩ
   і                                 /\
   і                               /Это \
   і        
                нет /последн.\
   АДДДДДДДДДДДДДДДДДДДДДДДДДДД/  оператор 
\
                               \
условного  /
                                 \перехода/
                                   \    /
                                     \/да
                           
ЪДДДДДДДДДБДДДДДДДДДї
                            і       Конец       і
                           
АДДДДДДДДДДДДДДДДДДДЩ
                                  Рис 2.4.
    3.1 Технико-экономическое обоснование
выбора темы.
    По 
мере развития средств вычислительной техники и внедре-
ния их
в повседневную практику все большее значение приобрета-
ют
справочные системы. Языки проектирования и программирования
все
более усложняются, а их число увеличивается. Соответствен-
но к
этим языкам  подстраиваются  справочно-обучающие програм-
мы,  которые позволяют оперативно выдавать
требуемую помощь по
языку,  позволяют качественно и, главное, быстро
обучать прог-
раммистов.
Изобилие языков проектирования и программирования и
привлекло
к идее унификации справочников. Одним из мировых ли-
деров,
позволяющих встраивать мощные справочные системы в свои
программы,  являются фирмы Borland International, а
также Tur-
boPower
Software.
    Вместе с тем  в Российском Научно Исследовательском Инсти-
туте
Информационных  систем  и на кафедре  "Специализированные
Вычислительные
Комплексы" МИЭМ  ведутся  разработки 
справочно
обучающих
систем по языкам VHDL и Паскаль. Эти разрабатываемые
системы
потребовали унифицированной программы построения спра-
вочников
по  формальным языкам
программирования,  проектирова-
ния и
управления, что позволяет 
обрабатывать  некоторую форму
описания
грамматики языков и построения справочников. Разрабо-
танная
программа  является единственной
известной программой в
данной
области, и средства вложенные в ее разработку составля-
ют
маленькую  часть тех  средств, которые потребовались бы при
составлении
справочников вручную.
    3.2 Расчет сметной стоимости.
    Сметная стоимость  разработки программы определяется мето-
дом
калькуляции по статьям, приведенным в таблице 3.1.
                                               
Таблица 3.1.
ЙННСННННННННННННННННННННННННННСНННННННННСНННННННСННННННННННН»

Nі  Статья затрат           іОбозначе-і Сумма,і Примечаниеє
  і                          іние     
руб.  і           є
  і                          істатьи  
       і           є
ЗДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДЕДДДДДДДЕДДДДДДДДДДД¶

Основные материалы       і    М   
  ДДД  і           є
  і                          і        
       і           є
  і                          і        
       і           є

Покупные и  комплектующиеі    Q   
  ДДД  і           є
  і изделия                  і        
       і           є
  і                          і        
       і           є

Специальное оборудование і    Осп  і 
ДДД  і           є
  і для научных и экспери-   і        
       і           є
  і ментальных работ         і         і       і           є
  і                          і        
       і           є

Основная заработная платаі    Zо   і 21000 і табл.3.2. є
  і исполнителей (с учетом   і        
       і           є
  і премий                   і        
       і           є
  і                          і        
       і           є

Дополнительная заработнаяі    Zд   і 
4200 і 20% от Zо є
  і плата                    і        
       і           є
  і                          і         і       і           є

Отчисления на социальное і   Zнач  і 
9324 і 37%(Zо+Zд)є
  і страхование              і        
       і           є
  і                          і        
       і           є

Расходы на командировки  і   Pком 
  ДДД  і           є
  і                          і        
       і           є

Прочие расходы           і    Pпр 
  ДДД  і           є
  і                          і        
       і           є

Контрагентские расходы   і   Pкон 
57375 і табл.3.3. є
  і                          і        
       і           є
10і
Накладные расходы        і   Pнак 
34425 і 60% от Zо є
ЗДДБДДДДДДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДБДДДДДДДБДДДДДДДДДДД¶
                                 Итого:  126324 
руб.      є
ИНННННННННННННННННННННННННННННННННННННННННННННННННННННННННННј
    Расчет основной заработной платы
исполнителей темы:
    Суммарная трудоемкость = общая
трудоемкость -
                      эскизный проект -
внедрение
    Суммарная трудоемкость = 243 - 42 - 48 =
153 чел/дней
    Для расчета основной заработной платы
исполнителей с  уче-
том  премий 
переводим  данную трудоемкость из
человека/день в
человеко/месяц.
                  153 / 22 = 7 чел/мес
                                             
Таблица 3.2.
ЙННННННННННННННННСНННННННННННННННННСНННННННННННСННННННННН»

Должность      і    Суммарная    і Мес.оклад і 
Сумма  є
                і  трудоемкость   і           і 
руб.   є
ЗДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДЕДДДДДДДДД¶

Программист    і    7 чел/мес    і  3000 руб.і  21000 

ЗДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДБДДДДДДДДДДДБДДДДДДДДД¶
                                     Итого:
21000 руб.  є
ИННННННННННННННННННННННННННННННННННННННННННННННННННННННННј
    Расчет затрат на контрагентские расходы:
    Стоимость одного часа машинного времени 75
руб.
                                               
Таблица 3.3.
ЙНННННННННННННННННСННННННННННННСНННННННННСННННННННСНННННННН»

Стоимость 1 часаі Количество і Кол-во  і
Кол-во і Сумма  є
    машинного    і  чел/дней  і 
часов  і  часов і 
руб.  є
     времени     і            і в
день  і        і        є
ЗДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДЕДДДДДДДДДЕДДДДДДДДЕДДДДДДДД¶
     75 руб.     і     153    і   
5    і   765  і 57375  є
ЗДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДБДДДДДДДДДБДДДДДДДДБДДДДДДДД¶
                                   Итого:  57375.0 руб.   є
ИННННННННННННННННННННННННННННННННННННННННННННННННННННННННННј
    3.3 Определение трудоемкости
программирования задачи для ЭВМ.
    Основание для расчета: типовые нормы
времени на программи-
рование
задач для ЭВМ, утверждено Государственным Комитетом по
Труду и
Социальным Вопросам.  (Постановление
1427/10-99 от  29
мая
1980 года). Расчет производился на ЭВМ МИЭМ.
   Составлено на основании укрупненных норм
времени на разработку
          программных средств вычислительной
техники
 Постановление государственного комитета СССР
по труду и социальным
   вопросам и секретариатом ВЦСПС N358/22-20
от 24 сентября 1986 г.
           Определение трудозатрат, сроков
реализации
    и количества разработчиков, необходимых
для разработки ПС ВТ
      Название ПС ВТ: "Программа
построения справочников по
                         формальным
языкам"
      Тип каталога аналогов : ПС ВТ ЦФАП АСУ
                                                            
Таблица 3.4
ЙНННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН»
                       Степень новизны (табл. 1.3)                      є
ЗДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД¶
      Код       і       Коэффициент,
учитывающий степень новизны        є
ЗДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД¶
       А        і                       
1.00                           є
ИННННННННННННННННПНННННННННННННННННННННННННННННННННННННННННННННННННННННННј
  Коэффициент использования типовых ПС ВТ
(табл. 1.5)        0.70
  Коэффициент сложности                                      1.00
  Группа сложности                                              3
                                                            
Таблица 3.5
ЙНННННСННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННСННННН»
Номері                  Наименование
(содержание)                 іУточ-є
ф-цииі                           функции                          інен- є

по  і                                                           
ный  є
ката-і                                                            іобъемє
логу
                                                            іф-цииє
ЗДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДД¶
103 і
Анализ входного языка (синтаксический и семантический)     і 2900є
104 і
Преобразование операторов входного языка в команды другого і 3850є
107 і
Синтаксический и семантический анализ входного языка и     і 6800є
     і генерация кодов команд                                     і    

301 і
Формирование последовательного файла                       і 2600є
305 і
Обработка файлов                                           і 2420є
307 і
Совместная обработка группы файлов                         і 6660є
403 і
Формирование служебных таблиц                              і 4010є
506 і
Обработка ошибочных и сбойных ситуаций                     і 7520є
704 і
Процессор отчетов                                          і 5410є
705 і
Формирование и вывод на внешние носители                   і 8200є
ИНННННПННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННПНННННј
Общий
уточненный объем ПС ВТ (УМК)          
50 370
    ПС ВТ реализуется на языке Pascal,
оператор которого соот-
ветствует
10 УМК языка Ассемблера.
Новый
общий уточненный объем ПС ВТ (УМК)     
5 037
Затраты
труда на разработку ПС ВТ,
чел.-дни
(норма 5 в таблице 3.1)              
306
                                                            
Таблица 3.6
ЙННННННННСННННННННННННННННСННННННННННННННННННННННННННННННННННСНННННННННН»
    N  
Характеристика і             
Стадии              і   Итого 

   п/п 
     ПС ВТ     
ГДДДДДДВДДДДДДВДДДДДДВДДДДДДВДДДДДДґ         

        і                і  ТЗ  і  ЭП  і 
ТП  і  РП  і  ВН 
          є
ЗДДДДДДДДЕДДДДДДДДДДДДДДДДЕДДДДДДЕДДДДДДЕДДДДДДЕДДДДДДЕДДДДДДЕДДДДДДДДДД¶
    1  
Трудоемкость   і  27  і      і 
42  і  126 і  48  і   
243   є
        і стадии,        і      і      і     
      і      і          є
        і чел.-дни       і      і      і     
      і      і          є
ИННННННННПННННННННННННННННПННННННПННННННПННННННПННННННПННННННПННННННННННј
    Общая трудоемкость разработки и  внедрение 
программы  для
решения
задачи на ЭВМ равна 243 чел/дня.
    3.4 Оценка экономической эффективности.
    Ожидаемая годовая экономия от внедрения
программы  склады-
вается
из:
    - экономии на заработной плате
исполнителей  за  счет 
ин-
тенсификации
их труда;
    - экономии на плате за машинное время  за 
счет  ускорения
решения
задачи.
    Ожидаемая годовая экономия рассчитывается
по формуле:
    Эг = С1 - С2,
    где С1, 
С2 -- затраты (в рублях) на решение задачи  до  и
после
внедрения программы соответственно (табл. 3.7).
    Эг = 247206 - 126324 = 120882 (рублей.).
            Расчет затрат на использование
программы.
                                                 
Таблица 3.7
ЙНННННННННННННННННННСНННННННННННННННННННННННННННННННСННННННННННН»
                   і          Общий  расход        і           є
  Статьи затрат    ГДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДґ Примечанияє
                   і   возможный   і
разработанный і           є
                   і   метод       і метод         і           є
ЗДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДЕДДДДДДДДДДД¶

Основная з/п      і    48400     
     21000     і  
табл.   є

исполнителей      і               і               і 3.2 и 3.8 є
ЗДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДЕДДДДДДДДДДД¶

Дополнительная з/пі    9680       і    
4200      і 20% от Zо є

исполнителей      і               і               і           є
ЗДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДЕДДДДДДДДДДД¶

Отчисления на соц.і    21486,6    і    
9324      і  37% от  


страхование       і               і               і (Zо + Zд) є
ЗДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДЕДДДДДДДДДДД¶

Контрагентские    і    138600    
     57375     і  
табл.   є

расходы           і               і               і 3.3 и 3.9 є
ЗДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДЕДДДДДДДДДДД¶

Накладные         і    29040     
     34425     і 60% от Zо є

расходы           і               і               і           є
ЗДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДБДДДДДДДДДДД¶

Итого             і С1 = 247206,6
руб.     С2 = 126324 руб.   є
ИНННННННННННННННННННПНННННННННННННННННННННННННННННННННННННННННННј
    Основная заработная плата исполнителей без
применения
комплекса
программ построения справочников:
                                              Таблица 3.8.
ЙННННННННННННННННСНННННННННННННННННСНННННННННННСННННННННН»

Должность      і    Суммарная    і Мес.оклад і 
Сумма  є
                і  трудоемкость   і           і 
руб.   є
ЗДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДЕДДДДДДДДД¶

Оператор       і   12 чел/мес    і  2900 руб.і  34800 

ЗДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДЕДДДДДДДДД¶

Руководитель   і    4 чел/мес    і  3400 руб.і  13600 

ЗДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДБДДДДДДДДДДДБДДДДДДДДД¶
                                     Итого:
48400 руб.  є
ИННННННННННННННННННННННННННННННННННННННННННННННННННННННННј
    Расчет затрат на контрагентские расходы:
                                               
Таблица 3.9.
ЙНННННННННННННННННСННННННННННННСНННННННННСННННННННСНННННННН»

Стоимость 1 часаі Количество і Кол-во  і
Кол-во і Сумма  є
    машинного    і  чел/дней  і 
часов  і  часов і 
руб.  є
     времени     і            і в
день  і        і        є
ЗДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДЕДДДДДДДДДЕДДДДДДДДЕДДДДДДДД¶
     75 руб.     і     264    і   
7    і  1848  і 57375  є
ЗДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДБДДДДДДДДДБДДДДДДДДБДДДДДДДД¶
                                   
Итого:  138600 руб.   є
ИННННННННННННННННННННННННННННННННННННННННННННННННННННННННННј
                       6. Литература.
    1. Отчет по теме 1012ГБ за март-июнь
1991г. Структура под-
системы  анализа 
САПР микропроцессорных  систем.
Требование к
формальному
языку описания МПС.
    2.Перминов  О.Н. Язык программирования Паскаль. М: Радио и
Связь,
1989-128С.
    3.Грис Д. Конструирование компиляторов для
цифровых вычис-
лительных
машин. М: Мир, 1975 - 544С.
    4. Руководство по  объекно-ориентированному программирова-
нию на
языке Turbo Pascal 5.5.
    5. Г.Майерс. Искусство тестирования
программ. М: Финансы и
статистика,
1982г.
    6. В.В.Липаев,  А.И.Потапов. Оценка затрат 
на  разработку
программных
средств. М: Финансы и статистика, 1988.
    7. 
Методические  указания  по 
экономическому обоснованию
технических
решений в дипломных проектах. Москва, МИЭМ, 1983.
    8. "Временные  санитарные 
нормы и правила для  работников
ВЦ",  инструкции 
управления  ТБ  и 
промышленной  санитарии N
4559-88,
утвержденные 02.03.88.
    9. ГОСТ 
12.2.032-84  - Рабочее место при
выполнении работ
сидя.
Общие эргономические требования.
    10. 
Т.Алимова, Л.Лямин К вопросу о профессиональных забо-
леваниях
пользователей ПК. Компьютер пресс, 9'92, стр.27.
    11. 
Охрана труда в машиностроении : Учебник для машиност-
роительных
вузов /  Под ред. Е.Я.Юдина, С.В.Белова
- 2-е изд.,
перераб.
и доп.- М.:Машиностроение, 1983.
    12. Денисенко Г.Ф. "Охрана
труда".
                        Содержание.
1.
Специальная часть........................................3
1.1.
Введение...............................................4
1.2.
Постановка задачи......................................8
1.2.1.
Дано.................................................8
1.2.2.
Требуется............................................8
1.2.3.
Условия..............................................8
1.2.4.
Внешняя 
спецификация................................8
1.2.4.1.
Входные данные.....................................8
1.2.4.1.1.
Структура информации.............................9
1.2.4.1.2.
Представление синтаксиса ПОЯ на языке описания
грамматик
(ЯОГ).............................................9
1.2.4.1.3.
Дополнительная справочная информация.............13
1.2.4.1.4.
Неформальное описание разделов...................14
1.2.4.1.5.
Тексты примеров..................................15
1.2.4.1.6.
Описание проблемных 
подмножеств.................15
1.2.4.1.7.
Описание дополнительных разделов.................16
1.2.4.1.8.
Представление синтаксических диаграмм............17
1.2.4.2.
Выходные данные....................................17
1.2.4.2.1.
Директивы........................................17
1.2.4.2.2.
Управляющие 
символы.............................20
1.3.
Структура 
комплекса...................................21
1.4.
Общее описание алгоритмов  и внутренних
данных.........22
1.4.1.
Разработка структуры данных..........................22
1.4.2.
Основной алгоритм программы..........................26
1.4.3.
Структура программы..................................29
1.4.4.
Состав программы.....................................31
1.5.
Характеристики программы и возможности их
улучшения...................................................32
2.
Конструкторско-технологическая часть.....................34
2.1.
Введение...............................................35
2.2.
Обоснование выбора технологии тестирования.............35
2.3.
Разработка технологического процесса тестирования......37
3.
Экономико-организационная часть..........................47
3.1
Технико-экономическое обоснование выбора темы...........48
3.2
Расчет сметной стоимости................................48
3.3
Определение трудоемкости программирования задачи  для
ЭВМ.........................................................50
3.4
Оценка экономической эффективности......................52
4.
Охрана труда.............................................54
4.1.
Оценка  возможных  опасных 
и  вредных факторов  на
участке
ПЭВМ................................................55
4.2.
Выбор и расчет системы защиты оператора ПЭВМ от пора-
жений
электрическим током...................................58
4.3.
Пожарная профилактика на участке ПЭВМ..................60
5.
Заключение...............................................63
6.
Литература...............................................64
7.
Приложения...............................................65
7.1.
Руководство оператора..................................66
7.2. Руководство
системного программиста....................75
7.3.
Описание применения....................................99
7.4.
Программа и методика испытаний.........................102
7.5.
Описание программы.....................................108
7.6.
Листинги программ......................................133
7.6.1.
TextMake.............................................
7.6.2.
MekeRep..............................................
7.6.3.
CheckNet.............................................
    4.1. Оценка возможных опасных и вредных
факторов на участ-
ке
ПЭВМ.
    В процессе трудовой деятельности при
нарушении  безопасных
условий
труда на человека могут воздействовать опасные и вред-
ные
производственные факторы.
    Случай воздействия  на работающего опасного производствен-
ного
фактора при выполнении им задания руководителя работ  или
трудовых
обязанностей называется несчастным случаем.
    Воздействие на человека вредного фактора
может привести  к
профессиональному
заболеванию.  Результатом несчастного
случая
является
травма.
   К вредным производственным факторам
относятся:
   а) неоптимальный состав и состояние
воздуха:
      - повышенная запыленность воздуха;
      - повышенная или пониженная влажность;
      - повышенная подвижность;
   б) неоптимальное освещение:
      - недостаток освещенности;
      - неравномерность освещения;
    в) повышенный уровень шума.
    Один из факторов воздействия внешней среды
- микроклимати-
ческие
условия.
    Атмосферный воздух  в 
своем составе содержит (в процентах
по
объему):
      - азот - 78,08;
      - кислород - 20,95;
      - аргон,неон и другие инертные газы -
0,93;
      - углекислый газ - 0,03;
      - прочие газы - 0,01.
    Воздух такого состава наиболее
благоприятен  для  дыхания.
Пары  и 
газы  образуют  с воздухом смеси,  а твердые и жидкие
частицы
вещества - дисперсные системы: 
аэрозоли,  которые де-
лятся
на пыль (размер твердых частиц более 1 мкм), 
дым (менее
1 мкм)
и туман (размер жидких частиц менее 10 мкм). Пыль быва-
ет
крупно- (размер частиц более 150 мкм), средне- (50-100 мкм)
и
мелкозернистой (менее 10 мкм). 
Источником пыли  в  машинном
зале ВЦ
являются трущиеся механические части внешних устройств
ЭВМ,  бумага для АЦПУ и недостаточное
кондиционирование возду-
ха.  Вредные вещества, хорошо растворяясь в
биологических сре-
дах,
способны вступать с ними во взаимодействия, вызывая нару-
шения
нормальной жизнедеятельности. В результате их действия у
человека  возникает 
болезненное   состояние   -  
отравление,
опасность  которого 
зависит от продолжительности воздействия,
концентрации
и вида вещества.
    Человек постоянно  находится 
в процессе теплового взаимо-
действия
с окружающей средой. При благоприятных условиях труда
характеристика  метеорологических показателей в
производствен-
ных
помещениях и на рабочем месте 
следующая:  температура  от
20"С  до 23"С при преимущественно умственной
или легкой мышеч-
ной
работе, допустимая температура - от 19"С до 21"С. При воз-
действии
высокой температуры, интенсивного теплового излучения
возможен
перегрев организма, который характеризуется повышени-
ем
температуры тела, обильным потовыделением, учащением пульса
и
повышением частоты дыхания, резкой слабостью, головокружени-
ем,  а 
в  тяжелых  случаях - появлением судорог или теплового
удара.
Источником высокой температуры в машинном зале ВЦ явля-
ются
внешние устройства ЭВМ: АЦПУ, дисплеи, а также плохая ра-
бота
кондиционеров.  Влажность воздуха
оказывает большое влия-
ние на
терморегуляцию организма.  Оптимальная
величина относи-
тельной
влажности составляет 40-60%.  Движение
воздуха в поме-
щениях  является 
важным фактором,  влияющим на
тепловое само-
чувствие
человека.  Скорость движения воздуха не
должна превы-
шать
0,1 м/с.
    Правильно спроектированное   и 
выполненное  освещение  на
предприятиях  машиностроительной  промышленности 
обеспечивает
возможность   нормальной 
производственной 
деятельности.  При
освещении
производственных помещений используют естественное и
искусственное  освещение. 
Недостаток естественного света пре-
дусматривает
применение системы смешанного освещения. Освещен-
ность  на 
рабочем месте должна соответствовать характеру зри-
тельной
работы, который определяется следующими тремя парамет-
рами:
    - объект 
различения  - наименьший размер
рассматриваемого
предмета;
    - фон - поверхность, прилегающая
непосредственно к объекту
различения;
    - контраст  объекта с фоном - характеризуется соотношением
яркостей
рассматриваемого объекта.
    При работе за дисплеем освещенность
определяется минималь-
ным
объектом различения - шириной линии рукописного или печат-
ного
текста,  который читает программист с
листа.  Для данного
вида
работы нормируемая освещенность составляет 400 люкс.
    Недостаточное освещение  приводит 
к  напряжению   зрения,
преждевременной
усталости и ослабляет внимание. 
Чрезмерно яр-
кое
освещение вызывает ослепление, 
раздражение и резь в  гла-
зах.  Неправильное  направление  света  на рабочее место может
создать
резкие тени, блики и дезориентировать работающего. Это
может
привести к профессиональным заболеваниям.
    Сохранность зрения  человека, 
состояние  его  центральной
нервной  системы и безопасность на производстве в
значительной
мере
зависят от условий освещения.
    В помещениях ВЦ применяется,  как правило, боковое естест-
венное
освещение с К е.о. = 1% и E = 150 лк.
    Для общего  освещения  помещения  ВЦ 
используются   люми-
несцентные
лампы.
    Их достоинство:
      - высокая световая отдача (до 75 лм/вт и
более);
      - продолжительный срок службы (до 10000
часов);
      - малая яркость светящейся поверхности;
      - спектральный состав излучаемого света.
    Одним из недостатков таких ламп является
высокая пульсация
светового
потока,  вызывающая утомление зрения. По
этому коэф-
фициент
пульсации освещенности регламентирован в пределах 10 -
20 % в
зависимости от разряда зрительной работы.
    Одним из наиболее распространенных
факторов внешней среды,
неблагоприятно
воздействующих на организм 
человека,  является
шум.
    Любой источник шума характеризуется прежде
всего  звуковой
мощностью.  Мощность источника Р - это общее количество
звуко-
вой
энергии,  излучаемой источником шума
в  окружающее  прост-
ранство
за единицу времени. Шум вредно действует на организм и
снижает
производительность труда.  Уровень
звукового  давления
по  отношению 
к  порогу слышимости L=120-130 Дб
соответствует
порогу
болевого ощущения.  Звуки, превышающие
по своему уровню
этот
порог, могут вызывать боли и повреждения в слуховом аппа-
рате.
Шум создает значительные нагрузки на нервную систему че-
ловека,
оказывает на него психологическое воздействие.
    Источником шума в машинном зале ВЦ  являются 
механические
устройства
ЭВМ.  Человек,  работая при шуме, привыкает к нему,
но
продолжительное действие сильного шума вызывает общее утом-
ление,
может привести к ухудшению слуха, а иногда и к глухоте,
нарушается
процесс пищеварения,  происходит  изменение 
объема
внутренних  органов. 
Эти вредные последствия шума тем больше,
чем
сильнее шум и продолжительнее его действие. Таким образом,
шум  на 
рабочем месте не должен превышать допустимых уровней,
значения
которых приведены в ГОСТ 12.1.003-83.
               Допустимые уровни шума.
ЙННННННННННННННННННННННСННННННННННННННННННННННННННННННННННННННН»
                      і     Уровни звукового давления в дБ    є
    Рабочее место     і в октавных полосах со среднегеометри- є
                      і ческими частотами,
Гц                 є
                     
ГДДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДД¶
                      і 63 і 125і 250і
500і1000і2000і4000і8000є
ЗДДДДДДДДДДДДДДДДДДДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДД¶

Помещение для размещеі 71 і 61 і 54 і 49 і 45 і 42 і 40 і 38 є
ния
шумных агрегатов і    і    і   
    і    і    і    і   


ЭВМ                  і    і   
    і    і    і    і   
    є
ИННННННННННННННННННННННПННННПННННПННННПННННПННННПННННПННННПННННј
    К опасным производственным факторам
относятся:  повышенное
напряжение
в электрической сети и повышенная пожароопасность.
    4.2. Выбор и расчет системы защиты
оператора ПЭВМ от пора-
жений
электрическим током.
    Проходя через организм, электрический ток
оказывает терми-
ческое,  электролитическое и биологическое действие.
В резуль-
тате  могут возникнуть различные нарушения и даже
полное прек-
ращение
деятельности органов дыхания и кровообращения. Величи-
на  тока, 
протекающего через тело человека, 
является главным
фактором,
от которого зависит исход поражения: чем больше ток,
тем
опаснее его действие.  Пороговый
ощутимый ток - 0,6-1,5 мА
(50
Гц).  Пороговый неотпускающий ток -
10-15 мА (50 Гц) вызы-
вает  сильные и весьма болезненные судороги мышц
грудной клет-
ки,  что приводит к затруднению или даже
прекращению  дыхания.
При  100 
мА ток оказывает непосредственное влияние также и на
мышцу
сердца, что в конечном результате приводит к смерти. На-
иболее
опасным является переменный ток с частотой 20-100 Гц.
   
Исход воздействия тока зависит от 
ряда  факторов,  в  том
числе
от значения и длительности протекания через тело челове-
ка
тока,  рода и частоты тока и
индивидуальных свойств челове-
ка.  Электрическое сопротивление тела человека и
приложенное к
нему
напряжение также  влияет  на 
исход  поражения,  но 
лишь
постольку,  поскольку они определяют значение тока.  Предельно
допустимые
уровни напряжений прикосновений  и  тока 
даются  в
ГОСТ
12.1.038-82.
ЙННННННСННННННННННСНННННННННННННННСННННННННННННННННННННННННННННННН»
сила
ощутимый і допускающийся і                               є
тока
   ток    і  ток с длит.  і 
Фибриляционный  ток          є
(мА)
          і не более 30с  і                               є
ЗДДДДДДЕДДДДДДДДДДЕДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД¶
const
    1     і      15       і                               є
ЗДДДДДДЕДДДДДДДДДДЕДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД¶
      і          і              
                               є
      і          і               і   Длительность протекания    

      і          і              
ГДДДВДДДДДВДДДДДВДДДДДВДДДДДДДДД¶

var  і  
0,3    і      6       
1 і 0,5 і 0,2 і 0,1 і0,08-0,01є
      і (50Гц)   і              
ГДДДЕДДДДДЕДДДДДЕДДДДДЕДДДДДДДДД¶
      і          і              
50 і 100 і 250 і 500 і  
650   є
ИННННННПННННННННННПНННННННННННННННПНННПНННННПНННННПНННННПНННННННННј
    Электрооборудование ВЦ относится к
установкам  напряжением
до  1000 В. 
В помещении машинного зала основными техническими
средствами,
обеспечивающими безопасность работ, являются:
     - заземление;
     - зануление;
     - отключение.
    Защтным заземлением называется намеренное
соединение нето-
коведущих
частей,  которые могут случайно
оказаться под напря-
жением,
с заземляющим устройством.
    Заземлению подлежат корпуса ЭВМ,
трансформаторов, металли-
ческие
оболочки кабелей и проводов, металлические ограждения.
    Для электроустановок с напряжением до 1000
В сопротивление
заземляющего
устройства должно быть не менее 10 Ом.
    Занулением называется намеренное
соединение  нетоковедущих
частей,  которые 
случайно могут оказаться под напряжением,  с
многократно
заземленным нулевым проводом.
    Защитный эффект  зануления 
заключается  в уменьшении дли-
тельности
замыкания на корпус,  а
следовательно,  в сокращении
времени
воздействия электрического тока на человека.
    Защитное отключение - система защиты,
автоматически отклю-
чающая  электроустановку при возникновении опасности
поражения
электрическим
током.
    Для участка персональных компьютеров  наиболее 
приемлемым
вариантом
является защитное заземление, т.к. корпуса компьюте-
ров и
периферии обычно выполнены не из токопроводящих материа-
лов, а
также имеются специальные клеммы для подключения зазем-
ления.
    4.3. Пожарная профилактика на участке
ПЭВМ.
    Пожар - это неконтролируемое горение
вне  отведенного  для
этого
очага. Пожары представляют большую опасность для работа-
ющих и
могут причинить огромный материальный ущерб.
    Для того, 
чтобы  оценить  пожарную опасность,  существует
следующая
классификация:
   1. Строительных материалов и конструкций по
возгораемости:
      - несгораемые;
      - трудносгораемые;
      - сгораемые.
   2. Конструкций по огнестойкости:
      предел огнестойкости - время в часах от
начала испытания
      до возникновения трещин.
   3. Помещений ПУЭ ("Правила Устройства
Электроустановок"):
      - взрывоопасные;
      - пожароопасные.
      Критерий оценки:
      -
содержание сгораемых материалов;
      - тепловой режим обработки.
   4. Производств по пожарной опасности:
      - взрывоопасные;
      - взрывопожароопасные;
      - пожароопасные;
      - непожароопасные;
    Участок ПЭВМ по пожарной опасности
относится  к  категории
пожароопасных
и характеризуется тем, что в помещении находятся
несгораемые
вещества и материалы в холодном состоянии.
    Пожар на 
производстве  может возникнуть
вследствие причин
неэлектрического
и электрического характера.
    К причинам неэлектрического характера
относятся:
    - неисправность производственного
оборудования и нарушение
технологического
процесса;
    - халатное и  неосторожное 
обращение  с  огнем 
(курение,
оставление
без присмотра нагревательных приборов);
    - неправильное устройство и  неисправность  вентиляционной
системы;
    - самовоспламенение или самовозгорание
веществ.
    К причинам электрического характера
относятся:
    - короткое замыкание;
    - перегрузка проводов;
    - большое переходное сопротивление;
    - искрение;
    - статическое электричество.
    Пожарная безопасность может быть
обеспечена мерами  пожар-
ной
профилактики и активной пожарной защитой. Понятие о пожар-
ной
профилактике включает  комплекс  мероприятий,  необходимых
для  предупреждения  возникновения  пожара  или уменьшения его
последствий.  Под активной пожарной защитой  понимаются 
меры,
обеспечивающие  успешную 
борьбу  с  возникающими пожарами или
взрывоопасными
ситуациями.
    Профилактические методы  борьбы с пожарами на участке ПЭВМ
предусматривают:
    1. Организационные:  правильное содержание
помещений,
противопожарный инструктаж служащих, издание прика-
зов по
вопросам усиления пожарной безопасности и т.д.
    2. Технические:  соблюдение 
противопожарных правил,  норм
при
проектировании помещений, при устройстве электропроводов и
оборудования,
отопления,вентиляции, освещения.
    3. Режимные:  запрещение курения в неустановленных местах,
производство
пожароопасных работ в помещении машинного зала ВЦ
и т.д.
    4. Эксплуатационные: своевременные
профилактические осмот-
ры,
ремонты оборудования.
    При проектировании  и 
строительстве зданий и помещений (в
частности,  машинного зала) также должны быть соблюдены
проти-
вопожарные
меры:
    - защита деревянных конструкций
достигается пропиткой  ог-
незащитными  химическими 
препаратами  (например,  антипирена-
ми),покрытием
огнезащитными красками;
    - для ограничения распространения пожара
устраивают проти-
вопожарные
преграды:  стены,  перегородки,  перекрытия, двери,
ворота,люки,  окна. Все это должно быть выполнено из
несгорае-
мых
материалов;
    Необходимо предусмотреть  безопасную 
эвакуацию  людей  на
случай  возникновения пожара.  При пожаре люди должны покинуть
помещение
в течение минимального  времени.  В 
соответствии  с
СНиП
11-2-80 число эвакуационных выходов из зданий, 
помещений
должно
составлять не менее двух.
    Активные методы борьбы с пожарами на
участке ПЭВМ:
    - изоляция  очага горения от воздуха с помощью твердых ве-
ществ
(например, песок, покрывала и т.п.);
    - охлаждение  очага  горения ниже
определенных температур.
Достигается
с помощью воды, но у нее есть ограничения на туше-
ние
легковоспламеняющихся веществ, электроустановок и др., по-
этому
чаще применяют углекислый газ,  который
при соединении с
атмосферой
снижает температуру до -78"С;
    - интенсивное торможение  скорости 
химической  реакции  в
пламени.
В основном для этой цели применяют порошки;
    - механический срыв пламени в  результате 
воздействия  на
него
сильной струи газа или воды.
    Для тушения пожаров в машинном зале
ВЦ  необходимо  приме-
нять
углекислотные и порошковые огнетушители, которые обладают
высокой
скоростью тушения,  большим временем
действия, возмож-
ностью
тушения электроустановок, высокой эффективностью борьбы
с
огнем.
    Исходя из 
норм пожарной безопасности (см. 
"Справочник по
ТБ"
П.А.Долина), для машинного зала ВЦ площадью до 100 мэ (для
нашего  случая 
около  40  мэ) 
требуются  следующие первичные
средства
пожаротушения:
    - один 
углекислотный  огнетушитель типа
ОУ-5 или ОУ-8,  с
помощью
которого можно тушить загорания различных материалов и
установок
напряжением до 1000 В;
    - один химпенный (ОХП-10) или
воздушно-пенный огнетушитель
(ОВП-5  или 
ОВП-10),  с помощью которого
можно тушить твердые
материалы
и горючие жидкости (кроме установок 
под  напряжени-
ем);
    - войлок, кошму или асбест (1Х1; 2Х1,5;
2X2 м).
    Вместо углекислотного  допускается 
применение порошкового
огнетушителя
(например, типа ОК-10).
    Помещение машинного зала должно быть
оборудовано пожарными
извещателями,
которые позволяют оповестить дежурный персонал о
пожаре.
    Пожарные извещатели преобразуют
неэлектрические физические
величины  (излучение 
тепловой или световой энергии, 
движение
частиц
дыма) в электрические,  которые в виде
сигнала  опреде-
ленной
формы направляются по проводам на приемную станцию.
    В качестве пожарных извещателей в машинном
зале устанавли-
ваются  дымовые 
фотоэлектрические 
извещатели  типа ИДФ-1 или
ДИП-1.
    Исходя из 
высоты потолка (4 м) и площади помещения (30-40
мэ) по
нормам достаточно одного извещателя 
на  машинный  зал.
Эти
устройства характеризуются высокой скоростью и надежностью
срабатывания
и работают на принципе рассеяния 
частицами  дыма
теплового
излучения.
    Преимуществом извещателей  является 
их  безинерционность,
большая  контролируемая площадь.  Недостатком является возмож-
ность
ложного срабатывания и высокая стоимость.
                  7. П р и л о ж е н и я
    1.1. Введение.
    По 
мере развития средств вычислительной техники и внедре-
ния их
в повседневную практику все большее значение приобрета-
ют
справочные системы. Языки проектирования и программирования
все
более усложняются, а их число увеличивается. Соответствен-
но к
этим языкам  подстраиваются  справочно-обучающие програм-
мы,  которые позволяют оперативно выдавать
требуемую помощь по
языку,  позволяют качественно и, главное, быстро
обучать прог-
раммистов.
Изобилие языков проектирования и программирования и
привело  к идее унификации справочников.  Одним из мировых ли-
деров,
позволяющих встраивать мощные справочные системы в свои
программы,  являются фирмы Borland International, а
также Tur-
boPower
Software.
    Вместе с тем в Российском Научно  Исследовательском Инсти-
туте
Информационных  систем  и  на
кафедре "Специализированные
Вычислительные
Комплексы"  МИЭМ  ведутся 
разработки справочно
обучающих
систем по языкам VHDL и Паскаль. Эти разрабатываемые
системы
потребовали унифицированной программы построения спра-
вочников
по  формальным языкам  программирования, проектирова-
ния и
управления. Коротко рассмотрим  место
комплекса программ
построения
справочников по формальным языкам в комплексе прог-
раммных
средств поддержки формальных языков  на
примере  языка
VHDL.
    Язык VHDL в настоящее время используется
в  качестве миро-
вого  стандарта 
описания  вычислительных
систем  (ВС)  любого
уровня
сложности (микросхема,  плата,  блок, 
устройство, ЭВМ,
комплекс).
Разработка средств  подготовки  описаний 
на  языке
VHDL
позволит интегрировать процесс проектирования 
ВС, приоб-
щиться
к богатству моделей ВС, наработанных во всем мире.
    Подсистема САПР  вычислительных 
систем  по  подготовке их
описаний
на  языке  VHDL  (ПОП VHDL)
предназначена для ввода и
анализа
текстов на языке VHDL  под управлением
системы и с  ее
помощью,
получения справочной информации по языку VHDL, обуче-
ния
синтаксису языка VHDL.
    ПОП VHDL может использоваться как на
этапе  освоения языка
VHDL,  так 
и в  качестве помощника при
подготовке текстов  на
языке
VHDL. Пользователь системы при этом освобождается от не-
обходимости
запоминания подробностей синтаксиса языка.
    При 
использовании ПОП VHDL для целей обучения и подготов-
ки
текста пользователь должен иметь 
представление о принципах
построения
описания ВС на языке VHDL.
    ПОП VHDL может также  использоваться для проверки знаний о
синтаксисе  языка 
VHDL с  возможностью
обучения  по отдельным
разделам.
  Структура комплекса программных средств
поддержки языка VHDL.
ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
       ЪДДДДДДДДДДДДДДДї     ЪДДДДДДДДДДДДДДї і   ЪДДДДДДДДДДї
       і 
Текстовый    Г<ДДД>ґ   Интегриро- і і   і          і
       і  
редактор    ЖНННН>µ    ванная   
   і Диспетчері
       АДДДДДДД^ДДДДДДДЩ     ісреда подго-  Г<ДДД>ґ         
<Дї
               є             ітовки описанийі і  
          і  і
       ЪДДДДДДДVДДДДДДДї     АДДДДДДДДДДДДДДЩ і   АДДДДДДДДДДЩ  і

ЙНННН>µСинтаксически- і         ^ ^ ^
^      і                 і

     іуправляемый    ЖНННННННННј і і і      і                 і

ЪДД>ґввод текста    Г<ДДДДДДДДДДЩ
      і                 і

   АДДДДДДД^ДДДДДДДЩ             і і      і   ЪДДДДДДДДДДї  і

           є                     і і     
   іДемонстра-і  і

   ЪДДДДДДДVДДДДДДДї             і і      Г<Д>ґ   тор    і 


   і   
Анализ     Г<ДДДДДДДДДДДДЩ
      і   АДДДДДДДДДДЩ  і

   АДДДДДДДДДДДДДДДЩ               і      і                 і

ЪДДДДДДДДДДДДДДДДДДДДДДДДДДї      
      і                 і

А>      Cправочник          і       і      і                 і

  і ЪДДДДДДДДДДДДДДДДДДДДДї  і      
      і                 і

  і іСправочник по языку  і 
       і      і                 і

  і і         VHDL        і  Г<ДДДДДДЩ      і                 і

  і і 
ЪДДДДДДДДДДДДДДДї  і  і              і                


ИННШНШННµ   Примеры     і 
 
ГДДДДДДДДДДДДДДіДДДДДДДДДДДДДДДДДЩ
    і і 
АДДДДДДДДДДДДДДДЩ  і  і              і
    і і 
ЪДДДДДДДДДДДДДДДї  і  і              і
    і і 
  Описание     і 
  і              і
    і і 
языка VHDL    і  і  і              і
    і і 
АДДДДДДДДДДДДДДДЩ  і  і              і
    і і 
ЪДДДДДДДДДДДДДДДї  і  і              і
    і і 
Синтаксические і  і  і              і
    і і 
диаграммы языкаі  і  і              і
    і і 
     VHDL      і 
  і              і
    і і 
АДДДДДДДДДДДДДДДЩ  і  і              і
    і і 
ЪДДДДДДДДДДДДДДДї  і  і              і
    і і 
Стандартные   і  і  і              і
    і і 
процедуры,    і  і  і              і
    і і 
функции,типы  і  і  і              і
    і і 
     VHDL      і 
  і              і
    і і 
АДДДДДДДДДДДДДДДЩ  і  і              і
    і АДДДДДДДДДДДДДДДДДДДДДЩ  і              і
    і   
ЪДДДДДДДДДДДДДДДї     і              і
    і   
  Справочник   і    
              і
    і   
  по ПОП VHDL  і    
              і
    і   
АДДДДДДДДДДДДДДДЩ     і              і
    АДДДДДДДДДДДДДДДДДДДДДДДДДДЩ              і
АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ
                           Рис. 1.1.
    Инструментальные средства ориентированы на
создание  ПОП в
среде
Turbo Pascal и включают в себя:
    - программы преобразования информации;
    - программные модули  на языке Turbo Pascal,  в частности,
универсальный
синтаксический анализатор, модуль СУ-ввода.
    При построении  ПОП используются модули универсальных биб-
лиотек,
обеспечивающие  интерфейс с
пользователем, в  частнос-
ти,
интерпретаторы справочников, Turbo Professional, Turbo Vi-
sion,
Pascal For Windows.
    Структура 
связи  
программно-информационного 
обеспечения
ПОП и
инструментальных средств приведена на рис. 1.2.
                            ЪДДДДДДДДДДДї   ЪДДДДДДДДДДДДДДДДДДДДДї
ХННННННННННННННННННё        іМетатрансляі   і Загрузочный модуль  і
   Исходный файл  і ЙННННН>µ   тор     ЖН» і подсистемы подготов-і
                  і є      АДДДДДТДДДДДЩ є і    ки описаний      і
    грамматики    і є            V       є і   
ЪДДДДДДДДДДДї    і

ЪДДДДДДДДДДДДДДї і є      ХНННННКНННННё
    іЛексическиеі    і

Связь с лекси-і і є      іГрамматика і
    іпроцедуры  і   


ческими проце-ЖНШН№      ідля
разбораЖНєНШН»  АДДДДДВДДДДДЩ    і

    дурами    і і є      АДДДДДТДДДДДЩ
        ^          і

АДДДДДДДДВДДДДДЩ і є            V       є і є  
ЪДДДДБДДДДДДДї  і
          і       і є     
ЪДДДДДРДДДДДї МНШНєН>НµИнтерфейс  
  і
          V       і є      і Программа
   іс лексическ.і  і
     ЪДДДДБДДДДДї і є      і обработки і є і є   іпроцедурами і  і
     і          ЖНШН№     
синтаксичесі є і є  
АДДДД^ДДДДДДДЩ  і

ЪДДДґСинтаксис і і є   ЙН>µ    ких   
       `АДДДДДДДДї і

   і          ЖНШНєН» є 
диаграмм   і є і є  ЪДДДДДДДДДДДДї і і

   АДДДДВДДДДДЩ і є є є  АДДДДДТДДДДДЩ є і є  іСемантичес- і і і

        ^       і є є є        V       ИНШНєН>µкие проце-рыі і і

        і       і є є є ХННННННКНННННё  
  АДДДДДД^ДДДДДЩ і і

   ЪДДДДБДДДДДї і є є є
Синтаксичес-і   і є  ЪДДДДДДБДДДДДї і і

   іФормальнаяі і є є є ікие
диаграм-і   і є  іСинтакси-кийГДЩ і

   ісемантика ЖНШНј є є імы для      ЖН» і МН>µ автомат    Г<ї і

   і          і і   є є
интерпрета- і є і є  АДДДДДДВДДДДДЩ і і

   АДДДДДДДДДДЩ і   є є і      
ции  і є і є         ^       і і

   ЪДДДДДДДДДДї і   є є АДДДДДДДДДДДДЩ є і є  ЪДДДДДДБДДДДДї і і

АДДДґСправоч-  і і   є є  
ЪДДДДДДДДДДї є і ИН>µ 
СУ-ввод   і і і
     і     
ная ЖНШНННКНєНН>µПрограмма і ИНШНН>Нµ            і і і
     іинфор-ция і і     є   іпостроенияі   і ЪДДБДДДДДДВДДДДДЩ і і
     АДДДДДДДДДДЩ і     МНН>µсправочни-і   і
  ЪДДДДДД^ДДДДДї і і
                  і     є   і  ков    
   і і  іИнтегри-ная ГДЩ і
АДДДДДДДДДДДДДДДДДДЩ     є  
АДДДДДТДДДДЩ   і і  і среда     
   і
                         є         є        і і 
АДДДДДДВДДДДДЩ   і
ХННННННННННННННННННё     є        
V        і і         V         і
  Синтаксические  і     є   ХНННННКННННё   і і  ЪДДДДДДБДДДДДї   і
    диаграммы     ЖНННННј   і  Help-  
   і АД>ґHelp-интер- і   і
АДДДДДДДДДДДДДДДДДДЩ         і 
файл   
ЖНННШНН>Нµпретатор    і   і
                             АДДДДДДДДДДЩ   і   
АДДДДДДДДДДДДЩ   і
                                           
АДДДДДДДДДДДДДДДДДДДДДЩ
                             Рис. 1.2.
    1.2. Постановка задачи.
    1.2.1. Дано:
    множество 
текстовых файлов, содержащих следующую информа-
цию о
формальном языке:
    - синтаксис проблемно-ориентированного
языка;
    - справочная информация;
    - проблемные подмножества;
    - лексика проблемно-ориентированного
языка;
    - семантика проблемно-ориентированного
языка;
    - основные понятия;
    - моделирование;
    - предопределенные объекты;
    - комментарии.
    1.2.2. Требуется:
    - разработать и написать программу,  конвертирующую  вход-
ные
данные в файл, представляющий собой данные для специально-
го
компилятора MakeHelp  фирмы  TurboPower 
Software.  (Формат
файла
см. ниже);
    - разработать и написать программу,  конвертирующую  вход-
ные
данные  в  текстовый  файл
документации (отчета) о входном
языке в
виде, пригодном для распечатки;
    - разработать и написать  программу, 
предназначенную  для
проверки
имен нетерминалов.
    1.2.3. Условия:
    - входная 
информация может  быть
представлена любым коли-
чеством
текстовых файлов;
    - наличие синтаксических диаграмм Вирта
является не обяза-
тельным.
    1.2.4. Внешняя спецификация.
    1.2.4.1. Входные данные.
    1.2.4.1.1. Структура информации.
    Входная информация представлена на языке
описания  грамма-
тик
(ЯОГ), которые являются  входными  данными 
для ряда прог-
раммных
систем.
    Для 
построения  справочников должна
быть задана следующая
информация
о проблемно-ориентированном языке (ПОЯ):
    - синтаксис ПОЯ с  учетом ограничений, накладываемых мето-
дом
синтаксического анализа;  синтаксис
задается в модифициро-
ванной
расширенной  форме Бэкуса-Наура (МРБНФ)  и в форме син-
таксических
диаграмм Вирта; перевод;
    - справочная информация,  включающая неформальное описание
синтаксиса
и семантики и  примеры текста на  ПОЯ для различных
синтаксических  конструкций, а также дополнительную
справочную
информацию;
    - информация для форматирования набранного
текста;
    Следующая информация должна
игнорироваться:
    - лексика ПОЯ - процедуры лексического
анализа;
    - семантика  ПОЯ;
    - комментарии.
    Информация должна быть представлена в следующих
файлах:
    - файл 
грамматики (расширение 
"по  умолчанию" -  "grm"),
представляющий
грамматику ПОЯ в МРБНФ, нагруженную на справоч-
ную
информацию  и семантические  процедуры. 
В головном  файле
грамматики
могут  подключаться с помощью  конструкции $include
другие
файлы;
    - файл синтаксических диаграмм
(расширение  по "умолчанию"
-
"grd").
    1.2.4.1.2. Представление синтаксиса ПОЯ
на  языке описания
грамматик
(ЯОГ).
    Текст описания на ЯОГ содержит некоторую
совокупность пра-
вил,  описывающих некоторое понятие (нетерминал),
ограниченных
символом
"точка с запятой"
    Текст записывается в свободном формате.
Пробелы, не заклю-
ченные  в 
кавычки,  апострофы и угловые
скобки  игнорируются.
Комментарии
заключаются между парами символов /* и */.
    Имя 
нетерминала  -  произвольная последовательность букв,
цифр,
символов тире, подчеркивания, апостроф, пробел.
    Имя нетерминала заключается в угловые
скобки.
    Пример обозначения нетерминалов:
               <имя>
               <оператор_присваивания>
               <оператор присваивания>
    Длина имени нетерминала не  должна превышать 80  символов.
Терминальные
цепочки  языка должны  быть заключены  в  кавычки
или
апострофы.
    Пример цепочек терминальных символов:
    ЪДДДДДДДДДДДДДВДДДДДДДДДї
    іОБОЗНАЧЕНИЕ  і ЦЕПОЧКА і
    ГДДДДДДДДДДДДДЕДДДДДДДДДґ
    і  
'IF'      і   IF   

    і  
"IF"      і   IF   

    і 
"<="       і   <=   

    і  
'+'       і    +   

    і  
"["       і    [   

    АДДДДДДДДДДДДДБДДДДДДДДДЩ
    Длина цепочки не должна превышать 80
символов.
    Правило ставит в соответствие некоторому
понятию (нетерми-
налу) в
левой части  выражение, содержащее
нетерминалы, терми-
налы и
служебные символы  в  правой части. Части разделяются с
помощью
знака равенства.
    Например:
     <ОПЕРАТОР ПРИСВАИВАНИЯ> =
<ИМЯ> ':=' <ВЫРАЖЕНИЕ>;
    Синтаксическая диаграмма для нетерминала
<оператор присва-
ивания>
ОПЕРАТОР
ПРИСВАИВАНИЯ
  і
  АДДД <ИМЯ> ДДДД := ДДДДДД
<ВЫРАЖЕНИЕ>
    Альтернативные определения понятия
(операция "ИЛИ") разде-
ляются
символом "восклицательный знак", например:
<ОПЕРАТОР>
= <ОПЕРАТОР ПРИСВАИВАНИЯ> ! <УСЛОВНЫЙ ОПЕРАТОР>;
ОПЕРАТОР
    і
    ГДДДДДДД <ОПЕРАТОР ПРИСВАИВАНИЯ>
ДДДДДДДДї
    і                                        і
    і                                        і
    АДДДДДДДДДДДД <УСЛОВНЫЙ ОПЕРАТОР>
ДДДДДДДБДДДДДДД
    Запись 
[A] означает  повторение символа
А нуль  или  один
раз,
например для нетерминала <РЕЖИМ ЗАПИСИ>:
    <ОПЕРАТОР ЗАПИСИ> = ЗАПИСАТЬ [
<РЕЖИМ ЗАПИСИ> ]
                                   <СПИСОК
ВЫВОДА>;
ОПЕРАТОР
ЗАПИСИ
     і
     АДДДДДЗАПИСАТЬДДДДВДДД<РЕЖИМ
ЗАПИСИ>ДДВД<СПИСОК ВЫВОДА>ДДД
                       і                   і
                       АДДДДДДДДДДДДДДДДДДДЩ
    Запись 
[A]... означает повторение 
символа А произвольное
число
раз (нуль и более), например:
  <СПИСОК ВЫВОДА> = <ЭЛЕМЕНТ
ВЫВОДА> [,<ЭЛЕМЕНТ ВЫВОДА>]...; (*)
СПИСОК
ВЫВОДА
       і
       АДДДДДДВДДД<ЭЛЕМЕНТ ВЫВОДА>ДДВДДДДДД
              ^                     і
              АДДДДДДДДДДД, ДДДДДДДДЩ
    Запись (А)... означает повторение символа
А не менее одно-
го
раза, например:
       <СОСТАВНОЙ ОПЕРАТОР> = 'BEGIN'
(<ОПЕРАТОР>)...'END';
СОСТАВНОЙ
ОПЕРАТОР
          і
         
АДДДДДДBEGINДДДДДДВДДДД<ОПЕРАТОР>ДДДДДДВДДДENDДДДД
                            ^                    і
                           
АДДДДДДДДДДДДДДДДДДДДЩ
    Запись 
(А)R... означает повторение символа А не менее од-
ного
раза с разделителем (то есть ARARA...), например, выраже-
ние (*)
может быть заменено более компактным:
       <СПИСОК ВЫВОДА> = (<ЭЛЕМЕНТ
ВЫВОДА>) ','...;
    Круглые скобки, кроме того, могут
использоваться как в лю-
бых  других выражениях для задания приоритета
операций, напри-
мер:
        <УСЛОВИЕ> = <ВЫРАЖЕНИЕ> (
"=" ! "/=" ! "<" ! ">" )
                    <ВЫРАЖЕНИЕ>;
УСЛОВИЕ
   АДДДДДДД <ВЫРАЖЕНИЕ> ДДДДДВД  = 
ДДДДДДДДДДДДї
                             і                  і
                             ГДД  \= ДДДДДДДДДДДґ
                             і                  і
                             ГДДДДДД  < ДДДДДДДДґ
                             і                  і
                             АДДДДДДДДДД  < ДДДДБД<ВЫРАЖЕНИЕ>ДДД
    Пример (1) перевода синтаксической
диаграммы на ЯОГ:
       ОПЕРАТОР
          АДДВДДДДДДД<ИМЯ>
ДДДДДДДД:=ДДДДД<ВЫРАЖЕНИЕ>ДДДДї
             і                                           і
             іДДДДДДДДCALL
ДДДДДДДДДД<ИМЯ>ДДДДДДДДДДДДДДДґ
             і                                           і
            
ДДДДДДДДДДBEGINДДДВД<ОПЕРАТОР>ДДДВДД<END>ДДґ
             і                  ^             
         і
             і                  АДДДДДДД; ДДДДДЩ         і
             і                                           і
            
АДДДДДДДДДДДД<УСЛОВИЕ>ДДДДTHENДДД<ОПЕРАТОР>ДБДДДДДД
     <ОПЕРАТОР> =
<ИМЯ>':='<ВЫРАЖЕНИЕ> !
                   'CALL'<ИМЯ> !
                   'BEGIN' (<ОПЕРАТОР>)';'...'END'
!
                   'IF'<УСЛОВИЕ> THEN
<ОПЕРАТОР>;
    Пример (2) перевода синтаксической
диаграммы на ЯОГ:
ОБЪЯВЛЕНИЕ
VAR
   ГДДД VAR ДДї
   і         

   АДДД VA ДДДБД ;
ДВДДД<ТИП>ДДД<КЛАСС>ДВД<ЭЛЕМЕНТ_СПИСКА>ДДї
                    і                   ^                   і
                    ^                   АДДДДДДДД , ДДДДДДДДґ
                    і                                       і
                    АДДДДДДДДДДДДДДДДДДДДД ;
ДДДДДДДДДДДДДДДБДДД
   <ОБЪЯВЛЕНИЕ_VAR> = ('VAR' ! 'VA') ';'
                  (<ТИП><КЛАСС>
(<ЭЛЕМЕНТ_СПИСКА>','...))';'...;
    Синтаксис ЯОГ, заданный с помощью ЯОГ:
  <грамматика> = (<правило>  ";")... ;
  <правило>    =  <нетерминал>
"=" <выражение> ;
  <выражение>  = (<терм>) ... ;
  <терм>       = (<множитель>) ... ;
  <множитель>  =  <нетерминал> !
                  <терминал>   !
   "[" <выражение>
"]"   [ " ... " ] !
   "(" <выражение>
")"   [  [ <нетерминал>!<терминал>]"
..." ] ;
   <нетерминал> = "<"<имя_нетерминала>
">";
   <терминал>   = 
<апостроф><терминальная_цепочка><апостроф> !
                  
<кавычки><терминальная_цепочка><кавычки> ;
   <имя нетерминала> =
(<символ_имени_нетерминала> )... ;
   <терминальная_цепочка> =
(<символ_терминальной_цепочки>) ... ;
   <символ_имени_нетерминала> =
<русская_буква> !
                <латинская буква> !
                <цифра> !
                 "_" ! "-"
! "'" ! " " ;
   <символ_терминальной_ цепочки> =
<графический_символ> ;
    Первый нетерминал в тексте на ЯОГ
считается начальным сим-
волом
грамматики.
    1.2.4.1.3. Дополнительная справочная
информация.
    В 
файле  описания  грамматик,  
помимо  синтаксиса  ПОЯ в
МРБНФ,
представлена следующая дополнительная справочная инфор-
мация,
используемая при формировании справочника:
    - неформальное описание (в частности
синтаксиса и семанти-
ки)
разделов, соответствующих синтаксическим конструкциям;
    - тексты примеров по отдельным разделам;
    - описание конструкций лексического
уровня;
    - описание проблемных подмножеств;
    - описание дополнительных разделов.
    Приведем 
пример представления информации 
для конструкции
<вызов
процедуры> , а затем сформулируем правила.
    <вызов процедуры> =
 /H
    В 
операторе вызова  процедуры  после 
\Bимени процедуры\b
(<идентификатор>)
в круглых скобках указан <список фактических
параметров>.
    Процедура 
должна  быть  предварительно  описана в данном
программном
модуле.
    Допустимы \Iстандартные процедуры\i :
   
Read - читать
    Write - писать
     /X
       MYPROC (A,5,7) (* обращение к процедуре
MYPROC
                         с параметрами A,5,7
*)
 ------------------------------------------------------
       READ (A,B)     (* обращение к стандартной процедуре
     READ с параметрами А,В - читать значения
переменных *)
     Х/
   Н/
       <идентификатор> '(' <список
фактических параметров> ')';
    1.2.4.1.4. Неформальное описание разделов.
    Текст неформального описания раздела
ограничивается симво-
лами /H
в начале текста и  H/ в конце.
Текст  располагается на
следующей
строке после имени нетерминала и знака равенства пе-
ред
описанием нетерминала в МРБНФ.
    Рекомендуется  строки текста начинать с символа пробела. В
этом  случае осуществляется  перевод строки при выводе текста.
Допустимы
следующие директивы управления форматом вывода:
    !PAGE - перейти к следующему кадру
    !LINE - перейти к следующей строке
    Директивы должны располагаться в начале
строки.
    В тексте могут быть указаны  имена нетерминалов, заключен-
ные
в  угловые скобки (в  примере 
- <идентификатор>, 
<список
фактических
параметров>). Таким образом можно организовать пе-
реход к
соответствующим разделам справочника.
     Для выделения фрагментов текста, на
которые следует обра-
тить
внимание,  другим цветом следует  использовать, в зависи-
мости
от цвета, конструкции:
     \Bтекст\b
     \Iтекст\i  .
    В конце 
справочного раздела может содержаться раздел при-
меров.
    1.2.4.1.5. Тексты примеров.
    Тексты примеров ограничены  символами /X и X/. Также,  как
и
при  неформальном описании раздела,
рекомендуется строки на-
чинать
с пробела;  допускается  использовать директивы !PAGE и
!LINE.
    Конструкции выделения текста не
допускаются.
    1.2.4.1.6. Описание проблемных
подмножеств.
    Для ПОЯ может быть определено несколько
проблемных подмно-
жеств.
Например, для  языка VHDL можно
выделить  подмножества,
связанные  со способом описания вычислительной системы
(струк-
турное,
поведенческое, потоковое  описание) и с
уровнем  слож-
ности
описания (уровни  0,1,2). Таким образом
можно определить
девять
подмножеств языка VHDL.
    Формат описания грамматики для  подмножества тот же, что и
для
основного множества. При этом все синтаксические конструк-
ции
подмножества заключаются в операторные скобки
                 /U<имя_подмножества>
                    ........
                 U/
    В определение  подмножества включаются только синтаксичес-
кие
конструкции, описание которых отличается 
от  полного ПОЯ.
Первым
указывается головной нетерминал подмножества.
    Пример:
                
/U<потоковое_описание_0>
                   <architecture_body>=
                   /H
                     ....
                   H/
                  
"arhitecture"<indentifier>...;
                  
<concurrent_statement>=
                    .......
                 U/
    1.2.4.1.7. Описание дополнительных
разделов.
    К дополнительным разделам относятся  разделы, 
несвязанные
с
конкретными синтаксическими конструкциями. 
В частности, для
языка
VHDL можно выделить разделы:
            - основные понятия;
            - семантика;
            - моделирование;
            - предопределенные объекты.
    В свою очередь эти разделы могут
включать  список разделов
нижнего
уровня, например, для предопределенных объектов:
            - предопределенные типы;
            - предопределенные атрибуты и пр.
    Для 
задания  дополнительных разделов
используют следующий
синтаксис:
           
/A<имя_раздела>=...определения...;
            список определений входящих
разделов
             A/
    Определение раздела может отсутствовать.
    Пример:
             /А<предопределенные
объекты>=
               /H
                 объекты,предопределенные в
языке и в
                 стандартных пакетах
               H/;
               <предопределенные типы>=;
               <предопределенные
атрибуты>=;
                   .....
            A/
             /A<предопределенные типы>
                <Integer>=
                  /H....H/;
                <Real>
                 ...
             A/
    1.2.4.1.8.  Представление синтаксических диаграмм.
    Синтаксические  диаграммы размещаются в 
текстовом  файле,
имеющем  расширение GRD. Синтаксические  диаграммы 
отделяются
друг от
друга с помощью пустых строк.
    Длина строк в файле синтаксических
диаграмм не должна пре-
вышать
43 символа. Желательно, чтобы одна синтаксическая диаг-
рамма
занимала  не  более 12 строк. В противном случае следует
учесть
разделение диаграмм на кадры, содержащие 12 и 19 строк.
    Примеры 
построения  синтаксических  диаграмм 
приведены в
разделе
1.2.4.1.2.
    1.2.4.2. Выходные данные.
    Выходная 
информация  представлена  в 
виде промежуточного
файла,
который должен быть обработан 
специальным компилятором
MakeHelp
- фирмы TurboPower Software.
    Расширение файла "по умолчанию"
- "txt".
    1.2.4.2.1. Директивы.
    Ключевыми элементами являются директивы.
Директивы в текс-
товом
файле помечаются восклицательным знаком в первой позиции
строки,
за ним сразу следует  имя директивы, а
затем параметры
модификации,
отделенные от имени  директивы одним или
несколь-
кими
пробелами.
    Далее следует описание директив.
    !WIDTH <значение>
    ______
    Определяет число позиций, занимаемых
активной порцией окна
подсказки.
По умолчанию, ширина окна устанавливается на 40 по-
зиций.
Директива !WIDTH должна применяться до первой директивы
!TOPIC.
    Пример:
    !WIDTH 70
    !TOPIC <номер> [имя]
    ______
    Каждый 
пункт  подсказки  должен 
начинаться  с  директивы
!TOPIC.
Номер пункта 0 зарезервирован для внутреннего 
исполь-
зования
системой. Директива !TOPIC может также специфицировать
имя  пункта, 
которое начинается с первого непустого 
символа,
следующего
за номером пункта. Имя пункта обычно выводится 
как
заголовок
окна помощи и является точкой входа в индекс пунктов
(каталог).
    Каждый файл должен иметь  по крайней мере один пункт и со-
ответственно
директиву !TOPIC.
    Пример:
    !TOPIC 1 Первый раздел помощи
    !TOPIC 22
    !INDEX <Индексный номер>
    !NOINDEX
    ______________________
    Эта директива управляет появлением пункта
в главном индек-
се
пунктов (каталоге). Директивы !INDEX и !NOINDEX при исполь-
зовании  должны быть введены на строке,  которая следует сразу
же за
директивой !TOPIC.  Если этих директив
нет, то в главном
индексе
этот пункт появится в алфавитном порядке.
    Любое 
имя пункта может быть исключено из главного индекса
с
помощью директивы !NOINDEX.
    Изменить порядок расположения  пунктов 
в  главном индексе
(каталоге)  можно с помощью  директивы !INDEX  и
следующего за
ней
индексного номера. Пункты с более низкими индексными номе-
рами  будут выводится в  начале главного  индекса
пунктов, а с
высшими
в конце индекса, не  обращая внимания на
обычный алфа-
витный
порядок.
    Пункты в главном индексе сортируются в
следующем порядке:
    1. Пункты с индексными номерами
меньше  $7777 в восходящем
алфавитном
порядке.
    2. Пункты без директив !INDEX  в восходящем алфавитном по-
рядке.
    3. Пункты с  индексными номерами больше $7777 в восходящем
алфавитном
порядке.
    Примеры:
    !TOPIC 1 Help on Help
    !INDEX 1
    !TOPIC 2 Второстепенный подпункт
    !NOINDEX
    !TOPIC 3 Алфавитный порядок
    !TOPIC 4 Последний пункт
    !INDEX 32000
    !LINE
    _____
    Эта 
директива заставляет закончить текущую строку текста,
вставив  разделитель строки. Так как слова  в тексте автомати-
чески
переносятся, то разделители строк  при
окончательном по-
явлении
справки на экране  не обязательно будут
такими же  как
и в
изначальном текстовом файле.
    !PAGE
    _____
    Эта директива заставляет закончить текущую
страницу  текс-
та,  вставив разделители строк для того, чтобы
текст  выглядел
лучше.
    !INCLUDE <Имя включаемого файла>
    ________
    С 
того места, где поставлена эта директива  в  нормальный
ход
текста справки будет считываться указанный файл.
    Пример:
    !INCLUDE special.txt
    Кроме того, можно ввести комментарии
-  они 
не появляются
на  экране при 
выводе окна справки.  Комментарий
начинается с
точки с
запятой в первой позиции любой строки.
    Пример:
    ;Этот текст игнорируется.
    1.2.4.2.2. Управляющие символы.
    Особые 
управляющие символы позволяют 
разнообразить вывод
файла
справки на экран. С их помощью можно 
добавить специаль-
ные видео
атрибуты или определить перекрестную ссылку 
перехо-
да к
пунктам другой помощи.
    Символы, управляющие видео атрибутами:
    ^A Включает специальный атрибут A
    ^B Включает специальный атрибут B
    ^C Включает специальный атрибут C
    Пример:
    Нормальные атрибуты ^Aвыделенный текст^A
нормальный
    текст.
    Для того, чтобы  указать на какую перекрестную ссылку  пе-
рейти,
необходимо использовать конструкцию:
    ^Dnnn^Etext^E
    Управляющий символ ^D предшествует ссылочному
номеру пунк-
та
"nnn", который выражается десятичными цифрами. Номер пункта
заканчивается
^E, за которым непосредственно следует текст пе-
рехода,
который надо выделить.  Второй  символ 
^E заканчивает
выделенный
текст.
    Пример:
    Выберите ^D1^E HelpOnHelp ^E для получения
информации о
    том, как пользоваться ^D8^EСправочником^E.
    В настоящем тексте подсказки символы,
показанные крышечкой,
будут в
действительности  управляющими
символами. Если пользо-
ватель
переместит  высвеченную  полосу 
на  слово HelpOnHelp и
нажмет
клавишу <Enter>, то появится пункт справки номер 1.
    1.3. Структура комплекса.
    В 
комплекс программ построения справочников по формальным
языкам
входят следующие программные средства:
    - программа преобразования МРБНФ  и 
синтаксических  диаг-
рамм  Вирта в промежуточный файл, пригодный для
обработки ком-
пилятором
MakeHelp;
    - программа, конвертирующая входные данные
в файл отчета о
входном
языке;
    - программа, проверяющая имена
нетерминалов.
    Для создания этих программных компонентов
требуется  набор
инструментальных
средств.
    Основное 
требование к инструментальным средствам: освобо-
дить
разработчика справочников и обучающих программ от необхо-
димости  создания проблемно-независимых компонентов и
потребо-
вать от
него задания только проблемно ориентированной информа-
ции.
При этом  требуется,чтобы исходная  информация для созда-
ния
различных компонентов справочников  и
подсистем подготовки
описаний
была построена  по единому принципу  и  не
дублирова-
лась.
    Для построения  различных компонентов 
пользователь должен
описать
грамматику  ПОЯ  в 
модифицированной расширенной форме
Бэкуса-Наура
(МРБНФ)  (РБНФ описана в работе [2,3]).
Далее не-
обходимо  "нагрузить" грамматику на
информацию о  лексике, се-
мантике
ПОЯ и справочную информацию, а также задать дополните-
льную
информацию в зависимости от создаваемых компонентов.
    Структура 
комплекса программ построения 
справочников  по
формальным
языкам представлена на рисунке 1.3.
                                   
ЪДДДДДДДДДДї
   ХННННННННННННННННННё   ЙНННННННН>µПрограмма і   ХННННННННННё
   і 
Исходный  файл  і   є         іпостроенияЖН>Нµ   Help- 

   і   
грамматики    і   є 
ЙННННН>µсправочни-і   і   файл  

   і    
ЪДДДДДДДДДДї і   є  є     
  ков     і   АДДДДДДДДДДЩ
   і    
          і і   є  є      АДДДДДДДДДДЩ
   і ЪДДДґСинтаксис і і   є  є
   і і  
          ЖНШННН№  є     
ЪДДДДДДДДДДї
   і і  
АДДДДДДДДДДЩ і   МННєННННН>µПрограмма
   ХННННННННННё
   і і                і   є  є     
построенияЖН>Нµ   файл   і
   і і  
ЪДДДДДДДДДї  і   є  є      і 
отчета  і   і 
отчета  і
   і АДДДґСправоч- і  і   є  є     
АДДДДДДДДДДЩ   АДДДДДДДДДДЩ
   і    
     ная ЖННШННН№  є
   і    
инфор-цияі  і   є  є
   і    
АДДДДДДДДДЩ  і   є  є      ЪДДДДДДДДДДї
   АДДДДДДДДДДДДДДДДДДЩ   ИННєННННН>µПрограмма і   ХННННННННННННННё
                             є      і контроля ЖН>Нµ     файл    

   ХННННННННННННННННННё      МННННН>µ   имен   і   іпредупрежденийі
   і 
Синтаксические  і      є     
нетермин-ві   АДДДДДДДДДДДДДДЩ
   і   
диаграммы     ЖННННННј      АДДДДДДДДДДЩ
   АДДДДДДДДДДДДДДДДДДЩ
                          Рис. 1.3.
    1.4. Общее описание алгоритмов и
внутренних данных.
    Комплекс 
программ построения  справочников
по  формальным
языкам
реализован средствами Turbo  Pascal 6.0.
При программи-
ровании
использовались  средства Object
Professional 1.10 (уп-
равление  экраном 
и клавиатурой,  объекты  данных, 
обработка
строк,
интерфейс DOS/BIOS, распределение памяти, сортировка).
    Комплекс состоит из трех программ,
которые  имеют одинако-
вые
входные данные, принцип построения, 
основные  алгоритмы и
организацию  ввода-вывода.  Далее  будет  подробно рассмотрена
лишь
одна из программ - TextMake.
    1.4.1. Разработка структуры данных.
    Комплекс 
программ  был  разработан 
и написан языке Turbo
Pascal
6.0 с  использованием
объектно-ориентированного подхода
в
программировании.
    Объектно-ориентированное программирование
(ООП) -  это ме-
тод  программирования,  имитирующий способы, 
какими, по нашим
представлениям,
выполнены предметы. Три основных 
свойства ха-
рактеризуют
язык объектно-ориентированного программирования:
    - инкапсуляция: объединение записей с  процедурами и функ-
циями,
что превращает их в новый тип данных - объект;
    - 
наследование: задание объекта, 
затем использование его
для  построения иерархии порожденных объектов, с
наследованием
доступа  каждого из порожденных объектов к коду и
данным пред-
ка;
    - полиморфизм: задание одного имени  действию, которое пе-
редается
вверх и вниз по иерархии объектов, с реализацией это-
го
действия способом, соответствующим каждому объекту в иерар-
хии.
    Расширение языка Turbo Pascal
предоставляет все возможнос-
ти   объектно-ориентированного   программирования:  наибольшую
структурность,
абстрактность, модульность, 
встроенные  непос-
редственно
в язык. Все эти свойства присущи и коду, являющему-
ся наиболее
структурным, расширяемым и легким для поддержки.
    В 
связи с вышеизложенными достоинствами объектно-ориенти-
рованного  программирования  структура  данных
программы,  там
где
это  возможно и целесообразно,
базировалась именно на этом
подходе.
    Одним из 
базовых  объектов в программе
TextMake  является
объект
Root, который представляет собой абстрактный родительс-
кий
объект.
    type
      Root = object
         constructor Init;
         destructor Done; virtual;
      end;
    Объекты, которые непосредственно используются для поддерж-
ки
нетерминалов и терминалов  являются
потомками объекта Root.
Преимущества
такого подхода: возможность наследовать поля дан-
ных и
правила для использования в новом типе, возможность ссы-
лок
на  объекты разного  типа с помощью указателя одного типа,
уменьшение
исполнимого кода программы.
    Как пример можно привести объект HeapStr:
    type
      HeapStrPtr = ^ HeapStr;
      HeapStr = object(Root)
        Name : StringPtr;
        .................
      end;
    Так как имена нетерминалов и терминалов
содержатся в дина-
мически
распределяемой памяти, то был создан объект для насле-
дования,
который позволяет легко создавать динамические 
стро-
ки. При
этом памяти отводится столько,  сколько
требует  длина
строки.
    В программе можно выделить следующую
иерархию данных:
                          ЪДДДДДДДДДДДДДї
                          і   данные   

                          і  программы 

                          АДДДДДДВДДДДДДЩ
                    
ЪДДДДДДДДДДДБДДДДДДДДДДДДДДДї
              ЪДДДДДДБДДДДДДї              ЪДДДДДБДДДДДї
              і нетерминалы і              і терминалы і
              АДДДДДДВДДДДДДЩ              АДДДДДДДДДДДЩ
            
ЪДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
       ЪДДДДДБДДДДДї                            ЪДДДДДБДДДДДї
       інетерминалыі                            інетерминалыі
       і 
в МРБНФ  і                            і   в СД   

       АДДДДДВДДДДДЩ                            АДДДДДВДДДДДЩ
     ЪДДДДДДДБДДДВДДДДДДДДДДДДДДї             ЪДДДДДДДБДДДї
ЪДДДДБДДДДїЪДДДДДБДДДДДїЪДДДДДДДБДДДДДДДїЪДДДДБДДДДїЪДДДДДБДДДДДї
основногоііпроблемных
разделов с доп.ііосновногоііпроблемных і
раздела  ііподмножествііинформацией    ііраздела 
подмножестві
АДДДДДДДДДЩАДДДДДДДДДДДЩАДДДДДДДДДДДДДДДЩАДДДДДДДДДЩАДДДДДДДДДДДЩ
                           Рис. 1.4.
    Для 
хранения нетерминалов  был  выбран следующий  базовый
тип:
    type
      PapaPtr = ^Papa;
      Papa = object(HeapStr)
          Brat : PapaPtr;
          Son 
: PapaPtr;
          Pred : PapaPtr;
          ...............
     end;
     Этот тип можно представить в виде
рисунка:
                 ^
                 і  Ссылка на предка
     ЙНННННННННННШННННННН»
     є           х       є
     ЗДДДДДДДДДДДДДДДДДДД¶
     є 
Имя нетерминала  є
     ЗДДДДДДДДДВДДДДДДДДД¶     Ссылка на брата
     є   
х    і    хДДДДЧДДДД>
     ИННННШННННПНННННННННј
          і
          V 
Ссылка на сына
     Для хранения терминалов был выбран
следующий тип:
     ЙННННННННННННННН»
     є Имя терминала є
     ЗДДДДДДДВДДДДДДД¶     Ссылка на следующий
     є   
х  і   хДДДЧДДДДД>    
терминал
     ИННННШННПНННННННј
          і
          V 
Ссылка на список нетерминалов,
             где был найден данный терминал
    Иерархия объектов в программе от предка
Root:
 Root                                  базовый объект
 ГДДДДДДДHeapStr                       строка в динамич. памяти
 і      
ГДДДДДДДNetStack             
базовый список нетерминалов
 і      
АДДДДДДДPapa                 
базовый для нетерминалов
 і               АДДДДДДДNetSd         нетерминалы в СД
 і                       АДДДДДДДNetRf нетерминалы в МРБНФ
 АДДДДДДДPointerStack                  базовый для создания списка
         АДДДДДДДNameStack             базовый список терминалов
                 АДДДДДДДTermStack     список терминалов
    1.4.2. Основной алгоритм программы.
    Исходный 
текст обрабатывается  в  два прохода. На  первом
этапе
считываются и запоминаются все терминалы и те нетермина-
лы,
для  которых есть описание. То же
происходит и с синтакси-
ческими
диаграммами (СД),  за исключением
терминалов.  На вто-
ром
этапе создается файл,  который
объединяет файл с СД  и ос-
новной  файл с модифицированной расширенной формой
Бэкуса-Нау-
ра
(МРБНФ), проблемными подмножествами и 
пр. В результате то-
го,
что  все терминалы получили
уникальный  номер  ( на первом
этапе),
становится возможным  установить  перекрестные ссылки.
Кроме
того,  в выходной файл заносится список
терминалов,  где
каждому
терминалу соответствует список нетерминалов, в которых
данный
терминал  употреблялся. Схема
общего  алгоритма решения
задачи
приведена на рисунке 1.5.
                 ЪДДДДДДДДДДДДДДДДДДДДДДДї
                 і Инициализация таймера і
                 АДДДДДДДДДДДВДДДДДДДДДДДЩ
                 ЪДДДДДДДДДДДБДДДДДДДДДДДї
                 і Установка обработчика і
                 і    прерывания для     і
                 і  ошибочных ситуаций   і
                 АДДДДДДДДДДДВДДДДДДДДДДДЩ
                 ЪДДДДДДДДДДДБДДДДДДДДДДДї
                 і  Обработка командной  і
                 і       строки          і
                 АДДДДДДДДДДДВДДДДДДДДДДДЩ
                 ЪДДДДДДДДДДДБДДДДДДДДДДДї
                 і    Инициализация      і
                 і     переменных        і
                 АДДДДДДДДДДДВДДДДДДДДДДДЩ
                 ЪДДДДДДДДДДДБДДДДДДДДДДДї
                 і    Инициализация      і
                 і   структуры данных    і
                 і     нетерминалов      і
                 АДДДДДДДДДДДВДДДДДДДДДДДЩ
                 ЪДДДДДДДДДДДБДДДДДДДДДДДї
                 і     Инициализация     і
                 і   структуры данных    і
                 і      терминалов       і
                 АДДДДДДДДДДДВДДДДДДДДДДДЩ
                 ЪДДДДДДДДДДДБДДДДДДДДДДДї
                 і     Первый проход     і
                 і    основного файла.   і
                 і Формирование структурыі
                 і        данных         і
                 АДДДДДДДДДДДВДДДДДДДДДДДЩ
                             Щ
                           /  \
                         /Нет ни\  да    
ЪДДДДДДДДДДДДДї
                        /одного не\
ДДДДДДґ   Останов   і
                        \  терми- /       АДДДДДДДДДДДДДЩ
                          \нала /
                            \ /нет
                             і
                            / \
                          /Есть \ нет
                        / файл с  \ ДДДДДДДДДДДї
                        \   СД   
/            і
                          \     /              і
                            \ /да              і
                
ЪДДДДДДДДДДДБДДДДДДДДДДДї     і
                 і  Первый проход файла 
     і
                 і  с СД.  Формирование  і    

                 і   структуры данных   
     і
                
АДДДДДДДДДДДВДДДДДДДДДДДЩ     і
                             і<ДДДДДДДДДДДДДДДДЩ
                 ЪДДДДДДДДДДДБДДДДДДДДДДДї
                 і       Сортировка      і
                 і      нетерминалов     і
                 АДДДДДДДДДДДВДДДДДДДДДДДЩ
                 ЪДДДДДДДДДДДБДДДДДДДДДДДї
                 і Сортировка терминалов і
                 АДДДДДДДДДДДВДДДДДДДДДДДЩ
                 ЪДДДДДДДДДДДБДДДДДДДДДДДї
                 і   Установка ссылок    і
                 і   нетерминалов СД     і
                 і   на нетерм-ы МРБНФ   і
                 АДДДДДДДДДДДВДДДДДДДДДДДЩ
                 ЪДДДДДДДДДДДБДДДДДДДДДДДї
                 і    Второй проход      і
                 і   основного файла.    і
                 і   Запись пунктов в    і
                 і    выходной файл      і
                 АДДДДДДДДДДДВДДДДДДДДДДДЩ
                            / \
                          /Есть \  нет
                        / файл с  \ДДДДДДДДДДДДї
                        \   СД   
/            і
                          \     /              і
                            \ / да             і
                
ЪДДДДДДДДДДДБДДДДДДДДДДДї     і
                 і Второй проход файла с
     і
                 і СД. Запись пунктов в  і    

                 і    выходной файл     
     і
                
АДДДДДДДДДДДВДДДДДДДДДДДЩ     і
                            
<ДДДДДДДДДДДДДДДДЩ
                 ЪДДДДДДДДДДДБДДДДДДДДДДДї
                 і    Запись списка      і
                 і    нетерминалов       і
                 АДДДДДДДДДДДВДДДДДДДДДДДЩ
                 ЪДДДДДДДДДДДБДДДДДДДДДДДї
                 і    Запись списка      і
                 і     терминалов        і
                 АДДДДДДДДДДДВДДДДДДДДДДДЩ
                 ЪДДДДДДДДДДДБДДДДДДДДДДДї
                 і      Освобождение     і
                 і     динамич.памяти    і
                 АДДДДДДДДДДДВДДДДДДДДДДДЩ
                            / \
                          /Спец \   нет
                        /компилят.\ ДДДДДДДДДДДї
                        \ найден  /           

                          \     /              і
                            \ /да              і
                
ЪДДДДДДДДДДДБДДДДДДДДДДДї     і
                 іЗапуск
спец.компилятораі     і
                
АДДДДДДДДДДДВДДДДДДДДДДДЩ     і
                            
<ДДДДДДДДДДДДДДДДЩ
                 ЪДДДДДДДДДДДБДДДДДДДДДДДї
                 і    Выдача времени     і
                 і   работы программы    і
                 АДДДДДДДДДДДДДДДДДДДДДДДЩ
                        Рис 1.5.
    1.4.3. Структура программы.
    В основу структуры программы положен
модульный подход, при
котором
в отдельные модули выделяются  типы,
переменные,  под-
программы,
решающие одну общую подзадачу (например, ввод 
дан-
ных,
обработка данных).
    В результате такого подхода было выделено
восемнадцать мо-
дулей,
иерархия которых (на основе оператора Uses) представле-
на на
рисунке 1.6.
ЙНННННННН»   ЙНННННННН»   ЙНННННННН»   ЙНННННННН»   ЙНННННННН»

TmOvr  є   є UpChar є ЪД¶ TmICA 
   єSysErrorє   є TmVar 

ИНННСННННј   ИННННСНННјЪЩ ИННННННННј   ИННННСНННј   ИССССССССј
   
ГДДДДДДДДДДДДДіДДДДЩЪДДДДДДВДДДДДДДДДДДДБДДДДДДДїіііііііі
    і             і     і      іЪДДДДДВДДДДДДДДДДДДДіЩііііііі
    і       
ЙННННПННН» і ЙННННППНН»  і             і ііііііі
    і       
Param  є іЪ¶TmDosIO Зї і             і ііііііі
    і       
ИННСНННННј ііИННСННСННјі і            

    і           і ЪДДДДДБіДДДґ 
АДДДіДіДДДДї    ЪДДДіДґіііііі
    і           і і ЪДДДДіДДДіДВДДДДіДЩ    і    і   і ііііііі
    і       
ЙННПНПНПН»  іЙННПНПННН»і   ЙННПННННП» 

    і       
TmParam є Ъі¶TmObjectЗіДДїєTmStringЗДВіїііііііі
    і       
ИНСННННННј ііИННСНСНННјі ЪіРНСНСННННј іііііііііі
    і
ЪДДДДДДДДЩЪДДДДДДДіЕДДДіДіДДДДіДііДДБДіДДДДДДіііЩіііііі
    і і         і   ЪДДДііДДДЩ і
ЪДДЕДіБДДї і ЪДДДДіііДЩііііі
    і і     
ЙННПНННПН» ііЙННННПНПН»і і ЙНПНПНПНН» ііі  ііііі
    і і     
TmPart єЪіі¶ TmSort єі і є TmTerm є ііі  ііііі
    і і     
ИСНСНННННјіііИННННННННјі і ИНССНННННј ііі  ііііі
    і і      
      ііГДДДї  ЪДДДіДЩ  
       ііі  ііііі
    і і ЪДДДДДіДіДДДДДДЩіі   і 
ЪДДіДДДДДБіДДДДДДДіііДДЩіііі
    і і і    
       ііЙННПННППН»і      і      
   іііі
    і і і    
ЪДДДДДіі¶TmInput ЗЕДДДДї і      
   іііі
    і і і    
     ііИНННСННННјі    і і      
   іііі
    і і і    
     іГДДї і
ЪДДДіДДДДіДіДДДДДДДіііДДДЩііі
    і і і 
ЪДДЩ ГДіДДДДДБіДїі і і   і    і і      
    ііі
    і і і 
    іЪіДДДДДДЩЙППНПНПНН»і    і і      
    ііі
    і і і 
    ііі       єTmExamplЗЕДДДДЕДЕДї     ііі   

    і і і 
    ііі       ИНССНННННјі    і і і     ііі    ііі
    і і і 
    ііі ЪДДДВДДДЩі ЪДДДДБДДї і і
     ііі    ііі
    і і і 
    ііі
ЪДДіДДДДіДіДДДДДВДіДіДіДіДДДДДБііДДДДЩіі
    і і і 
ЙННПППНПП» і ЙННПНПННН»ДіДіДіДіДіДДДДДДііДДДДДЩі
    і і і 
TmOne  є і є TmPick є і і і і
      іі      і
    і і і 
ИННННСНННј і ИНННСННННј і і і і і     
      і
    і і і 
      і     АДДДї
ГДДДДДДЕДБДБДБДіДДДДДДііДДДДДДЩ
    і і і 
ГДДДДДДіДДДДДДДДїі і      і       і     

    і і і 
      і       ЙППНПНННН» і       і      іі
    і і і 
      і       є TmApp  є і       і      іі
    і і і 
      і       ИННННСНННј і       і      іі
    і і і 
      і            і     і       і      іі
   
АДБДБДДБДДДДДДБДДДДДДДДДДДїіЪДДДДБДДДДДДДБДДДДДДБЩ
                          ЙНННПППНН»
                          єTextMakeє
                          ИННННННННј            Рис 1.6.
    1.4.4. Состав программы.
    Исходные 
данные: основной файл (МРБНФ, проблемные подмно-
жества
и пр.) и, возможно, файл с СД.
    Результат: файл с информацией о языке для
построения спра-
вочника.
Основные  программные компоненты
программы:
    - процедуры построения внутренней
структуры (этап 1);
    - процедуры вывода информации в текстовый
файл (этап 2).
    Ниже приводится детальный состав
программы. В скобках ука-
заны
программные модули.
    1. Директивы условной компиляции (TmDefine.inc).
    2. Чтение строки параметров (Param.pas).
    3. Модуль с сообщениями DOS об
ошибке,перехватыванием ава-
рийного
завершения и обработчик прерывания (SysError.pas).
    4. Запись   в   файл   ссылок,  
зарезервированных   слов
(TmApp.pas).
    5. Открытие / закрытие  файлов, 
выдача сообщений
(TmDosIO.pas).
    6. Работа с  разделами неформального описания нетерминалов
и
примеров (TmExampl.pas).
    7. Межпрограммная передача параметров
(TmICA.pas).
    8. Чтение входной информации из файла
(TmInput.pas).
    9. Модуль поддержки нетерминалов
(TmObject.pas).
    10. Реализация первого этапа (TmOne.pas).
    11. Инициализация оверлея (TmOvr.pas).
    12. Обработка командной  строки, 
запуск  внешних программ
(TmParam.pas).
    13. Процедуры поиска разделов, установка
ссылок на  нетер-
миналы
(TmPart.pas).
    14. Создание списка выбора для
нетерминалов (TmPick.pas).
    15. Сортировка нетерминалов (TmSort.pas).
    16. Работа со строками (TmString.pas).
    17. Модуль поддержки терминалов
(TmTerm.pas).
    18. Глобальные константы,  типы, переменные (TmVar.pas).
    19. Процедура  преобразования  букв  в 
верхний   регистр
(UpChar.pas).
    20. Головная программа (TextMake.pas).
    Для более подробного описания каждого
модуля рекомендуется
обратиться
к Приложению 5 "Руководство системного оператора".
    1.5. Характеристики программы и  возможности их улучшения.
    Развитие и  создание программных средств сопряжено с боль-
шими
материальными и трудовыми затратами, и поэтому чрезвычай-
но
важно их их эффективное использование. Любая программа, на-
писанная
на языке высокого уровня, должна удовлетворять требо-
ваниям
эффективности, иначе ее внедрение целесообразно.
    Характеристики  эффективности, 
учитываемые  при  создании
программы,
зависят от конкретных условий,  в
которых она будет
использоваться.
Существует множество различных аспектов, кото-
рые
должны приниматься  во внимание при  написании 
программы,
которая
должна выполнять то, что предполагалось.
    Основные 
цели, которые должны  быть
достигнуты при созда-
нии
программы:
    - минимум памяти;
    - минимальное время работы;
    - минимальное время изготовления;
    - простота изменения.
    В добавление к этим  основным целям должны рассматриваться
и
другие важные аспекты:
    - минимальное количество операторов в
программе;
    - ясность текста программы.
    Производительность  программы или программиста  может быть
оценена
только  с  учетом того, какие 
основные  цели или цель
должны
быть достигнуты.
    В 
настоящем  дипломном  проекте решается задача  создания
программы
построения справочников по формальным языкам. 
Одной
из
важных характеристик эффективности разрабатываемой програм-
мы  является достижение минимального объема
занимаемой  памяти
для
заданных максимального количества нетерминалов 
и термина-
лов.
Требование минимального объема 
памяти  обусловлено силь-
ной
зависимостью объема требуемой памяти  от
количества  вход-
ной
информации. Так при входной  информации
около  1,3 Мб (119
терминалов
и  224 нетерминалов  основного 
раздела) для работы
программы
минимум требуется примерно 220  Кб
оперативной памя-
ти, из
них 82 Кб требуется для  хранения
нетерминалов и терми-
налов в
динамически  распределяемой памяти,  и 
примерно  7 Кб
под
стек. Учитывая, что на персональном компьютере обычно име-
ется  не менее 
560 Кб свободной памяти, можно 
сделать вывод,
что
требуемая память для работы программы не является предель-
ным
значением и имеется достаточный запас  в
случае увеличения
объема
входных данных.
    Другой важной характеристикой
эффективности является небо-
льшое  время 
отклика. Необходимо  отметить,
что время полного
выполнения
задачи  находится в сильной  зависимости 
от объема
входных
данных. Под временем отклика понимается интервал между
вводом
данных  и получением результатов.  Для минимизации этой
величины
было сделано:
    - использование виртуального диска (если
он есть) для хра-
нения
временных данных;
    - использование языка Ассемблер;
    - проверка входных данных и  принятие решения о  необходи-
мости
продолжения работы программы;
    - возможность отключения вывода информации
на дисплей;
    - возможность отключения ожидания ответа
оператора.
    При входном объеме данных 1,3 Мб на AT 286
16  МГц с испо-
льзованием
виртуального диска время работы программы составля-
ет
около 4,5 минут.
    Полученные  характеристики могут быть улучшены. В частнос-
ти,
если использовать в критичных к времени участках программы
язык  Ассемблер. 
Ассемблер  является  машинно-ориентированным
языком
программирования и отражает структуру машины, для кото-
рой  разработан, в отличии от
проблемно-ориентированных языков
высокого
уровня.
   Другим способом улучшения полученных
характеристик является
использование
ЭВМ более высокого быстродействия. К этому можно
добавить,
что  язык  программирования  Turbo
Pascal  позволяет
указать
компилятору, что необходимо использование команд 80286
процессора.
В этом случае объектный код программы сократится и
будут  использоваться   специфические 
особенности  процессора
80286 и
выше. Такой подход,  разумеется,
уменьшает возможности
переносимости
программы на другую ЭВМ.
    Таким образом, можно  выделить следующие возможности улуч-
шения
полученных характеристик эффективности:
    - использование ассемблера;
    - использование ЭВМ более высокой
производительности.
1.
Введение.
    В настоящее время существует множество
справочных  систем,
закрытого
типа и недоступных для модификации. 
Разрабатываемый
комплекс  программ 
предназначен  для  преодоления 
указанного
ограничения.
2.
Основание для разработки.
    Приказ по институту N ___ от _______
3.
Назначение для разработки.
    Комплекс программ  предназначен  для  того  и 
должен быть
построен
таким образом, чтобы осуществлялось максимально удоб-
ное
построение справочника, контроль правильности входных дан-
ных и
возможность получения документации по 
языку  на  основе
единого
представления информации о языке.
4.
Требования к комплексу программ.
4.1.
Требования к функциональным характеристикам.
    Комплекс программ должен обеспечивать:
    - ввод, 
контроль  исходных  данных, 
выдачу  сообщений об
ошибке;
    - преобразование информации;
    - вывод результатов;
    Входные данные:
    Текст описания на языке описания грамматик
(ЯОГ)  содержит
некоторую  совокупность правил,  описывающих некоторое понятие
(нетерминал),
ограниченных символом "точка с запятой".
    Текст записывается в свободном формате.
Пробелы, не заклю-
ченные
в кавычки,  апострофы и угловые  скобки, 
игнорируются.
Комментарии
заключаются между парами символов /* и */.
    Имя нетерминала -  произвольная  последовательность  букв,
цифр,  символов тире, подчеркивания, апостроф,
пробел. Имя не-
терминала
заключается в угловые скобки. В файле описания грам-
матик,   помимо 
синтаксиса  проблемно-ориентированного  языка
(ПОЯ) в
модифицированной форме Бэкуса-Наура (МРБНФ), представ-
лена
следующая дополнительная справочная информация, использу-
ющаяся
при формирования справочника:
    - неформальное описание (в частности
синтаксиса и семанти-
ки)
разделов, соответствующих синтаксическим конструкциям;
    - тексты примеров по отдельным разделам;
    - описание конструкций лексического
уровня;
    - описание проблемных подмножеств;
    - описание дополнительных разделов.
    Выходные данные:
    Выходная информация 
представлена  в  виде 
промежуточного
файла,  который должен быть обработан специальным
компилятором
MakeHelp
- фирмы TurboPower Software.
    Функциональных требований к временным и
емкостным характе-
ристикам
не предъявляется.
4.2.
Требования к надежности.
    Разработать средства  контроля 
входной  информации и пре-
дусмотреть
диагностику ошибок.
4.3.
Условия эксплуатации.
    Условия эксплуатации  программы  
соответствуют   условиям
эксплуатации
ПЭВМ типа IBM PC/XT/AT.
4.4.
Требования к составу и параметрам технических средств.
    - Персональный компьютер фирмы IBM серии
PC,  XT,  AT (или
совместимый
с этими с этими моделями) или PS/2, работающий под
управлением
системы DOS версии 3.30 или более поздней.
    - Оперативная память объемом по меньшей
мере 256К.
    - Дисковод для гибких дисков или жесткий
диск.
     4.5. 
Требования к информационной и программной
совместимости.
    Программы предназначены для эксплуатации
на ПЭВМ типа  IBM
PC  под 
управлением  ОС  MS-DOS версии 3.30 и выше.  В состав
системного
программного обеспечения данной ЭВМ должен 
входить
русский
экранный драйвер с альтернативной кодировкой.
    Программы реализуются средствами Turbo
Pascal.
4.6.
Технологические требования.
    Разработать технологический процесс
тестирования программы
построения
справочников по формальным языкам.
5.
Требования к программной документации.
5.1.
Перечень программной документации.
    В ходе 
разработки программы должны быть подготовлены сле-
дующие
документы:
    - описание программ;
    - программа и методика испытаний;
    - описание применения;
    - руководство оператора.
5.2.
Специальные требования к пояснительной записке.
    Привести краткое описание входных данных.
6.
Технико-экономические показатели.
    1. Привести технико-экономическое
обоснование выбора темы.
    2. Рассчитать сметную стоимость темы.
    3. Рассчитать трудоемкость
программирования.
    4. Оценить эффективность разработки.
7.
Стадии и этапы разработки.
7.1.
Технический проект.
    На стадии технического  проекта 
детально  разрабатывается
структура
входных данных, определяется форма их представления.
Разрабатывается
общее описание алгоритма, алгоритм решения за-
дачи,
структура программы.
    Разрабатывается технологический  процесс 
испытаний  прог-
рамм,
мероприятия по охране труда, пояснительная записка.
    Срок окончания: 15.12.1992 г.
7.2.
Рабочий проект.
    На этой 
стадии  осуществляется программирование
и отладка
программ,
разрабатывается программная документация. Проводятся
предварительные
испытания и корректировка программ и программ-
ной
документации.  Оформляются пояснительная
записка и  графи-
ческий
материал.
    Срок окончания: 15.01.1993 г.
7.3.
Внедрение.
    Подготовка и передача программы и
программной документации
в
опытную эксплуатацию.
    Срок окончания: 31.01.1993 г.
    Срок сдачи законченного проекта:
15.01.1993 г.
8.
Охрана труда.
    1. Оценка возможных опасных и вредных
факторов на  участке
ПЭВМ.
    2. Выбор и расчет системы защиты оператора
ПЭВМ от пораже-
ний
электрическим током.
    3. Пожарная профилактика на участке ПЭВМ.
9.
Перечень графического материала.
    В ходе разработки проекта должен быть
подготовлен  следую-
щий
графический материал:
    - описание   языка  представления  входной 
информации  (1
лист);
    - схема алгоритма программы (1 лист);
    - структура комплекса инструментальных
средств (1 лист);
    - структура  программных средств поддержки формальных язы-
ков (1
лист);
    - технологический процесс тестирования (1
лист);
    - фрагмент тестирования (1 лист);
    - структура внутренних данных (1 лист);
    - структура выходной информации (1 лист);
    - экономическая часть (1 лист);
    Срок сдачи дипломного проекта: 1.02.1993
г.
рефераты Рекомендуем рефератырефераты

     
Рефераты @2011