Реферат: Обучающая программа Графика программированию в графическом режиме на языке 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\7.О…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.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-PASCAL6.0\7.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». ДиалогЭВМ-пользователь (в данном случае обучаемый) ведется в удобном для последнеготемпе, что обеспечивает лучшее усваивание материала. Каждый студент имеетвозможность изучать разделы темы в удобном для него порядке. Это экономит времястудента для изучения более важных для него разделов и игнорирование разделов,которые ему уже знакомы. В то же время преподаватель имеет возможность уделятьвнимание студентам в индивидуальном порядке. Программа предусматривает элементыпроверки знаний в виде контрольных вопросов в конце разделов. Такая системаобучения дает возможность студенту самостоятельно оценить свои знания. Послеответа на вопрос обучаемый получает справку о его правильности и пояснения вслучае неверного ответа. После ответов на все вопросы раздела он может изучитьтему вновь и вновь ответить на контрольные вопросы. Принцип «обучение +контроль» повышает уровень получаемых знаний.
Впредыдущих разделах были описаны многочисленные средства и методы обучения спомощью компьютера. Однако, разработка настоящей программы для обученияявляется необходимой и целесообразной в условиях данного учебного заведения.Целью создания данной программы является удовлетворение нужд учебного процессас учетом технических возможностей академии, а именно разработка методическихматериалов по программированию с использованием ЭВМ типа IBMPC и языка 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\7.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. ... ...Поле Р1 — флаги: *- признак выделения строки цветом
7,8 — признак наличия иллюстрации к тексту и ее номер
О — признак конца файла
Поле Р2 — текст.
Таблица 3Структура базы данных.
ВопросыПоле Р1 Поле Р2 Поле Р3 ... ... ... * 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);
* ... ... Таблица 4Поле Р1 Поле Р2 Поле РЗ Поле Р4 Поле Р5SetViewPort. Координаты окна002 отсчитываются
от левого верхнего угла экрана в то время как
для процедуры Bar3D от левого верхнего угла
окна.
*•
1 3 Ответ правильный. 005 * 4 Ответ не точный. На экране появятся затененные контуры нижнего параллелепипеда. 003 * ... ... ... ... /> /> /> /> /> /> />Поле Р1 — флаги: *- признак конца вопроса
1 — признак наличия иллюстрации и ее номер
О — признак конца файла
Поле Р2 — номеравопросов.
Поле РЗ — флаги:1,2,3,4 — номера ответов.
* — признак конца справки
Поле Р4 — текстсправок.
Поле Р5 — оценка.
2.3. Возможности изменения или обновления
2.3.1. Теория
Данная структура базы данных является удобной дляиспользования. Она легко может быть дополнена в случае необходимости, частичноили полностью заменена. Файлы теоретической части являются файлами типа записьи содержат по два поля.
Первое поле — Р1. Так оно названо в программе и поднего отведен один символ. Это поле используется как поле флага и анализируетсяпрограммой с помощью условного оператора CASE. Значения флагов поля Р1 приведено в табл.5
Таблица 5Символ поля Р1 Значение Действия программы Конец файла При считывании записи с этим символом в поле Р1 программа возвращает Вас в меню, если Вы изучали разделы 1 Или 2, или переходит в [режим контрольных вопросов, если изучался раздел 3-7.*
1 вывод строки другим
цветом
Строка выводится на экран другим (красным) цветом. Этим символом отмечены строки, содержащие названия изучаемых процедур и функций. Это сделано для наглядности изучения. В случае необходимости эти значки возможно убрать и Текст будет выводится одним (синим) цветом. Возможно выделить и другие строки цветом, внеся в поле Р1 соответствующих записей значок '*'. Возможно изменить цвет выделенных строк путем замены параметра процедуры SetColor в операторах CASE константы '*' процедур RAZDELXO .# признак конца страницы Используется только в разделах процедурах RAZDEL6, RAZDEL7, в операторе CASE при проверке наличия иллюстрации. При обнаружении этого символа заканчивается цикл вывода текста из файла теории.
любой другой ASCII-символ
признак наличия иллюст-
рации
Оператор CASE сравнивает этот символ с имеющимися у него константами и выводит соответствующую иллюстрацию на экран. Если символ среди констант не обнаружен, это не мешает дальнейшему считыванию текста. Поэтому целесообразно иллюстрации обозначать сразу при написании базы данных, а затем вносить соответствующие изменения в программу./> /> /> /> />
Второе поле — Р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 Значение Действия программы Конец файла При считывании записи с этим символом программа прекращает поиск нужного номера вопроса. * Конец вопроса Прекращается вывод содержимого поля РЗ (текста вопроса) на экран. Любой другой ASCII-символ Признак наличия иллюстрации CASE сравнивает этот символ с имеющимися у него константами и выводит соотв. иллюстрацию на экран. Если символ среди констант не обнаружен, это не мешает дальнейшему считыванию текста. Поэтому целесообразно иллюстрации обозначать сразу при написании БД, а затем вносить соотв. изменения в ПО.Второе поле — Р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 Значение Действия программы Конец файла При считывании записи с этим символом программа прекращает поиск нужного номера вопроса. * Конец вопроса Прекращается вывод содержимого поля РЗ (текста вопроса) на экран. Любой другой ASCII-символ Признак наличия иллюстрации Оператор CASE сравнивает этот символ с имеющимися у него константами и выводит соответствующую иллюстрацию на экран. Если символ среди констант не обнаружен, это не мешает дальнейшему считыванию текста. Поэтому целесообразно иллюстрации обозначать сразу при написании базы данных, а затем вносить соответствующие изменения в программу.Поле Р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, модуль из библиотеки языка Pascalgraph.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 ENTERto return to the Norton Commander». По этомусообщению следует нажать клавишу ENTER и выйти в Norton Commander. Работа с программой завершена.
Если в процессе выполнения программы не найден файл базыданных, к которому в данный момент обращается программа, то на экран выводитсясообщение «Runtime error 002 at 0125:04E5. Press ENTER to return to theNorton 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\7.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\7.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 Инженер-программист 1 категории 3 Разработка требований Разработка методических материалов 2 Инженер-программист 3 категории 14 Продолжение табл. 10Компоненты Наименование работы Код работы Исполнитель Длительность работ, дн. Составление алгоритма Составление алгоритма 3 Инженер-программист 1 категории 15 Инженер-программист 3 категории 10,3 Написание программыНаписание
основной программы
4 Инженер-программист 1 категории 5 Написание подпрограмм 5 Инженер-программист 3 категории 5 Создание базы данных 6 Инженер-программист 3 категории 18,8 Отладка Отладка основной программы 7 Инженер-программист 1 категории 12,8 Отладка модулей 8 Инженер-программист 3 категории 13 Общая отладка 9 Инженер-программист 3 категории 2Как видно из приведенной выше таблицы для работынад программой привлекаются инженеры-программисты 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ДолжностьОклад
Руб./мес.
Дополнитель-ная заработ-ная плата, % Дополнитель-ная заработ-ная плата, % Количество рабочих дней Общий фонд заработной платы, руб. Инженер програм-мист 1 категории 800 15 120 35 3 783 500 Инженер програм-мист 3 категории 600 15 90 35 Инженер програм-мист 3 категории 600 15 90 28Предполагается работа на арендуемой технике.Стоимость одного часа машинного времени 1000 руб… Время работы над программойсоставляет 98 дней, что соответствует 764 часам из расчета 8-часовогорабочего дня. Арендная плата за это время составит 764 000 руб… Отчисления насоциальное страхование, расходы на научные и производственные командировки инакладные расходы составляют соответственно 14%, 5%, 60% общего фондазаработной платы. После изготовления программа должна пройти недельноеиспытание. Для этого необхоимо использовать ЭВМ. Таким образом необходимодополнительное машинное время в обьеме 40 часов. В смете затрат расходы наарендную плату за 40 часов машинного времени внесем в статью «Работы иуслуги сторонних организаций».
Расчет сметызатрат приведен в табл. 13
Таблица 13
Смета затратСтатья расхода Сумма, руб. Итоговая сумма Сумма, % к итогу Специальное оборудование для 764 000 научных работ 764 000 7 476 465 10,0 Общий фонд заработной платы 3 787 500 50,2 Отчисление на социальное страхование 529 690 7.0 Расходы на научные производственные командировки 189 175 2,5 Работы и услунни сторонних организаций 40 000 0,3 Накладные расходы 2 270 100 30,09. ВОПРОСЫ ОХРАНЫ ТРУДА ИОКРУЖАЮЩЕЙ СРЕДЫ.
БЕЗОПАСНОСТЬ И САНИТАРНО-ГИГИЕНИЧЕСКЙЕ УСЛОВИЯ ТРУДА НАРАБОЧЕМ МЕСТЕ ПОЛЬЗОВАТЕЛЯ
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Оптимальные параметры микроклиматаПериод года Температура, С Относительная влажность, % Скорость движения воздуха, м/сХолодный и переходный (температура наружного
воздуха ниже +10 град. С)
20 — 23 60 — 40 не более 0,2 Теплый (температура наружного воздуха +10 С и выше) 22 — 25 60 — 40 не более 0,2Таблица 16
Допустимые параметры для холодного и переходного
периода года
Температура возуха, С Относительная влажность, % не более Скорость движения воздуха, м/с, не более Температура воздуха вне постоян ных рабочих мест С 19 — 25 75 0,2 15 — 26
Таблица 17
Допустимые параметры для теплого периода года
Температура возуха, С Относительная влажность, % не более Скорость движения воздуха, м/с, не более Температура воздуха вне постоянных рабочих мест С Не более чем на 3 выше средней температуры наружного воздуха в 13 ч При 28 С не более 55, при 27 С не более 60, при 26 С |не более 65, при 25 С не более 70, при 24 С и ниже не более 75 0,2 — 0,5 Не более чем на 3 выше средней температуры наружного воздуха в 13 ч самого жаркого месяца
9.2.2. Вредные вещества и пыль
При работе пользователей в вычислительном центрепрофилактика вычислительной техники не проводится, вредные вещества неиспользуются. Однако, в помещении присутствует нетоксичная пыль.Максимально-разовая предельно-допустимая концентрация нетоксичной пыли,скапливающейся на оборудовании составляет 0,5 мг/куб. м., а среднесуточная — 0,15 мг/куб. м.
9.2.3. Излучение
В табл. 18 приведены нормированные значения излучения.
Таблица 18Нормированные значения излучения на рабочем местеНаименования показателей Нормированные значения, не более Уровень неиспользованного рентгеновского излучения на расстоянии 0,05 м 100 мкР/ч Плотность потока ультрафиолетового излучения 10 Вт/кв. м.Напряженность электрического поля на рабочем месте
15кВ/м
15 кВ/м.9.2.4. Освещенность
Нормированное значение освещенности на рабочем месте по СНиП П-4-79 приведено в таблице 19.
Таблица 19Наименьшая освещенность рабочих поверхностей в производственныхпомещениях /по СНиП П-4-79/
Характеристика зрительной работы Наименьший размер объекта различения, мм Освещенность Ен, лк газорязрядные Лампы накаливания Система освещения Комбинир. общая Комбинир. общая Высокой точности От 0,3 до 0,5 750 300 600 2009.2.5. Шум
Согласно ГОСТ 12.1.003-83устанавливаются допустимые уровни звукового давления. Они приведены в
Таблица 20
Допустимые уровни звукового давленияРабочие
Места
Уровни звукового давления, дБ, в октавных полосах со среднегеометрическими частотами, ГЦ Уровень звука, ДБА 63 125 250 500 1000 2000 4000 8000Помещения вычис-
Лительных центров
71 61 54 49 45 42 40 38 509.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 В
Выше 1000 В
Изолированная Изолированная Защитное ЗащитноеRз =< 10
Rз =< 0,5
Сопротивление изоляцииэлектрических цепей ЭВМ общего назначения в нормальных климатических условияхдолжно быть не менее значений указанных в табл. 23
Таблица 23Напряжение цепи, кВ Сопротивление изоляции, МОмдо од 0,1
0,1 — 0,5
0,5 — 1,0
5,0
20,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. Температура, С и относительная влажность воздуха, % Аспирационный психометр MB-4M-
-
-31…
51 С
10… .
100 %
+0,1 С
+5%
2. Скорость движения воздуха, м/с Термометр, электроанемометр TAM-1 -0,1… .
5 м/с
+2,1
м/с
3. Уровень звукового давления в октавных полосах частот, дБ вшв-ооз10… .
20000 Гц
25… .
140 дБ
+1 дБ 4. Освещенность, лк. Люксметр Ю-116 мкм0,38… .
0,72 мкм
5…
100000 лк
+10 % 5. Массовая концентрация пыли, мг/куб.м Радиоизотопный пылемер ПРИЗ-2 -0,1… .
100 иг/м
+20 % ЗАКЛЮЧЕНИЕВ результате разработки данной дипломной работы написанапрограмма для обучения работе в графическом режиме. Программа предназначена длястудентов младших курсов Санкт-Петербургской государственной академииаэрокосмического приборостроения и знакомит их с графическими средствамиязыка 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
Текст программы
programGRAPHIC; {главная программа «Графика»}
uses Crt,Graph, Dos, Strings, MYBOOK, RAZDEL1, RAZDEL2, RAZDEL3,
RAZDEL4, RAZDEL5, RAZDEL6, RAZDEL7 ;
TypeDlina=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; {переменная дляпринятия символа с клавиатуры}
procedureWindol; {введение }
TypeAnn=record
PPl:char;
РР2:array [0. .69] of char;
end;
var FF:fileof Ann;
A: Ann;
St:string[68];
label 1;
begin
Assign (FF, 'VEDEN. pas' ); {связь сфайлом текста введения}
{SI-}
Reset(FF);
{SI + }
IFlOResulto 0 thenWriteln ('Heт файла VEDEN1);
ClearDevice;
OKNO; {процедура оформления экрана}
For N:=0 to31 do {цикл вывода текста введения }
begin
Read(FF,A);
St:=StrPas(A.PP2);
caseA.PP1 of {проверка наличия иллюстрации и их вывод}
‘ ‘: OutTextXY( 20, 10*N+10, St ) ;
‘0‘: GoTo 1 ;
end;
end;
1:readkey;
Close(FF);
end;
procedureCursor(Flag:boolean); {Если Flag=True, то курсор видим;}
{ если Flag=False,TO невидим}
constsizeCursor:word=0;
var Red:registers;
begin
with Reddo
begin
if Flagthen
begin
CX:=SizeCursor; {Восстановим старый размер курсора}
end
else
begin
BH:=0; {0-я страница дисплея}
АН:=03; {функция чтения размера и позиции курсора}
Intr($10,Red);
SizeCursor:=CX;{сохраняем размер курсора}
СН:=$20; {делаем курсор невидимым}
end;
АН:=01; {функция установки размера курсора}
Intr($10,Red);
end;
end;
procedureSVETFON(C,F:byte); {установка цвета и фона}
begin
TextColor(C);
TextBackground(F)
end;
procedureVERTIKALNOE_MENU(Kl,K2,Kp:byte;SS1,SS2,SS3,SS4,SS5,SS6,
SS7,SS8,SS9:dlina;Var Result:byte);
{процедурасоздания окна меню}
Label Met;
Const Kr=9;
VarM: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
ifLength(M{I])>T then T:=Length(M[I]);
for l:=lto 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;
whileFl=True do begin
Ch:=ReadKey;
ifCh=#13 then Fl:=False;
if(Ch=#0) and KeyPressed then
begin
Ch:=ReadKey;
case Chof
#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 Truedo 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}
UnitRAZDEL1;
interface
uses Crt,Graph, Dos, Strings, MYBOOK;
typeAn=record
P1:Char;
P2:array[0..69] of Char;
end;
var Fl:fileof An;
A: An;
Gd,Gm,Y,N:integer;
St:string[68];
procedureRAZDEL10; {Обеспечение работы с разделом«Программиро вание графических режимов»}
implementation
procedureRAZDEL10;
Label 1;
begin
GraphRegim;
Assign(Fl,'RAZTEX1.pas');
{SI-}
Reset(Fl);
{SI+}
IflOResult <>0 then Writeln ('Нет файла RAZTEX1.pas');
Repeat;
ClearDevice;
OKNO;
Y:=10;
For N:=0to 31 do
begin
Read(Fl,A); St:=StrPas(A.P2);
caseA.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;
untilA.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+}
{$M16384,0,655360}
Unit RAZDEL2;
interface
usesCrt,Graph,Dos,Strings,MYBOOK;
type An=record
P1:Char;
P2:array[0..69] ofChar;
end;
var F2:file of An;
A:An;
Gd,Gm,X,Y,N:integer;
St:string[68];
procedure RAZDEL20; {Обеспечение работы сразделом «Управление
курсором и полемрисования»}
implementation
procedureRAZDEL20;
Label1;
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 31do
begin
Read(F2,A);
St:=StrPas(A.P2);
case A.P1of
'':OutTextXY(20,Y*N+10,St);
'*':begin
SetColor(4);
OutTextXY(20,Y*N+10,St);
SetColor(1);
end;
'0':GoTo1;
end;
end;
1: readkey;
untilA.P1='0';
Close(F2);
CloseGraph;
end;
begin
end.
UnitRAZDEL3;
interface
usesCrt,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] ofPointType=((X:460;Y:30),(X:590;Y:90),
(X:590;Y:120),(X:430;Y:120),(X:460;Y:30));
Mno:array[1..5] ofPointType=((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] ofPointType=((X:390;Y:60),(X:510;Y:60),
(X:510;Y:260),(X:390;Y:260),(X:390;Y:60));
WWW:array[1..5] ofPointType=((X:380;Y:50),(X:520;Y:50),
(X:520;Y:270),(X:380;Y:270),(X:380;Y:50));
{Константы для формированияиллюстраций к тексту вопросов}
procedureRAZDEL30;
Label0,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':GoTo0;
end;
end;
0:readkey;
ClearDevice;
OKNO;
untilA.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 GOTO1;
For K:=0 to J-1do
begin
If M[k]=I then GOTO1;
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);
untilAt.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);
GoTo2;
end
else
repeat
Read(F33,Atr);
R2:=StrPas(Atr.P2); {ПреобразованиеASCIIZ-строки Atr.P2 в
строку типаstring }
Val(R2,Z2,Code); {Преобразованиесимвольного представления
номера вопроса в двоичнуюформу}
If Z2=Z1then
begin
repeat
If Atr.P3=CHthen
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);
untilAtr.P3='*';
readkey;
GOTO3;
end
else Read(F33,Atr);
untilAtr.P1='*';
end
untilAtr.P1='0';
end
else
3:end;
until At.P1='0';
Close(F32);
Close(F33);
CloseGraph;
end;
begin
end.
UnitRAZDEL4;
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 ofAn ; {Переменные теории}
A:An;
N,Y:integer;
St:string[68];
var F32:file ofAnt; { Переменные вопросов}
At:Ant;
R1:string[2];
Z1:integer;
S:string[68];
var F33:file ofAntr; {Переменные справок}
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;
varR5:string[1]; {переменные вывода результатов}
Z5:integer;
REZ4:Longint; {переменная оценки}
procedureRAZDEL40;
implementation
procedureRAZDEL40;
Label0,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 31do {Вывод текста теории}
begin
Read(F4,A);
St:=StrPas(A.P2); {Преобразование ASCIIZ-строки A.P2 в строку
типа string}
OutTextXY(20,Y*N+10,St);
case A.P1of
'*':begin
SetColor(4);
OutTextXY(20,Y*N+10,St);
SetColor(1);
end;
'1':beginSetFillStyle(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':GoTo0
end;
end;
readkey;
0:until A.P1='0' ;
readkey;
Close(F4);
Assign(F32,'Joi.pas'); {связь с файлом вопросов}
{SI-}
Reset(F32);
{SI+}
IfIOResult<>0 then Writeln('Нет файла Joi.pas');
Assign(F33,'Iodi.pas');
{SI-}
Reset(F33); {связь с файлом справок}
{SI+}
IfIOResult<>0 then Writeln('Нет файла Iodi.pas');
OKNO1; {«Контрольные вопросы»}
readkey;
ClearDevice;
Randomize; {Выбор четырех номеров вопросов}
For J:=0 to 3do
begin
1:I:=Random(10);
If I=0 thenGOTO 1;
For K:=0 toJ-1 do
begin
If M[k]=Ithen 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.P1of
'':begin
end;
end;
Y:=Y+10;
Read(F32,At);
untilAt.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);
GoTo2;
end
else
repeat
Read(F33,Atr);
R2:=StrPas(Atr.P2); {Преобразование ASCIIZ-строки Atr.P2 в
строку типа string}
Val(R2,Z2,Code); {Преобразование символьного представления
номера вопроса в двоичную форму}
If Z2=Z1then
begin
repeat
If Atr.P3=CHthen
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;
caseAtr.P1 of
'':begin
end;
end;
Read(F33,Atr);
untilAtr.P3='*';
readkey;
GOTO3;
end
else Read(F33,Atr);
untilAtr.P1='*';
end
untilAtr.P1='0';
end
else
3:end;
untilAt.P1='0';
Close(F32);
Close(F33);
CloseGraph;
end;
begin
end.
UnitRAZDEL5;
interface
usesCrt,Graph,Dos,Strings,MYBOOK;
type An =record
P1:Char;
P2:array[0..69] of char;
end;
typeAnt=record {Текст вопросов}
P1:Char;
P2:array[0..1] of Char;
P3:array[0..69] of Char;
end;
typeAntr=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: fileof An ;
A:An;
N,Y:integer;
St:string[68];
var F52:fileof Ant; { переменные вопросов}
At:Ant;
R1:string[2];
Z1:integer;
S:string[68];
V:char;
var F53:fileof 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;
varR5:string[1]; {переменные вывода результатов}
Z5:integer;
REZ5:Longint;
procedureRAZDEL50;
implementation
procedureRAZDEL50;
Label0,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 31do
begin
Read(F5,A);
St:=StrPas(A.P2);
case A.P1of
'':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);
untilKeyPressed;
SetFillStyle(1,15);
SetViewPort(5,5,635,345,true);
end;
'9':begin
Diogramma;
end;
'0':GoTo0
end;
end;
0:readkey;
until A.P1='0';
Close(F5);
Assign(F52,'Join.pas'); {связь с файлом вопросов}
{SI-}
Reset(F52);
{SI+}
IfIOResult<>0 then Writeln('Нет файла Join.pas');
Assign(F53,'Iodin.pas');
{SI-}
Reset(F53); {связь с файлом справок}
{SI+}
IfIOResult<>0 then Writeln('Нет файла Iodin.pas');
OKNO1; {«Контрольные вопросы»}
readkey;
ClearDevice;
Randomize; {Выбор четырех номеров вопросов}
For J:=0 to 3do
begin
1:I:=Random(6);
If I=0 then GOTO1;
For K:=0 toJ-1 do
begin
If M[k]=Ithen 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.P1of
'2':begin
end
end;
Y:=Y+10;
Read(F52,At);
untilAt.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);
GoTo2;
end
else
repeat
Read(F53,Atr);
R2:=StrPas(Atr.P2);
Val(R2,Z2,Code);
If Z2=Z1then
begin
repeat
If Atr.P3=CHthen
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.P1of
'1':begin
end;
'0':GoTo3;
end;
Read(F53,Atr);
untilAtr.P3='*';
readkey;
GOTO3;
end
else Read(F53,Atr);
untilAtr.P1='*';
end
untilAtr.P1='0';
end
else
3:end;
untilAt.P1='0';
Close(F52);
Close(F53);
CloseGraph;
end;
begin
end.
UnitRAZDEL6;
interface
usesCrt,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;
typeAntr=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 ofAn ; {Переменные теории}
A:An;
Y,N,T1,T2,T3,T4:integer;
St:string[68];
var F62:fileof Ant; { переменные вопросов}
At:Ant;
R1:string[2];
Z1:integer;
S:string[68];
var F63:file ofAntr; {Переменные справок}
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;
varR5:string[1]; {переменные вывода результатов}
Z5:integer;
REZ6:Longint; {переменная оценки}
procedureRAZDEL60; {Обеспечение работы раздела «Формирование
графическихтекстов}
implementation
procedureRAZDEL60;
Label0,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 31do
begin
Read(F6,A);
St:=StrPas(A.P2); {Преобразование ASCIIZ-строки A.P2 в строку
типа string}
case A.P1of
'':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');
IfGraphResult<grOK then
begin
OutTextXY(40,180,'Ошибка инсталляции');
readkey;
end;
SetFillStyle(1,1);
Bar(10,30,630,335);
SetTextStyle(T1,0,4);
SetColor(13);
OutTextXY(100,60,'Goth.chr,HorizDir') ;
SetTextStyle(T2,0,4);
SetColor(10);
OuttextXY(100,110,'Sanse, HorizDir');
SetTextStyle(T3,0,4);
SetColor(4);
OutTextXY(100,170, 'Trip, HorizDir');
SetTextStyle(T4,0,4);
SetColor(14);
OutTextXY(100,230,'Bold, HorizDir');
SetTextStyle(0,1,2);
SetColor(15);
OutTextXY(45,35,'Goth.chr, VertDir');
SetTextStyle(0,0,1);
SetColor(1);
end;
'#':GoTo0;
'0':GoTo0
end;
end;
0:readkey;
untilA.P1='0';
Close(F6);
Assign(F62,'Jois.pas'); {связь с файлом вопросов}
{SI-}
Reset(F62);
{SI+}
IfIOResult<>0 then OutTextXY(50,100,'Нет файла Jois.pas');
Assign(F63,'Iodis.pas');
{SI-}
Reset(F63); {связьс файлом справок}
{SI+}
IfIOResult<>0 then Writeln('Нет файла Iodis.pas');
OKNO1; {»Контрольные вопросы"}
readkey;
ClearDevice;
Randomize; {Выбор четырех номеров вопросов}
For J:=0 to 3do
begin
1:I:=Random(10);
If I=0 thenGOTO 1;
For K:=0 toJ-1 do
begin
If M[k]=Ithen 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.P1of
'':begin
end;
end;
Y:=Y+10;
Read(F62,At);
untilAt.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);
GoTo2;
end
else
repeat
Read(F63,Atr);
R2:=StrPas(Atr.P2); {Преобразование ASCIIZ-строки Atr.P2 в
строку типа string}
Val(R2,Z2,Code); {Преобразование символьного представления
номера вопроса в двоичную форму}
If Z2=Z1then
begin
repeat
If Atr.P3=CHthen
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;
caseAtr.P1 of
'':begin
end;
end;
Read(F63,Atr);
untilAtr.P3='*';
readkey;
GOTO3;
end
else Read(F63,Atr);
untilAtr.P1='*';
end
untilAtr.P1='0';
end
else
3:end;
until At.P1='0';
Close(F62);
Close(F63);
CloseGraph;
end;
begin
end.
UnitRAZDEL7;
interface
usesCrt,Graph,Dos,Strings,MYBOOK;
type An =record {Теория}
P1:Char; {Переменная поля флага: конец файла, номер
иллюстрации}
P2:array[0..69] of char; {Переменная поля текста}
end;
typeAnt=record {Текст вопросов}
P1:Char; {Переменная поля флага: конец файла, номер иллюст-
рации, конец вопроса}
P2:array[0..1] of Char; {Переменная поля номера вопроса}
P3:array[0..69] of Char; {Переменная поля текста вопроса}
end;
typeAntr=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];
varF72:file of Ant; { Переменные вопросов}
At:Ant;
R1:string[2];
Z1:integer;
S:string[68];
varF73: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;
varR5:string[1]; {переменные вывода результатов}
Z5:integer;
REZ7:Longint; {переменная оценки}
varSize:word;
pt:pointer;
u,Nn,xt,yt:integer;
procedureRAZDEL70;
implementation
procedureRAZDEL70;
Label0,1,2,3;
begin
REZ7:=6;
GraphRegim;
Assign(F7,'RAZTEX7.pas'); {связь с файлом теории}
{SI-}
Reset(F7);
{SI+}
IfIOResult <> 0 then Writeln ('Нет файла RAZTEX7.pas');
repeat
OKNO;
For N:=0to 32 do
begin
Read(F7,A);
St:=StrPas(A.P2); {Преобразование ASCIIZ-строки A.P2 в строку
типа string}
caseA.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+}
IfIOResult<>0 then Writeln('Нет файла Jos.pas');
Assign(F73,'Ios.pas');
{SI-}
Reset(F73); {связь с файлом справок}
{SI+}
IfIOResult<>0 then Writeln('Нет файла Ios.pas');
OKNO1; {«Контрольные вопросы»}
readkey;
ClearDevice;
Randomize; {Выбор четырех номеров вопросов}
For J:=0to 3 do
begin
1:I:=Random(7);
If I=0then GOTO 1;
ForK:=0 to J-1 do
begin
IfM[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); {Вывод текста вопроса}
caseAt.P1 of
'':begin
end;
end;
Y:=Y+10;
Read(F72,At);
untilAt.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);
GoTo2;
end
else
repeat
Read(F73,Atr);
R2:=StrPas(Atr.P2); {Преобразование ASCIIZ-строки Atr.P2 в
строку типа string}
Val(R2,Z2,Code); {Преобразование символьного представления
номера вопроса в двоичную форму}
IfZ2=Z1 then
begin
repeat
IfAtr.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);
untilAtr.P1='*';
end
untilAtr.P1='0';
end
else
3:end;
untilAt.P1='0';
Close(F72);
Close(F73);
CloseGraph;
end;
begin
end.
unitMYBOOK;
interface
usesGraph,Crt,Strings,Dos;
Type Dlina=string[10];
varCh:char;
Regime:byte;
c,Gd,Gm,i,x1,x2,y1,y2:integer;
ArcCoords:ArcCoordsType;
StAngle,dAngle,KRadius:word;
constOK: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));
procedureDiogramma;
procedureOKNO;
procedureOKNO1;
procedureGraphRegim;
implementation
procedureOKNO;
begin
SetColor(14);
DrawPoly(11,OK);
SetFillStyle(1,14);
FloodFill(635,2,14);
SetFillStyle(1,11);
Bar(6,6,634,344);
SetColor(1);
end;
procedureOKNO1;
constOK: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;
procedureDiogramma;
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 Div16;
while(StAngle+dAngle)<360 do
begin
c:=random(14);
SetColor(c);
Arc(535,210,StAngle,StAngle+dAngle,40);
GetArcCoords(ArcCoords);
withArcCoords 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;
procedureGraphRegim;
varGd,Gm:integer;
begin
Gd:=Detect;
InitGraph(Gd,Gm,'');
IfGraphResult<>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.Программирование озвученных динамических сцен.
Первые два разделаявляются справочными, а остальные разделы
содержат теоретическую часть и контрольные вопросы.
ПРОГРАММИРОВАНИЕ ГРАФИЧЕСКИХРЕЖИМОВ
Состав, назначение ивзаимное положение операторов управления
графическими режимами вязыке 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(varGraphDriver:integer;
* varGraphMode:integer;
* DriverPath:string);
Инициализируетграфическую систему, устанавливает графический
режим, устанавливаетисходные значения текущего указателя, палитры,
цвета и т.д..
ПРОГРАММИРОВАНИЕ ГРАФИЧЕСКИХ РЕЖИМОВ
GraphDriver — переменная, в которую необходимо записать код
требуемого графического драйвера или нуль, если
требуетсяавтоматическое определение драйвера.
GraphMode — переменная,в которую процедура помещает код
графического режима.
DriverPath — строка,содержащая путь к драйверу (если строка
пустая,считается, что драйвер находится в текущем
каталоге).
В случае аварийнойситуации процедура устанавливает код ошибки:
-2 - нетграфического адаптера;
-3 - нетдрайвера устройства;
-4 - ошибка вдрайвере;
-5 - нет памятидля загрузки драйвера;
-10 - недопустимый режим для выбранного драйвера.
* procedureCloseGraph(без параметров);
Восстанавливаеттекстовый режим работы дисплея, бывший до вызова
графической системы, иосвобождает динамическую память компьютера,
отведенную под графическийдрайвер.
* procedureSetGraphMode(Mode:integer);
Mode — графическийрежим.Изменяет ранее используемый графи-
ческий режим либо возвращаетсистему в прежний графический режим
после временного перехода ктекстовому режиму. Условием использо-
вания оператора являетсясохранение в динамической области ОЗУ ранее
загруженного графическогодрайвера.
ПРОГРАММИРОВАНИЕ ГРАФИЧЕСКИХ РЕЖИМОВ
* procedureRestoreCrtMode(без параметров);
Восстанавливаетисходный текстовый режим дисплея без потери в
динамической области ОЗУпрограмы графического драйвера.
Имеется ряд операторовдля получения справок о текущем
графическом режиме:
* functionGetDriverName:string; -
Возвращаетстроковое название
текущего графического адаптера.
* functionGetModeName(ModeNumber:integer):string -
Возвращает строковое название
требуемого графического режима.
* functionGetMaxMode:integer -
Возвращает максимальный номер
графического режима для текущего
адаптера.
* procedureGetModeRange(GraphDriver:integer;
* var LowMode,HighMode:integer); -
Выдает справку одиапазоне номеров графических режимов задан-
ного графического адаптера.Возвращаемые параметры LowMode и
HighMode означаютминимальный и максимальный номера графических
режимов, соответственно.
* functionGetGraphMode:integer; -
Возвращает номер текущего графического режима.
ПРОГРАММИРОВАНИЕ ГРАФИЧЕСКИХ РЕЖИМОВ
* procedureGetAspectRatio(var Xasp, Yasp:word); -
Возвращает в своих параметрах ввеличины
дискретовэкрана по осям X и Y, сооответственно.
УПРАВЛЕНИЕ КУРСОРОМ И ПОЛЕМРИСОВАНИЯ
В графическом режиме также как и в текстовом положение выво-
димых на экран данных вкаждый момент времени определяется курcо-
ром. Однако, в этом случае курсор невидим. При вхождении в гра-
фический режим с помощьюпроцедуры InitGraph курсор автоматически
помещается в левый верхнийугол экрана, фон экрана принимает первый
(черный) цвет палитры. Дляопределения и изменения положения курсора
без рисования в TURBO-PASCALпредусмотрены операторы MoveTo,MoveRel,
GetX,GetY.
* procedure MoveTo(x,y:integer);
где x,y — координаты погоризонтали и вертикали соответственно
в отсчете от левого верхнегоугла экрана.
* procedureMoveRel(Dx,Dy:integer);
Смещает курсор безрисования относительно его текущего поло-
жения. Dx, Dy — смещениякурсора по координатам x и y.
* function GetX: word;
Определяет для курсоразначение координаты X.
* function GetY: word;
Определяет для курсоразначение координаты Y.
УПРАВЛЕНИЕКУРСОРОМ И ПОЛЕМ РИСОВАНИЯ
При управлении положениемкурсора полезными оказываются также
справочные функции GetMaxX иGetMaxY, которые возвращают координаты
самой правой и самой нижнейвозможных графических позиций курсора,
соответственно, для текущегографического драйвера и режима.
* procedure ClearDevice;
Очищает экран от следовпредшествовавшего рисования и восста-
навливает исходные параметрыграфики.
* procedureSetViewPort(X1,Y1,X2,Y2:word;Clip:boolean);
Устанавливаетпрямоугольное окно рисования с перемещением
курсора в левый верхний уголокна. Параметры процедуры имеют следу-
ющий смысл:(X1,Y1) и (X2,Y2)определяют соответствввенно координаты
левого верхнего и правогонижнего углов окна, а Clip принимает
значение true принеобходимости отсечения изображения за границами
окна и false, когда этогоделать не надо .
* procedureClearViewPort;
Очищает текущее окно,заполняя его первым цветом текущей
цветовой палитры, ипереводит курсор в левый верхний угол окна.
* procedure GetViewSettings(varViewPortType);
Возвращает параметрыактивного окна просмотра в переменной
ViewPort. Тип ViewPortType описан в модуле Graph.
ФОРМИРОВАНИЕ ПРЯМОЛИНЕЙНЫХМОНОХРОМНЫХ ИЗОБРАЖЕНИЙ
В данном разделе нерассматривается управление
цветом и стилем рисования изакрепляется за
фоном светло-серый, а закурсором синий цвет.
* procedureLineTo(X,Y:integer);
щ
Проводит отрезок прямойот текущего положения
курсора к заданной точке(X,Y).
* procedureLineRel(Dx,Dy:integer);
2
Рисует отрезок прямой понаправлению к точке,
смещенной от текущегоположения курсора на рас-
стояние Dx и Dy по осям OX иOY .
* procedureLine(X1,Y1,X2,Y2:integer);
3
Проводит прямую междуточками (X1,Y1) и
(X2,Y2).
После выполнения этой ипоследующих процедур
курсор возвращается впредшествующее положение.
ФОРМИРОВАНИЕПРЯМОЛИНЕЙНЫХ МОНОХРОМНЫХ ИЗОБРАЖЕНИЙ
* procedureRectangle(X1,Y1,X2,Y2:integer);
4
Строит контуры прямоугольникас координатами
левого верхнего (X1,Y1) инижнего правого
(X2,Y2) углов.
* procedureBar(X1,Y1,X2,Y2:integer);
5
Строит прямоугольник,закрашенный текущим цветом
и орнаментом заполнения.(X1,Y1), (X2,Y2) -
координаты левого верхнего иправого нижнего
углов соответственно.
* procedureBar3D(X1,Y1,X2,Y2:integer;
* Depth:word;Top:boolean)
6
Рисует аксонометриюзакрашенного по фасаду
прямоугольногопараллелепипеда.
(X1,Y1),(X2,Y2) — координатылевого верхнего и
правогонижнего углов
прямоугольного фасада.
Depth — ширина боковой грани(отсчитывается по
годизонтали.
Top — признак включенияверхней грани.
ФОРМИРОВАНИЕПРЯМОЛИНЕЙНЫХ МОНОХРОМНЫХ ИЗОБРАЖЕНИЙ
* procedureDrawPoly(NumPoints:word;
* varPolyPoints);
7Строит ломаную линию.
NumPoints — число вершинмногоугольника
PolyPoints — переменная безтипа, содержащая
NumPoints+1 пар координатвершин многоугольника
(первая и последняя вершиныдолжны совпадать).
* procedureFillPoly(NumPoints:word;var PolyPoints);
8
Закрашивает многоугольниктекущим цветом и
орнаментом. ПараметрыNumPoints и PolyPoints
именют тот же смысл и тип,что и одноимеынные
параметры процедурыDrawPoly.
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,PolyPoints);
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 раз/сек
*
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
*
*
УПРАВЛЕНИЕ ЦВЕТОМ И СТИЛЕМИЗОБРАЖЕНИЙ
В данном разделе мырассмотрим возможности управления цветовой
палитрой и стилем рисования.
* procedureGetPalette(var PaletteType);
Возвращает текущуюплитру и количество цветов в ней. Применя-
ется только в графическомрежиме и только с драйверами EGA, EGA 64
и VGA.
* procedureSetAllPalette(var Palette);
Меняет все цветапалитры на заданные. Переменная без типа
Palette в первом байтесодержит число N- количество цветов в палитре
а в последующих N байах — коды задаваемых цветов. Если задана вели-
чина -1, то исходный цветостается без изменений.
* procedureSetPalette(NumberColor:word;Color:byte);
Изменяет один изцветов палитры. NumberColor — порядковый
номер изменяемого цвета.Color -код нового цвета.
* procedureSetColor(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 белый
УПРАВЛЕНИЕЦВЕТОМ И СТИЛЕМ ИЗОБРАЖЕНИЯ
* procedureSetBKColor(Color:word);
Устанавливает цвет фонарисования. Color — код или имя цвета.
Для получения справок окодах цветов, связанных с курсором и
фоном рисования,используются функции:
function GetColor:word;
function GetBKColor:word;
Факторами,определяющими стиль рисования, являются толщина и
способ выражения линий,используемых в изображениях контурных линий
и линий закраски замкнутыхфрагментов рисунков.
* procedureSetLineStyle(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 - толстая линия
УПРАВЛЕНИЕЦВЕТОМ И СТИЛЕМ ИЗОБРАЖЕНИЯ
* procedureGetLineSettings(var LineInfo:LineSettingsType);
Возвращает параметрытекущего стиля контурных линий. Тип
LineSettingsType описан вмодуле Graph как запись, поля которой:
LineStyle:word;
Pattern:word;
Thickness:word;, имеют тотже смысл, что и одноименные параметры
процедуры SetLineStyle.
* procedureSetFillStyle[(Pattern:word;Color:word)];
Устанавливаетстандартные орнамент и цвет заполнения. «По умол-
чанию» закраска белаясплошная. Параметр Color — установка цвета.
Возможные значения параметраPattern проиллюстрированы на следующем
экране.
* procedureSetFillPattern(Pattern:FillPatternType;Color:word);
Задает произвольныйорнамент и цвет заполнения фигур.
Pattern — задаваемыйпользователем орнамент.
typeFillPatternType=array[1..8]of byte;
Color — код цвета в палитре.
* procedureGetFillSettings(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ИМЕЕТСЯ ЛИ В ЯЗЫКЕ TURBOPASCAL ВОЗМОЖНОСТЬ УСТАНАВЛИВАТЬ
ПРОИЗВОЛЬНЫЙ (ПО ЖЕЛАНИЮПОЛЬЗОВАТЕЛЯ) ЦВЕТ РИСОВАНИЯ, СТИЛЬ И
ТОЛЩИНУ ЛИНИЙ РИСОВАНИЯ?
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(varFillInfo: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);
*
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
закрасив прямоугольник.
*
*
ПРОГРАММИРОВАНИЕ ЦВЕТНЫХКРИВОЛИНЕЙНЫХ ИЗОБРАЖЕНИЙ
В данном разделерассматриваются процедуры, позволяющие програм-
мировать изображениекриволинейных фигур из класса круговых и эллип-
тических дуг, секторов, атакже операторы формирования растровых
изображений и частоиспользуемые вспомогательные процедуры.
* procedureArc(X,Y:integer;StAngle,EndAngle,Radius:word);
1
Рисует против часовойстрелки текущим
стилем и цветом дугуокружности с центром (X,Y),
радиусом Radius отначального угла StAngle до
конечного угла AndAngle.Угловые параметры
задаются в градусах.
* procedureCetArcCords(var ArcCoords:ArcCoordsType);
Возвращает впеременной ArcCoords координаты концов дуги,
проведенной последнейкомандой Arc.Тип ArcCoordsType описан в
модуле Graph как запись,значения полей которой аналогичны значению
параметров процедуры Arc.
* procedureCircle(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.
* procedureFloodFill(X,Y,Border:word);
Обеспечиваетзакраску ограниченной
области, в которую входитточка (X,Y), по
образцу, установленномупредварительно
процедурой SetFillStyle либоSetFillPattern.
Параметр Border определяеткод цвета,
ограничивающегозакрашиваемую область.
* procedureFillEllipse(X,Y:integer;XRadius, YRadius:word);
Закрашивает областьэллипса, используя
предварительно установленныестиль и цвет закраски.
Значения параметрованалогичны значениям параметров
процедуры Ellipse.
4
5
ПРОГРАММИРОВАНИЕЦВЕТНЫХ КРИВОЛИНЕЙНЫХ ИЗОБРАЖЕНИЙ
* prosedurePieSlice(X,Y:integer;
* StAngle,EndAngle,Radius:word);
6
Строит и закрашиваеткруговой сектор
установленным стилем ицветом. Параметры имеют
тот же смысл и тип, что иодноименные параметры
процедуры Arc.
* procedureSector(X,Y:integer;
* StAngle,EndAngle,XRadius,YRadius:word);
7
Рисует и закрашиваетэллиптический сектор,
используя текущие стиль ицвет рисования и зак-
раски. Параметры имеют тотже смысл и тип что
и одноименные параметрыпроцедуры Ellipse.
* procedure Randomize;
Инициализируетвстроенный генератор случайных чисел сллучайным
значением, получаемым отсистемного таймера компьютера. Описана в
модуле System. Число,получаемое в результате работы генератора,
хранится в предописаннойпеременной RandSeed. Присваивая ей конкрет-
ные значения можно получатькаждый раз заданную последовательность
случайных чисел.
ПРОГРАММИРОВАНИЕЦВЕТНЫХ КРИВОЛИНЕЙНЫХ ИЗОБРАЖЕНИЙ
* functionRandom(Rande:word):word;
Возвращает случайноечисло. Переменная Rande должна быть выра-
жением целого типа, арезультатом будет случайное число X длиной в
слово в диапазоне 0=<X<Rande. Если Rande=<0, Random возвращает 0.
Если параметр функции незадан вовсе, то результатом будет
вещественное число вдиапазоне 0=<X<1.
* procedureDelay(Time:word);
Выполняет задержку назаданное число миллисекунд, описана в
модуде Crt.
* functionKeyPressed:boolean;
Возвращает значениеtrue, если на клавиатуре нажата
какая-либо символьнаяклавиша, и false — в противном случае. Описана
в модуле Crt.
* procedurePutPixel(X,Y:integer;Color:word);
Рисует на экране впозиции (X,Y) точку цвета Color. Опивана в
модуле Graph.
* procedureGetPixel(X,Y:integer):word;
Возвращает код цветазаданной точки растра (X,Y).
ПРОГРАММИРОВАНИЕЦВЕТНЫХ КРИВОЛИНЕЙНЫХ ИЗОБРАЖЕНИЙ
В качестве примераиспользования функции PutPixel продемон-
стрируем возможностьформирования «звездного неба» до нажатия любой
символьной клавиши.
.............
Randomize;
repeat
PutPixel(Random(GetMaxX),
Random(GetMaxY),
Red);
Delay(50);
until KeyPressed;
.............
Приведем еще одинпример использования процедур и функций,
описанных в данномразделе.На следующем экране Вы можете наблюдать
эллиптическую диаграмму свыделенными секторами различного стиля и
цвета закраски, а такжекардиоиду, представленную семейством окруж-
ностей, проходящих черезобщею точку опорной окружности и с центрами
в концах равных элементов,составляющих опорную окружность. Цвета
элементов опорной окружности и окружностей кардиоиды назнача-
ются случайным образом.
8
9 ПРОГРАММИРОВАНИЕЦВEТНЫХ КРИВОЛИНЕЙНЫХ ИЗОБРАЖЕНИЙ
01НАРИСУЙТЕ ПРОГРАММУРИСОВАНИЯ НА ЖЕЛТОМ(14) ЭКРАНЕ КРИВОЛИНЕЙНОЙ ЦИФРЫ 8 СИНЕГО(1) ЦВЕТА.
1 SetBKColor(14);
SetColor(1);
Circle(X,Y;Radius);
Circle(X,Y+d;Radius+d);
2 SetBKColor(1);
SetColor(14);
Circle(X,Y;Radius);
Circle(X,Y;Radius+d);
3 SetBKColor(14);
SetColor(1);
Arc(X,Y;0,360,Radius);
Arc(X,Y+d;0,360,Radius);
4 SetBKColor(1);
SetColor(14);
Arc(X,Y;0,360,Radius);
Arc(X,Y+d;0,360,Radius);
*
02НАПИШИТЕ ПРОГРАММУФОРМИРОВАНИЯ НА ЧЕРНОМ ЭКРАНЕ КРАСНОЙ ЦИФРЫ 5 С КРИВОЛИНЕЙНОЙ НИЖНЕЙ ИПРЯМОЛИНЕЙНОЙ ВЕРХНЕЙ ЧАСТЯМИ.
1 SetColor(4);
GoToXY(X,Y);
Arc(X+d,Y+d,0,180,K+d);
Arc(X,Y+d,0,90,d);
Arc(X+d,Y+d+k,0,180,k);
2 SetColor(4);
Line(X,Y,X+d,Y);
Line(X,Y,X,Y+d);
Arc(X+k,Y+k,0,90,k);
Arc(X+k,Y+k,270,360,k);
3 SetColor(4);
Line(X,Y,X+d,Y);
Line(X,Y,X,Y+d);
Arc(X+k,Y+k,0,180,k);
4 SetColor(4);
Line(X,Y,X-d,Y);
Line(X-d,Y,X-d,Y+d);
Circle(X-d,Y+d+k,k);
*
03НАПИШИТЕ ПРОГРАММУ,ОБЕСПЕЧИВАЮЩУЮ ФОРМИРОВАНИЕ НА ЧЕРНОМ ЭКРАНЕ ЭЛЛИПСА СО СЛУЧАЙНЫМ ЦВЕТОМЗАКРАСКИ.
1 Randomize;
SetFillStyle(0,15);
Ellipse(X,Y,0,359,a,b);
FloodFill(X,Y,Random(14);
2 SetFillStyle(0,15);
Ellipse(X,Y,0,359);
FloodFill(X,Y,Random(14);
3 SetFillStyle(0,15);
Randomize(15);
Ellipse(X,Y,0,359,a,b);
FloodFill(X,Y,Random);
4 SetFillStyle(0,15);
Randomize;
Ellipse(X,Y,a,b);
FloodFill(X,Y);
*
04КАК ПРАВИЛЬНО ЗАДАТЬУГЛОВЫЕ ПАРАМЕТРЫ ПРОЦЕДУРЫ Arc?
1 В радианах. Их значенияне должны превышать 2пи.
2 В радианах. Их значенияне должны превышать пи.
3 В градусах. Их значенияне должны превышать 360 градусов.
4 В градусах. Их значенияне должны превышать 180 градусов.
*
05В КАКОМ МОДУЛЕ ОПИСАНАПРОЦЕДУРА RANDOMIZE?
1 Graph.
2 Crt .
3 Dos.
4 System.
*
06С ПОМОЩЬЮ КАКОЙ ПРОЦЕДУРЫМОЖНО НАРИСОВАТЬ НА ЭКРАНЕ ТОЧКУ
ОПРЕДЕЛЕННОГО ЦВЕТА?
1 PutPixel.
2 KeyPressed.
3 GetPixel.
4 Delay.
*
ФОРМИРОВАНИЕ ГРАФИЧЕСКИХТЕКСТОВ
В данном разделе мырассмотрим возможность графического изобра-
жения текстовых символов,управление типом шрифта, направлением
вывода, размерами ипропорциями символов, пространственной привязкой
текстовых строк к положениюкурсора и другими возможностями формиро-
вания графических текстов.
* procedureSetTextStyle(Font,Direction:word;
* CharSize:CharSizeType);
Устанавливает стильстандартного шрифта Font(один растровый -
DefaultFont(0), и четырештриховых — TriplexFont(1),SmallFont(2),
SanSerifFont(3),GothicFont(4)), направление текстовой строки
Direction (HorizDir(0) — слева направо, VertDir(1) — снизу вверх),
размер символов CharSize(коэффициент увеличения от 1 до 10).
В случае растровогошрифта каждый текстовый символ формируется
на основе матрицы 8*8элементов разложения. Штриховые шрифты опреде-
ляются серией векторов.Обычно штриховые шрифты хранятся в отдельных
файлах на системном диске ипри обращении к процедуре загружаются в
динамически определяемуюпамять компьютера автоматически.
«Поумолчанию», т.е. без обращения к данной процедуре
автоматическиустанавливается растровый шрифт, горизонтальный вывод
и единичный размер символов.
На следующем экране Выможете наблюдать примеры стандартных
шрифтов. После названиякаждого из них через запятую указан коэффи-
циент увеличения.
#
1 ФОРМИРОВАНИЕ ГРАФИЧЕСКИХ ТЕКСТОВ
#
ФОРМИРОВАНИЕ ГРАФИЧЕСКИХ ТЕКСТОВ
* procedureSetUserCharSize(MultX,DivX,MultY,DivY:word);
Используется послеустановки штрихового шрифта с целью измене-
ния пропорций символов.Отношение MultX/DivX -коэффициент масштаби-
рования обычной шириныиспользуемого архивного штрихового шрифта.
2MultY/DivY — коэффициентмасштабирования высоты шрифта.
#
ФОРМИРОВАНИЕ ГРАФИЧЕСКИХ ТЕКСТОВ
* functionTextHeight(TextString:strig):word;
Возвращает высотузаданной текстовой строки TextString в элемен-
тах изображения(пикселах) сучетом всех установок, выполненных ранее
процедурами SetTextStyle иSetUserCharSize .
* functionTextWidth(TextString:string):word;
Возвращает ширинузаданной текстовой строки TextString при тех
же условиях, что и функцияTextHeight.
* procedureSetTextJustify(Horiz,Vert:word);
Обеспечивает привязкувыводимого графического текста к теку-
щему положению курсора.Параметры процедуры описаны в модуле Graph
как константы и могутпринимать следующие значения:
Horiz: LeftText =0 — левымкраем строки к курсору
CenterText=1 — симметрично к курсору
RightText =2 — правымкраем строки к курсору
Vert: BottomText =0 — строка над курсором
CenterText =1 — симметрично к курсору
TopText =2 — строка под курсором
По«умолчанию» устанавливается параметр привязки выводимого
графического текстасоответствующий обращению SetTextJustify(0,2);.
#
ФОРМИРОВАНИЕГРАФИЧЕСКИХ ТЕКСТОВ
* procedureOutText(TextString:string);
Выводит на экранпоследовательность символов, начиная с текущей
позиции, которая меняетсятолько если текст выводится горизонтально
с левым выравниванием. Еслитекст не помещается в графическое окно,
он либо вообще невысвечивается («грубый» шрифт, принятый по умолча-
нию), либо высвечиваетсячастично(«гладкий» шрифт).Текущий цвет
текста задается процедуройSetColor. параметры шрифта — процедурами
SetTextStyle SetTextJustify.Коэффициентыувеличения ширины и высоты
штриховых шрифтов можнозадать процедурой SetUserCharSize. Ширину и
высоту строки определяют спомощью функций TextWidth TextHeight.
* procedureOutTextXY(X,Y:integer;TextString);
Выводит на экран последовательностьсимволов начиная с позиции
(X,Y) и возвращает курсор вположение, предшествующее обращению к
данной процедуре.
* procedureGetTextSettings(var TextInfo:TextSettingsType);
Возвращает текущий типтекстового шрифта, его направление, раз-
мер, параметрыгоризонтального и вертикального выравнивания, установ-
ленные ранее процедурамиSetTextStyle и SetTextJustify, либо по умол-
чанию при вхождении вграфический режим. Тип TextSettingsType описан
в модуле Graph как запись,поля которой — Font,Direction:word;
CharSize:CharSizeType;Horiz,Vert:word; — по смыслу и типу аналогич-
ны одноименныым параметрампроцедур SetTextStyle и SetTextJustify.
ФОРМИРОВАНИЕ ГРАФИЧЕСКИХ ТЕКСТОВ
В языке Turbo-Pascalпредусмотрена возможность использовать
новые штриховые шрифты, невходящие в систему фирмы Borland Interna-
tional, но совместимых сэтой системой по файловой форме представле-
ния. Для этого необходимофайлы новых шрифтов, которые должны иметь
расширение .chr,предварительно загрузить в каталог, содержащий файл
Turbo.exe интегрированнойсреды Turbo-Pascal, а в прикладной
программе использоватьфункцию InstallUserFont.
* functionInstallUserFont(NewFont:string):integer;
Инсталлирует новыйштриховой шрифт, т.е.вводит во внутреннюю
таблицу шрифтов имя файланового шрифта NewFont и возвращает номер
этого шрифта в указаннойтаблице для использования в качестве значе-
ния параметра Font процедуры SetTextStyly.
Внутренняя таблицаможет содержать до 10 имен шрифтов, из
которых 4 стандартных в нейсодержатся постоянно. В файловой системе
лабораторных компьютеровсодержатся файлы 4 нестандартных штриховых
шрифтов с именами: Bold.chr,Goth.chr, Sans.chr,Trip.chr.
Если внутренняятаблица штриховых шрифтов переполнена, то
функция возвращает значение0 и, следовательно, устанавливается
стандартный растровый шрифт.Для сброса внутренней таблицы шрифтов в
исходное положение можнозаново перезапустить операционную систему.
На следующем экранеВы можете наблюдать примеры четырех нес-
тандартных штриховыхшрифтов, упомянутых в данном разделе.
#
ФОРМИРОВАНИЕ ГРАФИЧЕСКИХ ТЕКСТОВ
3
01КАКИЕ ВОЗМОЖНОСТИ,СВЯЗАННЫЕ С НАПРАВЛЕНИЕМ ВЫВОДА ТЕКСТОВОЙ
ИНФОРМАЦИИ, ДАЕТГРАФИЧЕСКИЙ РЕЖИМ?
1 Возможен толькогоризонтальный вывод.
2 Возможен какгоризонтальный так и вертикальны выводы.
3 Горизонтальный,вертикальный и вывод по горизонтали.
4 Имеется возможностьгоризонтального вывода для всех шрифтов и
для растрового — вывод по вертикали.
*
02УСТАНАВЛИВАЮТСЯ ЛИ ТИПСТАНДРАТНОГО ШРИФТА, НАПРАВЛЕНИЕ ТЕКСТОВОЙ
СТРОКИ И РАЗМЕР СИМВОЛОВОДНОЙ ПРОЦЕДУРОЙ?
1 Нет. Эти параметрыустанавливаются разными процедурами:
InstallUserFont; — стандартный шрифт
TextWidth; — размерсимволов
OutText; — направлениевывода
2 Да. Эти параметрыустанавливаются с помощью одной процедуры,
InstalUserFont;
3 Да. Перечисленныепараметры устанавливаются с помощью процедуры
SetTextStyle;
4 Нет. В языке нетвозможности устанавливать шрифт, направление
строке и размерсимволов.
*
03МОЖНО ЛИ ИЗМЕНИТЬПРОПОРЦИИ СИМВОЛОВ ЛЮБОГО ШРИФТА И ЕСЛИ МОЖНО, ТО
С ПОМОЩЬЮ КАКОЙ ПОЦЕДУРЫ?
1 Нет. Пропорциисимволов предусмотрены шрифтом и изменить их
нельзя .
2 Можно. С помощьюпроцедуры SetUserCharSize .
3 Можно изменитьпропорции только штрихового шрифта с помощью
процедурыSetUserCharSize.
4 Можно. С помощьюпроцедуры SetTexStyle.
*
04ЧЕМ ОТЛИЧАЮТСЯ ПРОЦЕДУРЫOutText и OutTextXY?
1 Ничем. Они полностьюаналогичны.
2 Процедуры отличаютсяпривязкой выводимого текста.
3 Процедуры отличаютсяпривязкой выводимого текста и положением
курсора послевыполнения процедур.
4 Процедура OutTextосуществляет вывод символьной строки с
текущего положениякурсора, а процедура OutTextXY обеспечивает
привязку графическоготекста без его вывода.
*
05СОСТАВИТЬ ПРОГРАММУ ВЫВОДАСЛОВА «ПРОГРАММА» ПО НИЖНЕЙ КРОМКЕ БЕЛОГО ЭКРАНА РАСТРОВЫМ ШРИФТОМЗЕЛЕНОГО (2) ЦВЕТА РАЗМЕРА 6.
1 SetBkColor(15);
SetColor(2);
SetTextStyle(1,0,6);
OutTextXY(0,GetMaxY,'ПРОГРАММА');
2 SetBkColor(15);
SetColor(2);
SetTextStyle(0,1,6);
OutTextXY(GetMaxX,0,'ПРОГРАММА');
3 SetBkColor(15);
SetColor(2);
SetTextStyle(0,6,1);
OutTextXY(0,GetMaxY,'ПРОГРАММА');
4 SetBkColor(15);
SetColor(2);
SetTextStyle(0,0,6);
OutTextXY(0,GetMaxY,'ПРОГРАММА');
*
06СОСТАВИТЬ ПРОГРАММУГОРИЗОНТАЛЬНОГО ВЫВОДА СЛОВА «КЛАСС» В ВИДЕ
СТРОКИ ДЛИНОЙ 300 ПИКСЕЛОВС ИСПОЛЬЗОВАНИЕМ ГОРИЗОНТАЛЬНО
ДЕФОРМИРОВАННОГОСТАНДАРТНОГО ШТРИХОВОГО ШРИФТА SanserifFont
КРАСНОГО (4) ЦВЕТА РАЗМЕРА10.
1 SetColor(4);
SetTextStyle(SanSerifFont,HorizDir,10);
K:=TextWidth('КЛАСС');
SetUserCharSize(300,K,1,1);
2 SetColor(4);
SetTextStyle(SanSerifFont,VertDir,10);
K:=TextWidth('КЛАСС');
SetUserCharSize(300,K,1,1);
3 SetColor(4);
SetTextStyle(SanSerifFont,Horizdir,10);
K:=TextHeight('КЛАСС');
SetUserCharSize(1,1,300,K);
4 SetColor(4);
SetTextStyle(HorizDir,SanSerifFont,10);
K:=TextWidth('КЛАСС');
SetUserCharSize(300,K,1,1);
*
07СОСТАВИТЬ ПРОГРАММУВЕРТИКАЛЬНОГО ВЫВОДА СЛОВА «ПАСКАЛЬ» В ВИДЕ
СТОЛБЦА ШИРИНОЙ 80ПИКСЕЛОВ, ИСПОЛЬЗУЯ ВЕРТИКАЛЬНО-ДЕФОРМИРОВАННЫЙ СТАНДАРТНЫЙ ШТРИХОВОЙ ШРИФТSmallFont СИНЕГО(1) ЦВЕТА РАЗМЕРА 5.
1SetTextStyle(SmallFont,0,5);
SetColor(1);
L:=TextHight('ПАСКАЛЬ');
SetUserCharSize(1,1,80,L);
OutTextXY(10,200,'ПАСКАЛЬ');
2SetTextStyle(SmallFont,1,5);
SetColor(1);
L:=TextHight('ПАСКАЛЬ');
SetUserCharSize(80,L,1,1);
OutTextXY(10,200,'ПАСКАЛЬ');
3SetTextStyle(SmallFont,1,5);
SetColor(1);
L:=TextHeight('ПАСКАЛЬ');
SetUserCharSize(1,1,80,L);
OutText('ПАСКАЛЬ');
4SetTextStyle(1,5,SmallFont);
SetColor(1);
L:=TextHeight('ПАСКАЛЬ');
SetUserCharSize(1,1,80,L);
OutText('ПАСКАЛЬ');
*
08СКОЛЬКО НЕСТАНДАРТНЫХШРИФТОВ МОЖНО ИСПОЛЬЗОВАТЬ ПРИ РАБОТЕ С ГРАФИ ЧЕСКИМИ ТЕКСТАМИ?
1 Сколько угодно.
2 11 шрифтов.
3 Столько, сколькофайлов нестандартных шрифтов содержится в
Вашем компьютере.
4 В Turbo-Pascal непредусмотрена возможность использования
шрифтов, не входящихв систему фирмы Borland International.
*
09СКОЛЬКО ИМЕН РАЗЛИЧНЫХШРИФТОВ МОЖЕТ СОДЕРЖАТЬ ВНУТРЕННЯЯ ТАБЛИЦА ШРИФТОВ И СКОЛЬКО ИЗ НИХНЕСТАНДАРТНЫХ?
1 Не более 6, из нихнестандартных — не более 2.
2 Не более 10, из нихнестандартных — не более 6.
3 Не более 11, из нихнестандартных — не более 7.
4 Не более 10, из нихнестандартных — не более 4.
*
10КАКАЯ ПРОЦЕДУРАИНСТАЛЛИРУЕТ НОВЫЙ ШТРИХОВОЙ ШРИФТ?
1 InstallUserFont;
2 GetTextSettings.
3 SetUserCharSize.
4 SetTextJustify.
*
011Ответ неверный. В Turbo-Pascal имеется возможность не только 002горизонтального, но ивертикального вывода.
*
2Ответправильный. 005
*
3Ответ неверный. В языкенет возможности вывода графического текста 002
в направлении погоризонтали.
*
4Ответ неверный.Ограничений на тип шрифта для осуществления 002
вертикального вывода нет.
*
*
021Ответ неверный.Перечисленные процедуры выполняют другие функции. 002
*
2Ответ неверный. ПроцедураInstallUserFont инсталлирует новый 002
нестандартный шрифт.
*
3Ответправильный. 005
*
4Ответ неверный. Такаявозможность есть. 002
*
*
031Ответ неверный. Пропорциисимволов увличить можно. 002
*
2Ответ неточный.ПроцедураSetUserCharSize изменяет пропорции символов004
после установкиштрихового шрифта процедурой SetTextStyle.
*
3Ответ правильный. 005
*
4Ответ неверный. ПроцедураSetTextStyle устанавливает тип шрифта, но 002
не устанавливаетпропорции символов.
*
*
041Ответ неверный. Этипроцедуры отличаются привязкой выводимого текста002
и положением курсорапосле их выполнения.
*
2Ответ неполный. Процедурыотличаются не только привязкой выводимого 004
графического текста, но иположением курсора после их выполнения
*
3Ответправильный. 005
*
4Ответ неверный. Обепроцедуры обеспечивают вывод символьной строки, 002
однако отличаются местомпривязки выводимой строкви и положением
курсора после ихвыполнения.
*
*
051Ответ неверный. Чтобывывести строку растровым шрифтом следует 002
параметры процедурыSetTextStyle выбрать иначе.
*
2Ответ неверный. Параметрыпроцедуры SetTextStyle указывают на то, 002
что строка будет выведенане по нижней кромке, а вертикально, снизу
вверх. Кроме тогокоординаты начальной точки вывода в процедуре
OutTextXY соответствуютправому верхнему углу экрана и значит
надпись не будетвыведена.
*
3Ответ неверный. Неверноуказаны параметры процедуры SetTextStyle 002
Стандартного шрифта сномером 6 не существует.
*
4Ответправильный. 005
*
*
061Ответправильный. 005
*
2Ответ неверный. Данныйфрагмент программы будет обеспечивать не 002
горизонтальный, ввертикальный вывод текста .
*
3Ответ неверный. Данныйфрагмент программы будет обеспечивать не 002
горизонтальную, авертикальную деформацию вывдимой строки.
*
4Ответ неверный. Ошибка вупотреблении параметров процедуры 002
SetTextStyle.
*
*
071Ответ неверный. Строка,выводимая с помощью данного фрагмента прог- 002
раммы будет располагатьсягоризонтально, а не вертикально как тре-
бует задание.
*
2Ответ неверный.С помощьюданного фрагмента программы будет проведена002
горизонтальная деформацияотносительно первоначальной высоты
символов.
*
3Ответправильный. 005
*
4Ответ неверный.Неправильно указаны значения параметров процедуры 002
SetTextStyle.
*
*
081Ответ неверный.Использовать можно столько нестандартных шрифтов, 002
сколько файлов с такимишрифтами содержится в Вашем компьютере.
*
2Ответ неверный.Использовать можно стольконестандартных шрифтов, 002
сколько файлов с такимишрифтами содержится в Вашем компьютере.
*
3Ответправильный. 005
*
4Ответ неверный. Такаявозможность имеется . 002
*
*
091Ответ неврный. Таблицаможет содержать до 10 шрифтов, из них 6 002
нестандартных.
*
2Ответправильный. 005
*
3Ответ неверный. Таблицаможет содержать до 10 шрифтов, из них 6 002
нестандартных.
*
4Ответ неверный. Таблицаможет содержать до 10 шрифтов, из них 6 002
нестандартных.
*
*
101Ответправильный. 005
*
2Ответ неверный. ПроцедураGetTextSettings возвращает текущий тип 002
текстового шрифта.
*
3Ответ неверный. ПроцедураSetUserCharSize используется для изменения002
пропорций символов.
*
4Ответ неверный. ПроцедураSetTextJustify обеспечивает привязку 002
выводимого текста ктекущему положению курсора.
*
*
ПРОГРАММИРОВАНИЕ ОЗВУЧЕННЫХДИНАМИЧЕСКИХ СЦЕН
В данном разделе Выознакомитесь с возможностями компьютера
в области мультипликации,т.е. созданием эффекта движения статичес-
ких изображений.
Этот эффект можнодостич используя динамическую и видеопамять
компьютера, одноканальныйзвукогенератор, возможность сдвига и нало-
жение изображений.Динамическая память используется для сохранения
образа подвижного обьекта и, возможно, образа фона изображения и не
связывает пргограммиста спредопределенными размерами сохраняемых
фрагментов экрана.
Эффект движениясоздается циклическим уничтожением обьекта в
старом положении и выводомего образа из динамической памяти на
экран в новое положение.Уничтожение осуществляется либо заменой
соответствующего фрагментаэкранного изображения образом фона из
динамической памяти, либоналожением на него образа такого же обь-
екта из динамической памятис проведением поразрядной логической
операции суммирования по mod2.
Имеется возможностьсоздания изображения одновременно на двух
страницах видеобуфера итаким образом осуществлять мгновенную смену
изображений на экранедисплея.
Рассмотрим процедуры,обеспечивающие эти возможности.
#
ПРОГРАММИРОВАНИЕОЗВУЧЕННЫХ ДИНАМИЧЕСКИХ СЦЕН
* functionImageSize(X1,Y1,X2,Y2:word):word;
Возвращает числобайт, необходимых для сохранения прямоугольлной
области экранногоизображения.Параметры (X1,Y1),(X2,Y2) задают соот-
ветственно координаты левоговерхнего и правого нижнего узлов сохра-
няемой области экрана.Определяемый обьем памяти включает в себя
обьем растрового образасохраняемой области экрана и два двухбайтных
слова, используемые дляхранения ширины Width=X2-X1+1 и высоты
heidht=Y2-Y1+1 этой области.
Если обьем памяти,необходимый для сохранения области экрана,
превышает или равен 64К, тофункция возвращает значение 0, а вспомо-
гательная функцияGraphResult возвращает значение — 11(константа
grError). Учитывая, что всистеме Turbo-Pascal при использовании
графического адаптера EGAнезависимо от графического режима полному
экрану соответствуетдисплейная страница обьемом 128К. Указанное
ограничение по памяти эквивалентноограничению площадей сохраняемых
областей до 1/2 площадиэкрана.
Для сохраненияфрагмента экрана в динамической памяти компью-
тера необходимо создатьсоответствующую динамическую переменную. Это
делает процедура GetMem.
* procedure GetMem(varp:pointer; Size:word);
Создает новуюдинамическую переменную размера Size, которая
указывает размердинамической области в байтах, и помещает адрес
начала этого блока памяти вссылочную переменную p, совместимую по
типу со всеми другими типамиуказателей.
На новую динамическуюпеременную можно ссылаться через указа-
тель р^. Наибольший размерблока, который можно разместить единовре-
менно, составляет 65 521байт, наименьший — 1 байт.
ПРОГРАММИРОВАНИЕОЗВУЧЕННЫХ ДИНАМИЧЕСКИХ СЦЕН
Если динамическаяобласть не фрагментирована, например в нача-
ле программы,последовательные вызовы данной процедуры возвращают
соседние блоки памяти. Когдав динамической области недостаточно
места для размещения новойпеременной, возникает ошибка времени вы-
полнения программмы. Чтобыизбежать этого можно использовать следу-
ющую функцию.
* functionMaxAvail:longint;
Возвращает размернаибольшего непрерывного свободного блока,
имеющегося в динамическойобласти памяти компьютера в текущий
момент.
* procedureGetImage(X1,Y1,X2,Y2:word;var BitMap);
Сохраняет вдинамической памяти растровый образ заданной
прямоугольной областиэкрана. Параметры (X1,Y1),(X2,Y2) — координаты
левого верхнего и правогонижнего узлов сохраняемой области экрана.
BitMap — нетипизированныйпараметр, указывающий на динамическую пе-
ременную хранениярассматриваемого изображения, которая создается
предварительно процедуройGetMem.
Приведем фрагментпрограммы, в которой обеспечивается сохране-
ние в динамической памятипрямоугольной области экрана с координа-
тами левого верхнего угла(50,50) и правого нижнего угла (100,100):
#
ПРОГРАММИРОВАНИЕОЗВУЧЕННЫХ ДИНАМИЧЕСКИХ СЦЕН
.......
var p:pointer;
Size:word;
begin {тело программы}
........
Size:=ImageSize(50,50,100,100);
IfMaxAvail<Size then begin RestoreCrtMode;
writeln('Мало динамической памяти');
Halt(1) end
else beginGetMem(p,Size);
GetImage(50,50,100,100,p^);
end;
........
end. {конец программы}
#
ПРОГРАММИРОВАНИЕОЗВУЧЕННЫХ ДИНАМИЧЕСКИХ СЦЕН
* procedurePutImage(X,Y:integer; var BitMap;BitBlt:word);
Выводит в заданноеместо экрана хранимое в динамической памяти
растровое изображение и принеобходимости определенным образом ком-
бинирует его спредшествующим экранным изображением.
(X,Y) — Координатыверхнего левого угла размещения на экране
выводимогопрямоугольного образа.
BitMap — Указывает надинамическую переменную хранения выводи-
могоизображения.
BitBlt — Определяетпоточечную операцию между имеющимся и
выводимымизображениями и может принимать значения
следующихопераций:
NormalPut = 0; — простоезамещение — исходное изображение замещается
выводимым
XORPut = 1; — сложение помодулю 2 — коды цветов одноименных то-
чек складываются по модулю 2
Например, если точку сцветом 4(красный) вывести в точку с
цветом 4(красный), то наэкране получим точку с цветом, код которого
соответствует значениюследующего выражения:
4(10)+4(10) =0100(2)+0100(2) = 0000(2) = 0(10) ,
т.е. получим точку черногоцвета.
OrPut = 2; — поразряднаяоперация ИЛИ — выполняется поточечная
операцияИЛИ
Например, 4(10) или4(10)=0100(2)или 0100(2)=0100(2)=4(10),
т.е. получим точку того жецвета.
#
ПРОГРАММИРОВАНИЕОЗВУЧЕННЫХ ДИНАМИЧЕСКИХ СЦЕН
AndPut = 3 — поразряднаяоперация И — выполняется поточечная
операция И
Например,4(10)&4(10)=0100(2)&0100(2)=0100(2)= 4(10),
т.е. получим точку того жецвета.
NotPut = 4 — замещение споразрядной инверсией — полное замещени ис-
ходного изображения в области вывода
предварительно инвертированным выво-
димым изображением
Например, точка сцветом 4(10) будет заменена точкой с цветом
- ----
4(10)= 0100(2) =1011(2) = 11(10) — светло-бирюзовый
Процедура никогда невыполняет отсечения выводимого изображе-
ния на границах текущегоокна просмотра, если при этом оно не выходит
за границы экрана. Если жевыходит, то изображение не выводится
вовсе, если это леваяверхняя или правая границы экрана, и отсекается
если это нижняя часть.
При неоднократномиспользовании динамической памяти с разными
динамическими переменнымиона бысто «засоряется» и становится непри-
годной к использованию.Чтобы этого избежать следует регулярно унич-
тожать использованныединамические переменные. Для этого существует
в модуле Sistem процедураDispose.
#
ПРОГРАММИРОВАНИЕОЗВУЧЕННЫХ ДИНАМИЧЕСКИХ СЦЕН
* procedureDispos(varp:pointer);
Уничтожает динамическуюпеременную, на которую указывает р и
возвращает освобожденнуюпамять в пул динамической памяти системы.
После использования даннойпроцедуры значение ссылочной переменной
становится неопределенным иобращение р^ приводит к ошибке.Необходи-
мо вновь создатьдинамическую переменную.
Приведем примерпрограммы, которая создает эффект движения по
экрану обьекта в области50*50 пикселов, первоначально размещенного
у левой границы экрана, кего правой границе:
.......
var p:pointer;
I:integer;
......
begin
......
GetMem(p,ImageSize(0,50,50,100)); {выделение динамической памяти}
GetImage(0,50,50,100,p^); {сохранение обьекта в памяти}
for I:=1 to (GetMaxX-50)do {перемещение обьекта}
beginPutImage(I-1,50,p^,XORPut);{уничтожение обьекта в прежнем
состоянии}
PutImage(I-1,50,p^,NormalPut);{копирование обьекта в новое
end; состояние
Dispose(p); {освобождение памяти}
......
end.
#
ПРОГРАММИРОВАНИЕОЗВУЧЕННЫХ ДИНАМИЧЕСКИХ СЦЕН
1 Проиллюстрируемприведенный выше пример:
#
ПРОГРАММИРОВАНИЕОЗВУЧЕННЫХ ДИНАМИЧЕСКИХ СЦЕН
* procedureSetActivePage(Page:word);
Направляет весьпоследующий графический выод на страницу видео-
буфера, задаваемуюпараметром Page. Эта страница может и не отобра-
жаться в это время на экранедисплея. Таким образом обеспечивается
построение новых изображенийза счет времени просмотра текущих, чтобы
затем мгновенно обновитьэкран и создать эффект движения.
Лабораторные компьютерыподдерживают двухстраничную организацию
видеобуфера. Страницы имеютномера 0 и 1 и графический вывод
по умолчанию осуществляетсяна 0-ю страницу.
* procedureSetVisualPage(Page:word);
Задает номер Pageотображаемой на экран дисплейной страницы
видеобуфера. По умолчаниювизуализируется страница, на которую нап-
равляется графический вывод.
Приведем примерпрограммы, обеспечивающей создание эффекта
перемещения обьекта как впредыдущем примере:
#
ПРОГРАММИРОВАНИЕОЗВУЧЕННЫХ ДИНАМИЧЕСКИХ СЦЕН
......
var:integer;
......
begin
...... {поумолчанию вывод и визуализация 0-страницы}
for I:=1 to(GetMaxX-50)do
{перемещение обьекта}
beginBar(I-1,50,I+50-1,100);
{формирование обьекта в (I-1)положении}
SetActivePage(1);
{установкавывода на 1-ю страницу}
ClearDevice;
{очистка 1 страницы}
Bar(I,50,I+50,100);
{формирование обьекта в I положении}
SetVisualPage(1);
{визуализация1 страницы}
SetActivePage(0);
{установка вывода на 0-ю страницу}
ClearDevice;
{очистка 0-й страницы}
end;
......
end.
#
ПРОГРАММИРОВАНИЕОЗВУЧЕННЫХ ДИНАМИЧЕСКИХ СЦЕН
* procedureSound(Frequency:word);
Включает внутреннийзвукогенератор компьютера. Параметр
Frequency задает частотугенерации однотонального звука в герцах
в диапазоне от 37 до 32767.
Частотыпервой октавы нотного ряда
--------------------------------------------------------------------
Ноты До Ре Ми Фа Соль Ля Си
--------------------------------------------------------------------
Частоты 523,3 587,3 659,3 698,5 784,0 880,0 987,7
--------------------------------------------------------------------
Частоты нот каждойболее высокой или низкой октавы прибли-
женно получаются удвоениемили делением на 2 частот одноименных нот
последующей или предыдущейоктавы соответственно.
Звуковой генераторработает под управлением специальной мик-
росхемы-таймера ицентральный процессор после выполнения процедуры
Sound можежтж продолжатьвычислительный процесс одновременно с рабо-
той звукогенератора.
* procedure NoSond;
Прекращает работузвукогенератора. Приведем фрагмент программы
программы, обеспечивающийвоспроизведение ноты «До» в течение 3 сек.
… Sound(523);
Delay(3000);
NoSound; ......
ПРОГРАММИРОВАНИЕОЗВУЧЕННЫХ ДИНАМИЧЕСКИХ СЦЕН
2 Приведем примериспользования описанных выше процедур.
#
ПРОГРАММИРОВАНИЕОЗВУЧЕННЫХ ДИНАМИЧЕСКИХ СЦЕН
* function ReadKey:char;
Считывает символ склавиатуры не отображая его на экран. Если
перед обращением к даннойфункции функция KeyPressed имела значение
true, то символ считываетсянемедленно, в пртивном случае функция
ожидает нажатия клавиши.
Обычныеалфавитно-цифровые клавиши возвращают однобайтные коды
в стандарте ASCII.Специальные клавиши (управление курсором, Alt,
Ctrl и т.п. при нажатиивозвращают расширение, двухбайтные коды
ASCII. При нажатииспециальной клавиши функция возвращает сначала
нулевой символ null, а затемрасширенный код клавиши.
Нулевые символы немогут быть получены никаким другим путем.
Этим обеспечивается то, чтоследующим символом будет расширенный код
клавиши.
В качестве расширениястандарт языка разрешает вставлять в
строку символов управляющиесимволы, например #.
Приведем фрагментпрограммы, в котором в переменную с именем Ch
считывается символ илирасширенный код клавиши и для переменой
FuncKey булевского типаустанавливается значение true, если символ
является кодом специальнойклавиши:
......
Ch:=ReadKey;
If Ch<> # thenFuncKey:=False
else
begin
FuncKey:=true;
Ch:=ReadKey
end;
......
ПРОГРАММИРОВАНИЕ ОЗВУЧЕННЫХ ДИНАМИЧЕСКИХ СЦЕН
* procedureSetWriteMode(WriteMode:integer);
Устанавливает режимзаписи при вычерчивании линий с помощью
процедур формированияпрямолинейных изображений (кроме процедуры
Bar3D). Процедура описана вмодуле Craph. Параметр может принимать
следующие значения:
CopyPut = 0 — простоезамещение — вычерчиваемая линия «затирает» то,
что было на экране.
XORPut = 1 — сложение поmod 2 — обеспечивается комбинирование вы-
водимой линии с экранным изображе-
нием на основе выполнения поточеч-
ной поразрядной операции суммиро-
вания по модулю2.
Важно, что дваодинаковых вывода на экран в режиме XORPut при-
ведут сначала к стираниюлинии на экране, а затем в восстановлению
исходного экранногоизображения.
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 при вычерчивании линий с помощью процедур формированияпрямоугольных изображений.
*
*
Приложение 3
Экранные формы
/>
/>
/>