Рефераты - Афоризмы - Словари
Русские, белорусские и английские сочинения
Русские и белорусские изложения
 

Обучающая программа Графика программированию в графическом режиме на языке turbo-pascal 7.x

Работа из раздела: «Программирование и комп-ры»

                                 СОДЕРЖАНИЕ
ВВЕДЕНИЕ...................................................... 7
1. НАЗНАЧЕНИЕ ОБУЧАЮЩЕЙ ПРОГРАММЫ............................. 9
1.1. Обзор существующих обучающих средств и методов........... 9
1.2. Назначение программы для обучения работе в графическом
режиме........................................................ 12
1.2.1. Роль ЭВМ в учебном процессе СПГУАП..................... 12
1.2.2. Методика обучения с помощью обучающей программы........ 13
1.2.3. Возможности языка TURBO-PASCAL 6.0.О ................ 16
1.3. Техническое задание...................................... 17
1.3.1. Постановка задачи...................................... 17
1.3.2. Выбор технических средств и программного обеспечения... 18
1.3.3. Технико-экономическое обоснование ..................... 18
2. ОПИСАНИЕ БАЗЫ ДАННЫХ....................................... 20
2.1. Методическое оснащение базы данных....................... 20
2.2. Структура базы данных.................................... 22
2.3. Возможности изменения или обновления .................... 25
2.3.1. Теория................................................. 25
2.3.2. Вопросы................................................ 26
2.3.3. Справки ............................................... 28
3. ОПИСАНИЕ ПРОГРАММЫ......................................... 30
3.1. Общие сведения........................................... 30
3.2. Функциональное назначение................................ 31
3.3. Описание логической структуры............................ 32
3.4. Используемые технические средства........................ 38
3.5. Вызов и загрузка......................................... 39
3.6. Входные и выходные данные................................ 39
4. ОПИСАНИЕ ПРИМЕНЕНИЯ........................................ 41
4.1. Назначение программы..................................... 41
4.2. Условия применения....................................... 41
4.2.1. Технические средства................................... 41
4.2.2. Общие характеристики входной и выходной информации..... 42
4.3. Пример использования..................................... 42
5. РУКОВОДСТВО ПРОГРАММИСТА................................... 45
5.1. Назначение и условия применения программы................ 45
5.2. Характеристики программы................................. 45
5.3. Обращение к программе.................................... 46
5.4. Входные и выходные данные................................ 46
6. РУКОВОДСТВО ОПЕРАТОРА...................................... 47
6.1. Назначение программы .................................... 47
6.2. Условия выполнения программы............................. 47
6.3. Выполнение программы..................................... 47
6.4. Сообщения оператору...................................... 48
7. ТЕХНОЛОГИЯ ИСПОЛЬЗОВАНИЯ ОБУЧАЮЩЕЙ ПРОГРАММЫ............... 49
8. ПЛАНИРОВАНИЕ РАБОТ ПО СОЗДАНИЮ  ОБУЧАЮЩЕЙ ПРОГРАММЫ.
СМЕТА ЗАТРАТ.................................................. 51
8.1. Построение ленточного  графика........................... 51
8.2. Расчет  сметы  затрат ................................... 54
9. ВОПРОСЫ ОХРАНЫ ТРУДА И ОКРУЖАЮЩЕЙ СРЕДЫ.БЕЗОПАСНОСТЬ И
ХАРАКТЕРИСТИКА САНИТАРНО-ГИГИЕНИЧЕСКИХ УСЛОВИЙ ТРУДА НА
РАБОЧЕМ МЕСТЕ ПОЛЬЗОВАТЕЛЯ.................................... 57
9.1. Основные санитарно-технические требования к помещению ... 57
9.2. Характеристика санитарно-гигиенических условий труда..... 57
9.2.1. Микроклимат производственного помещения................ 57
9.2.2. Вредные вещества и пыль................................ 59
9.2.3. Излучение.............................................. 60
9.2.4. Освещенность........................................... 60
9.2.5. Шум.................................................... 61
9.3. Расчет необходимого воздухообмена........................ 61
9.4. Система освещения........................................ 62
9.5. Инженерно-технические мероприятия по созданию
благоприятных условий труда................................... 62
9.5.1. Защита от шума......................................... 62
9.5.2. Защита от излучения.................................... 63
9.5.3. Меры защиты от поражения электрическим током........... 63
9.6.  Организация рабочего места пользователя при работе
с терминалом.................................................. 65
9.7. Противопожарные требования............................... 65
9.8.Приборы контроля параметров среды ........................ 66
ЗАКЛЮЧЕНИЕ.................................................... 68
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ.............................. 69
ПРИЛОЖЕНИЕ 1  Текст программы................................. 70
ПРИЛОЖЕНИЕ 2  База данных..................................... 107
ПРИЛОЖЕНИЕ 3  Экранные формы  ................................ 157



                                  ВВЕДЕНИЕ


      Обучение - очень  важный  процесс  в  современном  обществе.  От  того
насколько  качественно  и  эффективно  оно  будет   осуществляться   зависит
благосостояние народа. В  нынешней  сложной  экономической  ситуации  крайне
необходим прилив новых хорошо подготовленных кадров во все  сферы  народного
хозяйства. Необходимо быстрое внедрение всех достижений науки  и  техники  в
производство-    Возрождение    отечественного    производства    -    залог
экономического подъема, роста социального благосостояния народа.
      Компьютер - одно из главных изобретений века. В последнее  десятилетие
он стал неотъемлемой частью жизни  человека.  Компьютер  применяют  в  самых
различных  областях   жизнедеятельности   начиная   с   решения   простейших
математических  задач,  моделирования  различных  процессов,  применение   в
банковском деле, медицине,  образовании,  издательском  деле,  использование
компьютера для  управления  различной  техникой  в  том  числе  автомобилем,
самолетом, космическим кораблем до использования в быту, играх.
      Идея обучения с помощью компьютера родилась давно. Связана она была  с
видимостью человекоподобного поведения  компьютера,  его  способности  вести
осмысленный диалог с человеком.
      Первые попытки внедрить компьютер В обучение были сделаны еще  в  50-х
годах , когда в качестве устройства ввода/вывода  использовался  телеграфный
аппарат.  В  течение  последующих  40-лет  ведутся  непрерывные  интенсивные
исследования в этой области. За это время компьютерная  техника  изменилась,
стала   более   совершенной,    появились    персональные    компьютеры    ,
микрокомпьютеры.  Разработано  программное  обеспечение   ,   обеспечивающее
довольно широкое использовать технический возможности  компьютера.  Снижение
стоимости компьютерной  техники  позволило  внедрить  ее  в  образовательных
учреждениях. Теперь компьютеры пошли в школы, институты и  в  количественном
выражении Компьютеризация образования идет  высокими  темпами:  в  отдельных
странах число школьных компьютере составляет уже десятки и сотни тысяч, а  в
США - миллионы. И в нашей стране школьники старших  классов  уже  в  течение
семи лет изучают такой предмет как информатика, знакомятся с компьютерами  и
основами работы на них.  Однако,  обучение  с  помощью  компьютера  остается
малоэффективным.  Основная  причина  состоит   в   том,   что   разработчики
автоматизированных  обучающих   систем   преследуют   цель   компьютеризация
обучения ради самой компьютеризацию!. Мало внимания уделяется дидактике.
      Возможности  применения  компьютера   в   учебном   процессе,   весьма
многообразны. Он может  служить  для  моделирования  изучаемых  явлений  или
систем, для реализации учебных игр, применяться для выполнения вычислений  ,
для редактирования текстов,  в  качестве  различного  рода  тренажеров,  как
инструмент   автоматизации   проектирования,   программируемого   управления
экспериментами,  как  информационно-поисковая  или  экспертная   система   и
наконец как средство практического обучения  самой  компьютерной  технике  и
программированию .
      В настоящее время уже создано множество  средств  обучения  с  помощью
компьютера-  Их  можно  квалифицировать  следующим   образом:   компьютерные
учебники,   предметно-ориентированные   среды    (микромиры,    моделирующие
программы,   учебные    пакеты),    лабораторные    практикумы    тренажеры,
контролирующие программы.
      Компьютеры  прочно  вошли  в   учебный   процесс   Санкт-Петербургской
государственной академии аэрокосмического приборостроения.  Компьютер  здесь
служит не Только предмета изучения, но и средством обучения. Уже внедрены  и
применяются ряд компьютерных программ для обучения и контроля,  в  частности
контролирующие  программы,  моделирующие  с  элементами  контроля  по  таким
предметам как  'Охрана  труда',  'Экономика  и  планирование  производства',
'Схемотехника', 'Кодирование информации' и др...
      Однако, потребности академии в компьютерных  обучающих  программах  не
удовлетворены.  Именно  поэтому  темой  данной  дипломной  разработки  стала
программа  для  обучения  работе  в  графическом  режиме.  В  учебном  плане
академии отсутствует лекционный курс по теме 'Графический режим языка Turbo-
Pascal'.  Это  делает  сложным  работу   со   студентами   на   лабораторных
практикумах,  вызывает  много  вопросов  у  студентов  и  усложняет   работу
преподавателей.  Среди  уже  существующих  обучающих  программ   отсутствует
программа обучения  работе  в  графическом  режиме.  К  требуемой  программе
предъявлялись  совершенно  конкретные   специальные   требования   .   Перед
разработчиком была поставлена  задача  создания  программы  для  обучения  с
элементами  контроля,  дающей  возможность  повторного  изучения  материала,
поясняющей ошибки обучаемому студенту.  Программа  должна  включать  в  себя
соответствующий  методический  материал  по  заданной  теме,   подобрать   и
оформить который предстояло также разработчику.
      Именно  такая  программа  была  создана.  Программа   имеет   название
'Графика' , содержит теоретический материал по  заданной  теме,  контрольные
вопросы с необходимыми поясняющими справками.
Разработчик  надеется,  что  цель  восполнения  пробела  лекционного  курса,
повышения качества и  интенсивности  обучения  студентов  с    '  '  помощью
данной программы, им достигнута.



      1. НАЗНАЧЕНИЕ ОБУЧАЮЩЕЙ ПРОГРАММЫ

        1. Обзор существующих обучающих средств и методов

      Известно, что возможности применения компьютеров  в  учебном  процессе
весьма многообразны. Он может служить для  моделирования  изучаемых  явлений
или  систем,  для  реализации  учебных  игр,  применяться   для   выполнения
вычислений,  для  редактирования  текстов,  в   качестве   различного   рода
тренажеров,   а   также   как   инструмент   автоматизации   проектирования,
программируемого управления экспериментами, как информационно-поисковая  или
экспертная система,  наконец,  как  средство  практического  обучения  самой
компьютерной технике  и  программированию.  Вместе  с  тем,  особый  интерес
представляет использование компьютера в качестве дидактического  инструмента
общего назначения, применимого для обучения любым знаниям.
      Идея обучения с помощью компьютера  появилась  давно.  Первые  попытки
относятся к концу 50-х годов. В то время уже имелась  возможность  'общения'
человека с  компьютером  посредством  используемого  в  качестве  устройства
ввода/вывода    телеграфного    аппарата-телетайпа.    Надлежащим    образом
запрограммированный компьютер заносит в свою память набираемый человеком  на
клавиатуре телетайпа текст  запроса,  а  по  окончании  ввода  этого  текста
производит  некоторый  анализ  его   и   печатает   на   телетайпе   заранее
заготовленный, или конструируемый из подходящих элементов текст ответа.  Или
проще - компьютер выдает на телетайп текст  вопроса  или  условия  задачи  и
ждет  ввода  с  клавиатуры  ответа,  который  затем  сверяется  с  имеющимся
эталоном, чтобы выдать  оценку:  верно/неверно.  С  тех  пор  во  всем  мире
ведутся непрерывные научные поиски решения проблемы эффективного и  дешевого
способа обучения с помощью компьютера.
      Проблему  дороговизны  попробовали  решить  в  70-е  годы  специалисты
Иллинойского  университета.  Их  силами  была  создана   поражавшая   своими
техническими возможностями суперсистема  PLATOIY.  Каждому  учащемуся  здесь
был предоставлен уже не телетайп, а комфортабельный  терминал  с  плазменным
дисплеем, обеспечивающим выдачу  произвольного  текста,  графики  и  цветных
кадров с микрофишей в  сопровождении  звука.  Расчеты  на  низкую  стоимость
системы не оправдались и после проведенных  испытаний  в  условиях  обучения
школьным предметам  выявилась  сложность,  дидактическая  неэффективность  и
трудоемкость подготовки учебных  материалов.  Создание  компьютерных  систем
обучения приняло широкий размах и в связи с  этим  говорили  о  революции  в
образовании.  Но  в  действительности  существенного  влияния  на   практику
обучения разрабатываемые системы не оказали, и ни одна из  них  не  получила
сколько-нибудь значительного применения: системы создавались сами  по  себе,
а обучение людей  производилось  с  помощью  книг  и  лекций.  С  появлением
массового    производства    недорогих    и    удобных    в    использовании
микрокомпьютеров,  компьютеризация  в  настоящее  время   в   количественном
выражении идет высокими темпами.
      В конце 80-х годов проблемной лабораторией электронных  вычислительных
машин    Московского    государственного    университета    была     создана
микрокомпьютерная система обучения 'Наставник'.  Эта  система  предназначена
для  обучения  предметам  теоретического  характера  в  вузах,   техникумах,
профессионально-технических училищах,  общеобразовательных  школах,  центрах
подготовки, переподготовки и повышения квалификации кадров на  предприятиях.
Типовой вариант системы рассчитан на обучение одновременно до  32  учащихся,
обслуживаемых одним микрокомпьютером. Система проста и удобна в  управлении,
не требует специальной подготовки преподавателей  и  удобна  для  обучаемых.
Все общение с  компьютером  происходит  по  подсказкам  и  контролем  с  его
стороны.   В  состав  аппаратуры  системы   входит   микрокомпьютер   общего
назначения, дисплей с  клавиатурой,  гибкий  магнитный  диск  или  магнитная
лента,  принтер,  специализированное  оборудование  для  связи  учащихся   и
преподавателя  с   компьютером,   включающее   мини   терминалы,   источники
электропитания  мини  терминалов  и   контроллер   для   сопряжения   их   с
микрокомпьютером, систему кабелей. Программное обеспечение  системы  состоит
из пяти частей. Три части,  'Обучение',  'Экзамен',  'Тест'  ,  обеспечивают
возможность  проведения  соответствующих   занятий.   Существуют   еще   две
служебные  подсистемы  -  подготовки  управляющей  информации  и   обработки
протоколов. Программное оснащение реализовано и функционирует  в  диалоговой
системе структурированного программирования  ,.  ДССП  ,  которая  после  ее
начальной загрузки, обеспечивает  всю  дальнейшую  работу.   По  вводимым  с
клавиатуры командам производится  дозагрузка  требуемой  подсистемы  и  ввод
управляющей информации . Далее  система  работает  не  обращаясь  к  внешней
памяти. И только в  конце  занятия  согласно  вводимым  командам  производит
распечатку и(или)  запись  в  архив  протокола.  Алгоритмы  функционирования
основных подсистем разработаны так, что обеспечивают управление обучением  и
проведение  экзаменов  или  тестов  независимо  от  конкретного   содержания
учебных материалов. т.е. пригодны для автоматизированных  занятий  по  любым
предметам.  Работа  подсистемы  'Обучение'  заключается   в   предоставлении
учебных материалов, разбитых на секции, и назначении упражнений  по  каждому
разделу, в случае неверных ответов обучаемому выдается  справка,  поясняющая
суть ошибки и отсылающая к  необходимому  абзацу  инструктивного  текста.  В
отдельных случаяx назначаются дополнительные упражнения. В случае  успешного
ответа на все вопросы по разделу обучаемый переходит  к  изучению  следующей
секции. В случае неверного ответа -  возврат  в  предшествующую  секцию  или
отправка к преподавателю. Подсистемы 'Экзамен' и  'Тест'  предназначены  для
контроля  знаний  и  умений.  В  режиме  'Экзамен'  обучаемый  получает   от
преподавa-   теля   набор   секций,   в   которых   получает    определенное
преподавателем число  упражнений  с  ограниченным  числом  попыток  ответов.
Верные ответы подтверждаются,  а  неверные  отрицаются,  однако  справки  не
выдаются.   'Тест'  отличается  от  'Экзамена'  тем,  что  каждый   учащийся
отвечает на все  имеющиеся  в  учебном  материале  вопросы,  причем  попытка
ответа  предоставляется  только  одна.  Ответы  не   подтверждаются   и   не
отрицаются. Вся работа учащегося  протоколируется  .  Учебно-мето-  дическое
оснащение  наименее  фиксировано  и  наиболее  открыто  для  наращивания   и
развития. Жестко определены только  форматы  и  правила  оформления  учебных
материалов.  Никаких  ограничений   по   тематике   и   содержанию   учебных
материалов,  равно  как  и  методик   или   дидактических   приемов,   кроме
необходимости выражаться в форме множественного  выбора,  нет.  Подробнее  о
микрокомпьютерной системе ' Наставник' можно прочитать в [1].
      В период с 1991 по 1994 годы Российским НИИ информационных  систем  по
заданию государственного комитета высшей школы России были проведены  четыре
конкурса 'Электронный учебник', В результате этих конкурсов в  фонде  РосНИИ
ИС  накоплено  более  150  компьютерных   обучающих   программ   готовых   к
распространению на IBM PC и
совместимых с ними. Их классификация и краткая  характеристика,  применяемых
в них методов подробнее приведена в [2] Среди этих программ  можно  выделить
следующие основные группы : инструментальные системы  ,  прикладные  пакеты,
учебные  пакеты.   Инструментальные   среды   предназначены   для   создания
компьютерных обучающих программ. Они  сокращают  трудоемкость  при  создании
этих программ, то же время дают возможность легко участвовать  в  разработке
программ преподавателям, не являющимся  квалифицированными  программист  ми.
Примерами отечественных инструментальных сред могут  служить  такие  системы
как 'Адонис',  'Урок',  'Аосмикро',  'Сценарий'  и  др..  Недостатком  таких
систем является то,  что  они  дорогостоящи.  Кроме  того  для  эффективного
применения инструментальных систем необходимо привлечение стабильной  группы
специалистов, что создает определенные трудности. Обучающие программы  могут
создаваться на базе прикладных пакетов,  которые  позволяют  преобразовывать
математические   выражения,   производить   вычисления,   строить   графики,
обрабатывать экспертные данные и т.п. ... По сравнению  с  инструментальными
средами прикладные пакеты дешевле,  более  универсальны,  доступны  широкому
кругу пользователей. Альтернативой прикладным пакетам могут служить  учебные
пакеты.
      В  общем  случае  компьютерные  программы  учебного  назначения  можно
разбить на следующие группы:
      1) компьютерные учебники;
      2) предметно-ориентированные среды (микромиры, моделирующие программы,
учебные пакеты);
      3) лабораторные практикумы;
      4) тренажеры;
      5) контролирующие программы;
      Проблема практического применения ЭВМ в  учебном  процессе  продолжает
стоять и сейчас. Важно использовать все новейшие достижения науки и  техники
для более эффективного обучения школьников,  студентов,  специалистов  самых
разных   специальностей,   На   кафедре    общей    физики    Новосибирского
государственного  университета   компьютеры   при   чтении   лекций   начали
использовать около 10 лет назад. С 1992 года  здесь  ведутся  разработки  по
созданию  универсального  автоматического  комплекса,  предназначенного  для
лекционных   демонстраций.   В    комплекс    входят    персональные    ЭВМ,
видеоаппаратура,  TV-мониторы  и  программное  обеспечение.   К   настоящему
времени  уже  создан  и  действует  макет   такого   комплекса,   лекционная
мультимедиа аудитория ('ЛЕММА'). Программное обеспечение - это полный  набор
средств  создания,  модификации  и  воспроизведения  мультимедиа  продуктов,
предназначенных для сопровождения  лекционных  курсов.  Мультимедиа  продукт
создается из слайдов(графических изображений в  стандарте  PCX)  ,  анимации
(анимационных сюжетов в стандарте FLI), задач (исполнимых  программ  DOS)  и
видео  сюжетов,  записанных  на  видеокассетах   в   стандартах   PAL/SECAM.
Мультимедиа продукт включает информацию о  демонстрационных  единицах  и  их
расположении на информационных носителях, названия  демонстрации  и  способы
их представления. Программы обеспечение выполнено в системе  Turbo-Pascal  с
использованием  стандартной  библиотеки  Turbo  Vision  и  состоит  из  трех
основных программ:

      1) Программа 'Планировщик лекций'. Выполняет функции создан* настройки
и модификации мультимедиа продуктов,  вставки  в  продукт  новых  и  изъятие
устаревших  материалов,  просмотр  материалов,  планирование  сценарием  для
лекционной работы. В режиме разметки видеофрагментов выполняет полный  набор
функций  управления  видеоаппаратурой  и  обеспечивает  разметку  выбранного
видео сюжета.
      2)   Программа   'Ассистент'.   Предназначена    для    предоставления
демонстрационного  лекционного  материала  в  процессе  лекций.  Матери   ал
выбирается в соответствии со сценарием.
      3) Программа 'Демонстратор анимации' . Данная  программа  осуществляет
демонстрацию  анимационных  сюжетов  в  стандарте  FLI  аниматора   Autodesk
Animator и организует  управление  анимацией  в  ходе  исполнения.  Возможна
приостановка  воспроизведения.  Для  пояснения   представляемого   материала
используется  'указка'  -  графический  курсор,  управляемый   манипулятором
'мышь'.
      Сценарий лекций составляется методистами - профессиональными лекторами
- применительно к конкретной тематике лекций с учетом подготовки  аудитории.
Более подробно данный метод описан в [3]
      Все описанные выше обучающие средства и  методы  имеют  общую  цель  -
максимально возможное использование компьютера в процессе обучения.  Однако,
они  не  решают  задачу  ,  поставленную  перед  разработчиком  темы  данной
дипломной работы. Поиски наиболее рационального решения  вопроса  применения
ЭВМ в обучении идут и сейчас. Разработка данной дипломной работы -  это  еще
одна попытка использовать компьютер как средство обучения.



      1.2. Назначение программы для обучения работе в графическом режиме


      1.2.1. Роль ЭВМ в учебном процессе СПГУАП


      В учебном процессе очень важна в последнее  время  роль  ЭВМ.  Научно-
технический прогресс требует от учебных заведений  оперативности  в  решении
вопросов  технического  обеспечения  учебного   процесса.   Однако,   слабое
финансирование не позволяет в полной мере соответствовать этим требованиям.
      В  настоящее  время  вычислительная  техника  развивается   достаточно
быстро.  Появляются  Как  новые  машины,  так  и   все   более   сложное   и
разнообразное программное обеспечение. ЭВМ входит в нашу жизнь все больше  и
в самых различных  областях  науки  и  производства,  сферы  обслуживания  и
образования. Потребность  в  грамотных  пользователях  возрастает  с  каждым
днем.     ЭВМ   прочно   вошли   в   учебный   процесс   Санкт-Петербургской
Государственной Академии аэрокосмического  приборостроения.  Академия  имеет
кафедру   'Вычислительных   машин',   которая   готовит   специалистов    по
вычислительной  технике.  Помимо  будующих  программистов-электронщиков   на
кафедре проходят  подготовку  и  студенты  других  специальностей.  Студенты
изучают   курсы   'Алгоритмизация   и   программирование',   'Языки    прог-
рамирования', 'Вычислительные комплексы, системы и сети' и др..
Лаборатории кафедры оснащены  персональными  ЭВМ,  микроЭВМ,  имеется  класс
аналоговых   вычислительных   машин,   вычислительный   центр,   установлена
локальная  сеть.  Студенты  Академии  учатся  пользоваться  компьютером  как
помощником в учебе. Они приобретают  навыки  работы  на  компьютере,  учатся
программировать . В Академии на многих кафедрах введены  курсы  лабораторных
работ на компьютере. Они  представляют  собой  набор  контрольных  работ.  В
частности,  такие  программы  введены  по  курсам  'схемотехника',   'охрана
труда'. На кафедре экономики введен курс лабораторных работ  на  компьютере.
Программа предоставляет  студенту  возможность  смоделировать  то  или  иное
производство и самому проследить результаты  его  работы,  в  затем  сделать
выводы.  Такие  программы  повышают  интерес  студентов  к  предмету,   дают
возможность  получить  навыки  работы  с  компьютером,  сокращают  время  на
изучение той или иной темы,  освобождают  преподавателя  для  индивидуальной
работы со студентами.
      Компьютеры прочно вошли в учебный  процесс  СПГУАП.  Это  обеспечивает
высокое качество подготовки специалистов по всем специальностям.

      1.2.2. Методика обучения с помощью обучающей программы

      Данная обучающая программа предназначена для студентов младших  курсов
Академии аэрокосмического приборостроения. Она восполняет  отсутствие  курса
лекций по теме 'Графический режим языка Turbo-Pascal'.
      Теоретический материал изложен следующим  образом.  В  начале  раздела
приводится его краткое содержание и  цели  его  изучения.  Затем  приводятся
названия  процедур  и  функций  с  параметрами  ,  а  ниже  описываются   их
назначение и роль параметров. Название процедур и  функций  для  наглядности
выделены  красным  цветом  .  Процедуры  и  функции,  требующие  иллюстрации
содержат графические комментарии.
      Одновременно с теоретическим материалом программа содержит контрольные
вопросы.  Это  обеспечивает  возможность  студенту  самостоятельно   изучить
предлагаемый  материал  и  самостоятельно  проверить  свои   знания.   После
изучения  тем  3-7  студенту  предлагается  ответить  на   четыре   вопроса,
случайным  образом  выбираемые  из  имеющихся  в  базе  данных.  Контрольные
вопросы оформлены следующим образом. Сам вопрос расположен  наверху  экрана.
Ниже  приведены  четыре  варианта  ответов.  Студенту  предлагается  выбрать
правильный и ввести его номер. Такая форма  вопросов  удобна  .  Практически
студенту необходимо найти все  ошибки  в  приведенных  вариантах  ответов  .
Необходимо  помнить  при  написании  базы  данных,  что  при   такой   форме
контрольных вопросов нецелесообразно приводить варианты ответов  типа  'Да',
'Нет', 'Возможно'.  И вопросы должны формулироваться соответственно.
      За работу  с  контрольными  вопросами  студенту  выставляется  оценка.
Выставляемая оценка может быть занесена преподавателем  в  журнал,  а  может
быть использована и как итог самоконтроля  при  самостоятельном  обучении  с
помощью компьютера.
      Программа для обучения работе в графическом режиме языка  Turbo-Pascal
содержит 7 разделов:

      1) программирование графических режимов;
      2) управление курсором и полем рисования;
      3) формирование прямолинейных монохромных изображений;
      4) управление цветом и стилем изображений;
      5) программирование цветных криволинейных изображений;
      6) формирование графических текстов;
      7) программирование динамические озвученные сцены;
      Первый  раздел  посвящен  графическим  режимам.  В  разделе,  на  базе
элементарной  структуры   Turbo-Pascal-программы,   показано   использование
графических  средств  языка.   Здесь   изучаются   процедура   вхождения   в
графический режим, UnitGraph, процедура  восстановления  текстового  режима,
CloseGraph,   процедура   изменения   графического   режима   и    процедура
восстановления исходного текстового режима. В  разделе  приводится  описание
вспомогательных  процедур  и  функций,  с  помощью  которых  можно  получить
справки о текущем графическом режиме и графическом  адаптере.   Этот  раздел
вводит  студента  в  курс  изучаемой  темы.  Знание  этого   раздела   будет
необходимо при написании любой программы с использованием графики.
      Второй раздел содержит информацию также необходимую для любой работы в
графическом режиме. Он  посвящен  процедурам  управления  курсором  и  полем
рисования. В языке существует  возможность  перемещать  курсор  относительно
исходного положения без рисования. Возможно определять  координаты  курсора.
Это бывает необходимо, когда координаты очередного  местонахождения  курсора
заранее неизвестны. В данном  разделе  описаны  процедуры  очищения  экрана,
установки  прямоугольного  окна,  очищения   открытого   окна,   возвращение
параметров активного окна.
      Система меню данной обучающей программы  дает  возможность  обучаемому
самому уста навивать порядок изучения разделов.  Однако,  автор  рекомендует
начать изучение разделов в порядке их следования Если обучаемый уже  владеет
информацией, содержащейся  в  первых  двух  разделах,  то  их  можно  просто
просмотреть, чтобы еще раз вспомнить возможности графического режима.  Такой
просмотр не займет много времени, но поможет быстрее и  точнее  ответить  на
контрольные вопросы следующих разделов.
      Третий  раздел   посвящен   формированию   прямолинейных   монохромных
изображений. Цель данного раздела обучить студента пользоваться  операторами
построения прямолинейных фигур: отрезков, прямоугольников,  параллелепипедов
и ломаных линий. Рассматривается  возможность  закраски  фигур  определяемым
предварительно стилем и цветом. Изучив этот раздел студент должен не  только
научиться строить фигуры с использованием приведенных процедур, но и  видеть
разницу между аналогичными с первого взгляда процедурами, находить  наиболее
рациональное  решение  поставленной  задачи.  На  это   обращается   большое
внимание в контрольных вопросах.
      Этот и все последующие  разделы  содержат  после  теоретической  части
контрольные вопросы. Обучаемому  предоставляется  возможность  дважды  через
меню войти в каждый из этих разделов. При  этом  повторное  изучение  теории
обязательно. После  ответов  на  вопросы  выставляется  оценка.  Эта  оценка
хранится в разделе 'Результаты Вашей работы'. Таким образом  можно  получить
две  оценки  за  одну  тему.  Обе  они  будут  зафиксированы  и  учтены  при
выставлении оценки работы за сеанс. Все дальнейшие  разделы  включая  третий
посвящены непосредственно формированию графических изображений. Они по  сути
самостоятельные под темы. Однако, каждый  следующий  раздел  содержит  часть
информации предыдущий разделов, опирается на эту  информацию,  использует  в
приводимых примерах и в контрольных вопросах. Поэтому и последующие  разделы
рекомендуется в первый раз изучать в порядке их следования.
      Четвертый раздел знакомит с операторами  управления  стилем  и  цветом
изображений.  В данном разделе приведены процедуры установки  цвета  фона  и
цвета рисования, процедуры изменения одного или нескольких  цветов  палитры,
а также процедуру дающую справочную информацию о текущей  цветовой  палитре.
Цветовая палитра проиллюстрирована.  Приведен пример  и  стандартных  стилей
закраски.  Изучив  данный  раздел  студент  получает  возможность  управлять
стилем рисования, а именно:  устанавливать  тип  контурных  линий  (один  из
четырех стандартных или нестандартный), устанавливать стиль  закраски  (один
из 12 стандартных) или формировать  свой,  нестандартный  образец  закраски.
Приведено также описание справочных процедур возвращающих  значение  текущих
цвета и стиля рисования.
      Пятый раздел посвящен криволинейный изображениям. В нем студент сможет
ознакомиться с процедурами построения дуг  окружности  и  эллипса,  контуров
окружности и  эллипса,  круга,  секторов  криволинейных  фигур,  а  также  с
процедурой закраски ограниченных областей, закрашенного эллипса  и  сектора.
Данные  процедуры  проиллюстрированы  и   это   дает   возможность   быстрее
разобраться  в  их  возможностях.  При  формировании  иллюстраций  к  данным
процедурам  были  использованы  различные  цвета  и  стили   закраски.   Это
обеспечивает повторение уже изученного в  разделе  четыре  материала.  Пятый
раздел знакомит студента с понятием генератора случайных  чисел  и  функцией
возврата случайного числа.
      Шестой раздел назван 'Формирование графических текстов'.  Он  посвящен
операторам языка, с помощью которых возможно формировать стандартные  шрифты
(один растровый и четыре штриховых) и нестандартные (их  количество  зависит
от содержимого внутренней таблицы шрифтов компьютера). Примеры этих  шрифтов
приведены   в   качестве   иллюстраций   в   программе.   В   этом   разделе
рассматривается   возможность   изменения   пропорций   штриховых   шрифтов,
вспомогательные  процедуры  возврата  ширины  заданной   текстовой   строки,
привязки выводимого текста к текущему положению курсора, возврат  параметров
текущего  текстового  шрифта.  Вывод  символьной  строки  осуществляется   с
помощью процедур OutText и  OutTextXY.  Они  также  рассмотрены  в  разделе.
Знание возможностей языка Turbo-Pascal,  в  частности  графических  шрифтов,
дает возможность более  полно  их  использовать.  Поэтому  изучение  данного
раздела не менее важно чем изучение предыдущих .
      Последний раздел программы является  наиболее  сложным  для  изучения,
однако и наиболее  интересным  с  точки  зрения  будущего  программиста.  Он
знакомит   со   способами   программирования   эффектов   мультипликации   с
использованием  динамической  и  видеопамяти  компьютера,  программированием
звуковых эффектов с  использованием  одноканального  звукогенератора.  Здесь
рассматриваются  наиболее  общие  приемы   мультипликации,   основанные   на
предварительном формировании, сохранении и быстром выводе, если требуется  с
наложением, на экран статических изображений.  Это  обеспечивается  наличием
средств  работы   с   динамической   памятью   компьютера   и   возможностью
использования страничной организации  его  видеобуфера.  Программа  знакомит
студентов с соответствующими процедурами. В  качестве  иллюстрации  приведен
пример создания эффекта  движения  вдоль  экрана  объекта  в  области  50x50
пикселов.   Создание  звуковых  эффектов  с  использованием   одноканального
звукогенератора  сводится  к  включению,   выключению   и   программированию
определенных законов  изменения  частоты  звукогенератора.  Это  делается  с
помощью  процедур  Sound  и  NoSound.  В  программе  также  приведен  пример
использования звукогенератора.
      Для обучения с помощью данной  обучающей  программы  необходимо  знать
язык Pascal  ,  интегрированную  среду  и  персональный  компьютер  IBM  PC.
Программа рассчитана на работу с ней в течение 40 минут . Если после  работы
с программой в течение этого времени  студент  получил  неудовлетворительные
оценки, то целесообразно  дать  ему  возможность  пополнить  свои  знания  с
помощью учебной литературы, а затем вернуться к компьютерной версии.

      1.2.3. Возможности языка TURBO-PASCAL 6.0.0

      Pascal  является  широко  распространенным   языком   программирования
высокого уровня. Система программирования Turbo-Pascal  была  разработана  в
середине 80-х годов фирмой Borland International  (США).  Turbo  -  торговая
марка  фирмы-разработчика.   Turbo-Pascal   включает   в   себя   как   язык
программирования - одно из расширений языка Pascal для ЭВМ типа IBM,  так  и
среду, предназначенную для написания, отладки и запуска  программ.    Turbo-
Pascal  имеет  широкие  возможности.   Практически  он  полностью  реализует
аппаратные возможности персонального компьютера фирмы IBM  и  совместимых  с
ним. Система имеет  два  основных  достоинства:  простота  и  естественность
языка   программирования   Pascal,   великолепные   сервисные    возможности
диалоговой  среды  программирования  фирмы  Borland.   Язык  характеризуется
расширенными возможностями  по  сравнению  со  стандартом,  хорошо  развитой
библиотекой  стандартных  модулей,   позволяющих  использовать   возможности
операционной  ., системы,  создавать  оверлейные  структуры,  организовывать
ввод-вывод   ,   формировать   графические   изображения   и   т.д..   Среда
программирования позволяет  создавать  тексты  программ,  компилировать  их,
находить  ошибки  и  оперативно  их  исправлять,  компоновать  программы  из
отдельных  частей,  включая  стандартные  модули,  отлаживать  и   выполнять
отлаженную программу.
      За последние годы фирма  выпустила  шесть  модификаций  этой  системы,
известных  как  версии  3.0,  4.0,  5.0,  5.5,  6.0,  7.0.  Каждая  из   них
представляет собой усовершенствование предыдущей, однако, и  все  программы,
разработанные  для  младших  версий,   могут   практически   без   изменений
компилироваться и исполняться  на  более  поздних.  С  помощью  Turbo-Pascal
можно создавать любые программы - от программ, предназначенных  для  решения
простейших вычислительных задач, до сложных  современных  систем  управления
базами данных и операционных систем. Система  не  уступает,  а  в  некоторых
случаях и более проста в применении, по сравнению с профессиональным  языком
программирования СИ.
      Пакет Turbo-Pascal 7.0 предоставляет пользователю также большой  объем
справочной информации. Он как  и  версия  6.0  обеспечивает  многооконный  и
много файловый режим работы, использование  манипулятора  'мышь',  позволяет
применять  объектно-ориентированное  программирование,  обладает  встроенным
ассемблером,  имеет   инструментальное   средство   создания   интерактивных
программ - Turbo-Vision -и т.д.
      Пакет Turbo-Pascal 7.0 позволяет работать в обычном режиме  MS  DOS  и
может быть  использован  практически  на  любой  машине.  Версия  имеет  ряд
преимуществ по сравнению с предыдущими:
      1) выделение цветом различных элементов исходного текста  программы  -
идентификаторов, зарезервированных слов, комментариев, строк, чисел и  т.д.,
что позволяет уже на стадии ввода исходного текста устранить многие  ошибки,
описки;
      2)  многофайловая  система  помощи  с  возможностью   ее   перестройки
пользователем;
      3) наличие  локального  меню  с  содержанием,  зависящем  от  текущего
состояния среды ;
      4) ряд  дополнительных  расширений  языка,  таких,  как  использование
открытых массивов, параметров-констант, типизированного адресного  оператора
и  т.д..  дающих  программисту   дополнительные   возможности,   позволяющих
совмещать требования, накладываемые на программы  операционной  системой  MS
DOS и средой Windows, пользоваться некоторыми возможностями, которых  нет  в
языке Pascal и которые есть в других языках, например в языке СИ;
      5) наличие дополнительных стандартных процедур и функций;
      6) наличие дополнительных ключей компилятора;
      7) расширенные возможности объектно-ориентированного программирования;
      8) получение более эффективных кодов программ (использование  кодового
сегмента  для  размещения  строковых  констант  и  констант  типа-множества,
удаление пустых строк, проверка  переполнения  величин  целых  типов,  более
быстрый ввод-вывод текстовых файлов и т.д.);
      9) усовершенствованные программы Turbo Vision;  10)  новая  улучшенная
компоновка системы меню.

      1.3. Техническое задание

      1.3.1. Постановка задачи

      Техническое  задание  данной  дипломное  работы  требует   разработать
программу для  обучения  работе  в  графическом  режиме  языка  Turbo-Pascal
6.0/7.0 , предназначенную для студентов младших  курсов  Санкт-Петербургской
государственной Академии аэрокосмического приборостроения. Программа  должна
отвечать следующим требованиям:
      1) позволять индивидуально изучить работу с компьютеров в  графическом
режиме
      2) содержать 7 разделов для изучения :
           - программирование графических режимов
           - управление курсором и полем рисования
           - формирование прямолинейных монохромных изображений
           - управление цветом и стилем изображений
           - программирование цветных криволинейных изображений
           - формирование графических текстов
           - программирование озвученных динамических сцен
      3)  представлять  изучаемый  материал  наглядно,   сопровождая   текст
необходимыми иллюстрациями
      4) предусматривать возможность повторения изученного материала
      5) предусматривать возможность контроля приобретенных знаний
      6) регистрировать результаты контроля знаний
      7)   обеспечивать   возможность   разъяснения   студенту   в    случае
необходимости его ошибок
      8) иметь продолжительность сеанса не более 45 минут
      9) программа должна быть написана  на  языке  программирования  Turbo-
Pascal , не ниже версии 6.О..

      1.3.2. Выбор технические средств и программного обеспечения

      Для реализации данного технического задания  необходимо  использование
персонального компьютера типа IBM или совместимого с ним, растровый  дисплей
с   графическим  адаптером  типа  EGA,  имеющий  объем  видеобуфера  256   К
,графическим выводом 640x350 пиксел , 16 регистрами палитры (режим ЮН).
      В   качестве   программного   обеспечения   необходимо   иметь    DOS,
инструментальную интегрированную среду Turbo-Pascal 7.O.

      1.3.3. Технико-экономическое обоснование

      Разрабатываемая программа предназначена для студентов  младших  курсов
СПГУАП. В учебном плане отсутствует курс лекций по данной  теме  и  изучение
графического  режима  полностью  оставлено  для  самостоятельного  изучения.
Однако,  для  многих  студентов  работа  только   с   литературой   является
затруднительной,   малопонятной   и   для    получения    удовлетворительных
результатов требует больших временных затрат.
      Применение  компьютерной  программы  для  обучения  в  данном   случае
является целесообразным.  В  процессе  работы  с  такой  программой  студент
приобретает навыки  работы  с  компьютером,  что  является  целью  курса,  и
получает конкретные знания по теме  'Графические  средства  алгоритмического
языка Turbo-Pascal'. Диалог ЭВМ-пользователь  (в  данном  случае  обучаемый)
ведется в удобном для последнего темпе, что обеспечивает  лучшее  усваивание
материала. Каждый студент имеет возможность изучать разделы темы  в  удобном
для него порядке. Это экономит время студента для изучения более важных  для
него разделов и игнорирование разделов, которые ему уже  знакомы.  В  то  же
время  преподаватель  имеет  возможность  уделять   внимание   студентам   в
индивидуальном порядке. Программа предусматривает элементы  проверки  знаний
в виде контрольных вопросов в конце разделов. Такая  система  обучения  дает
возможность студенту самостоятельно оценить свои  знания.  После  ответа  на
вопрос обучаемый получает справку о его правильности и  пояснения  в  случае
неверного ответа. После ответов на все  вопросы  раздела  он  может  изучить
тему вновь и вновь ответить на  контрольные  вопросы.  Принцип  'обучение  +
контроль' повышает уровень получаемых знаний.
      В предыдущих разделах были описаны многочисленные  средства  и  методы
обучения с помощью компьютера. Однако, разработка  настоящей  программы  для
обучения является необходимой и целесообразной в условиях  данного  учебного
заведения. Целью создания  данной  программы  является  удовлетворение  нужд
учебного процесса с  учетом  технических  возможностей  академии,  а  именно
разработка методических материалов по программированию с использованием  ЭВМ
типа IBM PC  и  языка  Turbo-Pascal.  Среди  уже  существующих  компьютерных
обучающих программ отсутствует программа для обучения работе  в  графическом
режиме языка Turbo-Pascal. Таким образом разработка методических  материалов
необходима  при  использовании   любых   методов   обучения.    Кроме   того
существующие обучающие программы не отвечают  ряду  требований  технического
задания , в частности по содержанию программы,  ее  оформлению,  ограничению
по продолжительности сеанса, выбору языка программирования.
      Разработка  данной  программы  является   экономически   обоснованной.
Существует   теоретическая   возможность    приобретения    академией    уже
существующего аналогичного программного  обеспечения  и  адаптация  его  для
решения конкретной задачи по  обучению  работе  в  графическом  режиме.  Это
потребует  значительных  материальных  затрат  как  на  приобретение  такого
программного обеспечения , так и на его обработку и подготовку к работе .  В
сложившейся  экономической  ситуации  такое  решение  проблем  для  академии
невозможно. Данная  дипломная  работа  решает  вопрос  обеспечения  учебного
процесса необходимым компьютерным  сопровождением  и  экономит  материальные
средства академии.



                           2. ОПИСАНИЕ БАЗЫ ДАННЫХ

      2.1. Методическое оснащение базы данных

      В  1992  году  фирма  Borland  International  выпустила   два   пакета
программирования, основанные на использовании языка Паскаль -Borland  Pascal
7.0 и Turbo Pascal 7.O. Первый пакет включает в себя три  режима  работы:  в
обычном режиме операционной системы MS DOS, в защищенном режиме MS DOS  и  в
среде Windows. Этот  пакет  требует  для  использования  своих  возможностей
довольно большой объем памяти -примерно 30  Мбайт  на  Жестком  диске  и  не
менее  2  Мбайт  оперативной  памяти.  Пакет   Turbo-Pascal   7.0   обладает
ограниченными возможностями и дает возможность  работать  только  в  обычном
режиме  MS  DOS.  Однако,  он  доступен   для   использования   на   обычных
персональных компьютерах типа IBM и его  стоимость  по  сравнению  с  первым
пакетов значительно ниже»
      Turbo-Pascal  включает  в  себя  язык  программирования  -   одно   из
расширений языка Паскаль для ЭВМ  типа  IBM  и  среду,  предназначенную  для
написания, отладки и запуска программы. Язык имеет  расширенные  возможности
по сравнению со стандартом, хорошо развитую библиотеке модулей,  позволяющих
использовать  возможности   операционной   системы,   создавать   оверлейные
структуры, организовывать ввод-вывод, формировать графические изображения  и
т.д.
      Целью написания  данной  программы  является  ознакомить  студентов  с
возможностями языка Turbo-Pascal б.0.0 по  формированию,  вводу  и  выводу
графической информации. При написании базы данных были использованы  учебные
пособия [4], [5]  и [6]
Работа посвящена возможностям языка TURBO-PASCAL  по  работе  с  графической
информацией. Студентам предлагается ознакомиться  со  стандартными  модулями
Graph, Crt, а также с отдельными процедурами других модулей.
      Модуль Graph содержит  типы,  константы,  переменные  и  подпрограммы,
позволяющие программисту создавать  изображения  с  использованием  широкого
набора  графических  адаптеров(CGA,  MCGA,  EGA,  VGA,  Hercules,   AT&T400,
3270PC,IBM8514). При работе с этими адаптерами  весь  экран  разбивается  на
отдельные 'точки' - пиксели, которые можно закрасить в тот  или  иной  цвет.
Каждый пиксель имеет две координаты: X и Y. Количество пикселей  зависит  от
типа адаптера и режима его работы. Данная программа  написана  для  адаптера
EGA и режима EGAHi с размером поля 640x350, палитрой состоящей из 16  цветов
и двумя страницами видеопамяти. Данный  режим  позволяет  выделять  окна  на
экране дисплея. В этом  случае  используются  координаты  в  пределах  окна.
Курсор в графическом режиме невидим, однако его можно  переместить  в  любую
точку экрана, посмотреть его координаты.
      Модуль Graph содержит 8 стандартных типов, описывающих цвета  палитры,
характеристики линий, характеристики текста,  орнамент  и  цвет  заполнения,
задаваемый пользователем орнамент заполнения, координаты точки, окно  вывода
графической информации, данные о  дуге.  Константы  и  переменные  указанных
типов приведены в таблицах в [5].



      Обучающая программа предлагает студентам ознакомиться с процедурами и
функциями следующего назначения:
      1) процедуры управления графическим режимом ;
      2) функции управления графическим режимов;
      3) процедуры управления экраном, окном, страницей;
      4) процедуры управления цветом и палитрой;
      5) функции управления цветом и палитрой;
      6) функции работы с точками;
      7) процедуры работы с линиями;
      8) процедуры построения фигур из линий;
      9) процедуры построения криволинейных фигур;
      10) процедуры работы с текстом;
      11) функции работы с текстом;
      12) процедуры обмена с памятью;
      13) функции обмена с памятью;

      Подавляющее большинство процедур и функций модуля Graph можно
использовать только после задания графического режима   ^ процедурой
UnitGraph.
      Модуль Crt содержит константы, переменные и подпрограммы,
предназначенные для работы с консолью. В отличие от стандартного ввода-
вывода, когда он осуществляется через операционную систему, подпрограммы
модуля Crt работают с BIOS и, даже непосредственно с видеопамятью. При
работе с экраном он разбивается на строки, а строки на отдельные позиции, в
которые можно поместить только один символ. Есть возможность открывать
окна, задавать цвета символов и фона. Обучающая программа знакомит
студентов с частью процедур и функций данного модуля, а именно:
      1) процедуры работы с экраном;
      2) функции работы с клавиатурой;
      3) процедуры управления звуком;
      4) процедуры разнообразного назначения.
      Кроме перечисленных выше процедур и функций программа знакомит
обучаемого с понятием случайного числа, функцией Random, и генератором
случайных чисел Randomize , которые описаны в стандартном модуле System.
      Процедуры и функции, представленные на рассмотрение в данной работе,
сгруппированы для изучения в 7 разделов:
      1 раздел - программирование графических режимов;
      2 раздел - управление курсором и полем рисования ;
      3 раздел - формирование прямолинейных монохромных изображений;
      4 раздел - управление цветом и стилем изображений;
      5 раздел - программирование цветных криволинейных изображений;
      6 раздел - формирование графических текстов;
      7 раздел - программирование озвученных динамических сцен ;
      Изучая  эти  разделы  студент  последовательно   узнает   как   задать
графический режим, как узнать его параметры,  изменить,  временно  выйти  из
режима, научиться управлять курсором  и  полем  рисования,  открывать  окна,
пользоваться цветовой палитрой и имеющимися в арсенале языка типами линий  и
стилей закраски. Полезным будет изучение разделов  5,6  ,  которые  содержат
информацию  о  возможностях  построения  криволинейных  фигур,  формирование
графических  текстов  стандартных  типов  и  ряда  нестандартных.   Наиболее
сложным  является  последний  раздел,  посвященный  озвученным  динамическим
сценам. В этом разделе студент знакомится с динамической памятью  компьютера
и страничной организацией видеобуфера.  Это  основные  средства,  с  помощью
которых стало возможным создание эффекта мультипликации на  экране  дисплея.
В  этом  же  разделе  представлен  звукогенератор,  позволяющий   обеспечить
звуковое сопровождение .
      В меню программы перечисленные разделы следуют  в  порядке,  указанном
выше.  Этот  порядок  следования  разделов  соответствует  последовательному
изучению материала  от  простого  к  сложному.  Однако,  система  меню  дает
возможность студенту нарушить этот порядок  и  изучать  разделы  в  порядке,
удобном  ему.  При  этом  следует  учесть,  что  каждый  последующий  раздел
опирается на знание предыдущих, в контрольных  вопросах  следующих  разделов
содержатся  вопросы,  касающиеся  предыдущих  тем.   Поэтому   рекомендуется
знакомиться первый раз с темой последовательно. Доступ к разделам  3,4,5,6,7
ограничен  .  Студенту  предоставляются  только  две  попытки  ответить   на
контрольные вопросы.  Рекомендуется  после  первого  изучения  и  неудачного
ответа во второй раз начать изучение с раздела, который  показался  наиболее
простым и понятным.
      С учетом целей и задач данной разработки база данных содержит основные
процедуры и функции, касающиеся работы в графическом режиме.

      2.2. Структура базы данных

      База данных представляет собой набор 17 файлов типа запись Семь из них
содержат  теоретическую  часть  семи  изучаемых  разделов,  пять  -   тексты
контрольных вопросов к разделам 3,4,5,6,7 и  пять  -тексты  справок  к  этим
вопросам. Схема обращений процедур к файлам базы данных приведена в табл. 1


                                                                   Таблица 1



                Схема обращений процедур к файлам базы данных



|Номер   |Имя модуля     |Имя         |Имена файлов базы данных              |
|раздела |               |процедуры   |                                      |
|        |               |            |теория      |вопросы     |Справки     |
|1       |Razdel1        |Razdel10    |Raztex1     |-           |-           |
|2       |Razdel2        |Razdel20    |Raztex2     |-           |-           |
|3       |Razdel3        |Razdel30    |Raztex3     |Joing       |Iod         |
|4       |Razdel4        |Razdel40    |Raztex4     |Joi         |Iodi        |
|5       |Razdel5        |Razdel50    |Raztex5     |Join        |Iodin       |
|6       |Razdel6        |Razdel60    |Raztex6     |Jois        |Iodis       |
|7       |Razdel7        |Razdel70    |Raztex7     |jos         |ios         |



             Структура базы данных приведена в таблицах 2, 3, 4

                                                                   Таблица 2

                           Структура базы данных.

                                   Теория

|Поле Р1  |Поле Р2                                                   |
|...      |...                                                       |
|         |ФОРМИРОВАНИЕ ПРЯМОЛИНЕЙНЫХ МОНОХРОМНЫХ ИЗОБРАЖЕНИЙ        |
|*        |procedure DrawPoly(NumPoints:word;                        |
|*        |var PolyPoints);                                          |
|7        |Строит ломаную линию.                                     |
|         |NumPoints - число вершин многоугольника PolyPoints -      |
|         |переменная без типа, содержащая NumPoints+1 пар координат |
|         |вершин многоугольника (первая и последняя вершины должны  |
|         |совпадать).                                               |
|*        |procedure FillPoly(NumPoints:word;var PolyPoints);        |
|8        |Закрашивает многоугольник текущим цветом и орнаментом.    |
|         |Параметры NumPoints и PolyPoints имеют тот же смысл и тип,|
|         |что и одноименные параметры процедуры DrawPoly.           |
|...      |...                                                       |
|0        |                                                          |


Поле Р1 - флаги: * - признак выделения строки цветом
                 7,8 - признак наличия иллюстрации к тексту и ее номер
                   О - признак конца файла
Поле Р2 - текст.

                                                                   Таблица 3

                           Структура базы данных.

                                   Вопросы

|Поле |Поле Р2|Поле Р3                                                       |
|Р1   |       |                                                              |
|...  |...    |...                                                           |
|*    |02     |КАК ПОСТРОИТЬ СТОЛБЧАТУЮ ДИАГРАММУ В ЗАРАНЕЕ СФОРМИРОВАННОЙ   |
|     |       |РАМКЕ?                                                        |
|     |       |1 Bar3D(X1, Y1, X@, Y2, depth, true);                         |
|     |       |SetViewPort(X1, Y1, X@, Y2, false);                           |
|     |       |ClearViewPort;                                                |
|     |       |Bar3D(X1, Y1, X@, Y2, depth, false);                          |
|     |       |2 Bar3D(X1, Y1, X@, Y2, depth, true);                         |
|     |       |SetViewPort(X1, Y1, X@, Y2, true);                            |
|     |       |ClearViewPort;                                                |
|     |       |Bar3D(X1, Y1, X@, Y2, depth, false);                          |
|     |       |3 Bar3D(X1, Y1, X@, Y2, depth, true);                         |
|     |       |Bar3D(X1, Y1, X@, Y2, depth, false);                          |
|     |       |4 Bar3D(X1, Y1, X@, Y2, depth, true);                         |
|     |       |Bar3D(X1, Y1, X@, Y2, depth, true);                           |
|*    |       |                                                              |
|...  |       |...                                                           |
|0    |       |                                                              |


                                                                   Таблица 4


|Поле|Поле|Поле|Поле Р4                                           |Поле |
|Р1  |Р2  |РЗ  |                                                  |Р5   |
|    |    |    |SetViewPort. Координаты окна002 отсчитываются     |     |
|    |    |    |от левого верхнего угла экрана в то время как     |     |
|    |    |    |для процедуры Bar3D от левого верхнего угла       |     |
|    |    |    |окна.                                             |     |
|    |    |*   |                                                  |•    |
|1   |    |3   |Ответ правильный.                                 |005  |
|    |    |*   |                                                  |     |
|    |    |4   |Ответ не точный. На экране появятся затененные    |003  |
|    |    |    |контуры нижнего параллелепипеда.                  |     |
|*   |    |    |                                                  |     |
|... |... |... |...                                               |     |
|0   |    |    |                                                  |     |

Поле Р1 - флаги:       * - признак конца вопроса
                       1 - признак наличия иллюстрации и ее номер
                       О - признак конца файла
Поле Р2 - номера вопросов.
Поле РЗ - флаги: 1,2,3,4 - номера ответов.
                       * - признак конца справки
Поле Р4 - текст справок.
Поле Р5 - оценка.



      2.3. Возможности изменения или обновления

      2.3.1. Теория

      Данная структура базы данных является удобной для использования .  Она
легко может быть дополнена в случае необходимости,  частично  или  полностью
заменена. Файлы теоретической части являются файлами типа запись и  содержат
по два поля.
      Первое поле - Р1 . Так оно названо в программе и под него отведен один
символ. Это поле используется как поле флага и  анализируется  программой  с
помощью условного оператора  CASE.  Значения  флагов  поля  Р1  приведено  в
табл.5

                                                                   Таблица 5


|Символ |Значение  |Действия программы                                      |
|поля Р1|          |                                                        |
|0      |Конец     |При считывании записи с этим символом в поле Р1         |
|       |файла     |программа возвращает Вас в меню,                        |
|       |          |если Вы изучали разделы 1 Или 2, или переходит в [режим |
|       |          |контрольных вопросов, если изучался раздел 3-7.         |
|*      |1 вывод   |Строка выводится на экран другим (красным) цветом. Этим |
|       |строки    |символом отмечены строки, содержащие названия изучаемых |
|       |другим    |процедур и функций. Это сделано для наглядности         |
|       |цветом    |изучения. В случае необходимости эти значки возможно    |
|       |          |убрать и Текст будет выводится одним (синим) цветом.    |
|       |          |Возможно выделить и другие строки цветом, внеся в поле  |
|       |          |Р1 соответствующих записей значок '*'.  Возможно        |
|       |          |изменить цвет выделенных строк путем замены параметра   |
|       |          |процедуры SetColor в операторах CASE константы '*'      |
|       |          |процедур RAZDELXO .                                     |
|#      |признак   |Используется только в разделах процедурах RAZDEL6,      |
|       |конца     |RAZDEL7, в операторе CASE при проверке наличия          |
|       |страницы  |иллюстрации. При обнаружении этого символа заканчивается|
|       |          |цикл вывода текста из файла теории.                     |
|любой  |признак   |Оператор CASE сравнивает этот символ с имеющимися у него|
|другой |наличия   |константами и выводит соответствующую иллюстрацию на    |
|ASCII-с|иллюст-   |экран. Если символ среди констант не обнаружен, это не  |
|имвол  |рации     |мешает дальнейшему считыванию текста. Поэтому           |
|       |          |целесообразно иллюстрации обозначать сразу при написании|
|       |          |базы данных, а затем вносить соответствующие изменения в|
|       |          |программу.                                              |


      Второе поле - Р2 - составляет 69 символов и  содержит  непосредственно
текст теоретической части изучаемой темы. Программа написана таким  образом,
что из файла теории считывается на экран  по  32  строки.  Экран  удерживает
изображение до нажатия любой символьной клавиши, после чего он  очищается  и
выводятся следующие 32 строки текста и т.д. до конца файла. При этом  каждые
32  строки  образуют  страницу  текста.   Началу   каждой   новой   страницы
соответствует заголовок - название изучаемого  раздела.  Это  целесообразно,
так как теория имеет  значительный  объем,  экраны  полностью  заполнены.  В
случае необходимости (нехватки строк) следует 'добить' пустые строки,  чтобы
страница состояла из 32  строк.  Количество  пустых  строк  будет  в  данном
случае незначительно, однако такая структура делает базу данных наглядной  и
удобной для работы даже неспециалисту и  не  загромождает  поле  Р1  лишними
знаками типа признака вывода пустой строки.
      При внесении изменений в файл теоретической части базы данных  следует
помнить следующее:
      1) поле Р1 должно занимать 1 символ. В случае отсутствия в  нем  флага
поле должно быть пустым;
      2) поле Р2 должно занимать  69  символов.  Если  в  строке  необходимо
поместить больше символов, То их следует перенести на другую строку, а  если
значащих символов меньше 69,  то  следует  'добить'  символы  'пробел'  так,
чтобы строка составляла всего 69 символов;
      3) звездочкой необходимо помечать  строки,  которые  следует  выделить
другим (красным) цветом;
      4) если базу данных дополняют, то следует не забыть указать  в  начале
страницы название раздела;
      5) символ - признак иллюстрации можно ставить в любом месте  страницы.
Место нахождения иллюстрации будет определено программным путем;
      5) в конце файла следует поставить значок '0' в поле Р1. Поле Р2  этой
записи считываться не будет ;
      6) после окончания написания базы данных  следует  проверить  еще  раз
соответствие всех строк необходимой длине (после нажатия клавиши END  курсор
должен останавливаться в позиции 70);

      2.3.2. Вопросы
      Файлы, содержащие вопросы к разделам 3,4,5,6,7 являются так же  как  и
файлы теории файлами типа запись. Они содержат по три поля.
      Первое поле Р1 и под него выделен один символ. Поле  используется  как
поле флагов. Значения этих флагов приведены в табл.6
                                                                   Таблица 6

                           Значения флагов поля Р1

|Символ поля |Значение   |Действия программы                                  |
|Р1          |           |                                                    |
|0           |Конец файла|При считывании записи с этим символом программа     |
|            |           |прекращает поиск нужного номера вопроса.            |
|*           |Конец      |Прекращается вывод содержимого поля РЗ (текста      |
|            |вопроса    |вопроса) на экран.                                  |
|Любой другой|Признак    |CASE сравнивает этот символ с имеющимися у него     |
|ASCII-символ|наличия    |константами и выводит соотв. иллюстрацию на экран.  |
|            |иллюстрации|Если символ среди констант не обнаружен, это не     |
|            |           |мешает дальнейшему считыванию текста. Поэтому       |
|            |           |целесообразно иллюстрации обозначать сразу при      |
|            |           |написании БД,а затем вносить соотв. изменения в ПО. |


      Второе поле - Р2. Оно состоит из двух  символов  и  предназначено  для
обозначения начал и номеров вопросов. Поле может содержать номера  с  01  по
99. При считывании записи программа анализирует поле  Р2  и  если  считанный
номер  соответствует  требуемому,  то  выводит  содержимое  поля  РЗ  (текст
вопроса) на экран до тех пор, пока в  поле  Р1  не  появится  признак  конца
вопроса.
      Третье поле - РЗ - содержит текст самих вопросов и под  него  выделено
69 символов. Аналогично полю Р2  файла  теории  это  поле  должно  содержать
ровно 69 символов и, в случае если значащих символов  в  строке  меньше  69,
следует 'добить' символы 'пробел'.
В отличие от порядка считывания  файла  теории,  файл  вопросов  имеет  флаг
признака конца вопроса. Таким  образом  на  экран  выводится  текст  вопроса
начиная с нужного номера  и  до  появления  флага  признака  конца  вопроса.
Поэтому  при  наборе  текста  вопросов  необходимо  следить,  чтобы   вопрос
поместился в поле экрана , т.е. не превышал 32  строк,  имелись  необходимые
пустые строки, отступы, красные  строки  и  т.д...  Пустые  строки  в  конце
вопроса 'добивать'  не следует.
      При внесении изменений в файл вопросов  базы  данных  следует  помнить
следующее:
      1) поле Р1 должно занимать 1 символ. В случае отсутствия в  нем  флага
поле должно быть пустым;
      2) поле Р2 должно занимать 2 символа;
      3) поле РЗ должно занимать  69  символов.  Если  в  строке  необходимо
поместить больше символов, то их следует перенести на другую строку, а  если
значащих символов меньше 69,  то  следует  'добить'  символы  'пробел'  так,
чтобы строка составляла всего 69 символов;
      4) текст вопроса должен начинаться  номером  вопроса,  содержащимся  в
поле Р2 и кончаться символом '*' , содержащимся в поле Р1;
      5) символ - признак иллюстрации можно ставить в любом  месте  поля  Р1
напротив текста  вопроса.  Место  нахождения  иллюстрации  будет  определено
программным путем;
      6) в конце файла следует поставить значок '0'  в  поле  Р1.  Остальные
поля этой записи считываться не будут ;
      7) после окончания написания базы данных  следует  проверить  еще  раз
соответствие всех строк необходимой длине (после нажатия клавиши END  курсор
должен останавливаться в позиции 72);

                               2.3.3. Справки

      Файл справок является файлом типа запись и имеет  пять  полей.  Первое
поле - Р1 - поле флагов, под которое  отведен  один  знак.  Значение  флагов
поля Р1 приведено в табл.7

                                                                   Таблица 7



                           Значения флагов поля Р1


|Символ    |Значение  |Действия программы                                     |
|поля Р1   |          |                                                       |
|0         |Конец     |При считывании записи с этим символом программа        |
|          |файла     |прекращает поиск нужного номера вопроса.               |
|*         |Конец     |Прекращается вывод содержимого поля РЗ (текста вопроса)|
|          |вопроса   |на экран.                                              |
|Любой     |Признак   |Оператор CASE сравнивает этот символ с имеющимися у    |
|другой    |наличия   |него константами и выводит соответствующую иллюстрацию |
|ASCII-симв|иллюстраци|на экран. Если символ среди констант не обнаружен, это |
|ол        |и         |не мешает дальнейшему считыванию текста. Поэтому       |
|          |          |целесообразно иллюстрации обозначать сразу при         |
|          |          |написании базы данных, а затем вносить соответствующие |
|          |          |изменения в программу.                                 |



      Поле Р2 содержит номера вопросов от 01 до 99. Под это  поле  отводится
2 знака. Программа, считывая поле Р2 анализирует его значение  и,  если  оно
соответствует нужному  номер  вопроса,  то  начинает  поиск  нужного  номера
ответа в поле РЗ вплоть до появления признака конца вопроса в поле Р1.
Поле РЗ - поле флагов. Под него отведен один знак. Числа  1,2,3,4  -  номера
ответов. При полном обновлении базы данных возможно увеличить или  уменьшить
количество вариантов ответов. Однако, необходимо при этом  внести  изменения
и в программу. Поле РЗ содержит и  признак  конца  справки.  Таким  образом,
программа, найдя нужный номер ответа начинает считывать и выводить на  экран
справку -содержимое поля Р4 до появления значка '*' в поле РЗ.
      Поле  Р4  содержит  текст  справок.  Под  него  отведено  68   знаков.
Необходимо при написании базы данных четко соблюдать размеры всех полей.
      Поле Р5 - поле оценки. Под него  отведено  3  знака.  Это  обусловлено
разницей  в  длине  ASCIIZ-строки  и  строки  типа  string.  Оценка   должна
выглядеть следующим  образом:   001,  002,  003,  004,  или  005.  Программа
обращается к этому полю когда находит нужный  номер  ответа  Поэтому  оценку
следует помещать в поле Р5 в записях, содержащих номера ответов.
      Как правило, текст справки не превышает  текста  вопроса,  но  следует
помнить,  что объем ее не должен превышать объема экрана, т.е. 32 строки.
      При внесении изменений в файл справок следует помнить следующее:
      1) поле Р1 должно занимать 1 символ. В случае отсутствия в  нем  флага
поле должно быть пустым;
      2) поле Р2 должно занимать 2 символа;
      3) поле РЗ должно занимать  68  символов.  Если  в  строке  необходимо
поместить больше символов, то их следует перенести на другую строку, а  если
значащих символов меньше 68,  то  следует  'добить'  символы  'пробел'  так,
чтобы строка составляла всего 68 символов;
      4) текст справки должен начинаться номером ответа и кончаться символом
'*' , содержащимися в поле РЗ;
      5) запись, содержащая в поле Р1 признак конца вопроса  не  считывается
далее и не выводится на экран.  Поэтому  конец  вопроса  и  конец  последней
справки в вопросе не должны попадать в одну запись, т.е. должны находится  в
разных строках.
      6) символ - признак иллюстрации можно ставить в любом  месте  поля  Р1
напротив текста  справки.  Место  нахождения  иллюстрации  будет  определено
программным путем;
      7) в конце файла следует поставить значок 'О1  в  поле  Р1.  Остальные
поля этой записи считываться не будут ;
      8) после окончания написания базы данных  следует  проверить  еще  раз
соответствие всех строк необходимой длине (после нажатия клавиши END  курсор
должен останавливаться в позиции 76);
      Всякое  внесение  изменений  в  базу  данный  вплоть  до  ее   полного
обновления требует внимания и точности . Необходимо четко соблюдать  размеры
всех полей записи. В противном случае возможны ошибки.  Например,  появление
значков конца строки  в  выводимом  тексте,  отсутствие  вывода  результатов
работы и др..


                            3. ОПИСАНИЕ ПРОГРАММЫ

      3.1. Общие сведения

      Настоящая дипломная работа посвящена разработке программы для обучения
работе в  графическом  режиме  языка  Turbo-Pascal.  Цели  и  задачи  данной
разработки,  а  также  методика  обучения  с   помощью   данной   программы/
возможности  языка  были  описаны  выше,  в  разделе  'Назначение  обучающей
программы'. Программа написана на языке  Turbo-Pascal.  Этот  язык  является
языком высокого уровня . Он имеет  рад  преимуществ  перед  другими  языками
высокого  уровня.  Самые  главные  его  достоинства   -   это   простота   и
естественность, великолепные сервисные возможности.   Наличие  типа  запись,
возможности  модульного  программирование,  наличие  библиотеки  стандартных
модулей дают возможность быстро и эффективно создавать  самые  разнообразные
программные продукты начиная от решения простейших  вычислительных  задач  и
кончая  сложными  современными  системами   управления   базами   данных   и
операционных систем. В данном случае с его помощью  была  создана  программа
для обучения, которая работает с  базой  данных.  Возможности  языка  и  его
преимущества более подробно описаны в п.1.2.3 .
      Программа называется 'Графика' . Она состоит  из  основной  программы,
содержащейся в файле с именем 'Graphic', восьми  самостоятельных  модулей  с
именами Razdel1,  Razdel2,  Razdel3,  Razdel4,  Razdel5,  Razdel6,  Razdel7,
MyBook.
      Основная программа формирует заставку к программе, обращается к  файлу
Veden,  содержащему  текст  введения,  выводит  текст  введения,   формирует
систему меню, через которое затем обращается к процедурам модулей Razdel1  –
Razdel7, получает из этих процедур переменные , содержащие оценки за  ответы
на контрольные вопросы, присваивает их значение своим переменный, хранит  их
в течение всей работы  с  программой  и  отвечает  за  формирование  раздела
'Результаты Вашей работы' системы меню.  Основная  программа  регламентирует
доступ  к  разделам.  Переменные  NOMER3  -  NOMER7  являются  счетчиками  и
обеспечивают вход в процедуры модулей Razdel3 – Razdel7 не  более  двух  раз
за сеанс. При этом основная  программа  хранит  все  оценки,  полученные  за
ответы на контрольные вопросы , и все их выводит на  экран  по  обращению  к
разделу меню 'Результаты Вашей работы'.
      Модули Razdel1 – Razdel7  содержат  процедуры  с  именами  Razdel10  -
Razdel70 соответственно. Эти процедуры устанавливают связь  с  файлами  базы
данных, выводят текст теории, вопросов, справок, содержат программный  текст
иллюстраций к теории, вопросам и справкам. По результатам  ответов  студента
на контрольные  вопросы  процедура  формирует  переменную.  После  отработки
модуля значение этой переменной  переприсваивается  определенной  переменной
основной программы. И основная программа хранит это  значение  до  окончания
работы с программой.
      База данных  состоит  из  трех  логических  частей,  которые  содержат
теоретическую часть,  контрольные  вопросы  и  справки.  Они  расположены  в
каталоге следующим образом. Теоретическая часть размещается в восьми  файлах
типа запись . Файлы с именами Raztex1, Raztex2, Raztex3,  Raztex4,  Raztex5,
Raztex6, Raztex7  содержат  тексты  теоретической  части  по  семи  разделам
соответственно.  Файл  Veden  содержит  текст   введения.   К   разделам   ,
содержащимся в файлах  Razdel3  –  Razdel7  имеются  контрольные  вопросы  ,
размещенные в файлах Joing, Joi, Join, Jois, Jos, и справки , размещенные  в
файлах lod, lodi, lodin, lodis, los. Файлы контрольных  вопросов  и  справок
так же являются файлами типа запись. Структура базы данных,  ее  содержание,
возможности  дополнения,  обновления   или   частичного   изменения,   схема
обращений процедур к базе данных подробно описаны в разд.2.
      Модуль MyBook является библиотечным модулем. Он включает в себя четыре
процедуры, которые неоднократно встречаются в текстах основной  программы  и
процедур рабочих модулей.   Процедура  OKNO  -формирует  экранную  рамку,  в
которой  будут  размещаться  тексты  программы.  Процедура  OKN01  формирует
заставку   с   надписью   'Контрольные   вопросы'.   Процедура    GraphRegim
обеспечивает вход  в  графический  режим.  Эти  три  процедуры  используются
практически во всех процедурах и в основной программе. Процедура  Diogramraa
формирует последнюю иллюстрацию к разделу 5 и вынесена в данный  модуль  так
как занимает значительный объем.
      Разработанная программа является самостоятельной программной единицей.
Для ее функционирования необходимо иметь в  арсенале  следующие  средства  :
персональный  компьютер  типа  IBM  или  совместимый  с   ним,   дисплей   с
графическим  адаптером  типа  EGA,  имеющим   объем   видеобуфера   256   К,
графическим выводом  640x350  пиксел,  16  регистрами  палитры.  В  качестве
программного   обеспечения   необходимо    иметь    DOS,    инструментальную
интегрированную среду Turbo-Pascal 7.0, файлы bold.chr, goth.chr,  sans.chr,
trip.chr  нестандартных  шрифтов,  файлы  с  текстом  программы,   файлы   ,
содержащие базу данных. Для работы с программой , при условии  наличия  выще
указанных технических и программных средств, следует обратиться  к  файлу  с
именем 'Graphic'. При этом  необходимые  данные  загружаются  в  оперативную
память компьютера и далее работа с программой идет в диалоговом  режиме,  не
требующем вмешательства  программиста.  Выход  из  программы  осуществляется
также по желанию обучаемого при входе в раздел меню 'Конец работы'.

      3.2. Функциональное назначение

      Программа для обучения работе в графическом режиме предназначается для
обучения  студентов  младших  курсов   Санкт-Петербургской   государственной
Академии  аэрокосмического  приборостроения  навыкам   программирования,   а
именно работе в графическом режиме языка Turbo-Pascal .
      Для работы с настоящей программой необходимо знание  стандарта  языка,
интегрированной  среды  и  элементарным  навыкам   работы   с   персональным
компьютером . Программа содержит теоретический материал по семи разделам:
      1) Программирование графических режимов.
      2) Управление курсором и полем рисования.
      3) Формирование прямолинейных монохромных изображений.
      4) Управление цветом и стилем изображений.
      5) Формирование цветных криволинейных изображений.
      6) Формирование графических текстов.
      7) Программирование озвученных динамических сцен.
      Эти разделы содержат наименование процедур и  функций,  их  параметры,
условия  и  примеры  использования  в   программах.   Текст   сопровождается
необходимыми иллюстрациями. Ввиду отсутствия лекций по данной теме,  наличие
обучающей  программы  дает  возможность   студентам   самостоятельно   и   с
минимальными затратами времени освоить  работу  с  графикой  .  Разделы  3-7
содержат  контрольные  вопросы.   Элемент   контроля   знаний   обеспечивает
студентам возможность самоконтроля, резко повышает уровень  знаний,  т.к.  в
случае необходимости обучаемый  имеет  возможность  повторно  изучить  любую
тему и ответить на контрольные вопросы - проверить Полученные знания.
Программа имеет специальное назначение. Она может быть  использована  только
для обучения заданной теме, а  именно  работе  в  графическом  режиме.  База
данных, в случае необходимости, может быть изменена, дополнена.  Однако  эти
изменения могут быть сделаны только  в  пределах  темы.  При  этом,  если  к
новому теоретическому материалу или контрольным вопросам необходимо  сделать
некоторые  иллюстрации,  то  в  таком   случае   потребуется   вмешательство
программиста.  Текст  иллюстраций  содержится   в   процедурах   модулей   и
вмешательство  в  их  содержимое  требует  специальных  знаний.   Существует
теоретическая возможность изменения темы  программы.  Однако  это  потребует
изменения  меню  программы,  полной  замены  базы  данных  и  соответственно
внесения  изменений  в  процедуры  модулей.  А  именно  -   создание   новых
иллюстраций. Все это потребует  очень  больших  трудозатрат  программиста  и
эквивалентно созданию новой программы.

      3.3. Описание логической структуры

      Обучающая  программа  'Графика'  в  своем  составе  содержит  основную
программу 'Graphic'  ,  семь  рабочих  модулей,  один  библиотечный  модуль.
Назначение  каждого  из  них  подробно  описано  в  п,3.1.  Текст  программы
приведен в приложении. Структура обучающей программы  приведена  на  рис.  1
Основная программа  'Graphic'  вызывает  на  исполнение  модули   Razdel1  –
Razdel7. Каждый модуль содержит по  одной  процедуре,  которые  обеспечивают
связь с файлами базы данных, вывод текста теории и контрольных  вопросов  на
экран, вывод справок, регистрацию  оценок.
      Использование модулей  в  данном  случае  является  целесообразным  по
следующим причинам. Это  удобно  в  случае  дополнения  или  изменения  базы
данных. Если потребуется внесение дополнительных  иллюстраций,  то  нетрудно
войти в требуемый раздел и  внести  дополнения  в  условный  оператор  CASE.
Модуль является автономно компилируемой программной единицей. Это  позволяет
работать  с  одним  из  модулей  программы,  не  нарушая  при  этом  другие,
облегчает поиск ошибок  программирования.  В  данной  работе  каждый  модуль
отвечает за  обеспечение  изучения  одного  из  разделов  темы  'Графический
режим'. И один модуль - МУВООК - является библиотечным, содержит  процедуры,
встречающиеся  часто  во  всех  модулях.   После  окончания  работы   модуля
управление возвращается к главной программе. Главная программа использует  в
своей работе переменные модулей, а  именно  переменные  формирования  оценок
REZ3 - REZ7. Подробнее эти переменные описаны ниже в подразделе 3.6.
      Схема  алгоритма  функционирования  программы  приведена  на  рис.   2
Алгоритм функционирования рабочих модулей приведен  на  рис.  3   Рассмотрим
первый алгоритм.



                        Структура обучающей программы



                                   Рис. 1



                     Алгоритм функционирования программы



                                   Рис. 2



                  Алгоритм функционирования рабочих модулей



                                   Рис. 3


      Блок номер 1 - формирование заставки. В текст заставки входит название
программы, 'Графика', ее назначение, имя разработчика. Формируется  заставка
в графическом режиме.
      Блок 2 - процедура Windo1. Эта процедура устанавливает связь с  файлом
текстом введения и выводит его на экран. Более подробно работу  блока  можно
описать с помощью блоков 1-4,7 изображенных на рис.
      Блок 3 - выбор режима работы. В  данном  случае  обучаемому  требуется
выбрать один из трех режимов: работа модуля - изучение теории  и  ответы  на
контрольные вопросы, Вывод результатов - получение ведомости  оценок,  конец
-  выход  из  программы,  т.е.  окончание  работы  с  ликвидацией  всех   ее
результатов.  Главная  программа  содержит  процедуру   VERTIKALNOE_MENU   ,
которая формирует окно меню программы.   Процедура  написана  в  графическом
режиме.  Меню  содержит  девять  разделов,  названия  которых  соответствуют
фактическим параметрам упомянутой  процедуры.  Выбор  режима  работы,   т.е.
выбор соответствующего названия раздела осуществляется с  помощью  условного
оператора CASE. В операторе CASE выражением, значение  которого  вычисляется
, является параметр REGIME процедуры VERTIKALNOE__MENU. Он  может  принимать
значения 1 - 9 . На экране  это  соответствует  девять  положениям  курсора.
Таким образом, если параметр REGIME принимает значения 1  -  7  ,  то  далее
управление передается модулю с соответствующим именем.  На  схеме  алгоритма
-блоку 5  .  Если  параметр  REGIME  принимает  значение  8,  то  управление
переходит к блоку  схемы  с  номером  4  и  производится  вывод  результатов
работы.  Если  же  параметр  REGIME  равен  9  ,  то  работа  с   программой
заканчивается.
      Блок 4 - вывод результатов. Этот процесс оформлен в главной  программе
как  составной  оператор  условного  оператора  CASE.  Он  выполняется   при
условии, что  параметр  REGIME  равен  8.  В  операторе  вывода  результатов
производится формирование самой ведомости  оценок  в  виде  таблицы.  В  эту
таблицу  вписываются  с  помощью  оператора   writeln   переменные   главной
программы, содержащие оценки за работу с программой. Подробнее  формирование
этих переменных будет описано в подразделе 3.6. После  отработки  составного
оператора с выводом результатов программа возвращается в окно меню.
      Блок 5 - отработка модуля. Это - рабочий блок . При входе в этот режим
главная программа передает управление  одному  из  семи  рабочих  модулей  -
RAZPEH,  RAZDEL2,  RAZDEL3,  RAZDEL4,  RAZDEL5,  RAZDEL6,   RAZ0EL7.  Модули
обеспечивают изучение семи разделов  по  теме  'Графический  режим'.  Работа
модулей  описана  подробнее  в  данном  подразделе  ниже.  Схема   алгоритма
функционирования модулей приведена на рис.
      При входе в режим 'Конец' обучаемому  еще  раз  задается  вопрос:  'Вы
хотите закончить работу с  программой  Y/N  ?  '   При  нажатии  на  клавишу
'У'('Н')  программа заканчивает  свою  работу  .  При  этом  все  результаты
работы с контрольными вопросами уничтожаются. При нажатии  на  любую  другую
клавишу программа возвращается в окно меню.
      Рассмотрим  подробнее  алгоритм  функционирования   рабочих   модулей,
изображенный на рис.
      Блок 1 - процедура GraphRegim. Эта процедура содержится в библиотечном
модуле МУВООК. Она осуществляет вход в графический режим.
      Следующие далее блоки 2-8 обеспечивают вывод  теоретической  части  на
экран.
      Блок 2 - Связь с файлом теории. Этот блок содержит операторы  связи  с
необходимым файлом текста теории.  Таблица  соответствия  между  процедурами
модулей и файлами базы данных приведена в подразделе 2.2.  Файл  открывается
для чтения, производится проверка на наличие файла в каталоге .
      Блок 3, блок  13  -  процедура  ОКНО  .  Эта  процедура  содержится  в
библиотечном модуле MYBOOK и отвечает  за  оформление  экрана.  Она  создает
рамку и устанавливает фоновый цвет и цвет рисования основного текста.
      Блок 4 - вывод текста теории. Этот  блок  обеспечивает  считывание  из
открытого файла записей и вывод содержимого поля Р2  на  экран  .  Цикл  Рог
выводит на экран 31 строку текста. После вывода 31 строки  на  экран,  экран
очищается и выводятся следующие  31  строка  вплоть  до  появления  признака
конца файла в поле Р1 очередной считываемой записи. Проверка признака  конца
файла  оформлена  оператором  цикла  REPEAT   .   В   процедурах   RAZDEL6-7
использован дополнительно значок  #  для  пометки  конца  строки.  По  этому
значку с помощью оператора CASE(вывод иллюстраций)прекращается вывод  текста
теории. Это необходимо, т.к. в этих разделах присутствуют рисунки  требующие
всего экрана.
      Блок  5  -  проверка  условия  наличия   иллюстрации.   Эта   проверка
производится после  считывания  очередной  записи  файла  теории  с  помощью
условного оператора CASE. С константами  оператора  сравнивается  содержимое
поля  Р1.  В  случае  наличия  иллюстрации  она  выводится  на  экран.  Если
иллюстрация не требуется/то выполняется далее  считывание  текста  теории  и
после окончания цикла REPEAT очистка экрана.
Блок 6  -  вывод  иллюстрации.  Вывод  осуществляется  с  помощью  оператора
OutTextXY.
      Блок 7 - очистка экрана. Производится после вывода 31 строки текста.
      Блок 8 - проверка конца  файла.  Осуществляется  с  помощью  оператора
цикла  REPEAT.  В  поле  Р1  последней  записи  содержится  значок'0'.   При
обнаружении этого значка  считывание  прекращается  и  цикл  завершает  свою
работу.
      Блоки 9 -24 обеспечивают работу с контрольными вопросами.
      Блок 9 - проверка наличия контрольных вопросов.  Этот  блок  означает,
что если это алгоритм работы  модулей  RAZDEL1  или  RAZDEL2  ,  то  блок  8
является последним и так как эти разделы не  содержат  контрольные  вопросы,
то после условной вершины блока 9 модуль заканчивает свою  работу.  Если  же
мы рассматриваем работу алгоритма для модулей, которые содержат  контрольные
вопросы, то по 'Да' переходим к блоку 10.
      Блок 10 - процедура OKNO1 . Эта процедура  содержится  в  библиотечном
модуле MYBOOK и формирует заставку с надписью 'Контрольные вопросы'.
      Блок 11 - Случайный выбор номеров вопросов. Выбираются  четыре  номера
вопросов из десяти имеющихся . Это  делается  случайным  образом  с  помощью
генератора случайных чисел RANDOMIZE и  функции  Random,  которая  формирует
случайное число. Выбранные номера вопросов запоминаются в массиве М[0..3]  .
Элементы этого массива используются при поиске нужного  вопроса  при  выводе
текста теоретической части и при поиске нужного номера  вопроса  для  вывода
текста справки.
      Блок 12 - связь с файлом текста вопросов. Блок  содержит  операторы  ,
устанавливающие связь с файлом текста вопросов, открывающие его  для  чтения
и обеспечивающие проверку наличия файлов в каталоге.
      Блок 14 - вывод текста очередного вопроса. Записи начинают считываться
по одной. Поле Р2  сравнивается  с  содержимым  массива  случайно  выбранных
чисел М[0..3]  . При обнаружении необходимого номера вопроса начинается  его
вывод на экран с помощью процедуры OutTextXY вплоть  до  появления  признака
конца вопроса '*', содержащегося в поле Р1.
      Блок 15 - проверка наличия иллюстрации. Признаком наличия  иллюстрации
служит любой символ  кроме  '*'  ,  'О'  в  поле  Р1.  Если  при  считывании
очередной записи обнаружен признак наличия иллюстрации, то она выводится  на
экран . Проверка наличия иллюстрации и ее  выбор  осуществляется  с  помощью
условного оператора CASE.
      Блок 16 - вывод иллюстрации. Вывод осуществляется с помощью  оператора
outTextXY  других  операторов   формирования   графических   изображений   в
зависимости от содержания иллюстрации.
      Блок 17 - проверка введенного числа. При выводе очередного вопроса  на
экран внизу  экрана  располагается  надпись  :  'ВВЕДИТЕ  НОМЕР  ПРАВИЛЬНОГО
ОТВЕТА ___ ' . Обучаемый должен ввести  число  1,2,3  или  4.  Если  введено
какое-либо другое число, то на экране останется  текст  вопроса,  место  для
ввода номера ответа останется  пустым.  Если  же  число  введено  верно,  то
программа переходит к обработке введенной информации.
      Блок 18 - связь с  файлом  текста  справок.  Устанавливается  связь  с
файлом текста справок, файл открывается для чтения, осуществляется  проверка
наличия файла в каталоге.
      Блок 19 -  вывод  текста  справок.  Поиск  нужной  справки  происходит
вначале с помощью условного оператора If , когда выбирается запись с  нужным
номером вопроса . Далее в цикле REPEAT вплоть до  появления  Признака  конца
вопроса '*' в поле Р1 происходит поиск нужного номера  ответа.  Когда  номер
ответа найден, он выводится на экран .
      Блок 20 и 21 - аналогичны блокам 15 и 16.
      Блок 22 - фиксация результатов.  При  считывании  и  выводе  на  экран
первой записи справки переменной REZY присваивается значение поля  Р5  файла
текста справок, это поле содержит оценку  за  ответ  на  вопрос.  Переменная
REZY накапливает оценки за четыре  ответа.  После  окончания  работы  модуля
значение  этой  переменной  присваивается   переменной   главной   программы
ballY[nomerX]. При повторном  вхождении  в  данный  раздел  переменная  REZY
обнуляется.
      Блок  23  -  очистка  экрана.   Производится   с   помощью   процедуры
ClearDevice.
      Блок 24 - Проверка условия конца вопросов. Если вопрос  не  последний,
то программа возвращается к выполнению блока 14 и далее.  Если  уже  считано
и выведено четыре вопроса , то модуль заканчивает свою работу.

      3.4. Используемые технические средства

      Для работы с данной программой необходимо иметь следующие  технические
средства: персональный компьютер типа IBM или совместимый с ним ,  растровый
дисплей  с  графическим  адаптером  типа  EGA,  который  будет  иметь  объем
видеобуфера 256 К , графический вывод 640x350 пиксел, 16 регистров палитры.
В качестве программного обеспечения для работы данной  программы  необходимо
иметь DOS, инструментальную интегрированную среду  Turbo-Pascal  7.0,  набор
файлов нестандартных шрифтов bold.chr, goth.chr, sans.chr, trip.chr.

      3.5. Вызов и загрузка

      Для работы программы необходимо иметь в памяти компьютера следующие
файлы: загрузочный модуль graphic.exe, модули razdell.tpu, razde!2.tpu,
razdelS.tpu, razde!4.tpu, razdelS.tpu, razde!6.tpu, razde!7.tpu,
библиотечный модуль mybook.tpu, файлы нестандартных шрифтов bold.chr,
goth.chr, sans.chr, trip.chr , модуль из библиотеки языка Pascal graph.tpu,
драйвер egavga.bgi, текстовые файлы базы данных: raztexl.pas, raztex2.pas,
raztexS.pas, raztex4.pas, raztexS.pas, raztex6.pas, raztex7.pas -
содержащие тексты теории, joing.pas,  iod.pas , joi.pas,  iodi.pas,
join.pas,  iodin.pas, jois.pas, iodis.pas, jos.pas, ios.pas - содержащие
текст вопросов и справок.
      Все они хранятся на жестком диске. Запуск программы осуществляется
обращением к загрузочному модулю graphic.exe. При этом все необходимые
модули автоматически загружаются в оперативную память Объем данной
обучающей программы 80 000 байт. Любая IBM PC имеет объем оперативной
памяти, доступной для пользовательских программ, не менее 640 Кбайт. Таким
образом объем данной обучающей программы является незначительным и никаких
трудностей с использованием оперативной памяти нет.
      Программа имеет одну входную точку - начало программы.

      3.6. Входные и выходные данные

      Программа для обучения 'Графика', работает в диалоговом режиме.
Однако, ЭВМ ведет диалог с обезличенным пользователем. ЭВМ не регистрирует
фамилии обучаемых и соответственно не ведет журнал. От программиста или
оператора не требуется ввод какой-либо информации для запуска программы и
начала ее работы. Запуск осуществляетя обращением к загрузочному модулю
graphic.exe.
      От обучаемого требуется при ответе на контрольные вопросы ввести номер
правильного ответа. Согласно введенному числу из файла справок считывается
число - оценка за ответ. Оценки за все ответы складываются и затем
выставляется одна оценка за работу со всеми вопросами раздела. Таким
образом вводимый обучаемым номер ответа можно рассматривать как входную
информацию, которая после обработки формирует определенные выходные данные
- оценку работы за сеанс.
      Контрольные вопросы содержат разделы 3 - 7 . Доступ к изучению этих
разделов ограничен. Возможно только два раза ответить на контрольные
вопросы этих разделов. Все получение оценки фиксируются и хранятся в
переменных главной программы до окончания работы с программой.  По разделу
меню 'Результаты Вашей работы' можно получить на экране ведомость оценок.
Обращение к данному разделу меню возможно в любой момент работы.
      Выводимые на экран оценки сохраняются до выхода из программы.
Программа не предусматривает вывод этих оценок на печать или хранение их в
памяти компьютера после окончания ее работы . Таким образом выходными
данными программы являются оценки, выводимые на экран дисплея. В табл. 8
приведено соответствие между переменными главной программы, содержащими
оценки, и аналогичными переменными процедур.
      NomerX - переменная, регламентирующая число возможных обращений к
процедурам. Может принимать два значения - 1 и 2.
      REZY - переменная процедуры, которой присваивается значение
выставляемой оценки.
      ballY[NomerX] - Переменная, хранящая значение оценки в главной
программе. Формируется следующим образом:
      baUY[NomerX] :=REZY
      Itog[NomerX] - переменная накопления результатов работы за сеанс по
итогам двух попыток. Формируется следующим образом:
      Itog[NomerX]:=ItogTNomerX3+baIlY[NomerX]
tog[NomerX] - переменная вывода результатов работы за сеанс по итогам двух
попыток, формируется следующим образом:
togЈNonterX3: =Round(Itog[NomerX]/K[NomerX]),
где К[NomerX] - переменная, накапливающая число попыток ответов на
контрольные вопросы.

                                                                   Таблица 8

              Соответствие между переменными главной программы
                                 и процедур

|Имя       |Апеременная|Переменные главной программы                         |
|процедуры |процедуры  |                                                     |
|          |REZY       |NomerX |BallY[NomerX]|Itog[NomerX]   |Tog[NomerX]  |
|RAZDEL30  |REZ3       |1      |Ball3[1]     |Itog[1]        |Tog[1]       |
|          |REZ3       |2      |Ball3[2]     |Itog[2]        |Itog[2]      |
|RAZDEL40  |REZ4       |1      |Ball4[1]     |Itog[1]        |Itog[1]      |
|          |REZ4       |2      |Ball4[2]     |Itog[2]        |Itog[2]      |
|RAZDEL50  |REZ5       |1      |Ball5[1]     |Itog[1]        |Itog[1]      |
|          |REZ5       |2      |Ball5[2]     |Itog[2]        |Itog[2]      |
|RAZDEL60  |REZ6       |1      |Ball6[1]     |Itog[1]        |Itog[1]      |
|          |REZ6       |2      |Ball6[2]     |Itog[2]        |Itog[2]      |
|RAZDEL70  |REZ7       |1      |Ball7[1]     |Itog[1]        |Itog[1]      |
|          |REZ7       |2      |Ball7[2]     |Itog[2]        |Itog[2]      |



                           4. ОПИСАНИЕ ПРИМЕНЕНИЯ

      4.1. Назначение программы

      Программа для обучения работе в графическом режиме языка  Turbo-Pascal
предназначена для  обучения  студентов  младших  курсов  Санкт-Петербургской
государственной   академии   аэрокосмического   приборостроения.   Программа
рассчитана на студента, знакомого со стандартом языка, имеющего  понятие  об
инструментальной  интегрированной  среде  ,  имеющего  элементарные   навыки
работы с персональным компьютером.
      Программа содержит семь разделов для  изучения  по  теме  'Графический
режим  языка   Turbo-Pascal'   :   программирование   графических   режимов,
управление  курсором   и   полем   рисования,   формирование   прямолинейных
монохромных   изображений,   управление   цветом   и   стилем   изображений,
программирование    цветных    криволинейных    изображений,    формирование
графических текстов,  программирование  озвученных  динамических  сцен.  Эти
разделы практически полностью охватывают тему.
      Программу Предполагается использовать как реальное средство  обучения.
Так как лекционных  занятий  по  теме  'Графические  средства  языка  Turbo-
Pascal' нет, то наличие данной программы восполняет пробел  в  теоретической
и частично практической  подготовки  студентов  по  данной  теме.  Внедрение
данной программы  облегчит  труд  и  студентов  и  преподавателей.  Студенты
смогут  овладеть  необходимыми  знаниями  в  более  короткий  срок  и  будут
освобождены От необходимости поиска  нужной  литературы.  Кроме  того  режим
контроля позволит студенту без  помощи  преподавателя  разобраться  в  своих
ошибках,  повторить  изучение  и  вновь  проверить  свои  знания  с  помощью
контрольных вопросов. В  процессе  работы  с  обучающей  программой  студент
получает и практические навыки  общения  с  ЭВМ,  что  в  условиях  дефицита
машинного времени также важно. Преподаватель в этом случае освобождается  от
объяснения студентам теоретического материала и получает достаточно  времени
для индивидуальной работы с ними.  Работая  с  программой  каждый  обучаемый
может  затратить   неодинаковое   время   на   изучение   каждого   раздела.
Индивидуальный темп работы обеспечивает повышение качества знаний.

      4.2. Условия применения

      4.2.1. Технические средства

      Предлагаемая программа для обучения написана на языке Turbo-Pascal 7.0
. Она предназначена для установки на IBM PC и требует  наличия  монитора  со
следующими характеристиками: графический адаптер  типа  EGA,  который  будет
иметь объем видеобуфера  256  К  ,  графический  вывод  640x350  Пиксел,  16
регистров палитры.
      Необходимо иметь  в  качестве  программного  обеспечения  операционную
систему DOS , инструментальную  интегрированную  среду  Turbo-Pascal  7.0  ,
набор файлов нестандартных шрифтов bold.chr, goth.chr, sans.chr, trip.chr.

      4-2.2. Общие характеристики входной и выходной информации

      Программа для обучения 'Графика' работает  в  диалоговом  режиме.  При
этом ЭВМ работает с обезличенным пользователем и требует  лишь  механической
реакции на свои действия. Для начала работы программы достаточно  обратиться
к загрузочному модулю graphic.exe. В качестве входной  информации  в  данной
программе можно рассматривать вводимы обучаемым  номера  правильных  ответов
при работе с контрольными вопросами. Введение номера ответа влечет за  собой
следующие действия программы: Введенный номер  считывается  с  клавиатуры  и
фиксируется в переменной СН. Затем при  считывании  файла  справок  значение
этой переменной сравнивается  со  значением  соответствующего  поля  номеров
ответов. При совпадении этих значений переменной оценки  RE2X  присваивается
значение поля Р5 , в котором расположены оценки  за  все  варианты  ответов.
Далее эта переменная накапливает оценки за все четыре  ответа/  обрабатывает
их и формирует оценку за работу с разделом. Эта оценка передается в  главную
программу. Главная программа обеспечивает вывод  этих  оценок  на  экран  по
разделу  меню  'Результаты  Вашей  работы'.  Кроме  того  главная  программа
обрабатывает все оценки по разделам и  формирует  оценку  работы  за  сеанс.
Таким  образом  значения  переменных   вывода   оценок   являются   выходной
информацией. Подробнее процесс формирования  выходной  информации  описан  в
подпункте 3.6.

      4.3. Пример использования

      В этом подпункте описан пример конкретного использования программы для
обучения работе в графическом режиме.
Итак, программа запущена на исполнения.  На  экране  появляется  заставка  с
названием программы  -   'Графика',   полное  наименование  -'Программа  для
обучения работе в графическом режиме', фамилия  разработчика,  место  и  год
создания. Для  'перелистывания  экранов'  необходимо  пользоваться  клавишей
Enter.
      Нажимаем Enter. На  экран  выводится  текст  введения.  В  нем  кратко
описано содержание данной обучающей программы.  После  его  прочтения  можно
перейти непосредственно к работе.
Нажимаем Enter. На экране появляется окно вертикального  меню.  Внешний  вид
меню изображен в приложении 3. Перемещая  курсор  с  помощью  клавиш-стрелок
вниз и вверх мы можем выбрать желаемый режим работы. Их,  как  было  описано
выше в  подразделе  3.3  ,три.  Выберем  режим  обучения.  Допустим,  курсор
остановился  на  разделе   3   с   названием   'Формирование   прямолинейных
монохромных изображений'. Для изучения этого раздела следует нажать  клавишу
Enter.
      Нажимаем Enter. Появляется экран , оформленный  небольшой  по  толщине
рамкой во весь  экран.  В  верхней  строке  помещается  название  изучаемого
раздела : ФОРМИРОВАНИЕ ПРЯМОЛИНЕЙНЫХ МОНОХРОМНЫХ ИЗОБРАЖЕНИЙ. В левой  части
экрана расположен текст  теории,  который  содержит  наименования  процедур,
выделенных красным цветом, и пояснения их  работы.  В  правой  части  экрана
расположены рисунки, поясняющие их работу, а именно  фигуры,  которые  можно
построить с помощью данных процедур.  Изучив  полученную  информацию,  можно
перейти к следующему экрану. Текст  теории  раздела  3  содержится  на  трех
экранах.
      Изучив содержимое третьего экрана нажимаем клавишу  Enter.  На  экране
появляется  заставка  с  надписью  'Контрольные  вопросы'.  Далее  ,   после
очередного нажатия Enter , на экран будет выведен текст первого вопроса.
      Экран вопроса  выглядит  следующим  образом.  Экран  оформлен  той  же
рамкой,  что  и  экран  теории.  Верхние  строки  занимает  текст   вопроса,
выделенный крупным шрифтом. Ниже  вертикально  расположены  четыре  варианта
ответа на поставленный вопрос. Если выведенный вопрос содержит  иллюстрацию,
то она расположена на  уровне  вариантов  ответов  в  правой  части  экрана.
Нижнюю строку экрана занимает надпись :  'ВВЕДИТЕ НОМЕР  ПРАВИЛЬНОГО  ОТВЕТА
___'. Прочитав все варианты  и  проанализировав  их  нужно  выбрать  один  и
ввести его, нажав клавишу с  соответствующей  цифрой.  Если  нажата  клавиша
отличная от клавиш 1,2,3 или 4, то После  нажатия  клавиши  Enter  введенный
символ будет стерт,  вопрос  останется  на  экране.  Номер  ответа  придется
ввести вновь.
      Если введено допустимое число, то после нажатия клавиши Enter на экран
будет выведен текст справки.  Экран  при  этом  оформлен  аналогично  экрану
вопроса. Текст справки располагается  в  средней  части  экрана  и  содержит
оценку  за  ответ  в  формулировке  'правильно'  или  'неверно'  и   краткую
информацию о допущенных ошибках.
      После нажатия Enter на экран выводится текст второго вопроса. Действия
ЭВМ и обучаемого аналогичны действиям с первым вопросам.
      После прочтения последней справки последнего вопроса мы нажимаем Enter
и возвращаемся в окно меню. Далее можно войти  в  любой  другой  раздел  для
изучения. Войдем в раздел 'Результаты Вашей работы'.  Для  этого  переместим
курсор в позицию с данным  названием  и  нажмем  клавишу  Enter.  На  экране
появилась ведомость оценок. Текст  выполнен  ярко-розовым  цветом  на  синем
фоне. Слева перечислены названия 7 изучаемых разделов, а справа два  столбца
оценок  -первая  попытка   и   вторая   попытка.   В   графе   'Формирование
прямолинейных  монохромных  изображений'   первая   попытка   стоит   оценка
(например '2').  В  остальных  графах  стоят  'О'.  Последняя  графа  левого
столбца называется 'Оценка работы за сеанс' . В этой графе 1  попытка  стоит
оценка '4'.
      Для выхода из  раздела  'Результаты  Вашей  работы'  необходимо  вновь
нажать клавишу Enter. Если повторно войти в  третий  раздел  и  ответить  на
вопросы, а затем войти в  раздел  'Результаты  Вашей  работы',  то  в  графе
'Формирование графических режиме' вторая попытка  будет  стоять  не  'О',  а
оценка (например, '4').  Третий раз  войти  в  третий  раздел  нельзя,  т.к.
разрешено сделать только две попытки.
      Через меню войдем в  четвертый  раздел  'Управление  цветом  и  стилем
изображений'. Порядок работы в этом разделе такой же  как  и  в  предыдущем,
как и в последующих. После изучения теории отвечаем на контрольные  вопросы.
Закончив работу с вопросами обучаемый попадает в окно  меню  и  вновь  может
узнать результаты своей работы в виде оценок.  Для  этого  необходимо  вновь
войти в раздел 'Результаты Вашей работы, подведя курсор  к  разделу  с  этим
названием и нажав клавишу Enter. Теперь к  уже  имеющимся  двум  оценкам  по
разделу 'Формирование прямолинейных монохромных изображений' добавилась  еще
одна оценка в графе 'Управление цветом и стилем изображений' первая  попытка
(например, '5') . Изменилась оценка работы за сеанс первой попытки  и  стала
'4'.
      Нажав вновь клавишу Enter вернемся  в  окно  меню.  На  этом  закончим
работу с программой. Для  этого  необходимо  подвести  курсор  к  разделу  с
названием 'Конец работы'. На  экране  появляется  заставка  с  надписью  'Вы
хотите закончить работу с программой Y/N?' . Нажимаем клавишу 'Y' или 'Н'  и
выходим из программы. При нажатии любой другой клавиши  на  экране  появится
окно меню.
      Если после выхода из программы вновь в нее войти и через меню войти  в
раздел 'Результаты Вашей работы', то во всех  графах  будут  находится  'О'.
Это означает, что при  выходе  из  программы  результаты  работы  с  ней  не
сохраняются.  Поэтому,  перед  выходом  из  программы   следует   предъявить
ведомость оценок преподавателю.



                         5. РУКОВОДСТВО ПРОГРАММИСТА

      5.1. Назначение и условия применения программы

      Программа для обучения работе в графическом режиме языка  Turbo-Pascal
предназначена для обучения студентов младших  курсов  СПГУАП.  Она  знакомит
студентов в основами программирования в  графическом  режиме,  возможностями
языка и turbo-среды, дает навыки работы с  компьютером.  Программа  содержит
материал для изучения по следующим темам:
      1) Программирование графических режимов.
      2) Управление курсором и полем рисования.
      3) Формирование прямолинейных монохромных изображений.
      4) Управление цветом и стилем изображения.
      5) Программирование цветных криволинейных изображений.
      6) Формирование графических текстов.
      7) Программирование озвученных динамических сцен.
      Изучение темы  по  данным  разделам  обеспечивает  основная  программа
graphic и семь модулей RAZTEX1-RAZTEX7.
Основная программа выполняет следующие  функции:  формирует  заставку,  окно
меню,  вызывает  на  исполнение  модули  ,  формирует  и  выводит  на  экран
ведомость оценок. Модули RAZTEX1-RAZTEX7 выполняют функции: связь с  файлами
базы данных, вывод на экран текста  теории,  вопросов,  справок,  считывание
оценки за ответы на вопросы из файла справок.
      Для успешной работы программы необходимо иметь персональный  компьютер
IBM или совместимый с ним, растровый дисплей с  графическим  адаптером  типа
EGA с объемом видеобуфера 256  К,  разрешением  экрана  640x350  пиксел,  16
регистрами палитры. В качестве  программного  обеспечения  необходимо  иметь
DOS, инструментальную интегрированную  среду  Turbo-Pascal  7.0  .  Вызов  И
загрузка программы подробнее описаны ниже в подразделе 5.3.

5.2. Характеристики программы

      Программа для обучения  рассчитана  на  работу  в  течение  45  минут.
Программа  работает  в  диалоговом  режиме.   В   начале   работы   студенту
предлагается воспользоваться окном меню для  выбора  раздела  для  изучения.
Далее выдается теоретическая часть  .  После  нее  предлагаются  контрольные
вопросы. Вопросы выдержаны в  режиме  'вопрос  -четыре  варианта  ответа'  .
Обучаемому предлагается выбрать один  и  ввести  номер  правильного  ответа.
Введенный  ответ  обрабатывается  и  выводится  на  экран  справка   о   его
правильности.
      Инструментальная  интегрированная  среда  Turbo-Pascal  имеет   хорошо
развитую службу помощи. Поэтому  при  возникновении  ошибок  она  выдает  на
экране  в  верхней  строке  код  ошибки  и  ее   название.   Для   избежания
возникновения ошибок следует внимательно вносить изменения в базу  данный  и
программу , если это потребуется, четко  выдерживать  размеры  полей  файлов
записей базы данных. Изменения в программу вносить только  после  подробного
знакомства с программными документами. Особое внимание следует  обратить  на
необходимость преобразования ASCIIZ-строки в  строку  стандарта  Pascal  при
выводе ее на экран, а также преобразование символьного  представления  числа
в двоичную форму перед тем как проводить сравнения его с числом.

Если на экране при выводе текста появляются значки - признаки  конца  строки
- это значит, что не соблюдены длины  полей  в  соответствующем  файле  базы
данных.

5.3. Обращение к программе

      Для успешной работы программы необходимо  иметь  в  памяти  компьютера
следующие  файлы:  загрузочный  модуль  graphic.exe,   библиотечные   модули
RAZDELl.tpu,    RAZDEL2.tpu,    RAZDEL3.tpu,    RAZDEL4.tpu,    RAZDELS.tpu,
RAZDEL6.tpu, RAZDEL7.tpu,  MYBOOK,  файлы  нестандартных  шрифтов  bold.chr,
goth.chr, sans.chr, trip.chr, модуль среды Turbo-Pascal  graph.tpu,  драйвер
egavga.bgi,  текстовые  файлы  базы  данных  :   raztexl.pas,   raztex2.pas,
raztexS.pas,   raztex4.pas,   raztexS.pas,   raztex6.pas,   raztex7.pas    -
содержащие  тексты  теоретической  части,   joing.pas,   iod.pas,   joi.pas,
iodi.pas, join.pas,  iodin.pas,  jois.pas,  iodis.pas,  jos.pas,  ios.pas  -
содержащие тексты вопроов и справок .
      Все  эти  файлы  хранятся  на  жестком  диске.  Запуск  программы   на
исполнение осуществляется обращением к загрузочному модулю graphic.exe.  При
этом необходимые модули  автоматически  подгружаются  в  оперативную  память
компьютера. Объем данной обучающей программы 80 000  байт,  что  значительно
меньше объема оперативной памяти любого персонального компьютера.
      Необходимо, чтобы загрузочный модуль, библиотечные модули программы, а
также файлы нестандартных шрифтов, модуль  graph.tpu  и  драйвер  egavga.bgi
находились в одном каталоге. В противном случае работа программы  становится
невозможной.

5.4. Входные и выходные данные

      Как пояснялось выше данная обучающая программа работает  в  диалоговом
режиме с обезличенным пользователем. Программа  не  требует  ввода  фамилии,
группы и т.д. и  соответственно  не  веден  никаких  журналов.  Для  запуска
программы  на  исполнение  от  программиста  не  требуется  ввод  какой-либо
входной информации.   В  качестве  входной  информации  можно  рассматривать
введение обучаемым номеров правильных ответов. Введенное число  считывается,
анализируется  и  в  результате  выводятся  на  экран   оценки,   являющаяся
выходными данными. Оценку можно увидеть , войдя в раздел  'Результаты  Вашей
работы'. Ведомость результатов работы сохраняется в течение  всех  работы  с
программой, однако после выхода из программы ведомость ликвидируется.  Таким
образом выходная информация имеет место, однако не  сохраняется.   Подробнее
о процессе формирования выходных данных можно узнать из подраздела 3.6.



                          6. РУКОВОДСТВО ОПЕРАТОРА

      6.1. Назначение программы

      Программа  для  обучения  работе  в   графическом   режиме   'Графика'
предназначена для  обучения  студентов  младших  курсов  Санкт-Петербургской
государственной   академии   аэрокосмического   приборостроения   работе   с
графическим режимом языка Turbo-Pascal. Программа  предусматривает  изучение
темы по  семи  разделам  ,  которые  оформлены  в  семи  модулях.  Программу
предполагается    использовать    для    обучения    студентов     различных
специальностей. Изложенный в ней материал дает возможность студентам  быстро
и эффективно овладеть навыками работы  в  графическом  режиме.  Подробнее  с
назначением данной обучающей программы можно ознакомиться в подразделе 1.2.

      6.2. Условия выполнения программы

      Данная обучающая программа написана на языке Turbo-Pascal 7.0  Для  ее
успешной работы необходимо наличие персонального  компьютера  типа  IBM  или
совместимого с ним. Программа написана  в  расчете  на  графический  адаптер
типа EGA с объемом видеобуфера 256 К, графическим  выводом  640x350  пиксел,
16  регистров  палитры.   Перечисленные   аппаратурные   средства   являются
минимально необходимыми для работы программы.
      В качестве программного обеспечения необходимо иметь DOS, Turbo-Pascal
7.0,  в  текущем  каталоге  -  файлы  нестандартных  шрифтов,   используемые
программой: goth.chr,  sans.chr,  trip.chr,  bold.chr,  библиотечный  модуль
Turbo-Pascal - graph.tpu, драйвер  egavga.bgi.  Непосредственно  для  работы
программы требуется иметь в текущем каталоге  загрузочный  модуль  программы
'Графика'  -  graphic.exe,  библиотечные  модули  программы  -  RAZDELl.tpu,
RAZDEL2.tpu,    RAZDELS.tpu,    RAZDEL4.tpu,    RAZDELS.tpu,    RAZDEL6.tpu,
RAZDEL7.tpu, файлы базы  данных  -  raztexl.pas,  raztex2.pas,  raztex3.pas,
raztex4.pas,  raztexS.pas,  raztex6.pas,  raztex7.pas,  joing.pas,  joi.pas,
join.pas,  jois.pas,  jos.pas,  iod.pas,  iodi.pas,  iodin.pas,   iodis.pas,
ios.pas.

      6.3. Выполнение программы

      Для обеспечения загрузки, запуска, выполнения и  завершения  программы
оператору следует выполнить следующие действия:
      1) Включить компьютер и подготовить его к работе.
      2)  Проверить  наличие  на  данной  ЭВМ  необходимых  для   выполнения
программы программных средств перечисленных в подразделе 6.2.
      3) В случае  отсутствия  каких-либо  файлов  в  текущем  каталоге,  но
наличии  их  на  другом  диске,  переписать  в  текущий  каталог   пользуясь
командами Norton Commander.
      4) Запуск программы осуществляется  из  Norton  Commander.  Необходимо
обратиться к загрузочному модулю программы с именем  graphic.exe.  При  этом
необходимые модули  автоматически  будут  загружены  в  оперативную  память.
Далее программа будет выполняться в диалоговом режиме.  На  экране  появится
заставка с названием программы.
      5) Чтобы работать с программой необходимо 'листать' экраны  с  помощью
клавиши Enter. При работе с вопросами вводить  номер  правильного  ответа  с
клавиатуры путем нажатия на клавиши с соответствующими цифрами.
      6) Для выхода из программы  необходимо  войти  в  раздел  меню  'Конец
работы'  и  нажать  клавишу  с  символом  'Y'  или  'Н'.  После  этого   для
возвращения в Norton Commander необходимо нажать любую клавишу.
      7) В случае внезапного прекращения  работы  программы  или  начального
отказа от запуска вернуться в Norton Commander и еще раз  проверить  наличие
необходимого программного обеспечения. Если ошибка  загрузки  и  запуска  не
найдена, видимо ошибка в программе или базе данных и  следует  обратиться  к
программисту.

      6.4. Сообщения оператору

      В процессе  работы  программы  оператору  могут  выдаваться  следующие
сообщения.
      При окончании работы с программой , после ответа на вопрос 'Вы  хотите
закончить работу с программой Y/N ?', на экран, закрашенный  розовым  цветом
выдается сообщение 'Press ENTER to  return  to  the  Norton  Commander'.  По
этому сообщению следует нажать клавишу ENTER и  выйти  в  Norton  Commander.
Работа с программой завершена.
      Если в процессе выполнения программы не найден  файл  базы  данных,  к
которому в  данный  момент  обращается  программа,  то  на  экран  выводится
сообщение 'Runtime error 002 at 0125:04E5. Press  ENTER  to  return  to  the
Norton Commander'. По этому сообщению следует нажать клавишу ENTER, выйти  в
Norton Commander,  проверить  наличие  файла  базы  данных  который  не  был
найден. Если файл отсутствует, то следует его загрузить в  текущий  каталог.
Если файл имеется в каталоге,  то  вероятнее  всего  ошибка  в  программе  и
следует обратиться к программисту. В  любом  случае  существует  возможность
исключить неисправный модуль и продолжать работу с программой .  Эту  задачу
может также решить программист.
      Если в процессе выполнения программы  в  определенный  момент  времени
файл  базы   данных   найден,   однако   он   пуст,   на   экран   выводится
сообщение:'Runtime error 100 at 01B6:076А. Press  ENTER  to  return  to  the
Norton Commander'. По  этому  сообщению  оператору  следует  нажать  клавишу
ENTER, вернуться в Norton Commander, проверить содержимое файла.
      Если на экране  появляются  значки  признака  конца  строки,  а  затем
надпись 'Runtime error 100 at  0454:OOAF.  Press  ENTER  to  return  to  the
Norton Commander' , то это означает, что  ошибка  содержится  в  файле  базы
данных, а именно не соблюдены длины полей записей. При  возникновении  такой
ошибки следует обратиться к программисту.



      7. ТЕХНОЛОГИЯ ИСПОЛЬЗОВАНИЯ ПРОГРАММЫ

      Предлагаемый программный продукт является средством обучения студентов
работе в графическом режиме  алгоритмического  языка  TURBO-PASCAL  6.0.0.
Программа рассчитана на использование в  качестве  теоретически-практической
подготовки    студентов    1,2,4,5,8     факультетов     Санкт-Петербургской
Государственной  Академии   аэрокосмического   приборостроения   по   курсам
'Информатика',     'Алгоритмизация     и     программирование',      'Методы
программирования'.
      Данная обучающая программа работает  в режиме   'Обучение  -контроль'.
При начале работы студенту предлагается  через  систему  меню  выбрать   для
изучения один из следующих разделов: программирование  графических  режимов,
управление  курсором  и  полем   рисования,    формирование    прямолинейных
монохромных   изображений,   управление   цветом   и   стилем   изображений,
программирование    цветных    криволинейных    изображений,    формирование
графических текстов,  программирование озвученных динамических  сцен.  Когда
студент выбрал тему для изучения , ему предлагается  теоретических  курс  по
этой  теме,  снабженный  необходимыми  иллюстрациями,  звуковыми  эффектами,
поясняющими излагаемый материал. Первые два раздела на  этом  завершаются  и
студент  возвращается  в  начало  ,  он  может  вновь  через   меню  выбрать
очередной  раздел. Разделы 3,  4, 5,  6 и  7 содержат  контрольные  вопросы.
Студент, выбравший для изучения один  из  этих  разделом  имеет  возможность
после  получения  теоретической  информации  самостоятельно  проверить  свои
знания.   Ему предлагается ответить на 4 вопроса по теме.  После  ответа  на
каждый вопрос обучающийся получает справку о правильности ответа.  В  случае
неверного ответа поясняется ошибка.  За каждый ответ выставляется  оценка  и
результирующая оценка работы с данным разделом запоминается в  разделе  меню
'Результаты Вашей  работы'.  Результаты  работы  сохраняются  до  выхода  из
программы. Таким образом в конце работы преподаватель может просмотреть  все
оценки  и  при  необходимости  зафиксировать  из  в  групповом  журнале.   К
разделам, содержащим контрольные вопросы, студент  может  обратиться  только
два раза.
      Данная обучающая  программа  предусматривает  индивидуальное  обучение
студентов. Темп диалога ЭВМ-пользователь задает сам студент.  Это,  а  также
возможность повторного  изучения  каждой  темы,  дает  в  результате  лучшее
усвоение изучаемого материала.
      Внедрение данной  обучающей  программы  в  учебный  процесс  обеспечит
возможность студентам быстрее получить навыки работы в  графическом  режиме.
Это  также  освободить  время   преподавателя   и   даст   ему   возможность
индивидуально заниматься со студентами, уделяя внимание каждому  студенту  в
зависимости от его подготовки.
      В настоящее время курс лекций по теме 'Графический режим' отсутствует.
Практические  занятия  ведутся  с  использованием  методической   разработки
кафедры Вычислительных машин 'Графические  средства  алгоритмического  языка
TURBO-PASCAL', выпущенной в 1992 году .  Практически  изучение  графического
режима и его возможностей оставлено  на  самостоятельную  работу  студентам.
Обучающая  программа  так  же  предусматривает  самостоятельную   работу   с
использованием ЭВМ . Однако, она имеет следующие преимущества:



      1) наглядность изучаемого материала;
      2) индивидуальный темп диалога ЭВМ-пользователь;
      3) самостоятельный  контроль  знаний  и  как  следствие  повышение  их
качества;
      4) освобождение преподавателя от чтения теоретической части  темы  для
индивидуальной работы со студентами.
      5)  возможность,  в  случае  необходимости,  быстрого   обновления   и
расширения базы данных вплоть до полного замены изучаемых тем;



      8. ПЛАНИРОВАНИЕ НАУЧНО-ТЕХНИЧЕСКОЙ ПОДГОТОВКИ ПРОИЗВОДСТВА

      8.1. Построение ленточного графика проектирования программы

      Планирование научно-технической подготовки производства заключается  в
составлении календарных  планов  выполнения  комплексов  работ,  определении
денежных средств, необходимых для их реализации, а также потребных  трудовых
и материальных ресурсов. Разработка программного обеспечения является  одной
из трудоемких задач, что приводит к высоким затратам  и  большому  удельному
весу стоимости программы. Рассмотрим и  оценим  затраты  ,  необходимые  для
реализации задач, поставленных темой данной работы.
      В соответствии с технических заданием требуется создать программу  для
обучения работе в графическом режиме  языка  TURBO-PASCAL  6.0.0.  Для  ее
создания  необходимо  не  только  написание  программы,  но   и   подготовка
соответствующих методических материалов. Так как  тема  обучающей  программы
связана с программированием, то  данную  работу  могут  полностью  выполнить
инженеры-программисты.  При  разработке   темы   данной   дипломной   работы
целесообразно привлечение группы специалистов, состоящей  из  трех  человек:
одного   инженера-программиста   первой   категории   и   двух    инженеров-
программистов третьей категории.
      Для составления ленточного графика проектирования программы необходимо
составить  перечень  необходимых  работ,  которые  потребуется  выполнить  в
процессе  проектирования,  и  оценить  их  трудоемкость.  В  соответствии  с
технологией и планированием разработки программ работу  по  созданию  данной
программы можно разбить  на  следующие  компоненты:  разработка  требований,
составление  алгоритма,  написание  программы,  отладка.   Для   определения
временных затрат  используем  метод  экспертных  оценок  и  метод  обработки
экспертных оценок - раздельное  оценивание  составляющих  затрат.  При  этом
определяем для каждого вида работ ai - наименьшую возможную, mi  -  наиболее
вероятную , bi - наибольшую возможную величину  затрат.  Ожидаемая  величина
затрат MOi и  стандартное  отклонение  Qi  для  каждой  компоненты  составят
соответственно:
      ai+4m+b;
M0i= ---------   ,
        6
      bi-ai
Qi = ---------   .
        6

Оценка  временных  затрат  на  разработку  всей  программы   и   стандартное
отклонение этой оценки составят соответственно:
      n
МО = Е Moi  ,
    I=1



        n
Q =    E Qi2
       I=1

      Оценка затрат времени на разработку программы приведена в табл. 9

          Таблица Затраты времени на разработку программы, чел.-дн.

|Компоненты              |ai  |mi |bi |MOi  |Qi  |MO   |Q   |
|Разработка требований   |13  |17 |21 |17,0 |1,3 |     |    |
|Составление алгоритма   |23  |24 |33 |25,3 |1,7 |89,9 |2,6 |
|Написание программы     |23  |30 |30 |28,8 |1,2 |     |    |
|Отладка                 |26  |29 |31 |28,8 |0,8 |     |    |


      Для составления перечня работ разобьем компоненты на составляющие
следующим образом:
      1) разработка требований: разработка требований к программному
обеспечению, разработка методических материалов;
      2) составление алгоритма: составление алгоритма;
      3) написание программы: написание основной программы, написание
процедур, создание базы данных;
      4) отладка: отладка основной программы, отладка модулей, общая
отладка.
      Оценку трудоемкости проводим в соответствии с данными табл. 9
Перечень работ и их трудоемкость приведены в табл. 10


                                                                  Таблица 10



                    Перечень работ по созданию обучающей

                                  Программы

|Компоненты    |Наименование  |Код работы    |Исполнитель   |Длительность  |
|              |работы        |              |              |работ, дн.    |
|Разработка    |Разработка    |1             |Инженер-програ|3             |
|требований    |требований к  |              |ммист 1       |              |
|              |программному  |              |категории     |              |
|              |обеспечению   |              |              |              |
|Разработка    |Разработка    |2             |Инженер-програ|14            |
|требований    |методических  |              |ммист 3       |              |
|              |материалов    |              |категории     |              |



                                                        Продолжение табл. 10


|Компоненты    |Наименование  |Код работы    |Исполнитель   |Длительность  |
|              |работы        |              |              |работ, дн.    |
|Составление   |Составление   |3             |Инженер-програ|15            |
|алгоритма     |алгоритма     |              |ммист 1       |              |
|              |              |              |категории     |              |
|              |              |              |Инженер-програ|10,3          |
|              |              |              |ммист 3       |              |
|              |              |              |категории     |              |
|Написание     |Написание     |4             |Инженер-програ|5             |
|программы     |основной      |              |ммист 1       |              |
|              |программы     |              |категории     |              |
|              |Написание     |5             |Инженер-програ|5             |
|              |подпрограмм   |              |ммист 3       |              |
|              |              |              |категории     |              |
|              |Создание базы |6             |Инженер-програ|18,8          |
|              |данных        |              |ммист 3       |              |
|              |              |              |категории     |              |
|Отладка       |Отладка       |7             |Инженер-програ|12,8          |
|              |основной      |              |ммист 1       |              |
|              |программы     |              |категории     |              |
|              |Отладка       |8             |Инженер-програ|13            |
|              |модулей       |              |ммист 3       |              |
|              |              |              |категории     |              |
|              |Общая отладка |9             |Инженер-програ|2             |
|              |              |              |ммист 3       |              |
|              |              |              |категории     |              |


      Как видно из  приведенной  выше  таблицы  для  работы  над  программой
привлекаются инженеры-программисты 1 и 3 категории.  Причем  с  учетом  всех
видов работ целесообразно привлечь одного инженера программиста 1  категории
и двух инженеров-программистов  3  категории.  В  этом  случае  часть  работ
возможно выполнять параллельно.
      Ленточный график отражает порядок распределения работ между
исполнителями во времени.
      Ленточный график возможно  построить  пользуясь  табл.  ,  распределив
работы между исполнителями  с  учетом  квалификации  и  загрузки.  Ленточный
график работы над созданием обучающей программы приведен в табл. 11



                                                                  Таблица 11


|Код     |Длительность работы, дн.                                           |
|работы  |3    7          17         26            38                        |
|1       |---                                                                |
|2       |-------                                                            |
|        |-------                                                            |
|3       |    --------------                                                 |
|        |--------                                                           |
|4       |                    ----                                           |
|5       |                   ----                                            |
|6       |         -----------------------                                   |
|7       |                             -----------------                     |
|8       |                            ------------------                     |
|9       |                                              --                   |

      8.2. Расчет сметы затрат

      К разработке обучающей программы привлечены три  инженера-программиста
разной   категории.   Специалистам   назначаются   месячные    оклады.    Из
составленного выше  ленточного  графика  видно,  что  инженер-программист  1
категории  имеет  загрузку  35  рабочих  дней,  один  инженер-программист  3
категории имеет 35 рабочих дней и второй инженер-программист 3  категории  -
28 рабочих дней. С учетом выходных и праздничных дней  в  среднем  в  месяце
приходится 20 рабочих дней.  Их  расчета  20  рабочих  дней  месяца  сделаем
расчет  фонда  заработной  платы.  Инженер-программист  1  категории   будет
работать 1 месяц 15 дней, первый инженер-программист 3 категории -  1  месяц
15  дней,  а  второй  инженер-программист  -  1  месяц  8   дней.    Каждому
специалисту  начисляется  основная  и  дополнительная  заработная  плата   в
соответствии с отработанным временем Расчет фонда заработной платы  приведен
в табл. 12


                                                                  Таблица 12


|Должность |Оклад |Дополнитель-на|Дополнитель-на|Количество  |Общий фонд   |
|          |Руб./м|я заработ-ная |я заработ-ная |рабочих дней|заработной   |
|          |ес.   |плата, %      |плата, %      |            |платы, руб.  |
|Инженер   |800   |15            |120           |35          |3 783 500    |
|програм-ми|      |              |              |            |             |
|ст 1      |      |              |              |            |             |
|категории |      |              |              |            |             |
|Инженер   |600   |15            |90            |35          |             |
|програм-ми|      |              |              |            |             |
|ст 3      |      |              |              |            |             |
|категории |      |              |              |            |             |
|Инженер   |600   |15            |90            |28          |             |
|програм-ми|      |              |              |            |             |
|ст 3      |      |              |              |            |             |
|категории |      |              |              |            |             |



      Предполагается работа на арендуемой  технике.  Стоимость  одного  часа
машинного времени 1000 руб.. Время  работы  над  программой  составляет   98
дней, что соответствует  764  часам  из  расчета  8-часового  рабочего  дня.
Арендная плата за это время составит 764 000 руб.. Отчисления на  социальное
страхование, расходы на научные и производственные командировки и  накладные
расходы составляют соответственно  14%,  5%,  60%  общего  фонда  заработной
платы. После изготовления программа должна пройти недельное  испытание.  Для
этого необхоимо использовать ЭВМ. Таким  образом  необходимо  дополнительное
машинное время в обьеме 40 часов. В смете затрат расходы на  арендную  плату
за 40 часов машинного времени внесем в статью  'Работы  и  услуги  сторонних
организаций'.
Расчет сметы затрат приведен в табл. 13
                                                                  Таблица 13

                                Смета затрат


|Статья расхода       |Сумма, руб.  |Итоговая   |Сумма, %   |
|                     |             |сумма      |к итогу    |
|Специальное          |764 000      |7 476 465  |10,0       |
|оборудование для 764 |             |           |           |
|000 научных работ    |             |           |           |
|Общий фонд заработной|3 787 500    |           |50,2       |
|платы                |             |           |           |
|Отчисление на        |529 690      |           |7.0        |
|социальное           |             |           |           |
|страхование          |             |           |           |
|Расходы на научные   |189 175      |           |2,5        |
|производственные     |             |           |           |
|командировки         |             |           |           |
|Работы и услунни     |40 000       |           |0,3        |
|сторонних организаций|             |           |           |
|Накладные расходы    |2 270 100    |           |30,0       |



      9. ВОПРОСЫ ОХРАНЫ ТРУДА И ОКРУЖАЮЩЕЙ СРЕДЫ.
         БЕЗОПАСНОСТЬ И САНИТАРНО-ГИГИЕНИЧЕСКЙЕ УСЛОВИЯ  ТРУДА  НА  РАБОЧЕМ
         МЕСТЕ ПОЛЬЗОВАТЕЛЯ

      9.1. Основные санитарно-технические требований к помещению

      Охрана труда имеет очень важное значение. Несоблюдение правил  техники
безопасности приводит к неблагоприятным последствиям и  несчастным  случаям.
В этой части дипломной работы рассматриваются:
      1) основные санитарно-технические требования к вычислительному центру;
      2) характеристика санитарно-гигиенических условий труда пользователя;
      3) расчет необходимого воздухообмена;
      4) система освещения;
      5) инженерно-технические мероприятия по созданию благоприятных условий
труда пользователя;
      - защита от шума,
      - защита от излучения,
      - меры защиты от поражения электрическим током;
      6) противопожарные требования;
      7) организация рабочего места при работе с терминалом;
      8) приборы контроля параметров среды.
      Рассматриваемое помещение  является  вычислительный  центр.  Во  время
учебных занятий в нем находится группа пользователей из 10 человек.  Площадь
вычислительного  центра  составляет  30  кв.  м.  и  высотой   3,5   м.    К
вычислительному центру предъявляются следующие требования:
      1) размеры помещения (площадь, объем, высота)  должны  соответствовать
количеству  работающих  в  нём  человек  и  размещаемому  в  нем   комплексу
технических средств;
      2) рациональное цветовое оформление помещения;
      3) обеспечение изоляции от шумов,  принятие  мер  для  снижения  шума,
проникающего в помещение извне;
      4) соблюдение требований, предъявляемых к отделке помещения;
      5) обеспечение системы отопления и вентиляции;
      6)  соблюдение  норм  чистоты  воздуха,   температуры,   относительной
влажности;
      7) соблюдение норм освещенности;
      8) соблюдение защиты помещения от вхождения в него посторонних лиц;

      9.2. Характеристика санитарно-гигиенических условий труда

      9.2.1.Микроклимат производственного помещения

      Микроклимат  производственного  помещения  определяется  температурой,
относительной влажностью и скоростью движения воздуха.



      Согласно ГОСТ 12.1.005-76 'ССБТ.  Воздух  рабочей  зоны'  нормирование
параметров  микроклимата  в  рабочей  зоне  производится  в  зависимости  от
периода года, категории работ по энергозатратам, избытка  явного  тепла.  По
избыткам явной теплоты помещение учебной лаборатории относится к  помещениям
с незначительными избытками явной теплоты, приходящимися на 1  куб.м  объема
помещения,  23,2 Дж/(м*с). В данном помещении выполняются легкие  физические
работы, характеристика которых приведена в табл. 14.
      В табл. 15 приведены оптимальные  параметры  микроклимата,  допустимые
параметры для холодного и переходного периода года приведены в табл.  16,  а
для теплого периода года в табл. 17.



                                                                  Таблица 14



                   Характеристика легкой физической работы



|Работа            |Категория         |Энергозатраты     |Характеристика    |
|                  |                  |организма         |работы            |
|Легкая физическая |1                 |до 172 Дж/с (150  |Производимая сидя,|
|                  |                  |ккал/ч)           |стоя или связанная|
|                  |                  |                  |с ходьбой, но не  |
|                  |                  |                  |требующая         |
|                  |                  |                  |систематического  |
|                  |                  |                  |физического       |
|                  |                  |                  |напряжения или    |
|                  |                  |                  |поднятия тяжестей |



                                                                  Таблица 15



                     Оптимальные параметры микроклимата


|Период года              |Температура, |Относительная    |Скорость  |
|                         |С            |влажность, %     |движения  |
|                         |             |                 |воздуха,  |
|                         |             |                 |м/с       |
|Холодный и переходный    |20 - 23      |60 - 40          |не более  |
|(температура наружного   |             |                 |0,2       |
|воздуха ниже +10 град. С)|             |                 |          |
|Теплый (температура      |22 - 25      |60 - 40          |не более  |
|наружного воздуха +10 С и|             |                 |0,2       |
|выше)                    |             |                 |          |

                                                                  Таблица 16

              Допустимые параметры для холодного и переходного
                                периода года

|Температура       |Относительная     |Скорость движения |Температура       |
|возуха, С         |влажность, % не   |воздуха, м/с, не  |воздуха вне       |
|                  |более             |более             |постоян ных       |
|                  |                  |                  |рабочих мест С    |
|19 - 25           |75                |0,2               |15 - 26           |



                                                                  Таблица 17

                Допустимые параметры для теплого периода года

|Температура       |Относительная     |Скорость движения |Температура       |
|возуха, С         |влажность, % не   |воздуха, м/с, не  |воздуха вне       |
|                  |более             |более             |постоянных рабочих|
|                  |                  |                  |мест С            |
|Не более чем на 3 |При 28 С не более |0,2 - 0,5         |Не более чем на 3 |
|выше средней      |55, при 27 С не   |                  |выше средней      |
|температуры       |более 60, при 26 С|                  |температуры       |
|наружного воздуха ||не более 65, при |                  |наружного воздуха |
|в 13 ч            |25 С не более 70, |                  |в 13 ч самого     |
|                  |при 24 С и ниже не|                  |жаркого месяца    |
|                  |более 75          |                  |                  |



      9.2.2. Вредные вещества и пыль

      При  работе  пользователей  в   вычислительном   центре   профилактика
вычислительной техники не  проводится,  вредные  вещества  не  используются.
Однако,  в  помещении  присутствует  нетоксичная  пыль.  Максимально-разовая
предельно-допустимая  концентрация  нетоксичной  пыли,   скапливающейся   на
оборудовании составляет 0,5 мг/куб. м. , а среднесуточная - 0,15 мг/куб. м.



      9.2.3. Излучение


      В табл. 18  приведены нормированные значения излучения.



                                                                  Таблица 18



              Нормированные значения излучения на рабочем месте



|Наименования показателей     |Нормированные значения, не более      |
|Уровень неиспользованного    |100 мкР/ч                             |
|рентгеновского излучения на  |                                      |
|расстоянии 0,05 м            |                                      |
|Плотность потока             |10 Вт/кв. м.                          |
|ультрафиолетового излучения  |                                      |
|Напряженность электрического |15 кВ/м.                              |
|поля на рабочем месте        |                                      |
|15кВ/м                       |                                      |

      9.2.4. Освещенность

      Нормированное значение освещенности на рабочем месте по СНиП П-4-79
приведено в таблице 19.



                                                                  Таблица 19



 Наименьшая освещенность рабочих поверхностей в производственных помещениях
                              /по СНиП П-4-79/


|Характеристи|Наименьший  |Освещенность Ен, лк                                |
|ка          |размер      |                                                   |
|зрительной  |объекта     |                                                   |
|работы      |различения, |                                                   |
|            |мм          |                                                   |
|            |            |газорязрядные            |Лампы накаливания        |
|            |            |Система освещения                                  |
|            |            |Комбинир.   |общая       |Комбинир.   |общая       |
|Высокой     |От 0,3 до   |750         |300         |600         |200         |
|точности    |0,5         |            |            |            |            |



      9.2.5. Шум


      Согласно ГОСТ 12.1.003-83 устанавливаются допустимые уровни звукового
давления. Они приведены в


                                                                  Таблица 20



                    Допустимые уровни звукового давления



|Рабочие           |Уровни звукового давления, дБ, в октавных    |Уровень   |
|Места             |полосах со среднегеометрическими частотами,  |звука, ДБА|
|                  |ГЦ                                           |          |
|                  |63 |125 |250 |500 |1000 |2000 |4000|8000  |          |
|Помещения вычис-  |71 |61  |54  |49  |45   |42   |40  |38    |50        |
|Лительных центров |   |    |    |    |     |     |    |      |          |



      9.3. Расчет необходимого воздухообмена

      Для нормализации  воздушной среды производится расчет воздухообмена  в
производственном помещении.
      Согласно СН 245-71 в производственных помещениях с объемом  на  одного
работающего менее 20 куб. м. следует проектировать подачу наружного  воздуха
в количестве не менее 30 куб.м./ч на каждого работающего.  Рассчитаем  объем
приточного воздуха L по кратности воздухообмена:

L = k * v, м/ч ,

где  k  -  рекомендуемая  кратность  воздухообмена,  которая   для   обычных
производственных  помещений  обычно  составляет  1  -  10  (в  расчетах   мы
принимаем ее равной 2),
v - объем помещения.
Таким образом,

L =2 * 160 = 320 куб.м/ч.

      Наилучший обмен воздуха осуществляется при сквозном проветривании,  но
кроме того, если позволяют погодные условия,  то  работу  следует  проводить
при открытых окнах.



      9.4.Система освещения

      Искусственное освещение по своему устройству бывает двух систем: общее
и комбинированное . При выборе системы освещения учитывают психологические,
физиологические, экономические и конструктивные факторы. Так как в
помещении выполняются работы высокой точности IIIв, то целесообразнее
использовать систему общего освещения. В нее включаются потолочные и
подвесные люминесцентные светильники общей освещенностью 400 лк.
Светильники распределяются равномерно рядами и параллельно источникам
прямого света, так чтобы экран монитора находился в зоне защитного угла
светильника, и его проекция не приходилась на экран монитора. Причем, для
таких светильников рекомендуется использовать люминесцентные лампы
мощностью по 40 Вт серий ЛП013, ЛП031, ЛПОЗЗ.
      Для улучшения освещенности важно правильно подобрать цветовую отделку
интерьера и оборудования. Обычно потолок и стены выше панелей 1.5 - 1.7 м,
если они не облицованы звукопоглощающим материалом, окрашиваются
водоэмульсионной краской светлых, холодных тонов.

      9.5. Инженерно - технические мероприятия благоприятных условий труда

      9.5.1. Защита от шума

      Источниками шума в данном помещении  являются  принтеры,  персональные
компьютеры и сами люди, работающие в  лаборатории.  Кроме  того,  шум  может
поступать извне, а т.к. в помещении  выполняются  работы  высокой  точности,
желательно, чтобы  оно  не  граничило  с  помещениями,  имеющими  повышенные
уровни воздушного и ударного шума.
      Для обеспечения изоляции помещения от шумов, проникающих  извне  можно
использовать  акустическую  обработку  помещения,  которая   заключается   в
облицовке потолка и стен звукопоглощающим материалом, причем для  достижения
максимально возможного звукопоглощения необходимо облицевать  не  менее  60%
общей площади внутренних поверхностей помещения.
      Для  сохранения  стабильности  звукопоглощающих  характеристик  такого
покрытия необходимо  периодически  осуществлять  различные  профилактические
мероприятия. Для уменьшения звука, поступающего извне  данное  помещение  не
должно граничить с помещениями,  имеющими  повышенные  уровни  воздушного  и
ударного шума,  а  также  располагаться  вблизи  таких  'шумных'  помещений.
Источники загазованности и вибрации в данном помещении отсутствуют.



      9.5.2.Защита от излучения

      Результаты спец исследований показали, что мониторы испускают слабые
рентгеновские лучи, но интенсивность такого излучения составляет менее
половины мили рентгена в час - намного меньше допустимого уровня. Но даже
от такого незначительного излучения можно защититься. В зависимости от
условий воздействия электромагнитных полей (ЭМП), характера и
местонахождения источника могут быть использованы следующие виды защиты :
      1) защита временем, использующаяся в случае невозможности снизить
интенсивность излучения в рабочей зоне;
      2) защита расстоянием, позволяющая существенно уменьшить степень
поражения излучением, так как интенсивность убывает пропорционально
квадрату расстояния;
      3) экранирование источника излучения или рабочего места. Оно должно
отвечать следующим требованиям :
      - уменьшать интенсивность излучения до предельных уровней;
      - обеспечивать удобства в работе;
      - обеспечивать безопасность работы в отношении механических и
электрических травм.
Применительно к рассматриваемому помещению чаще всего используются
следующие два способа защиты:
      1) ввиду того, что незначительная утечка излучения из кинескопа
обнаруживается только в пределах нескольких миллиметров от поверхности
экрана и по мере удаления доза уменьшается, то можно применять защиту
расстоянием. Нормальным расстоянием, на котором излучение не регистрируется
даже чувствительной измеризмерительной аппаратурой является расстояние  0.3
- 0.4 метра;
      2) можно использовать защитный экран или сетку.

      9.5.3.  Меры защиты от поражения электрическим током

      Статистика показывает, что число травм, вызванных электрическим током,
составляет 11-12% от их общего числа. Но из всех случаев со смертельным
исходом наибольшее количество происходит в результате поражения
электрическим током. Причем до 80% всех случаев электротравматизма со
смертельным исходом приходится на электрооборудование напряжением до 1000
Вив первую очередь 220...380 В.
      Электрооборудование в основном относится к установкам напряжением до
1000 В, исключения составляют лишь экранные пульты, дисплеи, электронно-
лучевые трубки, которые имеют напряжение в несколько киловольт.
      Организационные мероприятия, обеспечивающие безопасность работ,
заключаются в следующем: соблюдение режима работы и отдыха, правильная
организация обслуживания действующих электроустановок ВЦ, проведение
ремонтных и профилактических работ.
      По опасности поражения электрическим током  рассматриваемое  помещение
относится к помещениям без повышенной опасности.



                                                                  Таблица 21


       Классификация помещения по степени опасности поражения человека
                             электрическим током

|Класс помещения                       |Характеристика помещения              |
|Без повышенной опасности              |Сухое, не жаркое, с токонепроводящим  |
|                                      |полом, без токопроводящей пыли,       |
|                                      |отсутствует возможность одновременного|
|                                      |прикосновения человека к имеющим      |
|                                      |соединение  с землей                  |
|                                      |металлоконструкциями зданий,          |
|                                      |технологическим аппаратам, механизмам |
|                                      |и т.п. с одной стороны,  и к          |
|                                      |металлическим корпусам                |
|                                      |электрооборудования,  которые при     |
|                                      |пробое изоляции могут оказаться под   |
|                                      |напряжением, - с другой стороны       |

      К техническим  мероприятиям,  обеспечивающим   безопасность  работ  со
снятием напряжения относятся:
      - отключение оборудования на участке, принятие мер  против  ошибочного
или самопроизвольного включения, ограждение при необходимости  рабочих  мест
и оставшихся под напряжением токоведущих частей;
      - проверка отсутствия напряжения;
      - установка заземления.
      Применение только одних организационных и технических  мероприятий  по
предупреждению  поражения  электрическим  током  не  может  в  полной   мере
обеспечить необходимую электробезопасность при эксплуатации. Наряду  с  ними
в  вычислительных  центрах  используют  защитное   заземление.   Нормативное
значение сопротивления заземления приведено в табл. 22

                                                                  Таблица 22
               Нормативное, значение сопротивления заземления

|Напряжение сети  |Режим нейтрали    |Назначение   |Сопротивление   |
|                 |                  |заземления   |заземления, Ом  |
|До 1000 В        |Изолированная     |Защитное     |Rз =< 10        |
|Выше 1000 В      |Изолированная     |Защитное     |Rз =< 0,5       |

      Сопротивление изоляции электрических цепей  ЭВМ  общего  назначения  в
нормальных климатических условиях должно быть не менее значений указанных  в
табл. 23



                                                                  Таблица 23


|Напряжение цепи, кВ   |Сопротивление изоляции, МОм      |
|до од 0,1             |5,0                              |
|0,1 - 0,5             |20,0                             |
|0,5 - 1,0             |100                              |

      9.6. Противопожарные требования

      К    помещению,   в   котором   располагается   вычислительный   центр
предъявляются требования:
      1) здание, в котором  предусмотрено  размещение  ЭВМ,  должно  быть  1
степени огнестойкости;
      2)  все  виды  кабельных  коммуникаций   должны   быть   проложены   в
металлических газовых трубах;
      3) подпольные пространства под съемными полами должны  быть  разделены
несгораемыми перегородками;
      4) силовые кабельные линии должны быть надежно изолированы;
      5) в наличии должны быть первичные огнетушительные средства;
По пожароопасности зоны данное  помещение  относится  к  классу  П-IIa.  Для
ликвидации пожаров помещение  вычислительного  центра  площадью  40  кв.  м.
должно располагать одним углекислотным огнетушителем типа ОУ-2,  ОУ-5,   или
ОУ-8.
Для  своевременного  обнаружения,  оповещения   и   принятия   мер   быстрой
ликвидации  пожара  в  помещении  необходима  установка   дымовых   пожарных
извещателя. При установке извещателя на высоте 4 м и  площади  помещения  40
кв. м. достаточно одного дымового извещателя.
9.7. Организация рабочего места пользователя при работе с терминалом
1) При организации  рабочего  места  с  терминалом  на  одного  пользователя
необходимо выделять не меньше б кв. метров. Высота юмещения должна  быть  не
меньше 4 метров.
      2)   Помещение   обязательно   должно   оборудоваться   огнетушителем,
сигнализацией и телефоном (и городским и местным).
      3) Помещение должно быть оборудовано одноместными  столами  и  мягкими
стульями с меняющимися по высоте сиденьями и спинками  стула.  Столы  должны
иметь длину  не  менее  0.7  метра  и  ширину,  обеспечивающую  место  перед
клавиатурой 0.3 метра.
      4) Разрешающая способность человеческого глаза составляет примерно 0.3
мм на расстоянии  500  мм.  Благоприятная  для  обозрения  площадь  лежит  в
пределах  500-700  мм.  Для  зрительного  распознавания   алфавитно-цифровых
знаков необходим растр размером 5-7 точек, поэтому  ширина  и  высота  линий
изображения этих знаков должна быть не менее 1.5 мм при удалении  500  мм  и
2.9 мм при  удалении  700  мм  от  работающего.  Угол  обзора  по  вертикали
составляет 15. В положении сидя  этот  угол  не  превышает  15  относительно
горизонтали. Оптимальное расстояние от глаз до экрана монитора  0.6-0.7  м.,
допустимое не менее 0.5 метра. Рассматривать информацию на экране ближе  0.5
метра не рекомендуется.
      5) Требуемая и допустимая контрастность элементов рабочего места снизу
ограничена возможностью распознавания, а сверху допускаемой освещенностью,
исключающей ослепление работающего. В поле зрения работающего контрастность
должна быть в пределах от 8:1 до 15:1. При этом исключается наличие
глянцевых поверхностей, создающих блики и отражающий свет. Уменьшению
усталости и повышению удобства обслуживания способствует определенное
размещение коммуникаций работающего с машиной.

      9.8.Приборы контроля параметров среды

      Метрологическое обеспечение  осуществляется на  основе положений ГОСТ
12.0.005-84  'Метрологическое обеспечение в области безопасности труда.
Основные положения'  /М., 1984/, системы стандартов безопасности труда,
санитарных  норм и правил Минздрава СССР и др.
      Приборы для контроля опасных и вредных производственных факторов
представлены в

                                                                  Таблица 24


                              Приборы контроля



|Измеряемая    |Рабочие средства измерений                    |Погрешность   |
|величина      |                                              |              |
|единица       |                                              |              |
|измерений     |                                              |              |
|              |тип           |диапазон                      |              |
|              |              |частотный     |динамический  |              |
|1.            |Аспирационный |-             |-31 . . .     |+0,1 С        |
|Температура, С|психометр     |              |51 С          |              |
|и             |MB-4M         |              |              |              |
|относительная |              |-             |10 . . .      |+5%           |
|влажность     |              |              |100 %         |              |
|воздуха, %    |              |              |              |              |
|2. Скорость   |Термометр,    |              |0,1 . . .     |+2,1          |
|движения      |электроанемоме|-             |5 м/с         |м/с           |
|воздуха, м/с  |тр TAM-1      |              |              |              |
|3. Уровень    |вшв-ооз       |10 . . .      |25 . . .      |+1 дБ         |
|звукового     |              |20000 Гц      |140 дБ        |              |
|давления в    |              |              |              |              |
|октавных      |              |              |              |              |
|полосах       |              |              |              |              |
|частот, дБ    |              |              |              |              |
|4.            |Люксметр Ю-116|0,38. . .     |5 . . .       |+10 %         |
|Освещенность, |мкм           |0,72 мкм      |100000 лк     |              |
|лк.           |              |              |              |              |
|5. Массовая   |Радиоизотопный|-             |0,1 . . .     |+20 %         |
|концентрация  |пылемер       |              |100 иг/м      |              |
|пыли, мг/куб.м|ПРИЗ-2        |              |              |              |



                                 ЗАКЛЮЧЕНИЕ


      В результате разработки данной дипломной работы написана программа для
обучения работе в графическом режиме. Программа предназначена для  студентов
младших     курсов     Санкт-Петербургской     государственной      академии
аэрокосмического приборостроения и знакомит  их  с  графическими  средствами
языка Turbo-Pascal 6.0/7.0.
      Программа содержит семь разделов для изучения:
      1) Программирование графических режимов.
      2) Управление курсором и полем рисования.
      3) Формирование прямолинейных монохромных изображений.
      4) Управление цветом и стилем изображений.
      5) Программирование цветных криволинейных изображений.
      6) Формирование графических текстов.
      7) Программирование озвученных динамических сцен.
      Программа позволяет индивидуально, в удобном  для  каждого  обучаемого
темпе ,  изучать  работу  с  компьютером  в  графическом  режиме.  Изучаемый
материал  представлен   в   программе   наглядно,   теоретический   материал
сопровожден необходимыми  иллюстрациями,  что  делает  его  более  понятным.
Предусмотрена  возможность  повторного  изучения   материала.   В   процессе
обучения производится  контроль  приобретенных  знаний  в  виде  Контрольных
вопросов. При ответах на контрольные вопросы студенту  выставляются  оценки,
которые регистрируются и могут быть выведены на экран в любой момент  работы
с программой. Имеется возможность разъяснения студенту его ошибок  в  случае
наличия  таковых.  После  ответа  на  каждый  вопрос  на   экран   выводится
комментарий, содержащий оценку в форме 'правильно/неправильно'  и  в  случае
неверного ответа пояснения сущности ошибки. Продолжительность сеанса  работы
программы составляет 45 минут.
      Программа  написана  на  языке  Turbo-Pascal   7.0   и   требует   для
использования наличия персонального компьютера типа IBM, монитора  типа  EGA
с графическим выводом 640x350 пиксел, 16 регистрами палитры.
      Разработанная   программа    полностью    соответствует    требованиям
Технического задания.



                      СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

      1. Брусенцов Н.П., Маслов С.П., Х.Рамиль Альварес Микрокомпьютерная
система обучения 'Наставник'. М.: Наука , 1990.  223 с.

      2. Демушкин А7С7, КирилловА.И., Сливин Н.А., Чубров Е.В., Кривошеев
А.О., Фомин С.С. Компьютерные обучающие программы // Информатика и
образование, 1995. N 3.

      3. Казаков В.Г., Дорошквин А.А., Задорожный П.М., Князев Б.А.
Лекционная мультимедиа аудитория  // Информатика и образование, 1995. N4.

      4. Фаронов В.В. турбо паскаль: в 3 т. М.: Учебно-инженерный центр
'МВТУ-ФЕСТО ДИДАКТИК', 1992.Т.1: Основы турбо Паскаля. 286 с.

      5. Епанешников A.M., Епанешников В.А. Программирование в среде TURBO-
PASCAL 7.O.M.: 'ДИАЛОГ-МИФИ', 1995. 282 С.

      6. Петров В.И. Графические средства алгоритмического языка TURBO-
PASCAL : Методические указания к выполнению лабораторных работ  N 1,2 /
ЛИАП.СПб., 1992. 33 с.

      7. Петров В.И. Графические средства алгоритмического языка TURBO-
PASCAL : Методические указания к выполнению лабораторных работ  N 3,4,5 /
ЛИАП.СПб., 1992. 43 с.

      8. Технико-экономическое обоснование исследовательских и инженерных
решений в дипломных проектах и работах: учебное пособие / под редакцией
Минько Э.В., Покровского А.В. /Свердловск Уральский университет, 1990. 144
с.

      9. Евдокимов В.И. Охрана труда и окружающей среды: Методические
указания по дипломному проектированию / ЛИАП.Л., 1989. 34 с.

      10. Евдокимов В.И., Козаченко В.И., Нейман Л.А., Румянцев В.В.  Охрана
труда в приборо- и радиоаппаратостроении: Учебное пособие  /  СПГУАП.  СПб.,
1993. 81 с.



                                                                 ПРИЛОЖЕИЕ 1



                               Текст программы



program GRAPHIC;  {главная программа 'Графика'}
uses Crt, Graph, Dos, Strings, MYBOOK, RAZDEL1, RAZDEL2, RAZDEL3,
      RAZDEL4 , RAZDEL5 , RAZDEL6 , RAZDEL7 ;

Type Dlina=string[6Q];

var  Gd,Gm: integer;
      Regime: byte;
      NOMER3 , NOMER4 , NOMER5 , NOMER6 , NOMER7 : integer ;
      Ball3 :array[l. .2} of integer; {переменные вывода результатов} ball4
      :array[l. .2] of integer; { работы по разделам}
      ball5 :array[l. .2] of Integer;
      ball6 :array[l. .2] of integer; ball7:array[l. .2] of integer; Itog
      :array[l, .2] of integer; {переменная накопления
                                          результатов работы за сеанс}
      tog:array[l. .2] of integer; {переменная вывода результатов
                                       работы за сеанс}
      К:аггау[1. .2] of integer; {переменная контролирующая число
                                     обращений к процедурам рабочих модулей
                                     }
      Dh: Char; {переменная для принятия символа с клавиатуры}

procedure Windol;         {введение }
Type Ann=record
     PPl:char;
     РР2:array [0. .69] of char;
end;

var FF:file of Ann;
    A: Ann;
    St :string[68];

label 1;

begin
Assign (FF, 'VEDEN. pas' );  {связь с файлом текста введения}
{SI-}
Reset(FF);
{SI + }
IF lOResulto 0 then Writeln ('Heт файла VEDEN1);
ClearDevice;
OKNO;   {процедура оформления экрана}
For N:=0 to 31 do  {цикл вывода текста введения }
 begin
  Read(FF,A);
  St:=StrPas(A.PP2);
   case A.PP1 of  {проверка наличия иллюстрации и их вывод}
   ‘ ‘: OutTextXY( 20 , 10*N+10 , St ) ;
   ‘0‘ : GoTo 1 ;
 end;
end;
1:readkey;
Close(FF);
end;
procedure Cursor(Flag:boolean); {Если Flag=True, то курсор видим;}
                                  { если Flag=False,TO невидим}
const sizeCursor:word=0;
var  Red:registers;

begin
 with Red do
  begin
   if Flag then
    begin
     CX:=SizeCursor; {Восстановим старый размер курсора}
    end
  else
   begin
    BH:=0;        {0-я страница дисплея}
    АН:=03;       {функция чтения размера и позиции курсора}
    Intr($10,Red);
    SizeCursor:=CX;{сохраняем размер курсора}
    СН:=$20;      {делаем курсор невидимым}
   end;
  АН:=01; {функция установки размера курсора}
  Intr($10,Red);
 end;
end;

procedure SVETFON(C,F:byte); {установка цвета и фона}
begin
 TextColor(C);
 TextBackground(F)
end;

procedure VERTIKALNOE_MENU(Kl,K2,Kp:byte;SS1,SS2,SS3,SS4,SS5,SS6,
                             SS7,SS8,SS9:dlina;Var Result:byte);
{процедура создания окна меню}

Label Met;
Const Kr=9;
Var M:array[l..Kr] of string[60];
    I,T:byte;
    Ch:char;
    Fl:boolean;
begin
 Cursor(False);
 Fl:=True;
 M[1]:=SS1;M[2]:=SS2;M[3]:=SS3;M[4]:=SS4;M[5]:=SS5;M[6]:=SS6;
 M[7]:=SS7;M[8]:=SS8;M[9]:=SS9;
 T:=Length(M[I]);
for I:=2 to Kp do
 if Length(M{I])>T then T:=Length(M[I]);
 for l:=l to Kp do
  begin
   if 1=1 then SVETFON(1,13)
else SVETFON(13,1);
GoToXY(Kl,K2+i);
    write(M[I]);
end;
SVETFON(13,1);
I:=l;
while Fl=True do begin
  Ch:=ReadKey;
   if Ch=#13 then Fl:=False;
   if(Ch=#0) and KeyPressed then
   begin
    Ch:=ReadKey;
    case Ch of
    #80: begin
           GoToXY(Kl,K2+i);
             SVETFON(13,1);
             write(M[I]);
             if i=(Kp+l) then
             begin
              I:=l;
              SVETFON(3,l);
              GoToXY(Kl,K2+l);
              SVETFON(1, 13);
              write(M[I]);
              SVETFON(13,1);
              goto Met;
             end;
             GoToXY(Kl,K2+I);
             SVETFON(1,13);
             write(M[I]);
             SVETFON(13,1);
           end;
    #72: begin
            if 1=1 then goto Met;
            GoToXY(Kl,K2+I);
            SVETFON(1371);
            write(M[I]);
            i:=I-1;
            GoToXY(Kl,K2+I);
            SVETFON(1,13);
            write(M[I])
           end
    end;
Met:
   end ;
  end;
  Result :=I;
  SVETFON(13,1);
  Cursor(True) ;
end;
begin {Начало основной программы}
 GraphRegim;
 SetBKColor(l);
 SetTextStyle(0,0,5);
 SetColor(12);
 OutTextXY(40,50, 'Т Р А Ф И К А');
 SetTextStyle(0,0,1);
 SetColor(15);
 OutTextXY(100,225,'Программа для обучения работе в графическом
                       режиме’);
 OutTextXY(170,245,'Разработал Черноткач Р. И.');
 OutTextXY(232,285,'СПГУАП');
 OutTextXY{240,305,'2002’);
 readkey;
 SetTextStyle(0,0,l);
 Windo1;
 CloseGraph;
 NOMER3:=0;     {переменные, контролирующие доступ к разделам}
 NOMER4:=0;     {{ не более двух раз) за сеанс}
 NOMER5:=0;
 NOMER6:=0;
 NOMER7:=0;
 К[1]:=0;
 К[2]:=0;
 while True do begin
      TextBackground(3);
      ClrScr;
      Cursor(False);
      GoToXY(15,5);
      TextColor(l);
      write('Какой раздел Вы хотели бы изучить?');
      GoToXY(10,10);
      VERTIKALNOE_MENU(10,10,9,
      '  Программирование графических режимов
      '  Управление курсором и полем рисования
      '  Формирование прямоллинейньгх монохромных изображений
      '  Управление  цветим и стилем изображений
      '  Программирование цветных криволинейных изображений
      '  Формирование графических текстов
      '  Программирование озвученных динамических сцен
      ' Результаты Вашей работы
      '  Конец работы
      Regime);
      case Regime of
        1:RAZDEL10;
        2:RAZDEL20;
        3:begin
           NOMER3:=NOMER3+1;
           If NOMER3<3 then
           begin
             RAZDEL30;
             ball3[NOMER3]:=REZ3;
             Itog[nomer3]:=Itog[nomer3]+ball3[nomer3];
             K[nomer3]:=K[nomer3]+l;
           end
         end;
        4: begin
            NOMER4:=NOMER4+1;
            If NOMER4<3 then
            begin
             RAZDEL40;
             ball4[nomer4]:=rez4;
             Itog[nomer4]:=Itog[nomer4]+ball4[nomer4];
             K[nomer4]:=K[nomer4]+l;
            end
        end;
      5:begin
           NOMER5:=NOMER5+1;
           If NOMER5<3 then
           begin
            RAZDEL50;
            Ьа115[погаег5]:=rez5;
            Itog[nomer5]:=Itog[nomer5]+ball5[nomer5];
            K[nomer5]:=K[nomer5]+1;
           end;
       end;
      6:begin
         NOMER6:=NOMER6+1;
         If NOMER6<3 then
         begin
           RAZDEL60;
           ball6[nomer6]:=rez6;  Itog[nomer6]:=Itog[nomer6]+ball6[nomer6];
           K[nomer6]:=K[nomer6]+l;
         end;
        end
      7:begin
           NOMER7:=NOMER7+1;
           IF NOMER7<3 then
           begin
            RAZDEL70;
            ball7[nomer7]:=rez7;
            Itog[nomer7]:=Itog[nomer7]+ball7[nomer7];
           end;
        end;
      8:begin                {вывод результатов работы}
         If K[l]<>0 then
         tog[l3:=Round(Itog[l]/K[1);
         If K[2]<>0 then
         tog[2]:=Round(Itog[2]/K[2]);
        TextBackground(1);
        ClrScr;
       TextColor(12);
       writeln;
       Write('РЕЗУЛЬТАТЫ  ВАШЕЙ  РАБОТЫ’);
        writeln;
        writeln('l попытка       2 попытка':80);
        writeln;
        wtiteln('ФОРМИРОВАНИЕ ПРЯМОЛИНЕЙНЫХ МОНОХРОМНЫХ
                 ИЗОБРАЖЕНИЙ');
        writeln;
        writeln('  УПРАВЛЕНИЕ ЦВЕТОМ И СТИЛЕМ ИЗОБРАЖЕНИЙ1);
        writeln;
        writeln('ПРОГРАММИРОВАНИЕ ЦВЕТНЫХ КРИВОЛИНЕЙНЫХ
       ИЗОБРАЖЕНИЙ');
       writeln;
       writeln('  ФОРМИРОВАНИЕ ГРАФИЧЕСКИХ ТЕКСТОВ');
       writeln;
       writeln('  ПРОГРАММИРОВАНИЕ ОЗВУЧЕННЫХ ДИНАМИЧЕСКИХ СЦЕН');
       writeln;
       writeln;
       writeln('  ОЦЕНКА РАБОТЫ ЗА СЕАНС');
       GotoXY(64,6);  writeln(ball3[1]);
       GoToXY(75,6);  writeln(ball3[2]);
       GoToXY(64,8);  writeln(ball4[l]);
       GoToXY(75,8);  writeln(ball4[2]);
       GoToXY(64,10); writeln(ball5[l]);
       GoToXY(75,10); writeln(ball5[2]);
       GoToXY(64,12); writeln(ball6[l]);
       GoToXY(75,12); writeln(bal16[2]);
       GoToXY(64,14); writeln(bal17[l]);
       GoToXY(75,14); writeln(ball7[23)
       GoToXY(64,18); writeln(tog[l]);
       GoToXY(75,18); writeln(tog[2]);
       readkey;
      end;
      9:begin
         GraphRegim;
         OKNO;
         SetTextStyle{0,0,4);
         SetColor(4);
             OutTextXY(150,80,'Bы хотите');
         OutTextXY(60,120,'закончить работу')
         OutTextXY(100,160,'с программой?');
         OutTextXY(230,280,'Y/N');
         Dh:=ReadKey;
           If (Dh='y') or (Dh='н') then
           begin
            Cursor(True);
            ClrScr;
            Halt
           end
           else
            CloseGraph;
        end;
     end;
  end;
  CloseGraph;
end.



{$A+, B-, D+, E+, F-, G-, I+,L+,N-,O-,P-,Q-,R-,S+,T-,V+,X+}
{$M 16384,0,655360}

Unit RAZDEL1;
interface
uses Crt, Graph, Dos, Strings, MYBOOK;

type An=record
       P1:Char;
       P2:array[0..69] of Char;
      end;
var Fl:file of An ;
    A: An;
    Gd,Gm,Y,N:integer;
    St:string[68];
procedure RAZDEL10; {Обеспечение работы с разделом 'Программиро вание
графических режимов'}
implementation

procedure RAZDEL10;

Label 1;

begin
  GraphRegim;
  Assign(Fl,'RAZTEX1.pas');
  {SI-}
    Reset (Fl);
  {SI+}
  If lOResult <>0 then Writeln ('Нет файла RAZTEX1.pas');
  Repeat;
  ClearDevice;
  OKNO;
  Y:=10;
  For N:=0 to 31 do
  begin
   Read(Fl,A); St:=StrPas(A.P2);
   case A.P1 of
   ' ':OutTextXY(20,Y*N+10,St);
   '*':begin
        SetColor{4);
         OutTextXY(20,Y*N+10,St);
         SetColor(l);
        end;
   '0':GoTo 1;
  end;
end;
1: readkey;
   until A.P1='O';
   Close(Fl);
   CloseGraph;
   end;
begin
end.
  {$A+,B-,D+,E+,F-,G-,I+,L+,N-,O-,P-,Q-,R-,S+,T-,V+,X+}
  {$M 16384,0,655360}
  Unit RAZDEL2;
  interface

  uses Crt,Graph,Dos,Strings,MYBOOK;
    type An=record
       P1:Char;
       P2:array[0..69] of Char;
  end;
    var F2:file of An ;
      A: An;
      Gd,Gm,X,Y,N:integer;
      St:string[68];

  procedure RAZDEL20; {Обеспечение работы с разделом 'Управление
                       курсором и полем рисования'}

  implementation
    procedure RAZDEL20;
    Label 1;
    begin
   GraphRegim;
   Assign(F2,'RAZTEX2.pas');
   {SI-}
   Reset(F2);
   {SI+}
   If IOResult <> 0 then Writeln ('Нет файла RAZTEX2.pas');
   repeat
   ClearDevice;
   OKNO;
   Y:=10;
   For N:=0 to 31 do
   begin
    Read(F2,A);
    St:=StrPas(A.P2);
    case A.P1 of
    ' ':OutTextXY(20,Y*N+10,St);
    '*':begin
         SetColor(4);
         OutTextXY(20,Y*N+10,St);
         SetColor(1);
        end;
    '0':GoTo 1;
    end;
   end;
1: readkey;
   until A.P1='0';
   Close(F2);
   CloseGraph;
  end;

 begin
 end.
Unit RAZDEL3;

  interface

  uses Crt,Graph,Dos,Strings,MYBOOK;

  type An=record {Теоретическая часть }
        P1:Char; {переменная поля флагов: конец файла, номер
                  иллюстрации, строка, выделяемая цветом}
        P2:array[0..69] of Char;  {переменная поля текста}
  end;

  type Ant=record {Текст вопросов}
        P1:Char;  {переменная поля флагов: конец файла, конец
                   вопроса, номер иллюстрации}
        P2:array[0..1] of Char; {переменная  номера вопроса}
        P3:array[0..69] of Char; {переменная поля текста}
  end;

  type Antr=record { Справки }
        P1:Char; {переменная поля флагов: конец файла, конец вопроса,
                  номер иллюстрации}
        P2:array[0..1] of Char; {переменная поля номера вопроса}
        P3:array[0..0] of Char; {переменная поля флагов: номера
                                 справки, конца справки}
        P4:array[0..69] of Char; {переменная поля текста}
        P5:array[0..2] of Char;  {переменная поля оценки}
  end;

  var F3:file of An ;  {переменные теоретической части}
      A: An;
      St:string[68];
      Y,N:integer;

  var F32:file of Ant;  { переменные вопросов}
      At:Ant;
      R1:string[2];
      Z1:integer;
      S:string[68];

  var F33:file of Antr;   {переменные справок}
      Atr:Antr;
      R2:string[2];
      R3:string[1];
      Stt:string[68];
      R4:string[2];
      Z2,Z3,Z4:integer;
      CH:  Char; {переменная для принятия символа с клавиатуры}
      K,J,I:integer; {переменные циклов}
      M: array[0..3] of integer; {массив для хранения четырех
                                  выбранных номеров вопросов}
      Code:integer;

  var R5:string[1];   {переменные вывода результатов}
      Z5:integer;
      REZ3:Longint; {переменная оценки}

  procedure RAZDEL30; {Обеспечение работы с разделом 'Формирование
                       прямолинейных монохромных изображений'}


  implementation

  const Mn:array[1..5] of PointType=((X:460;Y:30),(X:590;Y:90),
                   (X:590;Y:120),(X:430;Y:120),(X:460;Y:30));
        Mno:array[1..5] of PointType=((X:460;Y:170),(X:590;Y:230),
                    (X:590;Y:260),(X:430;Y:260),(X:460;Y:170));
         {Константы для формирование иллюстраций к тексту теории}

  const Ww:array[1..5] of PointType=((X:390;Y:60),(X:510;Y:60),
                      (X:510;Y:260),(X:390;Y:260),(X:390;Y:60));
        WWW:array[1..5] of PointType=((X:380;Y:50),(X:520;Y:50),
                      (X:520;Y:270),(X:380;Y:270),(X:380;Y:50));
         {Константы для формирования иллюстраций к тексту вопросов}


   procedure RAZDEL30;

   Label 0,1,2,3;

   begin
    REZ3:=6;
    GraphRegim;
    Assign(F3,'RAZTEX3.pas');  {Связь с файлом теста теории}
    {SI-}
    Reset(F3);
    {SI+}
    If IOResult <> 0 then Writeln ('Нет файла RAZTEX3.pas');
    repeat
    OKNO;
    Y:=10;
    For N:=0 to 31 do  {Цикл вывода текста теории}
    begin
     Read(F3,A);
     St:=StrPas(A.P2); {Преобразование ASCIIZ-строки A.P2 в строку
                        типа string}
     case A.P1 of          {Иллюстрации к тексту}
     ' ': OutTextXY(20,Y*N+10,St);
     '*': begin
           SetColor(4);
           OutTextXY(20,Y*N+10,St);
           SetColor(1);
          end;
     'щ': begin
           SetColor(4);
           Line(460,120,593,120);
           OutTextXY(460,160,'0');
           OutTextXY(593,130,'(X,Y)');
           SetColor(1);
          end;
     '2':begin
          SetColor(4);
          OutTextXY(460,160,'0            dX');
          OutTextXY(600,180,'dY');
          OutTextXY(550,200,'(dX,dY)');
          Line(460,170,593,170);
          Line(593,170,593,200);
          Line(460,170,593,200);
          SetColor(1);
         end;
     '3':begin
          SetColor(4);
          OutTextXY(430,245,'(X1,Y1)');
          Line(460,260,593,285);
          OutTextXY(580,270,'(X2,Y2)');
          SetColor(1);
         end;
     '4':begin
          SetBKColor(2);
          SetColor(4);
          Rectangle(460,40,590,90);
          SetColor(1);
         end;
     '5':begin
          SetFillStyle(1,4);
          Bar(459,129,591,181);
          SetFillStyle(8,5);
          SetColor(4);
          Bar(460,130,590,180);
          SetColor(1);
         end;
     '6':begin
          SetFillStyle(6,5);
          SetColor(4);
          Bar3D(460,240,590,300,20,true);
          SetCOLOR(1);
          SetFillStyle(1,15);
          SetBKColor(11);
         end;
     '7':begin
          SetBKColor(15);
          SetColor(4);
          DrawPoly(5,Mn);
          SetColor(1);
         end;
     '8':begin
          SetColor(4);
          SetFillStyle(11,5);
          SetBKColor(15);
          FillPoly(5,Mno);
          SetColor(1);
          SetFillStyle(1,15);
         end;
     '0':GoTo 0;
     end;
    end;
  0:readkey;
    ClearDevice;
    OKNO;
    until A.P1='0';
    Close(F3);
    Assign(F32,'Joing.pas');  {связь с файлом вопросов}
    {SI-}
    Reset(F32);
    {SI+}
    If IOResult<>0 then Writeln('Нет файла Joing.pas');
    Assign(F33,'Iod.pas');  {связь с файлом справок}
    {SI-}
    Reset(F33);
    {SI+}
    If IOResult<>0 then Writeln('Нет файла Iod.pas');
    OKNO1;           {заставка 'Контрольные вопросы'}
    readkey;
    ClearDevice;
    Randomize;        {Выбор четырех номеров вопросов}
    For J:=0 to 3 do
     begin
    1:I:=Random(10);
      If I=0 then GOTO 1;
      For K:=0 to J-1 do
       begin
        If M[k]=I then GOTO 1;
       end;
       M[J]:=I;
     end;
     repeat
     OKNO;
     begin
      Read(F32,At);
      R1:=StrPas(At.P2); {Преобразование ASCIIZ-строки At.P2 в строку
                          типа string}
      Val(R1,Z1,Code); {Преобразование символьного представления
                        номера вопроса в двоичную форму}
      Y:=20;
      If(Z1=M[0]) or (Z1=M[1]) or (Z1=M[2]) or (Z1=M[3]) then
      begin
       repeat
       S:=StrPas(At.P3); {Преобразование ASCIIZ-строки At.P3 в строку
                          типа string}
       OutTextXY(20,Y,S);     {Вывод текста вопроса}
       case At.P1 of          {иллюстрации к тексту вопросов}
       '1':begin
            DrawPoly(5,Ww);
            DrawPoly(5,Www);
            Bar3D(410,100,470,120,20,true);
            Bar3D(410,120,470,250,20,false)
           end;
       '2':begin
            Bar3D(200,250,300,300,30,true);
            Bar3D(200,300,300,320,30,true)
           end;
       '3':begin
            Line(380,150,550,190);
            Line(380,190,550,190);
            Line(380,230,550,190);
            OutTextXY(375,140,'(X,Y)');
            OutTextXY(375,170,'dY');
            OutTextXY(555,190,'(X1,Y1)');
            OutTextXY(375,200,'dY');
           end;
       end;
       Y:=Y+10;
       Read(F32,At);
       until At.P1='*';
     2:OutTextXY(50,330,'ВВЕДИТЕ НОМЕР ПРАВИЛЬНОГО ОТВЕТА ___');
       CH:=ReadKey;
       SetColor(4);
       OutTextXY(320,325,CH);
       SetColor(1);
       readkey;
       If(CH<>'1') and (CH<>'2') and (CH<>'3') and (CH<>'4') then
       begin
        SetFillStyle(1,11);
        Bar(318,320,327,340);
        GoTo 2;
       end
       else
       repeat
       Read(F33,Atr);
       R2:=StrPas(Atr.P2);  {Преобразование ASCIIZ-строки Atr.P2 в
                             строку типа string }
       Val(R2,Z2,Code); {Преобразование символьного представления
                         номера вопроса в двоичную форму}
       If Z2=Z1 then
        begin
         repeat
         If Atr.P3=CH then
          begin
           Y:=100;
           OKNO;
           repeat
           Stt:=StrPas(Atr.P4); {Преобразование ASCIIZ-строки Atr.P4
                                    в строку типа string }
           R5:=StrPas(Atr.P5); {Преобразование ASCIIZ-строки Atr.P5
                                    в строку типа string }
           Val(R5,Z5,Code); {Преобразование символьного
                                представления оценки в двоичную форму}

           REZ3:=Round((REZ3+Z5)/2); {Формирование оценки}
           OutTextXY(20,Y,Stt);    {Вывод текста справки}
           Y:=Y+10;
           case Atr.P1 of         {иллюстрации к тексту справок}
           '1':begin
                Line(380,150,550,190);
                MoveRel(380,190);
                Line(380,190,550,190);
                LineTo(550,190);
                OutTextXY(555,190,'(X1,Y1)');
                OutTextXY(370,140,'(X,Y)');
                OutTextXY(390,200,'(X,Y+dY)');
               end;
           '2':begin
                GOTOXY(100,190);
                LineTo(100,190);
                LineRel(30,40);
                LineRel(0,80);
               end;
           '3':begin
                GOTOXY(100,190);
                LineTo(380,150);
                LineRel(30,40);
                LineRel(0,80);
               end;
           end;
           Read(F33,Atr);
           until Atr.P3='*';
           readkey;
           GOTO 3;
         end
         else  Read(F33,Atr);
         until Atr.P1='*';
        end
        until Atr.P1='0';
       end
       else
  3: end;
     until At.P1='0';
     Close(F32);
     Close(F33);
     CloseGraph;
   end;

  begin
  end.



Unit RAZDEL4;

 interface

 uses Crt,Graph,Dos,Strings,MYBOOK;

 type An = record {Теория}
     P1:Char;  {Переменная поля флага : конец файла, номер
               иллюстрации}
     P2:array[0..69] of char; {Переменная поля текста}
 end;

 type Ant=record {Текст вопросов}
      P1:Char;   {Переменная поля флага:конец файла, номер иллюст-
                  рации, конец вопроса}
      P2:array[0..1] of Char; {Переменная поля номера вопроса}
      P3:array[0..69] of Char; {Переменная поля текста вопроса}
 end;

 type Antr=record { Справки }
      P1:Char; {Переменная поля флага:конец файла, конец вопроса,
                номер иллюстрации}
      P2:array[0..1] of Char;  {Переменная поля номера вопроса}
      P3:array[0..0] of Char; {Переменная поля флага: номер справки
                               и конец справки}
      P4:array[0..69] of Char; {Переменная поля текста справки}
      P5:array[0..2] of Char; {Переменная поля оценки}
 end;

 var F4: file of An ;  {Переменные теории}
     A:An;
     N,Y:integer;
     St:string[68];

 var F32:file of Ant;  { Переменные вопросов}
     At:Ant;
     R1:string[2];
     Z1:integer;
     S:string[68];
 var F33:file of Antr;   {Переменные справок}
     Atr:Antr;
     R2:string[2];
     R3:string[1];
     Stt:string[68];
     R4:string[2];
     Z2,Z3,Z4:integer;
     CH:  Char;{Переменная для принятия символа с клвиатуры}
     K,J,I:integer; {Переменные циклов}
     M: array[0..3] of integer; {Массив для хранения черырех
                                выбранных номеров вопросов}
     Code:integer;

 var R5:string[1];   {переменные вывода результатов}
     Z5:integer;
     REZ4:Longint;  {переменная оценки}


 procedure RAZDEL40;

 implementation

 procedure RAZDEL40;

 Label 0,1,2,3;

 begin
  REZ4:=6;
  GraphRegim;
  Assign(F4,'RAZTEX4.pas'); {Связь с файлом текста теории}
  {SI-}
  Reset(F4);
  {SI+}
  If IOResult <> 0 then Writeln ('Нет файла RAZTEX4.pas');
  repeat
  ClearDevice;
  OKNO;
  Y:=10;
  For N:=0 to 31 do           {Вывод текста теории}
   begin
    Read(F4,A);
    St:=StrPas(A.P2); {Преобразование ASCIIZ-строки A.P2 в строку
                       типа string}
    OutTextXY(20,Y*N+10,St);
    case A.P1 of
    '*':begin
         SetColor(4);
         OutTextXY(20,Y*N+10,St);
         SetColor(1);
        end;
    '1':begin SetFillStyle(1,15);
         Bar(350,45,600,340);
         SetFillStyle(1,0);
         Bar(350,45,600,65);
         SetFillStyle(1,1);
         Bar(350,65,600,85);
         SetFillStyle(1,2);
         Bar(350,85,600,105);
         SetFillStyle(1,3);
         Bar(350,105,600,120);
         SetFillStyle(1,4);
         Bar(350,120,600,135);
         SetFillStyle(1,5);
         Bar(350,135,600,150);
         SetFillStyle(1,6);
         Bar(350,150,600,165);
         SetFillStyle(1,7);
         Bar(350,165,600,185);
         SetFillStyle(1,8);
         Bar(350,185,600,200);
         SetFillStyle(1,9);
         Bar(350,200,600,215);
         SetFillStyle(1,10);
         Bar(350,215,600,235);
         SetFillStyle(1,11);
         Bar(350,235,600,255);
         SetFillStyle(1,12);
         Bar(350,255,600,275);
         SetFillStyle(1,13);
         Bar(350,275,600,295);
         SetFillStyle(1,14);
         Bar(350,295,600,315);
         SetFillStyle(1,15);
         Bar(350,315,600,340);
        end;
    '2':begin
         SetBKColor(15);
         SetFillStyle(1,15);
         Bar(200,100,600,300);
         SetFillStyle(2,2);
         Bar(200,100,600,120);
         SetFillStyle(3,2);
         Bar(200,120,600,145);
         SetFillStyle(4,2);
         Bar(200,145,600,168);
         SetFillStyle(5,2);
         Bar(200,168,600,190);
         SetFillStyle(6,2);
         Bar(200,190,600,210);
         SetFillStyle(7,2);
         Bar(200,210,600,228);
         SetFillStyle(8,2);
         Bar(200,228,600,246);
         SetFillStyle(9,2);
         Bar(200,246,600,264);
         SetFillStyle(10,2);
         Bar(200,264,600,282);
         SetFillStyle(11,2);
         Bar(200,282,600,300);
         SetFillStyle(1,0);
        end;
    '0':GoTo 0
    end;
   end;
   readkey;
0:until  A.P1='0'  ;
  readkey;
  Close(F4);
  Assign(F32,'Joi.pas');  {связь с файлом вопросов}
  {SI-}
  Reset(F32);
  {SI+}
  If IOResult<>0 then Writeln('Нет файла Joi.pas');
  Assign(F33,'Iodi.pas');
  {SI-}
  Reset(F33);     {связь с файлом справок}
  {SI+}
  If IOResult<>0 then Writeln('Нет файла Iodi.pas');
  OKNO1;           {'Контрольные вопросы'}
  readkey;
  ClearDevice;
  Randomize;        {Выбор четырех номеров вопросов}
  For J:=0 to 3 do
   begin
  1:I:=Random(10);
    If I=0 then GOTO 1;
    For K:=0 to J-1 do
     begin
      If M[k]=I then GOTO 1;
     end;
     M[J]:=I;
   end;
   M[1]:=1;
   repeat
   OKNO;
   begin
    Read(F32,At);
    R1:=StrPas(At.P2);{Преобразование ASCIIZ-строки At.P2 в
                        строку типа string}
    Val(R1,Z1,Code);  {Преобразование символьного представления
                       номера вопроса в двоичную форму}
    Y:=20;
    If(Z1=M[0]) or (Z1=M[1]) or (Z1=M[2]) or (Z1=M[3]) then
    begin
     repeat
     S:=StrPas(At.P3); {Преобразование ASCIIZ-строки At.P3 в
                        строку типа string}
     OutTextXY(20,Y,S); {Вывод текста вопроса}
     case At.P1 of
     ' ':begin
         end;
     end;
     Y:=Y+10;
     Read(F32,At);
     until At.P1='*';
     OutTextXY(50,330,'ВВЕДИТЕ НОМЕР ПРАВИЛЬНОГО ОТВЕТА ___');
   2:CH:=ReadKey;
     SetColor(4);
     OutTextXY(320,325,CH);
     SetColor(1);
     readkey;
     If(CH<>'1') and (CH<>'2') and (CH<>'3') and (CH<>'4') then
     begin
      SetFillStyle(1,11);
      Bar(318,320,327,340);
      GoTo 2;
     end
     else
     repeat
     Read(F33,Atr);
     R2:=StrPas(Atr.P2); {Преобразование ASCIIZ-строки Atr.P2 в
                          строку типа string}
     Val(R2,Z2,Code);   {Преобразование символьного представления
                       номера вопроса в двоичную форму}
     If Z2=Z1 then
     begin
      repeat
      If Atr.P3=CH then
       begin
        Y:=100;
        OKNO;
        repeat
        Stt:=StrPas(Atr.P4);   {Преобразование ASCIIZ-строки Atr.P4 в
                          строку типа string}
        R5:=StrPas(Atr.P5); {Преобразование ASCIIZ-строки Atr.P5 в
                          строку типа string}
        Val(R5,Z5,Code); {Преобразование символьного представления
                          оценки в двоичную форму}
        REZ4:=Round((REZ4+Z5)/2);  {Формирование оценки }
        OutTextXY(20,Y,Stt);
        Y:=Y+10;
        case Atr.P1 of
        ' ':begin
            end;
        end;
        Read(F33,Atr);
        until Atr.P3='*';
        readkey;
        GOTO 3;
       end
       else  Read(F33,Atr);
      until Atr.P1='*';
     end
     until Atr.P1='0';
    end
   else
3:end;
   until At.P1='0';
  Close(F32);
  Close(F33);
  CloseGraph;
 end;

 begin
 end.

Unit RAZDEL5;

    interface

    uses Crt,Graph,Dos,Strings,MYBOOK;

    type An = record
          P1:Char;
          P2:array[0..69] of char;
    end;

    type Ant=record {Текст вопросов}
          P1:Char;
          P2:array[0..1] of Char;
          P3:array[0..69] of Char;
    end;

    type Antr=record { Справки }
          P1:Char;
          P2:array[0..1] of Char;
          P3:array[0..0] of Char;
          P4:array[0..69] of Char;
          P5:array[0..2] of Char;
    end;

    var F5: file of An ;
        A:An;
        N,Y:integer;
        St:string[68];

    var F52:file of Ant;  { переменные вопросов}
        At:Ant;
        R1:string[2];
        Z1:integer;
        S:string[68];
        V:char;

    var F53:file of Antr;   {переменные справок}
        Atr:Antr;
        R2:string[2];  {поле Ant.P1-номер вопроса}
        R3:string[1];  {поле Ant.P2-номер варианта ответа}
        Stt:string[68];{поле Ant.P3-текст справки}
        R4:string[2];  {поле Ant.P4- оценка}
        Z2,Z3,Z4:integer;
        CH:  Char;        {номер варианта ответа}
        K,J,I:integer;
        M: array[0..3] of integer;
        Nom:Longint;
        Code:integer;

    var R5:string[1];   {переменные вывода результатов}
        Z5:integer;
        REZ5:Longint;

    procedure RAZDEL50;

    implementation

    procedure RAZDEL50;

    Label 0,1,2,3;

    begin
    REZ5:=0;
    GraphRegim;
    Assign(F5,'RAZTEX5.pas');
    {SI-}
    Reset(F5);
    {SI+}
    If IOResult <> 0 then Writeln ('Нет файла RAZTEX5.pas');
    repeat
    ClearDevice;
    OKNO;
    Y:=10;
    For N:=0 to 31 do
    begin
     Read(F5,A);
     St:=StrPas(A.P2);
     case A.P1 of
     ' ':OutTextXY(20,Y*N+10,St);
     '*':begin
          SetColor(4);
          OutTextXY(20,Y*N+10,St);
          SetColor(1);
         end;
     '1':begin
          SetColor(4);
          Arc(500,150,0,278,30);
          OutTextXY(490,140,'(X,Y)');
          OutTextXY(500,150,'.');
          SetColor(1);
         end;
     '2':begin
          SetColor(4);
          Circle(500,300,30);
          OutTextXY(475,290,'(X,Y)');
          OutTextXY(500,300,'.');
          SetColor(1);
         end;
     '3':begin
          SetBKColor(15);
          SetColor(4);
          Ellipse(500,100,0,278,50,25);
          OutTextXY(490,90,'(X,Y)');
          OutTextXY(500,100,'.');
          SetColor(1);
         end;
    '4': begin
          SetColor(2);
          Ellipse(500,180,10,270,50,30);
          Line(500,135,460,225);
          SetFillStyle(4,14);
          FloodFill(455,180,2);
         end;
    '5': begin
          SetColor(4);
          Ellipse(500,300,0,361,50,30);
          FillEllipse(500,300,50,30);
          SetFillStyle(1,15);
          SetColor(1);
         end;
    '6': begin
          SetFillStyle(7,13);
          PieSlice(500,120,0,120,50);
         end;
    '7': begin
          SetFillStyle(9,13);
          Sector(500,200,0,270,50,30);
          SetFillStyle(1,15);
         end;
     '8':begin
          SetFillStyle(1,9);
          Bar(250,100,600,200);
          SetViewPort(250,100,600,200,true);
          FloodFill(260,110, 1);
          Randomize;
          repeat
            PutPixel(Random(GetMaxX),Random(GetMaxY),15);
            Delay(15);
           until KeyPressed;
           SetFillStyle(1,15);
           SetViewPort(5,5,635,345,true);
         end;
    '9': begin
          Diogramma;
         end;
     '0':GoTo 0
    end;
   end;
 0:readkey;
   until  A.P1='0';
   Close(F5);
   Assign(F52,'Join.pas');  {связь с файлом вопросов}
   {SI-}
   Reset(F52);
   {SI+}
   If IOResult<>0 then Writeln('Нет файла Join.pas');
   Assign(F53,'Iodin.pas');
   {SI-}
   Reset(F53);     {связь с файлом справок}
   {SI+}
   If IOResult<>0 then Writeln('Нет файла Iodin.pas');
   OKNO1;           {'Контрольные вопросы'}
   readkey;
   ClearDevice;
   Randomize;        {Выбор четырех номеров вопросов}
   For J:=0 to 3 do
   begin
  1:I:=Random(6);
  If I=0 then GOTO 1;
    For K:=0 to J-1 do
     begin
      If M[k]=I then GOTO 1;
     end;
     M[J]:=I;
   end;
   repeat
   OKNO;
   begin
    Read(F52,At);       { вывод текста вопросов и справок }
    R1:=StrPas(At.P2);
    Val(R1,Z1,Code);
    Y:=20;
    If(Z1=M[0]) or (Z1=M[1]) or (Z1=M[2]) or (Z1=M[3]) then
     begin
     repeat
     S:=StrPas(At.P3);
     OutTextXY(20,Y,S);
     case At.P1 of
      '2':begin
          end
     end;
     Y:=Y+10;
     Read(F52,At);
     until At.P1='*';
     OutTextXY(50,330,'ВВЕДИТЕ НОМЕР ПРАВИЛЬНОГО ОТВЕТА ___');
   2:CH:=ReadKey;
     SetColor(4);
     OutTextXY(320,325,CH);
     SetColor(1);
     readkey;
     If(CH<>'1') and (CH<>'2') and (CH<>'3') and (CH<>'4') then
     begin
      SetFillStyle(1,11);
      Bar(318,320,327,340);
      GoTo 2;
     end
     else
     repeat
     Read(F53,Atr);
     R2:=StrPas(Atr.P2);
     Val(R2,Z2,Code);
     If Z2=Z1 then
     begin
      repeat
      If Atr.P3=CH then
      begin
       Y:=100;
       OKNO;
       repeat
       Stt:=StrPas(Atr.P4);
       R5:=StrPas(Atr.P5);        {формирование оценки}
       Val(R5,Z5,Code);
       REZ5:=Round((REZ5+Z5)/2);
       OutTextXY(20,Y,Stt);
       Y:=Y+10;
       case Atr.P1 of
       '1':begin
           end;
       '0':GoTo 3;
       end;
       Read(F53,Atr);
       until Atr.P3='*';
       readkey;
       GOTO 3;
      end
      else  Read(F53,Atr);
      until Atr.P1='*';
     end
     until Atr.P1='0';
    end
    else
 3: end;
   until At.P1='0';
   Close(F52);
   Close(F53);
   CloseGraph;
  end;
   begin
   end.



Unit RAZDEL6;

   interface

   uses Crt,Graph,Dos,Strings,MYBOOK;

   type An = record {Теория}
         P1:Char;  {Переменная поля флага : конец файла, номер
                     иллюстрации}
         P2:array[0..69] of char; {Переменная поля текста}
    end;

   type Ant=record {Текст вопросов}
         P1:Char;   {Переменная поля флага:конец файла, номер иллюст-
                     рации, конец вопроса}
         P2:array[0..1] of Char; {Переменная поля номера вопроса}
         P3:array[0..69] of Char; {Переменная поля текста вопроса}
   end;

   type Antr=record { Справки }
         P1:Char; {Переменная поля флага:конец файла, конец вопроса,
                    номер иллюстрации}
         P2:array[0..1] of Char;  {Переменная поля номера вопроса}
         P3:array[0..0] of Char; {Переменная поля флага: номер справки
                                  и конец справки}
         P4:array[0..69] of Char; {Переменная поля текста справки}
         P5:array[0..2] of Char; {Переменная поля оценки}
   end;

   var F6: file of An ;  {Переменные теории}
       A:An;
       Y,N,T1,T2,T3,T4:integer;
       St:string[68];

   var  F62:file of Ant;  { переменные вопросов}
        At:Ant;
        R1:string[2];
        Z1:integer;
        S:string[68];

   var F63:file of Antr;   {Переменные справок}
       Atr:Antr;
       R2:string[2];
       R3:string[1];
       Stt:string[68];
       R4:string[2];
       Z2,Z3,Z4:integer;
       CH:  Char;{Переменная для принятия символа с клвиатуры}
       K,J,I:integer; {Переменные циклов}
       M: array[0..3] of integer; {Массив для хранения черырех
                                  выбранных номеров вопросов}
       Code:integer;

   var R5:string[1];   {переменные вывода результатов}
       Z5:integer;
       REZ6:Longint;  {переменная оценки}

   procedure RAZDEL60; {Обеспечение работы раздела 'Формирование
                        графических текстов}

   implementation

   procedure RAZDEL60;

   Label 0,1,2,3;

   begin
    REZ6:=6;
    GraphRegim;
    Assign(F6,'RAZTEX6.pas');
    {SI-}
    Reset(F6);
    {SI+}
    If IOResult <> 0 then Writeln ('Нет файла RAZTEX6.pas');
    repeat
    ClearDevice;
    OKNO;
    For N:=0 to 31 do
    begin
     Read(F6,A);
     St:=StrPas(A.P2);   {Преобразование ASCIIZ-строки A.P2 в строку
                         типа string}
     case A.P1 of
     ' ':OutTextXY(20,10*N+10,St);
     '*':begin
          SetColor(4);
          OutTextXY(20,10*N+10,St);
          SetColor(1);
         end;
     '1':begin
          SetFillStyle(1,1);
          Bar(10,30,630,338);
          SetColor(15);
          SetTextStyle(2,0,1);
          OuttextXY(50,50,'TriplexFont, HorizDir, 15');
          SetTextStyle(1,0,3);
          SetColor(12);
          OutTextXY(50,100,'DefaultFont, HorizDir, 12') ;
          SetTextStyle(3,0,4);
          SetColor(13);
          OutTextXY(50,160, 'SmallFont, HorizDir, 13');
          SetTextStyle(4,0,5);
          SetColor(10);
          OutTextXY(50,220,'SanSerifFont, HorizDir, 10');
          SetTextStyle(0,0,3);
          SetColor(14);
          OutTextXY(50,300,'GothicFont, HorizDir, 14');
          SetTextStyle(0,1,2);
          SetColor(14);
          OutTextXY(30,30,'DefaultFont,VertDir');
          SetTextStyle(0,0,1);
          SetColor(1);
         end;
     '2':begin
          SetColor(4);
          SetTextStyle(1,0,1);
          SetUserCharSize(1,1,1,1);
          OutTextXY(20,120,'Turbo-Pascal 7.0');
          SetUserCharSize(3,2,3,2);
          OutTextXY(20,160,'Turbo-Pascal 7.0');
          SetUserCharSize(2,1,2,1);
          OutTextXY(20,230,'Turbo-Pascal 7.0');
          SetTextStyle(0,0,1);
          SetColor(1);
         end;
     '3':begin
          T1:=InstallUserFont('Goth');
          T2:=InstallUserFont('sans');
          T3:=InstallUserFont('trip');
          T4:=InstallUserFont('bold');
          If GraphResult0 then OutTextXY(50,100,'Нет файла Jois.pas');
   Assign(F63,'Iodis.pas');
   {SI-}
   Reset(F63);     {связь с файлом справок}
   {SI+}
   If IOResult<>0 then Writeln('Нет файла Iodis.pas');
   OKNO1;           {'Контрольные вопросы'}
   readkey;
   ClearDevice;
   Randomize;        {Выбор четырех номеров вопросов}
   For J:=0 to 3 do
    begin
   1:I:=Random(10);
     If I=0 then GOTO 1;
     For K:=0 to J-1 do
      begin
       If M[k]=I then GOTO 1;
      end;
      M[J]:=I;
    end;
    M[1]:=1;
    repeat
    OKNO;
    begin
     Read(F62,At);
     R1:=StrPas(At.P2);{Преобразование ASCIIZ-строки At.P2 в
                          строку типа string}
     Val(R1,Z1,Code);  {Преобразование символьного представления
                         номера вопроса в двоичную форму}
     Y:=20;
     If(Z1=M[0]) or (Z1=M[1]) or (Z1=M[2]) or (Z1=M[3]) then
      begin
       repeat
       S:=StrPas(At.P3); {Преобразование ASCIIZ-строки At.P3 в
                          строку типа string}
       OutTextXY(20,Y,S); {Вывод текста вопроса}
       case At.P1 of
       ' ':begin
           end;
       end;
       Y:=Y+10;
       Read(F62,At);
       until At.P1='*';
       OutTextXY(50,330,'ВВЕДИТЕ НОМЕР ПРАВИЛЬНОГО ОТВЕТА ___');
     2:CH:=ReadKey;
       SetColor(4);
       OutTextXY(320,325,CH);
       SetColor(1);
       readkey;
       If(CH<>'1') and (CH<>'2') and (CH<>'3') and (CH<>'4') then
       begin
        SetFillStyle(1,11);
        Bar(318,320,327,340);
        GoTo 2;
       end
       else
       repeat
       Read(F63,Atr);
       R2:=StrPas(Atr.P2); {Преобразование ASCIIZ-строки Atr.P2 в
                            строку типа string}
       Val(R2,Z2,Code);   {Преобразование символьного представления
                         номера вопроса в двоичную форму}
       If Z2=Z1 then
       begin
        repeat
        If Atr.P3=CH then
         begin
          Y:=100;
          OKNO;
          repeat
          Stt:=StrPas(Atr.P4);   {Преобразование ASCIIZ-строки Atr.P4
                            строку типа string}
          R5:=StrPas(Atr.P5); {Преобразование ASCIIZ-строки Atr.P5 в
                            строку типа string}
          Val(R5,Z5,Code); {Преобразование символьного представления
                            оценки в двоичную форму}
          REZ6:=Round((REZ6+Z5)/2);  {Формирование оценки }
          OutTextXY(20,Y,Stt);
          Y:=Y+10;
          case Atr.P1 of
          ' ':begin
              end;
          end;
          Read(F63,Atr);
          until Atr.P3='*';
          readkey;
          GOTO 3;
         end
         else  Read(F63,Atr);
        until Atr.P1='*';
       end
       until Atr.P1='0';
      end
     else
  3:end;
     until At.P1='0';
    Close(F62);
    Close(F63);
    CloseGraph;
   end;

   begin
   end.



Unit RAZDEL7;


        interface



        uses Crt,Graph,Dos,Strings,MYBOOK;



        type An = record {Теория}

             P1:Char;  {Переменная поля флага : конец файла, номер

                      иллюстрации}

             P2:array[0..69] of char; {Переменная поля текста}

        end;



        type Ant=record {Текст вопросов}

             P1:Char;   {Переменная поля флага:конец файла, номер иллюст-

                         рации, конец вопроса}

             P2:array[0..1] of Char; {Переменная поля номера вопроса}

             P3:array[0..69] of Char; {Переменная поля текста вопроса}

        end;



        type Antr=record { Справки }

             P1:Char; {Переменная поля флага:конец файла, конец вопроса,

                       номер иллюстрации}

             P2:array[0..1] of Char;  {Переменная поля номера вопроса}

             P3:array[0..0] of Char; {Переменная поля флага: номер справки

                                      и конец справки}

             P4:array[0..69] of Char; {Переменная поля текста справки}

             P5:array[0..2] of Char; {Переменная поля оценки}

        end;

        var F7: file of An ;  {Переменные теории}

            A:An;

            N,Y,T:integer;

            St:string[68];



        var F72:file of Ant;  { Переменные вопросов}

            At:Ant;

            R1:string[2];

            Z1:integer;

            S:string[68];

        var F73:file of Antr;   {Переменные справок}

            Atr:Antr;

            R2:string[2];

            R3:string[1];

            Stt:string[68];

            R4:string[2];

            Z2,Z3,Z4:integer;

            CH:  Char;{Переменная для принятия символа с клвиатуры}

            K,J,I:integer; {Переменные циклов}

            M: array[0..3] of integer; {Массив для хранения черырех

                                       выбранных номеров вопросов}

            Code:integer;



        var R5:string[1];   {переменные вывода результатов}

            Z5:integer;

            REZ7:Longint;  {переменная оценки}

        var Size:word;

            pt:pointer;

            u,Nn,xt,yt:integer;



        procedure RAZDEL70;



        implementation



        procedure RAZDEL70;



        Label 0,1,2,3;



        begin

         REZ7:=6;

         GraphRegim;

         Assign(F7,'RAZTEX7.pas');         {связь с файлом теории}

         {SI-}

         Reset(F7);

         {SI+}

         If IOResult <> 0 then Writeln ('Нет файла RAZTEX7.pas');

         repeat

         OKNO;

         For N:=0 to 32 do

          begin

            Read(F7,A);

            St:=StrPas(A.P2);   {Преобразование ASCIIZ-строки A.P2 в строку

                              типа string}

            case A.P1 of

            ' ':OutTextXY(20,10*N+10,St);

            '*':begin

                 SetColor(4);

                 OutTextXY(20,10*N+10,St);

                 SetColor(1);

                end;

            '1':begin

                 For Nn:=0 to 3 do

                  begin

                   GetMem(pt,ImageSize(0,200,50,250));

                   GetImage(0,200,50,250,pt^);

                   u:=0;

                   while  u<(GetMaxX) do

                   begin

                    PutImage(u-1,150,pt^,1);

                    u:=u+8;

                    PutImage(u-1,150,pt^,1);

                   end;

                   Dispose(pt);

                  end;

                end;

            '2':begin

                 SetViewPort(10,50,630,330,true);

                 SetBKColor(0);

                 SetViewPort(20,60,620,320,true);

                 ClearViewPort;

                 SetBKColor(14);  Sound(880);  Delay(200);  NoSound;

                 SetBKColor(12);  Sound(698);  Delay(200);  NoSound;

                 SetBKColor(14);  Sound(880);  Delay(200);  NoSound;

                 SetBKColor(12);  Sound(698);  Delay(200);  NoSound;

                 SetBKColor(10);  Sound(934);  Delay(200);  NoSound;

                 SetBKColor(14);  Sound(880);  Delay(200);  NoSound;

                 SetBKColor(13);  Sound(784);  Delay(400);  NoSound;

                 SetBKColor(1);   Sound(523);  Delay(200);  NoSound;

                 SetBKColor(9);   Sound(523);  Delay(200);  NoSound;

                 SetBKColor(1);   Sound(523);  Delay(200);  NoSound;

                 SetBKColor(2);   Sound(587);  Delay(100);  NoSound;

                 SetBKColor(5);   Sound(659);  Delay(100);  NoSound;

                 SetBKColor(4);   Sound(699);  Delay(200);  NoSound;

                 SetBKColor(3);   Sound(699);  Delay(200);  NoSound;

                 SetBKColor(4);   Sound(699);  Delay(200);  NoSound;

                 Delay(600);

                 SetViewPort(5,5,635,335,true);

                 SetBKColor(14);

                 ClearDevice;

                 OKNO;

                End;

            '#':GoTo 0;

            '0':GoTo 0;

            end;

          end;

        0:readkey;

          until  A.P1='0'  ;

          Close(F7);

        Assign(F72,'Jos.pas');  {связь с файлом вопросов}

        {SI-}

        Reset(F72);

        {SI+}

        If IOResult<>0 then Writeln('Нет файла Jos.pas');

         Assign(F73,'Ios.pas');

         {SI-}

         Reset(F73);     {связь с файлом справок}

         {SI+}

         If IOResult<>0 then Writeln('Нет файла Ios.pas');

         OKNO1;           {'Контрольные вопросы'}

         readkey;

         ClearDevice;

         Randomize;        {Выбор четырех номеров вопросов}

         For J:=0 to 3 do

          begin

         1:I:=Random(7);

           If I=0 then GOTO 1;

           For K:=0 to J-1 do

            begin

             If M[k]=I then GOTO 1;

            end;

            M[J]:=I;

          end;

          repeat

          OKNO;

          begin

           Read(F72,At);

           R1:=StrPas(At.P2);{Преобразование ASCIIZ-строки At.P2 в

                               строку типа string}

           Val(R1,Z1,Code);  {Преобразование символьного представления

                              номера вопроса в двоичную форму}

           Y:=20;

           If(Z1=M[0]) or (Z1=M[1]) or (Z1=M[2]) or (Z1=M[3]) then

           begin

            repeat

            S:=StrPas(At.P3); {Преобразование ASCIIZ-строки At.P3 в

                               строку типа string}

            OutTextXY(20,Y,S); {Вывод текста вопроса}

            case At.P1 of

            ' ':begin

                end;

            end;

            Y:=Y+10;

            Read(F72,At);

            until At.P1='*';

            OutTextXY(50,320,'ВВЕДИТЕ НОМЕР ПРАВИЛЬНОГО ОТВЕТА ___');

          2:CH:=ReadKey;

            SetColor(4);

            OutTextXY(320,310,CH);

            SetColor(1);

            readkey;

            If(CH<>'1') and (CH<>'2') and (CH<>'3') and (CH<>'4') then

            begin

             SetFillStyle(1,11);

             Bar(318,290,327,320);

             GoTo 2;

            end

            else

            repeat

            Read(F73,Atr);

            R2:=StrPas(Atr.P2); {Преобразование ASCIIZ-строки Atr.P2 в

                                 строку типа string}

            Val(R2,Z2,Code);   {Преобразование символьного представления

                              номера вопроса в двоичную форму}

            If Z2=Z1 then

            begin

             repeat

             If Atr.P3=CH then

              begin

               Y:=100;

               OKNO;

               repeat

               Stt:=StrPas(Atr.P4);   {Преобразование ASCIIZ-строки Atr.P4
в
                                 строку типа string}

               R5:=StrPas(Atr.P5); {Преобразование ASCIIZ-строки Atr.P5 в

                                 строку типа string}

               Val(R5,Z5,Code); {Преобразование символьного представления

                                 оценки в двоичную форму}

               REZ7:=Round((REZ7+Z5)/2);  {Формирование оценки }

               OutTextXY(20,Y,Stt);

               Y:=Y+10;

               case Atr.P1 of

               ' ':begin

                   end;

               end;

               Read(F73,Atr);

               until Atr.P3='*';

               readkey;

               GOTO 3;

              end

              else  Read(F73,Atr);

             until Atr.P1='*';

            end

            until Atr.P1='0';

           end

          else

       3:end;

          until At.P1='0';

         Close(F72);

         Close(F73);

         CloseGraph;

        end;

 begin

  end.



unit MYBOOK;

 interface

 uses Graph,Crt,Strings,Dos;

 Type  Dlina=string[10];

 var Ch:char;
     Regime:byte;
     c,Gd,Gm,i,x1,x2,y1,y2:integer;
     ArcCoords:ArcCoordsType;
     StAngle,dAngle,KRadius:word;

 const OK:array[1..11] of PointType= ((X:0;Y:0),(X:640;Y:0),
         (X:640;Y:350), (X:0;Y:350),(X:0;Y:8),(X:5;Y:8),
         (X:5;Y:345),(X:635;Y:345),(X:635;Y:5),(X:0;Y:5),
         (X:0;Y:0));

 procedure Diogramma;
 procedure OKNO;
 procedure OKNO1;
 procedure GraphRegim;

 implementation

 procedure OKNO;
 begin
  SetColor(14);
  DrawPoly(11,OK);
  SetFillStyle(1,14);
  FloodFill(635,2,14);
  SetFillStyle(1,11);
  Bar(6,6,634,344);
  SetColor(1);
 end;

procedure OKNO1;
const OK:array[1..11] of PointType= ((X:0;Y:0),(X:640;Y:0),
             (X:640;Y:350), (X:0;Y:350),(X:0;Y:8),(X:5;Y:8),
             (X:5;Y:345), (X:635;Y:345),(X:635;Y:5),(X:0;Y:5),
             (X:0;Y:0));

 begin
  SetColor(14);
  DrawPoly(11,OK);
  SetFillStyle(1,14);
  FloodFill(635,2,14);
  SetFillStyle(1,11);
  Bar(6,6,634,344);
  SetColor(4);
  SetTextStyle(0,0,6);
  OutTextXY(50,100,'Контрольные');
  OutTextXY(140,150,'вопросы');
  SetTextStyle(0,0,1);
  SetColor(1);
  end;



 procedure Diogramma;
 begin
  SetViewPort(0,0,GetMaxX,GetMaxY,true);
  SetColor(11);
  SetLineStyle(0,0,3);
  SetFillStyle(1,13);
  PieSlice(170,210,0,359,120);
  SetFillStyle(9,2);
  PieSlice(170,210,0,30,120);
  SetFillStyle(1,3);
  Sector(170,210,0,359,80,120);
  SetFillStyle(11,5);
  Sector(170,210,0,270,80,120);
  SetFillStyle(1,15);
  Circle(480,210,120);
  FloodFill(480,210,11);
  StAngle:=0;
  dAngle:=360 Div 16;
  while(StAngle+dAngle)<360 do
    begin
     c:=random(14);
     SetColor(c);
     Arc(535,210,StAngle,StAngle+dAngle,40);
     GetArcCoords(ArcCoords);
     with ArcCoords do
       begin
        KRadius:=Round(SQRT(SQR(Xend-600)+SQR(Yend-210)));
        Circle(Xend,Yend,KRadius);
        setfillstyle(1,c);
        floodfill(xend-kradius+5,yend,c);
       end;
       StAngle:=StAngle+dAngle;
    end;
 end;

procedure GraphRegim;
 var Gd,Gm:integer;
 begin
  Gd:=Detect;
  InitGraph(Gd,Gm,'');
  If GraphResult<>grOK then Halt(1);
 end;


 begin
 end.
                                                                Приложение 2



                                 База данных



Для  работы с настоящей программой Вам  необходимо знание языка
 TURBO-PASCAL 7.0, интегрированной среды, персонального компьютера
 IBM PC.
     Расширенный алгоритмический язык TURBO-PASCAL7.0 в качестве гра-
 фических средств  соддержит в  арсенале   два   стандартных  модуля:
 Grt и Graph.
      Модуль Grt содержит процедуры и функции следующего  назначения:
                     1.Процедуры задания режимов работы.
                     2.Полцедуры управления цветом.
                     3.Процедуры и функции работы с экраном.
                     4.Функции работы с клавиатурой.
                     5.Процедуры управления  звуком и др.
       Процедуры   и   функции   модуля   Graph   имеют   назначение:
                     1.Управление графическим режимом.
                     2.Управление экраном, окном, страницей.
                     3.Управление цветом и палитрой.
                     4.Работа с точками и линиями.
                     5.Построение различных фигур.
                     6.Работа с текстом.
                     7.Обмен с памятью.
      В настоящей программе они скомпанованы для изучения в следующие
 разделы:
                 1.Программирование графических режимов.
                 2.Управление курсором и полем рисования.
                 3.Формирование прямолинейных монохромных изображений
                 4.Управление цветом и стилем изображений.
                 5.Программирование цветных криволинейных изображений
                 6.Формирование графических текстов.
                 7.Программирование озвученных динамических  сцен.
         Первые два раздела являются справочными, а остальные разделы
 содержат   теоретическую   часть   и   контрольные    вопросы.
0



ПРОГРАММИРОВАНИЕ ГРАФИЧЕСКИХ РЕЖИМОВ


      Состав, назначение и взаимное положение операторов управления
 графическими режимами в языке TURBO-PASCAL удобно рассматривать в
 контексте структуры характерной графической программы:

   ---------- program <идентификатор> - заголовок программы.
   I          uses Graph - используемые модули.
   I             {Действия в текстовом режиме}.
   I   ------ InitGraph - инициализация графических средств
   I  I          {Действия в графическом режиме ' по умолчанию'.
   I  I       SetGraphMode - изменение графического режима.
   I  I          {Действия в новом графическом режиме}.
   I  I   I-- RestoreCrtMode - временный переход в текстовому режиму.
   I  I   I      {Действия в текстовом режиме}.
   I  I   I-> SetGraphMode  - возврат в графический режим.
   I  I          {Действия в графическом режиме}.
   I  I-----> CloseGraph
   I             {Действия в текстовом режиме}.
   I--------> end. - завершение программы.


*     proсedure InitGraph(var GraphDriver:integer;
*                         var GraphMode:integer;
*                         DriverPath:string);

      Инициализирует графическую систему, устанавливает графический
 режим, устанавливает исходные значения текущего указателя, палитры,
 цвета и т.д..


                ПРОГРАММИРОВАНИЕ ГРАФИЧЕСКИХ РЕЖИМОВ


      GraphDriver - переменная, в которую необходимо записать код
                    требуемого графического драйвера или нуль, если
                    требуется автоматическое определение драйвера.

      GraphMode - переменная, в которую процедура помещает код
                  графического режима.
      DriverPath - строка, содержащая путь к драйверу (если строка
                   пустая, считается, что драйвер находится в текущем
                   каталоге).
      В случае аварийной ситуации процедура устанавливает код ошибки:
           -2  -  нет графического адаптера;
           -3  -  нет драйвера устройства;
           -4  -  ошибка в драйвере;
           -5  -  нет памяти для загрузки драйвера;
          -10  -  недопустимый режим для выбранного драйвера.

*     procedure CloseGraph(без параметров);

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

*     procedure SetGraphMode(Mode:integer);

      Mode - графический режим.Изменяет ранее используемый графи-
 ческий режим либо возвращает систему в прежний графический режим
 после временного перехода к текстовому режиму. Условием использо-
 вания оператора является сохранение в динамической области ОЗУ ранее
 загруженного графического драйвера.
                 ПРОГРАММИРОВАНИЕ ГРАФИЧЕСКИХ РЕЖИМОВ


*     procedure RestoreCrtMode(без параметров);

      Восстанавливает исходный текстовый режим дисплея без потери в
 динамической области ОЗУ програмы графического драйвера.

      Имеется ряд операторов для получения справок о текущем
 графическом режиме:

*     function GetDriverName:string; -
                                      Возвращает строковое название
                                      текущего графического адаптера.

*     function GetModeName(ModeNumber:integer):string -
                                   Возвращает строковое название
                                   требуемого графического режима.

*     function GetMaxMode:integer  -
                                     Возвращает максимальный номер
                                     графического режима для текущего
                                     адаптера.

*     procedure GetModeRange(GraphDriver:integer;
*                            var LowMode,HighMode:integer); -

       Выдает справку о диапазоне номеров графических режимов задан-
 ного графического адаптера. Возвращаемые параметры LowMode и
 HighMode означают минимальный и максимальный номера графических
 режимов, соответственно.

*     function GetGraphMode:integer;  -
                       Возвращает номер текущего графического режима.

                 ПРОГРАММИРОВАНИЕ ГРАФИЧЕСКИХ РЕЖИМОВ


*     procedure GetAspectRatio(var Xasp, Yasp:word); -
                    Возвращает в своих параметрах ввеличины
                    дискретов экрана по осям X и Y ,сооответственно.
0
УПРАВЛЕНИЕ КУРСОРОМ И ПОЛЕМ РИСОВАНИЯ

   В графическом режиме  также как и  в текстовом положение выво-
 димых на экран данных в каждый момент времени определяется   курcо-
 ром. Однако,  в  этом  случае  курсор  невидим. При вхождении в гра-
 фический режим с помощью процедуры  InitGraph  курсор  автоматически
 помещается в левый верхний угол экрана, фон экрана принимает первый
 (черный) цвет палитры. Для определения и изменения положения курсора
 без рисования в TURBO-PASCAL предусмотрены операторы MoveTo,MoveRel,
 GetX,GetY.

*     procedure MoveTo(x,y:integer);

 где x,y - координаты по горизонтали и вертикали соответственно
 в отсчете от левого верхнего угла экрана.

*     procedure MoveRel(Dx,Dy:integer);

      Смещает курсор без рисования относительно его текущего поло-
 жения. Dx, Dy - смещения курсора по координатам x и y.

*     function GetX: word;

      Определяет для курсора значение координаты X.

*     function GetY: word;

      Определяет для курсора значение координаты Y.



              УПРАВЛЕНИЕ КУРСОРОМ И ПОЛЕМ РИСОВАНИЯ

При управлении положением курсора полезными оказываются также
 справочные функции GetMaxX и GetMaxY, которые возвращают координаты
 самой правой и самой нижней возможных графических позиций курсора,
 соответственно, для текущего графического драйвера и режима.

*     procedure ClearDevice;

      Очищает экран от следов предшествовавшего рисования и восста-
 навливает исходные параметры графики.

*     procedure SetViewPort(X1,Y1,X2,Y2:word;Clip:boolean);

      Устанавливает прямоугольное окно рисования с перемещением
 курсора в левый верхний угол окна. Параметры процедуры имеют следу-
 ющий смысл:(X1,Y1) и (X2,Y2) определяют соответствввенно координаты
 левого верхнего и правого нижнего углов окна, а Clip принимает
 значение true при необходимости отсечения изображения за границами
 окна и false, когда этого делать не надо .

*     procedure ClearViewPort;

      Очищает текущее окно, заполняя его первым цветом текущей
 цветовой палитры, и переводит курсор в левый верхний угол окна.

*     procedure GetViewSettings(var ViewPortType);

      Возвращает параметры активного окна просмотра в переменной
 ViewPort. Тип ViewPortType  описан в модуле Graph.
0



ФОРМИРОВАНИЕ ПРЯМОЛИНЕЙНЫХ МОНОХРОМНЫХ ИЗОБРАЖЕНИЙ


 В данном разделе не рассматривается управление
 цветом и стилем рисования и закрепляется за
 фоном светло-серый, а за курсором синий цвет.


*   procedure LineTo(X,Y:integer);
щ
    Проводит отрезок прямой от текущего положения
 курсора к заданной точке (X,Y).


*   procedure LineRel(Dx,Dy:integer);
2
    Рисует отрезок прямой по направлению к точке,
 смещенной от текущего положения курсора на рас-
 стояние Dx и Dy по осям OX и OY .


*   procedure Line(X1,Y1,X2,Y2:integer);
3
    Проводит прямую между точками (X1,Y1) и
 (X2,Y2).


    После выполнения этой и последующих процедур
 курсор возвращается в предшествующее положение.



           ФОРМИРОВАНИЕ ПРЯМОЛИНЕЙНЫХ МОНОХРОМНЫХ ИЗОБРАЖЕНИЙ


*   procedure Rectangle(X1,Y1,X2,Y2:integer);
4
 Строит контуры прямоугольника с координатами
 левого верхнего (X1,Y1) и нижнего правого
 (X2,Y2) углов.


*    procedure Bar(X1,Y1,X2,Y2:integer);
5
 Строит прямоугольник, закрашенный текущим цветом
 и орнаментом заполнения. (X1,Y1), (X2,Y2) -
 координаты левого верхнего и правого нижнего
 углов соответственно.


*     procedure Bar3D(X1,Y1,X2,Y2:integer;
*                     Depth:word;Top:boolean)
6
 Рисует аксонометрию закрашенного по фасаду
 прямоугольного параллелепипеда.
 (X1,Y1),(X2,Y2) - координаты левого верхнего и
                   правого нижнего  углов
                   прямоугольного фасада.
 Depth - ширина боковой грани (отсчитывается по
         годизонтали.
 Top - признак включения верхней грани.



          ФОРМИРОВАНИЕ ПРЯМОЛИНЕЙНЫХ МОНОХРОМНЫХ ИЗОБРАЖЕНИЙ


*      procedure DrawPoly(NumPoints:word;
*                         var PolyPoints);
7Строит ломаную линию.
 NumPoints - число вершин многоугольника
 PolyPoints - переменная без типа, содержащая
 NumPoints+1 пар координат вершин многоугольника
 (первая и последняя вершины должны совпадать).


*      procedure FillPoly(NumPoints:word;var PolyPoints);
8
 Закрашивает многоугольник текущим цветом и
 орнаментом. Параметры NumPoints и PolyPoints
 именют тот же смысл и тип, что и одноимеынные
 параметры процедуры DrawPoly.
0



01С ПОМОЩЬЮ КАКИХ ПРОЦЕДУР МОЖНО НАИБОЛЕЕ РАЦИОНАЛЬНО ПОСТРОИТЬ
   ОТРЕЗОК , ЕСЛИ ИЗВЕСТНЫ КООРДИНАТЫ КОНЦОВ?

   1  LineTo(X,Y);
      Line(X1,Y1,X2,Y2);

   2  Line(X1,Y1,X2,Y2);
      DrawPoly(NumPoint,PolyPoints);

   3  LineTo(X,Y);
      Line(X1,Y1,X2,Y2);
      DrawPoly(NumPoint,Poly Points);

   4  Line(X1,Y1,X2,Y2);
*
 02КАК ПОСТРОИТЬ СТОЛБЧАТУЮ ДИАГРАММУ В ЗАРАНЕЕ СФОРМИРОВАННОЙ РАМКЕ?
1
   1  Bar3D(X1,Y1,X2,Y2,Depth,true);
      SetViewPort(X1,Y1,X2,Y2,false);
      ClearViewPort;
      Bar3D(X1,Y2,X2,Y3,Depth,false);

   2  Bar3D(X1,Y1,X2,Y2,Depth,true);
      SetViewPort(X1,Y1,X2,Y2,Depth,true);
      ClearViewPort;
      Bar3D(X1,Y1,X2,Y3,Depth,false);

   3  Bar3D(X1,Y1,X2,Y2,Depth,true);
      Bar3D(X1,Y2,X2,Y3,Depth,false);

   4  Bar3D(X1,Y1,X2,Y2,Depth,true);
      Bar3D(X1,Y2,X2,Y3,Depth,true);
*
 03КАК НА ПОЛНОСТЬЮ ЗАКРАШЕННОМ ЭКРАНЕ ПОЛУЧИТЬ НЕЗАКРАШЕННУЮ ПРЯМОУ-
   ГОЛЬНУЮ ОБЛАСТЬ?

    1  Bar(X1,Y1,X2,Y2);
       SetViewPort(X1,Y1,X2,Y2,true);
       ClearViewPort;

    2  Bar(X1,Y1,X2,Y2);

    3  Bar3D(X1,Y1,X2,Y2,Depth,true);

    4  Bar3D(X1,Y1,X2,Y2,false);
*
 04КАК ИСКЛЮЧИТЬ ПОЯВЛЕНИЕ НА ЭКРАНЕ ЗАТЕНЯЕМЫХ КОНТУРОВ НИЖНЕГО
2  ПАРАЛЛЕЛЕПИПЕДА В ОБЬЕМНОЙ СТОЛБЧАТОЙ ДИАГРАММЕ?

    1  Использовать процедуру Bar3D дважды. построенный верхний парал-
       лелепипед 'закроет' автоматически верхнюю грань нижнего парал-
       лелепипеда.

    2  Установить параметр Top=false в процедуре Bar3D при построении
       нижнего параллелепипеда.

    3  Установить параметр Top=false в процедуре Bar3D при построении
       верхнего параллелепипеда.

    4  Построить ломаную линию соответствующую контурам верхней грани
       нижжнего параллелепипеда с помощью процедуры DrawPole и закра-
       сить его в белый цвет с помощью процедуры FillPole.
*
 05КАК НА ЭКРАНЕ ЗАКРАСИТЬ БЕЛЫМ ЦВЕТОМ ОБЛАСТЬ, ОГРАНИЧЕННУЮ ЗВЕЗДОЙ?

    1  Построить звезду с помощью процедуры DrawPole(10,zve),где zve -
       константа типа PointType, является массивом координат вершин
       фигуры и содержит 10 элементов.

    2  Использовать процедуру DrawPole(10,zvez) , где константа zvez
       содержит 11 элементов.

    3  Применить процедуру FillPole(10,zves), где константа zves содер-
       жит 11 элементов.

    4  Установить цвет рисования белый и с помощью процедуры
       FillPole(10,zves) построить звезду, закрашенную белым цветом.
*
 06С ПОМОЩЬЮ КАКОЙ ПРОЦЕДУРЫ ИЛИ ФУНКЦИИ ВОЗМОЖНО УСТАНОВИТЬ СТРОКОВОЕ
   НАЗВАНИЕ ТЕКУЩЕГО ГРАФИЧЕСКОГО АДАПТЕРА?

     1  Функция GetDriverName;

     2  Функция GetModeName(ModeNumber);

     3  Функция GetMaxMode;

     4  Процедура GetModeRange(GraphDriver;LowMode,HighMode);
*
 07СУЩЕСТВУЕТ ЛИ ВОЗМОЖНОСТЬ ОПРЕДЕЛЕНИЯ ЗНАЧЕНИЯ КООРДИНАТ КУРСОРА.

      1  Нет

      2  Да, с помощью функций GetX, GetY.

      3  Да, с помощью функций GetMaxX, GetMaxY.

      4  Да, с помощью функции MoveRel.
*
 08С ПОМОЩЬЮ КАКОГО ФРАГМЕНТА ПРОГРАММЫ МОЖНО ВЫВЕСТИ НА ЭКРАН
3  СЛЕДУЮЩУЮ КАРТИНКУ? КУРСОР НАХОДИТСЯ В ТОЧКЕ (X1,Y1).

      1  Line(X,Y,X1,Y1);
         MoveRel(X,Y+dY);
         Line(X,Y+dY,X1,Y1);
         MoveRel(0,dY);
         LineTo(X1,Y1);


      2  LineTo(X1,Y1);
         LineRel(0,dY);
         LineRel(0,2dY);

      3  LineTo(X,Y);
         MoveRel(0,dY);
         Line(X,Y+dY,X1,Y1);
         MoveRel(0,dY);
         Line(X,Y+2dY,X1,Y1);

      4  LineTo(X,Y);
         LineRel(0,dY);
         LineRel(0,2dY);
*
 09ГДЕ ПОМЕЩАЕТСЯ КУРСОР И КАКОЙ ФОН ЭКРАНА УСТАНАВЛИВАЕТСЯ ПРИ
   ВХОЖДЕНИИ В ГРАФИЧЕСКИЙ РЕЖИМ С ПОМОЩЬЮ ПРОЦЕДУРЫ InitGraph?

      1  Курсор помещается в центр экрана и устанавливается черный
         цвет фона экрана.

      2  Курсор помещается в правый верхний угол экрана и устанав-
         ливается черный цвет фона экрана.

      3  Курсор помещается в левый верхний угол экрана и устанавлива-
         ется черный цвет фона экрана.

      4  Курсор помещается в левый верхний угол экрана и устанавлива-
         ется белый цвет фона экрана.
*
 10С КАКОЙ ЧАСТОТОЙ ОБНОВЛЯЕТ ЭКРАН КОНТРОЛЛЕР ДИСПЛЕЯ ПЭВМ IBM?

      1  50-60 раз/сек

      2  20-40 раз/сек

      3  100-120 раз/сек

      4  200 раз/сек
*
0



011Процедуру LineTo(X,Y) можно использовать только в случае, когда     002
    один из концов отрезка совпадает с положением курсора.
   *
   2Ответ правильный. Однако, применение процедуры DrawPoly в данном    004
    случае не является рациональным.
   *
   3Процедуру LineTo(X,Y) можно использовать только в случае, когда один002
    из концов отрезка совпадает с положением курсора. Процедура DrowPoly
    не является в данном случае рациональной.
   *
   4Ответ правильный.                                                   005
   *
*
 021Отввет неверный. Верхний параллелепипед будет иметь очищенную перед-002
    нюю грань.  Это не требуется по условию задачи. При этом неверно
    указаны параметры процедуры Bar3D при построении второго параллеле-
    пипеда.
   *
   2Неправильно указаны параметры процедуры SetViewPort. Координаты окна002
    отсчитываются от левого верхнего угла экрана в то время как для про-
    цедуры Bar3D от левого верхнего угла окна.
   *
   3Ответ правильный.                                                   005
   *
   4Ответ не точный.На экране появятся затененные контуры нижнего парал-003
    лелепипеда.
   *
*
 031Ответ не точный.Процедуры SetViewPort и ClearViewPort в данном слу- 003
    чае излишние,т.к.уже процедура Bar рисует прямоугольную область,
    которую закрашивает первым цветом палитры, если цвет не задан ранее
   *
   2Ответ правильный                                                    005
   *
   3Процедура Bar3D рисует аксонометрию прямоугольного параллелепипеда,а002
    не прямоугольную область.
   *
   4Процедура Bar3D рисует аксонометрию прямоугольного параллелепипеда,а002
    не прямоугольную область.
   *
*
 041Ответ неверный. Процедура Bar3D рисует контуры аксонометрии закра-  002
    шенного по фасаду параллелепипеда. Боковая и верхняя грани не закра-
    шиваются, т.о. затемненная часть верхней грани нижнего параллелепи-
    педа не исчезнет.
   *
   2Ответ правильный.                                                   005
   *
   3Ответ неверный. Параметр Top процедуры Bar3D регулирует наличие или 002
    отсутствие верхней (а не нижней) левой грани аксонометрии.
   *
   4Ответ неверный. Достаточно установить параметр Top=False процедуры  002
    Bar3D. Дополниетльные меры излишне.
   *
*
 051Ответ неверный. Процедура DrawPoly построит звезду с одной невидимой002
    гранью. Цвет фигуры будет соответствовать цвету фона.
   *
   2Ответ неверный. Цвет фигуры будет соответствовать цвету фона и будет002
    белым только в случае, когда фон экрана белый.
   *
   3Ответ правильный.                                                   005
   *
   4Ответ правильный. Однако, закраска белым цветом возможна и          004
    по умолчанию.
   *
*
 061Ответ правильный.                                                   005
   *
   2Ответ неверный. Функция GetModeName возвращает строковое название   002
    требуемого графического режима для текущего адаптера.
   *
   3Ответ неверный.Функция GetMaxMode возвращает максимальный номер     002
    графического режима для текущего адаптера.
   *
   4Ответ неверный. Процедура GetModeRange выдает справку о диапазоне   002
    номеров графических режимов заданного графического адаптера.
   *
*
 071Ответ неверный. Такая возможность существует.                       002
   *
   2Ответ правильный.                                                   005
   *
   3Ответ неверный. Данные процедуры возвращают максимально возможные   002
    для текущего драйвера и режима графические позиции курсора.
   *
   4Ответ неверный. Процедура MoveRel смещает курсор относительно его   002
    текущей позиции.
   *
*
1081Ответ неверный. Рисунок будет иметь следующий вид:                  002
   *
2  2Ответ неверный.Рисунок будет иметь следующий вид:                   002
   *
   3Ответ правильный.                                                   005
   *
3  4Ответ неверный. рисунок будет иметь следующий вид:                  002
   *
*
 091Ответ неверный.                                                     002
   *
   2Ответ неверный.                                                     002
   *
   3Ответ правильный.                                                   005
   *
   4Ответ неверный.                                                     002
   *
*
 101Ответ правильный.                                                   005
   *
   2Ответ неверный.                                                     002
   *
   3Ответ неверный.                                                     002
   *
   4Ответ неверный.                                                     002
   *
*
0



УПРАВЛЕНИЕ ЦВЕТОМ И СТИЛЕМ ИЗОБРАЖЕНИЙ

      В данном разделе мы рассмотрим возможности управления цветовой
 палитрой и стилем рисования.

*     procedure GetPalette(var PaletteType);

      Возвращает текущую плитру и количество цветов в ней. Применя-
 ется только в графическом режиме и только с драйверами  EGA, EGA 64
 и VGA.


*     procedure SetAllPalette(var Palette);

      Меняет все цвета палитры на заданные. Переменная без типа
 Palette в первом байте содержит число N- количество цветов в палитре
 а в последующих N байах - коды задаваемых цветов. Если задана вели-
 чина -1, то исходный цвет остается без изменений.


*      procedure SetPalette(NumberColor:word;Color:byte);

       Изменяет один из цветов палитры. NumberColor - порядковый
 номер изменяемого цвета. Color -код нового цвета.


*       procedure SetColor(Color:word);

        Устанавливает текущий цвет рисования.Color - код цвета либо
 его имя. Возможные значения параметра приведены на следующем экране

                 УПРАВЛЕНИЕ ЦВЕТОМ И СТИЛЕМ ИЗОБРАЖЕНИЯ
_____________________________________________________________________
    Имя       Значение   Назначение
 --------------------------------------------------------------------
 Black           0       черный

 Blue            1       синий

 Green           2       зеленый

 Cyan            3       голубой
 Red             4       красный

 Magenta         5       фиолетовый
 Brown           6       коричневый

 LightGray       7       светло-серый

 DarkGray        8       темно-серый

 LightBlue       9       светло-синий
 LightGreen     10       светло-зеленый

 LightCyan      11       светло-голубой

 LightRed       12       розовый

 LightMagenta   13       светло-фиолетовый

 Yellow         14       желтый

1White          15       белый
               УПРАВЛЕНИЕ ЦВЕТОМ И СТИЛЕМ ИЗОБРАЖЕНИЯ

*      procedure SetBKColor(Color:word);

      Устанавливает цвет фона рисования. Color - код или имя цвета.
      Для получения справок о кодах цветов, связанных с курсором и
 фоном рисования, используются функции:
                                       function GetColor:word;
                                       function GetBKColor:word;

      Факторами, определяющими стиль рисования, являются толщина и
 способ выражения линий, используемых в изображениях контурных линий
 и линий закраски замкнутых фрагментов рисунков.

*     procedure SetLineStyle(LineStyle:word; Pattern:word;
*                            Thiekness:word);

      Устанавливает стиль контурных линий и их толщину. Параметр
 LineStyle может  принимать следующие значения:


 SolidLn   = 0   ___________________________________________________
 DottedLn  = 1   ...................................................
 CenterLn  = 2   ._._._._._._._._._._._._._._._._._._._._._._._._._ .
 DashedLn  = 3   _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
 UserBitLn = 4   тип, определяемый пользователем.
      Когда LineStyle=userBitLn, задается параметр Pattern - шаблон
 линии - двухбайтовое число, каждый бит которого равен 1, если оче-
 редной пиксель следует высветить, и 0 в противном случае.
      Параметр Thickness устанавливает толщину линий и может при-
 нимать следующие значения:   NormWidth = 1  -  тонкая линия
                              ThickWidth= 3  -  толстая линия
                УПРАВЛЕНИЕ ЦВЕТОМ И СТИЛЕМ ИЗОБРАЖЕНИЯ


*     procedure GetLineSettings(var LineInfo:LineSettingsType);

      Возвращает параметры текущего стиля контурных линий. Тип
 LineSettingsType описан в модуле Graph как запись, поля которой:
 LineStyle:word;
 Pattern:word;
 Thickness:word;, имеют тот же смысл, что и одноименные параметры
 процедуры SetLineStyle.


*     procedure SetFillStyle[(Pattern:word;Color:word)];

      Устанавливает стандартные орнамент и цвет заполнения. 'По умол-
 чанию' закраска белая сплошная. Параметр Color - установка цвета.
 Возможные значения параметра Pattern проиллюстрированы на следующем
 экране.

*     procedure SetFillPattern(Pattern:FillPatternType;Color:word);

      Задает произвольный орнамент и цвет заполнения фигур.
 Pattern - задаваемый пользователем орнамент.
 typeFillPatternType=array[1..8] of byte;
 Color - код цвета в палитре.

*      procedure GetFillSettings(varFillInfo:FillSettingsType)

       Возвращает код и цвет стандартного образца закраски в пере-
 менных Color и Pattern  соответственно.


              УПРАВЛЕНИЕ ЦВЕТОМ И СТИЛЕМ ИЗОБРАЖЕНИЯ


 --------------------------------------------------------------------
      Имя        Значение
 --------------------------------------------------------------------
  EmptyFill         0        Фоновым цветом
  SolidFill         1        Заданным цветом

  LineFill          2

  LtSlashFill       3

  SlashFill         4

  BkSlashFill       5

  LtBkSlashFill     6

  HatchFill         7

  XHatchFill        8

  InterLeaveFill    9

  WideDotFill      10

  CloseDotFill     11

2 UserFill         12         Заполнение определяется пользователем
0--------------------------------------------------------------------
01С ПОМОЩЬЮ КАКОЙ ПРОЦЕДУРЫ МОЖНО ВЫВЕСТИ НА ЭКРАН СПИСОК КОДОВ
   ЦВЕТОВ НЕИЗВЕСТНОЙ ВАМ ТЕКУЩЕЙ ЦВЕТОВОЙ ПАЛИТРЫ?


     1  GetPalette(Palette);


1    2  SetPalette(NumberColor,Color);


     3  SetAllPalette(Palette);


     4  SetLineStyle(LineStyle,Pattern,Thickness);
*
 02УСТАНОВИТЕ НА ЧЕРНОМ ЭКРАНЕ КВАДРАТНОЕ ОКНО И ЗАКРАСЬТЕ ЕГО
   СПЛОШНЫМ БИРЮЗОВЫМ ЦВЕТОМ(3).


     1  SetFillStyle(0,3);
        Bar(X1,Y1,X1+d,Y1+d);


     2  SetBKColor(0);
        SetColor(3);
        Bar(X1,Y1,X1+d,Y1+d);


     3  SetBKColor(0);
        SetFillStyle(0,3);
        Bar(X1,Y1,X1+d,Y1+d);


     4  SetFillStyle(0,3);
        SetBKColor(0);
        Bar(X1,Y1,X1+d,Y1+d);
*
 03С ПОМОЩЬЮ КАКОГО ФРАГМЕНТА ВОЗМОЖНО ЗАКРАСИТЬ ПРЯМОУГОЛЬНУЮ
   ОБЛАСТЬ КРАСНОГО(4) ЭКРАНА ЧАСТОЙ СЕТКОЙ(9) СИНЕГО ЦВЕТА(1)?


     1  SetBKColor(4);
        SetFillStyle(9,1,0);
        Bar(X1,Y1,X2,Y2);


     2  SetBKColor(4);
        Rectangle(X1,Y1,X2,Y2);
        SetFillStyle(9,1,0);


     3  SetBKColor(4);
        SetFillStyle(9,1);
        Bar(X1,Y1,X2,Y2);


     4  SetBKColor(4);
        Bar(X1,Y1,X2,Y2);
        SetFillStyle(9,1);
*
 04ИМЕЕТСЯ ЛИ В ЯЗЫКЕ TURBO PASCAL ВОЗМОЖНОСТЬ УСТАНАВЛИВАТЬ
   ПРОИЗВОЛЬНЫЙ (ПО ЖЕЛАНИЮ ПОЛЬЗОВАТЕЛЯ) ЦВЕТ РИСОВАНИЯ, СТИЛЬ И
   ТОЛЩИНУ ЛИНИЙ РИСОВАНИЯ?


     1  Нет


     2  Только цвет


     3  Только стиль линий


     4  Только стиль и толщину линий
*
 05НАПИШИТЕ ПРОГРАММУ РИСОВАНИЯ КОНТУРОВ ПРЯМОУГОЛЬНИКА ЛИНИЯМИ,
   СОСТОЯЩИМИ ИЗ ЧЕРЕДУЮЩИХСЯ ПАР ТОЧЕК И ТИРЕ.


      1  GetLineStyle(0,0,1);
         Rectangle(X1,Y1X2,Y2);


      2  SetLineStyle(4,$3,1);
         Rectangle(X1,Y1,X2,Y2);


      3  SetLineStyle(4,3,1);
         Rectangle(X1,Y1,X2,Y2);


      4  SetLineStyle(0,13,1);
         Rectangle(X1,Y1,X2,Y2);
*
 06КАК ОБЕСПЕЧИТЬ ЗАКРАСКУ КАКОЙ-ЛИБО ОБЛАСТИ ЭКРАНА КРАСНЫМ(4)
   ЦВЕТОМ 25% ЯРКОСТИ?


     1  SetFillPatern(1,2,4,8,1,2,4,8);


     2  SetFillPatern(1,2,4,8,1,2,4,8;4);


     3  SetFillPatern(11,22,44,88,11,22,44,88);


     4  SetFillPatern(11,22,44,88,11,22,44,88;4);
*
 07КАКАЯ ИЗ НИЖЕУКАЗАННЫХ ПРОЦЕДУР УСТАНАВЛИВАЕТ СТАНДАРТНЫЕ
   ОБРАЗЦЫ ЗАКРАСКИ И ИХ ЦВЕТА?


     1  SetFillStyle(Pattern:word;Color:word);


     2  SetFillPatern(Pattern:FillPatternType;Color:Word);


     3  GetFillSettings(var FillInfo:FillSettingsType);


     4  SetLineStyle(LineStyle:Word;Pattern:Word;Thickness:Word);
*
 08С ПОМОЩЬЮ КАКОЙ ПРОЦЕДУРЫ МОЖНО ЗАМЕНИТЬ НУЛЕВОЙ,ЧЕРНЫЙ, ЦВЕТ
   ПАЛИТРЫ НА ДЕВЯТЫЙ, СВЕТЛО-ГОЛУБОЙ?


     1  SetAllPalette;


     2  SetColor;


     3  SetPalette;


     4  GetPalette;
*
 09НАПИШИТЕ ПРОГРАММУ ЗАМЕНЫ ЦВЕТА НЕИЗВЕСТНОГО СТАНДАРТНОГО СТИЛЯ
   ЗАКРАСКИ НА ЦВЕТ X.


     1  Color:=X;
        SetFillStyle(Pattern,Color);


     2  GetFillSettings;
        Color:=X;
        SetFillStyle(Pattern;Color);


     3  GetFillSettings;
        Color:=X;
        SetFillPattern(Pattern;Color);


     4  GetFillSettings;
        Color:=X;
        SetFillStyle(Color;Pattern);
*
 10НАПИШИТЕ ПРОГРАММУ РИСОВАНИЯ НА КРАСНОМ(4) ЭКРАНЕ ГОЛУБОГО(9)
   ОКНА, ЗАКРАШЕННОГО КЛЕТКОЙ СИНЕГО ЦВЕТА(1).


     1  SetBKColor(4);
        SetFillStyle(7,1);
        Bar(X1,Y1,X2,Y2);


     2  SetBKColor(4);
        Bar(X1,Y1,X2,Y2);
        SetFillStyle(7,1);
        Bar(X1,Y1,X2,Y2);


     3  SetBKColor(4);
        SetFillStyle(1,9);
        Bar(X1,Y1,X2,Y2);
        SetFillStyle(7,1);
        Bar(X1,Y1,X2,Y2);


     4  SetFillStyle(9,1);
        Bar(X1,Y1,X2,Y2);
        SetFillStyle(7,1);
        SetBKColor(4);
*
0



011Ответ правильный.                                                   005
   *
   2Ответ неверный. Процедура SetPalette изменяет один из цветов палитры002
   *
   3Ответ неверный. Процедура SetAllPalette изменяет цвета палитры.     002
   *
   4Ответ неверный. Процедура SetLineStyle устанавливает стиль          002
    контурных линик и их толщину.
   *
*
 021Ответ правильный.                                                   005
   *
   2Ответ неверный. Процедура SetColor задает цвет рисования. но не     002
    закрашивает  фигуры.
   *
   3Ответ неверный. Нет необходимости устанавливать черный цвет, т.к.   003
    он автоматически устанавливается при вхождении в графический режим.
   *
   4Ответ неверный.На черном экране, установленном процедурой SetBKColor002
    будет виден лишь белый контур квадрата.
   *
*
 031Ответ неверный.Ошибка в написании параметров процедуры SetFillStyle.002
   *
   2Ответ неверный. Результатом выполенния данного фрагмента будет      002
    красный экран.Ошибка в написании параметров процедуры SetFillStyle.
   *
   3Ответ правильный.                                                   005
   *
   4Ответ неверный. Стиль и цвет закраски необходимо установить до      002
    построения фигуры.
   *
*
 041Ответ неверный. В языке имеется возможность устанавливать           002
    произвольный (по желанию пользователя) стиль контурных линий с
    помощью процедуры SetLineStyle(LineStyle,Pattern,Thickness).
    При этом параметр LineStyle устанавливается в значение UserBitLn(4)
    а параметр Pattern представляет собой битовую строку, определяющую
    стиль изображения кнтурных линий. Возможности установить призволь-
    ный цвет рисования нет.
   *
   2Ответ неверный. В языке имеется возможность устанавливать           002
    произвольный (по желанию пользователя) стиль контурных линий с
    помощью процедуры SetLineStyle(LineStyle,Pattern,Thickness).
    При этом параметр LineStyle устанавливается в значение UserBitLn(4)
    а параметр Pattern представляет собой битовую строку, определяющую
    стиль изображения кнтурных линий. Возможности установить призволь-
    ный цвет рисования нет.
   *
   3Ответ правильный.                                                   005
   *
   4Ответ неверный. В языке имеется возможность устанавливать           002
    произвольный (по желанию пользователя) стиль контурных линий с
    помощью процедуры SetLineStyle(LineStyle,Pattern,Thickness).
    При этом параметр LineStyle устанавливается в значение UserBitLn(4)
    а параметр Pattern представляет собой битовую строку, определяющую
    стиль изображения кнтурных линий. Возможности установить призволь-
    ный цвет рисования нет.
   *
*
 051Ответ неверный. Процедура GetLineStyle не устанавливает стиль       002
    контурных линий, а возвращает их текущие параметры.
   *
   2Ответ правильный.
   *                                                                    005
   3Ответ неверный. Параметр Pattern не может состоять из одной цифры,  002
    т.к. его значение - двухбайтовое число.
   *
   4Ответ неверный. При установке стандартного стиля контурных линий    002
    параметр Pattern не задается.
   *
*
 061Ответ неверный. Не указан параметр Color и элементы массива Pattern 002
    являются двухбайтовыми.
   *
   2Ответ неверный. Элементы массива Pattern являются двухбайтовыми.    002
   *
   3Ответ неверный. Не указан параметр Color.                           002
   *
   4Ответ правильный.                                                   005
   *
*
 071Ответ правильный.                                                   005
   *
   2Ответ неправильный. Процедура SetFillPattern позволяет программисту 003
    определить свой, нестандартный, образец закраски. Возможно смодели-
    ровать и стандартный стиль с помощью той же процедуры.
   *
   3Ответ неверный. Эта процедура возвращает код и цвет стандартного    002
    образца закраски.
   *
   4Ответ неверный. Процедура SetLineStyle устанавливает стиль контурных002
    линий.
   *
*
 081Ответ неверный. Данный способ замены одного цвета другим допустим,  004
    но не рационален.
   *
   2Ответ неверный. Процедура SetColor устанавливает текущий цвет       002
    рисования.
   *
   3Ответ правильный.                                                   005
   *
   4Ответ неверный. Процедура GetPalette выдает справку о текущей       002
    цветовой палитре, но не меняет цвета.
   *
*
 091Ответ неверный. Параметр Color не следует устанавливать предвари-   002
    тельно для процедуры SetFillStyle. Процедура  SetFillStyle устанав-
    ливает стандартный образец закраски и цвет.
   *
   2Ответ правильный.                                                   005
   *
   3Ответ неверный. Процедура SetFillPattern устанавливает нестандартный002
    стиль закраски.
   *
   4Ответ неверный. Параметры процедуры SetFillStyle следует употреблять003
    в обратном порядке.
   *
*
 101Ответ неверный.Фон прямоугольлника (X1,Y1,X2,Y2) будет красным.     002
   *
   2Ответ неверный. Прямоугольник (X1,Y1,X2,Y2) будет по умолчанию      002
    закрашен белым цветом, а не голубым.
   *
   3Ответ правильный.                                                   005
   *
   4Ответ неверный. Процедура SetBKColor закрасит экран красным цветом, 002
    закрасив прямоугольник.
   *
*
0



ПРОГРАММИРОВАНИЕ ЦВЕТНЫХ КРИВОЛИНЕЙНЫХ ИЗОБРАЖЕНИЙ

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

*     procedure Arc(X,Y:integer;StAngle,EndAngle,Radius:word);
1
      Рисует против часовой стрелки текущим
 стилем и цветом дугу окружности с центром (X,Y),
 радиусом Radius от начального угла StAngle до
 конечного угла AndAngle. Угловые параметры
 задаются в градусах.

*      procedure CetArcCords(var ArcCoords:ArcCoordsType);

       Возвращает в переменной ArcCoords координаты концов дуги,
 проведенной последней командой Arc.Тип ArcCoordsType  описан в
 модуле Graph как запись, значения полей которой аналогичны значению
 параметров процедуры Arc.

*      procedure Circle(X,Y:integer;Radius:word);
2
       Строит контуры окружности радиуса Radius с
 центром (X,Y), заданным ранее цветом и стилем
 рисования.

         ПРОГРАММИРОВАНИЕ ЦВЕТНЫХ КРИВОЛИНЕЙНЫХ ИЗОБРАЖЕНИЙ

*       procedure Ellipse (X,Y:integer;
*                          StAngle,EndAngle,XRadius,YRadius:word);
3
        Строит текущим стилем и цветом дугу
 эллписа с центром (X,Y), начальным StAngle
 и конечным EndAngle углами, двумя полуосями
 XRadius и YRadius.

*        procedure FloodFill(X,Y,Border:word);

         Обеспечивает закраску ограниченной
 области, в которую входит точка (X,Y) , по
 образцу,  установленному предварительно
 процедурой SetFillStyle либо SetFillPattern.
 Параметр  Border определяет код цвета,
 ограничивающего закрашиваемую область.

*        procedure FillEllipse(X,Y:integer;XRadius, YRadius:word);

         Закрашивает область эллипса,используя
 предварительно установленные стиль и цвет закраски.
 Значения параметров аналогичны значениям параметров
 процедуры Ellipse.


4
5
       ПРОГРАММИРОВАНИЕ ЦВЕТНЫХ КРИВОЛИНЕЙНЫХ ИЗОБРАЖЕНИЙ

*        prosedure PieSlice(X,Y:integer;
*                           StAngle,EndAngle,Radius:word);
6
         Строит и закрашивает круговой сектор
 установленным стилем и цветом. Параметры имеют
 тот же смысл и тип, что и одноименные параметры
 процедуры Arc.

*     procedure Sector(X,Y:integer;
*                      StAngle,EndAngle,XRadius,YRadius:word);
7
      Рисует и закрашивает эллиптический сектор,
 используя текущие стиль и цвет рисования и зак-
 раски. Параметры имеют тот же смысл и тип что
 и одноименные параметры процедуры Ellipse.

*     procedure Randomize;

      Инициализирует встроенный генератор случайных чисел сллучайным
 значением, получаемым от системного таймера компьютера. Описана в
 модуле System . Число, получаемое в результате работы генератора,
 хранится в предописанной переменной RandSeed. Присваивая ей конкрет-
 ные значения можно получать каждый раз заданную последовательность
 случайных чисел.

        ПРОГРАММИРОВАНИЕ ЦВЕТНЫХ КРИВОЛИНЕЙНЫХ ИЗОБРАЖЕНИЙ

*      function Random(Rande:word):word;

       Возвращает случайное число. Переменная Rande должна быть выра-
 жением целого типа, а результатом будет случайное число X длиной в
 слово в диапазоне  0= # then FuncKey:=False
     else
       begin
         FuncKey:=true;
         Ch:=ReadKey
       end;
 ......
              ПРОГРАММИРОВАНИЕ ОЗВУЧЕННЫХ ДИНАМИЧЕСКИХ СЦЕН


*     procedure SetWriteMode(WriteMode:integer);

      Устанавливает режим записи при вычерчивании линий с помощью
 процедур формирования прямолинейных изображений (кроме процедуры
 Bar3D). Процедура описана в модуле Craph. Параметр может принимать
 следующие значения:
 CopyPut = 0 - простое замещение - вычерчиваемая линия 'затирает' то,
                                   что было на экране.
 XORPut  = 1 - сложение по mod 2 - обеспечивается комбинирование вы-
                                   водимой линии с экранным изображе-
                                   нием на основе выполнения поточеч-
                                   ной поразрядной операции суммиро-
                                   вания по модулю2.

       Важно, что два одинаковых вывода на экран в режиме XORPut при-
 ведут сначала к стиранию линии на экране, а затем в восстановлению
 исходного экранного изображения.
0



01КАКОВЫ ФУНКЦИИ ПРОЦЕДУРЫ ImageSize?

      1 Создание новой динамической переменной.

      2  Сохранение в динамической памяти растрового образа заданной
прямоугольной области экрана.

      3 Возвращение числа байт, необходимых для сохранения прямоугольной
области экранного изображения.

      4 Вывод в заданное место экрана хранимого в динамической памяти
растрового изображения.
*
02КАКОЕ СУЩЕСТВУЕТ ОГРАНИЧЕНИЕ ПО ПЛОЩАДИ СОХРАНЯЕМЫХ В ДИНАМИЧЕСКОЙ ПАМЯТИ
ОБЛАСТЕЙ ЭКРАНА?

      1 Ограничений нет.

      2 Не более одного экрана.

      3 Не более 1/2 экрана.

      4 Не более 1/4 экрана.
*
ОЗТРЕБУЕТСЯ ЛИ КОНТРОЛИРОВАТЬ РАЗМЕР СВОБОДНОЙ ДИНАМИЧЕСКОЙ ПАМЯТИ?

      1 Да. С помощью функции MaxAvail.

      2 Да. С помощью процедуры GetMem.

      3 Нет, не требуется. Размер динамической памяти не ограничен.

      4 Да, требуется. Контроль осуществляется с помощью процедуры Dispose.
*
04КАКОГО ЦВЕТА БУДЕТ ВЫВЕДЕНО ИЗОБРАЖЕНИЕ ТОЧКИ НА ЭКРАНЕ, ЕСЛИ ТОЧКУ
КРАСНОГО  (4)  ЦВЕТА  ЗАМЕСТИТЬ  С  ПОМОЩЬЮ  ПРОЦЕДУРЫ Putlmage
(X,Y,p~,XORPut) точкой синего (1) цвета?

      1 Черного (0).

      2 Светло-бирюзового(11).

      3 Красного (4).



4 Малиновый(5).
*
05КАКУЮ ОРГАНИЗАЦИЮ ВИДЕОБУФЕРА ПОДДЕРЖИВАЮТ ЛАБОРАТОРНЫЕ КОМПЬЮТЕРЫ IBM PC
С АДАПТЕРОМ EGA ПРИ ИСПОЛЬЗОВАНИИ ЯЗЫКА TURBO-PASCAL?

      1 Одностраничную.

      2 Двухстраничную.

      3 Трехстраничную.

      4 Четырехстраничную.
*
06С ПОМОЩЬЮ КАКОЙ ПРОЦЕДУРЫ УСТАНАВЛИВАЕТСЯ СТРАНИЦА ВИДЕОБУФЕРА, НА
КОТОРУЮ НАПРАВЛЯЕТСЯ ПОСЛЕДУЮЩИЙ ГРАФИЧЕСКИЙ ВЫВОД?

      1 SetVisualActivePage

      2 SetWriteMode

      3 Dispose

      4  SetActivePage
*
07КАКОВЫ ФУНКЦИИ ПРОЦЕДУРЫ SetWriteMode?

      1  Считывание символа с клавиатуры не отображая его на экран.

      2 Установка режима записи при вычерчивании линий с помощью процедур
формирования прямолинейных изображений.

      3 Устанавливает номер страницы видеобуфера, на которую осуществляется
последующий графический вывод.
4 устанавливает номер визуализируемой страницы видеобуфера.
*
О



011Ответ неверный. Эту функцию осуществляет процедура GetMem.          002
   *
   2Ответ неверный. Эту функцию осуществляет процедура GetImage.        002
   *
   3Ответ правильный.                                                   005
   *
   4Ответ неверный. Эту функцию осуществляет процедура PutImage.        002
   *
*
 021Ответ неверный. Объем памяти, необходимый для сохраненеия области 002
экрана, не должен быть равен или превышать 64К, что соответствует 1/2
площади экрана.
   *
   2Ответ неверный. Объем памяти, необходимый для сохраненеия области 002
экрана, не должен быть равен или превышать 64К, что соответствует 1/2
площади экрана.
   *
   3Ответ правильный.                                            005
   *
   4Ответ неверный. Объем памяти, необходимый для сохраненеия области 002
экрана, не должен быть равен или превышать 64К, что соответствует 1/2
площади экрана.
   *
*
 031Ответ првильный. Функция MaxAvail возвращает наибольший непрерывный 005
свободный блок, имеющийся в динамической области памяти в текущий момент.
   *
   2Ответ неверный. Контроль требуется, однако, процедура GetMem        003
выполняет другие функции.
   *
   3Ответ неверный. Если в динамической области недостаточно места для  002
размещения новой переменной, возникает ошибка времени выполнения программы.
Чтобы этого избежать следует пользоваться функцией MaxAvail, которая
возвращает размер наибольшего непрерывного свободного блока динамической
области памяти.
   *
   4Ответ неверный. контроль требуется, но с помощью функции MaxAvail.  003
   *
*
 041Ответ неверный. При использовании в качестве значения параметра     002
BitBlt константы XORPut коды цветов точек складываются по модулю 2:
4(10) + 1(10) = 0100(2) + 0001(2) = 0101(2) = 5(10)
   *
   2Ответ неверный. При использовании в качестве значения параметра     002
    BitBlt константы XORPut коды цветов точек складываются по модулю 2:
         4(10) + 1(10) = 0100(2) + 0001(2) = 0101(2) = 5(10)
   *
   3Ответ неверный. При использовании в качестве значения параметра     002
BitBlt константы XORPut коды цветов точек складываются по модулю 2:
         4(10) + 1(10) = 0100(2) + 0001(2) = 0101(2) = 5(10)
   *
   4Ответ правильный.                                            005
   *
*
 051Ответ неверный. Эти компьютеры имеют двухстраничную организацию     002
видеобуфера.
   *
   2Ответ правильный.                                                   005
   *
   3Ответ неверный. Эти компьютеры имеют двухстраничную организацию     002
видеобуфера.
   *
   4Ответ неверный. Эти компьютеры имеют двухстраничную организацию     002
видеобуфера.
   *
*
 061Ответ неверный. процедура SetVisualPage задает номер отображаемой на
002 экран дисплейной страницы видеобуфера.
   *
   2Ответ неверный. Процедура SetWriteMode выполняет другие функции.    002
   *
   3Ответ неверный. Процедура Dispose выполняет другие функции.         002
   *
   4Ответ правильный.                                            005
   *
*
 071Ответ неверный. Процедура SetWriteMode устанавливает режим записи   002
при вычерчивании линий с помощью процедур формирования прямоугольных
изображений.
   *
   2Ответ правильный.                                            005
   *
   3Ответ неверный. Процедура SetWriteMode устанавливает режим записи   002
при вычерчивании линий с помощью процедур формирования прямоугольных
изображений.
   *
   4Ответ неверный. Процедура SetWriteMode устанавливает режим записи   002
при вычерчивании линий с помощью процедур формирования прямоугольных
изображений.
   *
*
0



                                                                Приложение 3



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



                           -----------------------
                        Основная программа “GRAPHIC”

 Модуль RAZDEL1

 Модуль RAZDEL3

 Модуль RAZDEL2

 Модуль RAZDEL5

 Модуль RAZDEL7

 Модуль RAZDEL4

 Модуль RAZDEL6

Процедура RAZDEL10

Процедура RAZDEL20

Процедура RAZDEL30

Процедура RAZDEL40

Процедура RAZDEL50

Процедура RAZDEL60

Процедура RAZDEL70



                                   Начало



                                  Заставка



                                   Windo1


                                    Выбор
                                   режима



                          Вызов результатов работы



                              Обработка модулей



                                    Конец


1..7

9

3

5

4

8

                                   начало


                            Связь с файлом теории


GraphRegim


                                    OKNO



                             Вывод текста теории


                             Имеется иллюстрация


                              Вывод иллюстрации



                               Очистка экрана


                                    Конец

                       Раздел с контрольными вопросами


                                 Конец файла


                            Вывод текста справки



                           Связь с файлом справок


                             Имеется иллюстрация


                      Случайный выбор номеров вопросов



                                    OKNO1



                                    OKNO



                       Связь с файлом текста вопросов



                       Вывод текста очередного вопроса


                             Имеется иллюстрация


                              Вывод иллюстрации


                          Введено допустимое число


                              Вывод иллюстрации



                            Фиксация результатов



                               Очистка экрана


                              Вопрос последний




ref.by 2006—2022
contextus@mail.ru