Главная Рефераты по геополитике Рефераты по государству и праву Рефераты по гражданскому праву и процессу Рефераты по делопроизводству Рефераты по кредитованию Рефераты по естествознанию Рефераты по истории техники Рефераты по журналистике Рефераты по зоологии Рефераты по инвестициям Рефераты по информатике Исторические личности Рефераты по кибернетике Рефераты по коммуникации и связи Рефераты по косметологии Рефераты по криминалистике Рефераты по криминологии Рефераты по науке и технике Рефераты по кулинарии Рефераты по культурологии Рефераты по зарубежной литературе Рефераты по логике Рефераты по логистике Рефераты по маркетингу Рефераты по международному публичному праву Рефераты по международному частному праву Рефераты по международным отношениям Рефераты по культуре и искусству Рефераты по менеджменту Рефераты по металлургии Рефераты по муниципальному праву Рефераты по налогообложению Рефераты по оккультизму и уфологии Рефераты по педагогике Рефераты по политологии Рефераты по праву Биографии Рефераты по предпринимательству Рефераты по психологии Рефераты по радиоэлектронике Рефераты по риторике Рефераты по социологии Рефераты по статистике Рефераты по страхованию Рефераты по строительству Рефераты по схемотехнике Рефераты по таможенной системе Сочинения по литературе и русскому языку Рефераты по теории государства и права Рефераты по теории организации Рефераты по теплотехнике Рефераты по технологии Рефераты по товароведению Рефераты по транспорту Рефераты по трудовому праву Рефераты по туризму Рефераты по уголовному праву и процессу Рефераты по управлению |
Реферат: Обучающая программа Графика программированию в графическом режиме на языке turbo-pascal 7.xРеферат: Обучающая программа Графика программированию в графическом режиме на языке 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-PASCAL 6.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". Диалог ЭВМ-пользователь (в данном случае обучаемый) ведется в удобном для последнего темпе, что обеспечивает лучшее усваивание материала. Каждый студент имеет возможность изучать разделы темы в удобном для него порядке. Это экономит время студента для изучения более важных для него разделов и игнорирование разделов, которые ему уже знакомы. В то же время преподаватель имеет возможность уделять внимание студентам в индивидуальном порядке. Программа предусматривает элементы проверки знаний в виде контрольных вопросов в конце разделов. Такая система обучения дает возможность студенту самостоятельно оценить свои знания. После ответа на вопрос обучаемый получает справку о его правильности и пояснения в случае неверного ответа. После ответов на все вопросы раздела он может изучить тему вновь и вновь ответить на контрольные вопросы. Принцип "обучение + контроль" повышает уровень получаемых знаний. В предыдущих разделах были описаны многочисленные средства и методы обучения с помощью компьютера. Однако, разработка настоящей программы для обучения является необходимой и целесообразной в условиях данного учебного заведения. Целью создания данной программы является удовлетворение нужд учебного процесса с учетом технических возможностей академии, а именно разработка методических материалов по программированию с использованием ЭВМ типа IBM PC и языка Turbo-Pascal. Среди уже существующих компьютерных обучающих программ отсутствует программа для обучения работе в графическом режиме языка Turbo-Pascal. Таким образом разработка методических материалов необходима при использовании любых методов обучения. Кроме того существующие обучающие программы не отвечают ряду требований технического задания , в частности по содержанию программы, ее оформлению, ограничению по продолжительности сеанса, выбору языка программирования. Разработка данной программы является экономически обоснованной. Существует теоретическая возможность приобретения академией уже существующего аналогичного программного обеспечения и адаптация его для решения конкретной задачи по обучению работе в графическом режиме. Это потребует значительных материальных затрат как на приобретение такого программного обеспечения , так и на его обработку и подготовку к работе . В сложившейся экономической ситуации такое решение проблем для академии невозможно. Данная дипломная работа решает вопрос обеспечения учебного процесса необходимым компьютерным сопровождением и экономит материальные средства академии. 2. ОПИСАНИЕ БАЗЫ ДАННЫХ 2.1. Методическое оснащение базы данных В 1992 году фирма Borland International выпустила два пакета программирования, основанные на использовании языка Паскаль -Borland Pascal 7.0 и Turbo Pascal 7.O. Первый пакет включает в себя три режима работы: в обычном режиме операционной системы MS DOS, в защищенном режиме MS DOS и в среде Windows. Этот пакет требует для использования своих возможностей довольно большой объем памяти -примерно 30 Мбайт на Жестком диске и не менее 2 Мбайт оперативной памяти. Пакет Turbo-Pascal 7.0 обладает ограниченными возможностями и дает возможность работать только в обычном режиме MS DOS. Однако, он доступен для использования на обычных персональных компьютерах типа IBM и его стоимость по сравнению с первым пакетов значительно ниже» Turbo-Pascal включает в себя язык программирования - одно из расширений языка Паскаль для ЭВМ типа IBM и среду, предназначенную для написания, отладки и запуска программы. Язык имеет расширенные возможности по сравнению со стандартом, хорошо развитую библиотеке модулей, позволяющих использовать возможности операционной системы, создавать оверлейные структуры, организовывать ввод-вывод, формировать графические изображения и т.д. Целью написания данной программы является ознакомить студентов с возможностями языка Turbo-Pascal б.0\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Схема обращений процедур к файлам базы данных
Структура базы данных приведена в таблицах 2, 3, 4 Таблица 2Структура базы данных. Теория
Поле Р1 - флаги: * - признак выделения строки цветом 7,8 - признак наличия иллюстрации к тексту и ее номер О - признак конца файла Поле Р2 - текст. Таблица 3Структура базы данных. Вопросы
Таблица 4
Поле Р1 - флаги: * - признак конца вопроса 1 - признак наличия иллюстрации и ее номер О - признак конца файла Поле Р2 - номера вопросов. Поле РЗ - флаги: 1,2,3,4 - номера ответов. * - признак конца справки Поле Р4 - текст справок. Поле Р5 - оценка. 2.3. Возможности изменения или обновления 2.3.1. Теория Данная структура базы данных является удобной для использования . Она легко может быть дополнена в случае необходимости, частично или полностью заменена. Файлы теоретической части являются файлами типа запись и содержат по два поля. Первое поле - Р1 . Так оно названо в программе и под него отведен один символ. Это поле используется как поле флага и анализируется программой с помощью условного оператора CASE. Значения флагов поля Р1 приведено в табл.5 Таблица 5
Второе поле - Р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
Второе поле - Р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
Поле Р2 содержит номера вопросов от 01 до 99. Под это поле отводится 2 знака. Программа, считывая поле Р2 анализирует его значение и, если оно соответствует нужному номер вопроса, то начинает поиск нужного номера ответа в поле РЗ вплоть до появления признака конца вопроса в поле Р1. Поле РЗ - поле флагов. Под него отведен один знак. Числа 1,2,3,4 - номера ответов. При полном обновлении базы данных возможно увеличить или уменьшить количество вариантов ответов. Однако, необходимо при этом внести изменения и в программу. Поле РЗ содержит и признак конца справки. Таким образом, программа, найдя нужный номер ответа начинает считывать и выводить на экран справку -содержимое поля Р4 до появления значка '*' в поле РЗ. Поле Р4 содержит текст справок. Под него отведено 68 знаков. Необходимо при написании базы данных четко соблюдать размеры всех полей. Поле Р5 - поле оценки. Под него отведено 3 знака. Это обусловлено разницей в длине ASCIIZ-строки и строки типа string. Оценка должна выглядеть следующим образом: 001, 002, 003, 004, или 005. Программа обращается к этому полю когда находит нужный номер ответа Поэтому оценку следует помещать в поле Р5 в записях, содержащих номера ответов. Как правило, текст справки не превышает текста вопроса, но следует помнить, что объем ее не должен превышать объема экрана, т.е. 32 строки. При внесении изменений в файл справок следует помнить следующее: 1) поле Р1 должно занимать 1 символ. В случае отсутствия в нем флага поле должно быть пустым; 2) поле Р2 должно занимать 2 символа; 3) поле РЗ должно занимать 68 символов. Если в строке необходимо поместить больше символов, то их следует перенести на другую строку, а если значащих символов меньше 68, то следует "добить" символы "пробел" так, чтобы строка составляла всего 68 символов; 4) текст справки должен начинаться номером ответа и кончаться символом '*' , содержащимися в поле РЗ; 5) запись, содержащая в поле Р1 признак конца вопроса не считывается далее и не выводится на экран. Поэтому конец вопроса и конец последней справки в вопросе не должны попадать в одну запись, т.е. должны находится в разных строках. 6) символ - признак иллюстрации можно ставить в любом месте поля Р1 напротив текста справки. Место нахождения иллюстрации будет определено программным путем; 7) в конце файла следует поставить значок 'О1 в поле Р1. Остальные поля этой записи считываться не будут ; 8) после окончания написания базы данных следует проверить еще раз соответствие всех строк необходимой длине (после нажатия клавиши END курсор должен останавливаться в позиции 76); Всякое внесение изменений в базу данный вплоть до ее полного обновления требует внимания и точности . Необходимо четко соблюдать размеры всех полей записи. В противном случае возможны ошибки. Например, появление значков конца строки в выводимом тексте, отсутствие вывода результатов работы и др.. 3. ОПИСАНИЕ ПРОГРАММЫ 3.1. Общие сведения Настоящая дипломная работа посвящена разработке программы для обучения работе в графическом режиме языка Turbo-Pascal. Цели и задачи данной разработки, а также методика обучения с помощью данной программы/ возможности языка были описаны выше, в разделе "Назначение обучающей программы". Программа написана на языке Turbo-Pascal. Этот язык является языком высокого уровня . Он имеет рад преимуществ перед другими языками высокого уровня. Самые главные его достоинства - это простота и естественность, великолепные сервисные возможности. Наличие типа запись, возможности модульного программирование, наличие библиотеки стандартных модулей дают возможность быстро и эффективно создавать самые разнообразные программные продукты начиная от решения простейших вычислительных задач и кончая сложными современными системами управления базами данных и операционных систем. В данном случае с его помощью была создана программа для обучения, которая работает с базой данных. Возможности языка и его преимущества более подробно описаны в п.1.2.3 . Программа называется "Графика" . Она состоит из основной программы, содержащейся в файле с именем "Graphic", восьми самостоятельных модулей с именами Razdel1, Razdel2, Razdel3, Razdel4, Razdel5, Razdel6, Razdel7, MyBook. Основная программа формирует заставку к программе, обращается к файлу Veden, содержащему текст введения, выводит текст введения, формирует систему меню, через которое затем обращается к процедурам модулей Razdel1 – Razdel7, получает из этих процедур переменные , содержащие оценки за ответы на контрольные вопросы, присваивает их значение своим переменный, хранит их в течение всей работы с программой и отвечает за формирование раздела "Результаты Вашей работы" системы меню. Основная программа регламентирует доступ к разделам. Переменные NOMER3 - NOMER7 являются счетчиками и обеспечивают вход в процедуры модулей Razdel3 – Razdel7 не более двух раз за сеанс. При этом основная программа хранит все оценки, полученные за ответы на контрольные вопросы , и все их выводит на экран по обращению к разделу меню "Результаты Вашей работы". Модули Razdel1 – Razdel7 содержат процедуры с именами Razdel10 - Razdel70 соответственно. Эти процедуры устанавливают связь с файлами базы данных, выводят текст теории, вопросов, справок, содержат программный текст иллюстраций к теории, вопросам и справкам. По результатам ответов студента на контрольные вопросы процедура формирует переменную. После отработки модуля значение этой переменной переприсваивается определенной переменной основной программы. И основная программа хранит это значение до окончания работы с программой. База данных состоит из трех логических частей, которые содержат теоретическую часть, контрольные вопросы и справки. Они расположены в каталоге следующим образом. Теоретическая часть размещается в восьми файлах типа запись . Файлы с именами Raztex1, Raztex2, Raztex3, Raztex4, Raztex5, Raztex6, Raztex7 содержат тексты теоретической части по семи разделам соответственно. Файл Veden содержит текст введения. К разделам , содержащимся в файлах Razdel3 – Razdel7 имеются контрольные вопросы , размещенные в файлах Joing, Joi, Join, Jois, Jos, и справки , размещенные в файлах lod, lodi, lodin, lodis, los. Файлы контрольных вопросов и справок так же являются файлами типа запись. Структура базы данных, ее содержание, возможности дополнения, обновления или частичного изменения, схема обращений процедур к базе данных подробно описаны в разд.2. Модуль MyBook является библиотечным модулем. Он включает в себя четыре процедуры, которые неоднократно встречаются в текстах основной программы и процедур рабочих модулей. Процедура OKNO -формирует экранную рамку, в которой будут размещаться тексты программы. Процедура OKN01 формирует заставку с надписью "Контрольные вопросы". Процедура GraphRegim обеспечивает вход в графический режим. Эти три процедуры используются практически во всех процедурах и в основной программе. Процедура Diogramraa формирует последнюю иллюстрацию к разделу 5 и вынесена в данный модуль так как занимает значительный объем. Разработанная программа является самостоятельной программной единицей. Для ее функционирования необходимо иметь в арсенале следующие средства : персональный компьютер типа IBM или совместимый с ним, дисплей с графическим адаптером типа EGA, имеющим объем видеобуфера 256 К, графическим выводом 640x350 пиксел, 16 регистрами палитры. В качестве программного обеспечения необходимо иметь DOS, инструментальную интегрированную среду Turbo-Pascal 7.0, файлы bold.chr, goth.chr, sans.chr, trip.chr нестандартных шрифтов, файлы с текстом программы, файлы , содержащие базу данных. Для работы с программой , при условии наличия выще указанных технических и программных средств, следует обратиться к файлу с именем "Graphic". При этом необходимые данные загружаются в оперативную память компьютера и далее работа с программой идет в диалоговом режиме, не требующем вмешательства программиста. Выход из программы осуществляется также по желанию обучаемого при входе в раздел меню "Конец работы". 3.2. Функциональное назначение Программа для обучения работе в графическом режиме предназначается для обучения студентов младших курсов Санкт-Петербургской государственной Академии аэрокосмического приборостроения навыкам программирования, а именно работе в графическом режиме языка Turbo-Pascal . Для работы с настоящей программой необходимо знание стандарта языка, интегрированной среды и элементарным навыкам работы с персональным компьютером . Программа содержит теоретический материал по семи разделам: 1) Программирование графических режимов. 2) Управление курсором и полем рисования. 3) Формирование прямолинейных монохромных изображений. 4) Управление цветом и стилем изображений. 5) Формирование цветных криволинейных изображений. 6) Формирование графических текстов. 7) Программирование озвученных динамических сцен. Эти разделы содержат наименование процедур и функций, их параметры, условия и примеры использования в программах. Текст сопровождается необходимыми иллюстрациями. Ввиду отсутствия лекций по данной теме, наличие обучающей программы дает возможность студентам самостоятельно и с минимальными затратами времени освоить работу с графикой . Разделы 3-7 содержат контрольные вопросы. Элемент контроля знаний обеспечивает студентам возможность самоконтроля, резко повышает уровень знаний, т.к. в случае необходимости обучаемый имеет возможность повторно изучить любую тему и ответить на контрольные вопросы - проверить Полученные знания. Программа имеет специальное назначение. Она может быть использована только для обучения заданной теме, а именно работе в графическом режиме. База данных, в случае необходимости, может быть изменена, дополнена. Однако эти изменения могут быть сделаны только в пределах темы. При этом, если к новому теоретическому материалу или контрольным вопросам необходимо сделать некоторые иллюстрации, то в таком случае потребуется вмешательство программиста. Текст иллюстраций содержится в процедурах модулей и вмешательство в их содержимое требует специальных знаний. Существует теоретическая возможность изменения темы программы. Однако это потребует изменения меню программы, полной замены базы данных и соответственно внесения изменений в процедуры модулей. А именно - создание новых иллюстраций. Все это потребует очень больших трудозатрат программиста и эквивалентно созданию новой программы. 3.3. Описание логической структуры Обучающая программа "Графика" в своем составе содержит основную программу "Graphic" , семь рабочих модулей, один библиотечный модуль. Назначение каждого из них подробно описано в п,3.1. Текст программы приведен в приложении. Структура обучающей программы приведена на рис. 1 Основная программа "Graphic" вызывает на исполнение модули Razdel1 – Razdel7. Каждый модуль содержит по одной процедуре, которые обеспечивают связь с файлами базы данных, вывод текста теории и контрольных вопросов на экран, вывод справок, регистрацию оценок. Использование модулей в данном случае является целесообразным по следующим причинам. Это удобно в случае дополнения или изменения базы данных. Если потребуется внесение дополнительных иллюстраций, то нетрудно войти в требуемый раздел и внести дополнения в условный оператор CASE. Модуль является автономно компилируемой программной единицей. Это позволяет работать с одним из модулей программы, не нарушая при этом другие, облегчает поиск ошибок программирования. В данной работе каждый модуль отвечает за обеспечение изучения одного из разделов темы "Графический режим". И один модуль - МУВООК - является библиотечным, содержит процедуры, встречающиеся часто во всех модулях. После окончания работы модуля управление возвращается к главной программе. Главная программа использует в своей работе переменные модулей, а именно переменные формирования оценок REZ3 - REZ7. Подробнее эти переменные описаны ниже в подразделе 3.6. Схема алгоритма функционирования программы приведена на рис. 2 Алгоритм функционирования рабочих модулей приведен на рис. 3 Рассмотрим первый алгоритм. Структура обучающей программы Рис. 1 Алгоритм функционирования программы
Рис. 2 Алгоритм функционирования рабочих модулей Рис. 3 Блок номер 1 - формирование заставки. В текст заставки входит название программы, "Графика", ее назначение, имя разработчика. Формируется заставка в графическом режиме. Блок 2 - процедура Windo1. Эта процедура устанавливает связь с файлом текстом введения и выводит его на экран. Более подробно работу блока можно описать с помощью блоков 1-4,7 изображенных на рис. Блок 3 - выбор режима работы. В данном случае обучаемому требуется выбрать один из трех режимов: работа модуля - изучение теории и ответы на контрольные вопросы, Вывод результатов - получение ведомости оценок, конец - выход из программы, т.е. окончание работы с ликвидацией всех ее результатов. Главная программа содержит процедуру VERTIKALNOE_MENU , которая формирует окно меню программы. Процедура написана в графическом режиме. Меню содержит девять разделов, названия которых соответствуют фактическим параметрам упомянутой процедуры. Выбор режима работы, т.е. выбор соответствующего названия раздела осуществляется с помощью условного оператора CASE. В операторе CASE выражением, значение которого вычисляется , является параметр REGIME процедуры VERTIKALNOE__MENU. Он может принимать значения 1 - 9 . На экране это соответствует девять положениям курсора. Таким образом, если параметр REGIME принимает значения 1 - 7 , то далее управление передается модулю с соответствующим именем. На схеме алгоритма -блоку 5 . Если параметр REGIME принимает значение 8, то управление переходит к блоку схемы с номером 4 и производится вывод результатов работы. Если же параметр REGIME равен 9 , то работа с программой заканчивается. Блок 4 - вывод результатов. Этот процесс оформлен в главной программе как составной оператор условного оператора CASE. Он выполняется при условии, что параметр REGIME равен 8. В операторе вывода результатов производится формирование самой ведомости оценок в виде таблицы. В эту таблицу вписываются с помощью оператора writeln переменные главной программы, содержащие оценки за работу с программой. Подробнее формирование этих переменных будет описано в подразделе 3.6. После отработки составного оператора с выводом результатов программа возвращается в окно меню. Блок 5 - отработка модуля. Это - рабочий блок . При входе в этот режим главная программа передает управление одному из семи рабочих модулей - RAZPEH, RAZDEL2, RAZDEL3, RAZDEL4, RAZDEL5, RAZDEL6, RAZ0EL7. Модули обеспечивают изучение семи разделов по теме "Графический режим". Работа модулей описана подробнее в данном подразделе ниже. Схема алгоритма функционирования модулей приведена на рис. При входе в режим "Конец" обучаемому еще раз задается вопрос: "Вы хотите закончить работу с программой Y/N ? " При нажатии на клавишу "У"("Н") программа заканчивает свою работу . При этом все результаты работы с контрольными вопросами уничтожаются. При нажатии на любую другую клавишу программа возвращается в окно меню. Рассмотрим подробнее алгоритм функционирования рабочих модулей, изображенный на рис. Блок 1 - процедура GraphRegim. Эта процедура содержится в библиотечном модуле МУВООК. Она осуществляет вход в графический режим. Следующие далее блоки 2-8 обеспечивают вывод теоретической части на экран. Блок 2 - Связь с файлом теории. Этот блок содержит операторы связи с необходимым файлом текста теории. Таблица соответствия между процедурами модулей и файлами базы данных приведена в подразделе 2.2. Файл открывается для чтения, производится проверка на наличие файла в каталоге . Блок 3, блок 13 - процедура ОКНО . Эта процедура содержится в библиотечном модуле MYBOOK и отвечает за оформление экрана. Она создает рамку и устанавливает фоновый цвет и цвет рисования основного текста. Блок 4 - вывод текста теории. Этот блок обеспечивает считывание из открытого файла записей и вывод содержимого поля Р2 на экран . Цикл Рог выводит на экран 31 строку текста. После вывода 31 строки на экран, экран очищается и выводятся следующие 31 строка вплоть до появления признака конца файла в поле Р1 очередной считываемой записи. Проверка признака конца файла оформлена оператором цикла REPEAT . В процедурах RAZDEL6-7 использован дополнительно значок # для пометки конца строки. По этому значку с помощью оператора CASE(вывод иллюстраций)прекращается вывод текста теории. Это необходимо, т.к. в этих разделах присутствуют рисунки требующие всего экрана. Блок 5 - проверка условия наличия иллюстрации. Эта проверка производится после считывания очередной записи файла теории с помощью условного оператора CASE. С константами оператора сравнивается содержимое поля Р1. В случае наличия иллюстрации она выводится на экран. Если иллюстрация не требуется/то выполняется далее считывание текста теории и после окончания цикла REPEAT очистка экрана. Блок 6 - вывод иллюстрации. Вывод осуществляется с помощью оператора OutTextXY. Блок 7 - очистка экрана. Производится после вывода 31 строки текста. Блок 8 - проверка конца файла. Осуществляется с помощью оператора цикла REPEAT. В поле Р1 последней записи содержится значок"0". При обнаружении этого значка считывание прекращается и цикл завершает свою работу. Блоки 9 -24 обеспечивают работу с контрольными вопросами. Блок 9 - проверка наличия контрольных вопросов. Этот блок означает, что если это алгоритм работы модулей RAZDEL1 или RAZDEL2 , то блок 8 является последним и так как эти разделы не содержат контрольные вопросы, то после условной вершины блока 9 модуль заканчивает свою работу. Если же мы рассматриваем работу алгоритма для модулей, которые содержат контрольные вопросы, то по "Да" переходим к блоку 10. Блок 10 - процедура OKNO1 . Эта процедура содержится в библиотечном модуле MYBOOK и формирует заставку с надписью "Контрольные вопросы". Блок 11 - Случайный выбор номеров вопросов. Выбираются четыре номера вопросов из десяти имеющихся . Это делается случайным образом с помощью генератора случайных чисел RANDOMIZE и функции Random, которая формирует случайное число. Выбранные номера вопросов запоминаются в массиве М[0..3] . Элементы этого массива используются при поиске нужного вопроса при выводе текста теоретической части и при поиске нужного номера вопроса для вывода текста справки. Блок 12 - связь с файлом текста вопросов. Блок содержит операторы , устанавливающие связь с файлом текста вопросов, открывающие его для чтения и обеспечивающие проверку наличия файлов в каталоге. Блок 14 - вывод текста очередного вопроса. Записи начинают считываться по одной. Поле Р2 сравнивается с содержимым массива случайно выбранных чисел М[0..3] . При обнаружении необходимого номера вопроса начинается его вывод на экран с помощью процедуры OutTextXY вплоть до появления признака конца вопроса "*", содержащегося в поле Р1. Блок 15 - проверка наличия иллюстрации. Признаком наличия иллюстрации служит любой символ кроме "*" , "О" в поле Р1. Если при считывании очередной записи обнаружен признак наличия иллюстрации, то она выводится на экран . Проверка наличия иллюстрации и ее выбор осуществляется с помощью условного оператора CASE. Блок 16 - вывод иллюстрации. Вывод осуществляется с помощью оператора outTextXY других операторов формирования графических изображений в зависимости от содержания иллюстрации. Блок 17 - проверка введенного числа. При выводе очередного вопроса на экран внизу экрана располагается надпись : "ВВЕДИТЕ НОМЕР ПРАВИЛЬНОГО ОТВЕТА ___ " . Обучаемый должен ввести число 1,2,3 или 4. Если введено какое-либо другое число, то на экране останется текст вопроса, место для ввода номера ответа останется пустым. Если же число введено верно, то программа переходит к обработке введенной информации. Блок 18 - связь с файлом текста справок. Устанавливается связь с файлом текста справок, файл открывается для чтения, осуществляется проверка наличия файла в каталоге. Блок 19 - вывод текста справок. Поиск нужной справки происходит вначале с помощью условного оператора If , когда выбирается запись с нужным номером вопроса . Далее в цикле REPEAT вплоть до появления Признака конца вопроса "*" в поле Р1 происходит поиск нужного номера ответа. Когда номер ответа найден, он выводится на экран . Блок 20 и 21 - аналогичны блокам 15 и 16. Блок 22 - фиксация результатов. При считывании и выводе на экран первой записи справки переменной REZY присваивается значение поля Р5 файла текста справок, это поле содержит оценку за ответ на вопрос. Переменная REZY накапливает оценки за четыре ответа. После окончания работы модуля значение этой переменной присваивается переменной главной программы ballY[nomerX]. При повторном вхождении в данный раздел переменная REZY обнуляется. Блок 23 - очистка экрана. Производится с помощью процедуры ClearDevice. Блок 24 - Проверка условия конца вопросов. Если вопрос не последний, то программа возвращается к выполнению блока 14 и далее. Если уже считано и выведено четыре вопроса , то модуль заканчивает свою работу. 3.4. Используемые технические средства Для работы с данной программой необходимо иметь следующие технические средства: персональный компьютер типа IBM или совместимый с ним , растровый дисплей с графическим адаптером типа EGA, который будет иметь объем видеобуфера 256 К , графический вывод 640x350 пиксел, 16 регистров палитры. В качестве программного обеспечения для работы данной программы необходимо иметь DOS, инструментальную интегрированную среду Turbo-Pascal 7.0, набор файлов нестандартных шрифтов bold.chr, goth.chr, sans.chr, trip.chr. 3.5. Вызов и загрузка Для работы программы необходимо иметь в памяти компьютера следующие файлы: загрузочный модуль graphic.exe, модули razdell.tpu, razde!2.tpu, razdelS.tpu, razde!4.tpu, razdelS.tpu, razde!6.tpu, razde!7.tpu, библиотечный модуль mybook.tpu, файлы нестандартных шрифтов bold.chr, goth.chr, sans.chr, trip.chr , модуль из библиотеки языка Pascal graph.tpu, драйвер egavga.bgi, текстовые файлы базы данных: raztexl.pas, raztex2.pas, raztexS.pas, raztex4.pas, raztexS.pas, raztex6.pas, raztex7.pas - содержащие тексты теории, joing.pas, iod.pas , joi.pas, iodi.pas, join.pas, iodin.pas, jois.pas, iodis.pas, jos.pas, ios.pas - содержащие текст вопросов и справок. Все они хранятся на жестком диске. Запуск программы осуществляется обращением к загрузочному модулю graphic.exe. При этом все необходимые модули автоматически загружаются в оперативную память Объем данной обучающей программы 80 000 байт. Любая IBM PC имеет объем оперативной памяти, доступной для пользовательских программ, не менее 640 Кбайт. Таким образом объем данной обучающей программы является незначительным и никаких трудностей с использованием оперативной памяти нет. Программа имеет одну входную точку - начало программы. 3.6. Входные и выходные данные Программа для обучения "Графика", работает в диалоговом режиме. Однако, ЭВМ ведет диалог с обезличенным пользователем. ЭВМ не регистрирует фамилии обучаемых и соответственно не ведет журнал. От программиста или оператора не требуется ввод какой-либо информации для запуска программы и начала ее работы. Запуск осуществляетя обращением к загрузочному модулю graphic.exe. От обучаемого требуется при ответе на контрольные вопросы ввести номер правильного ответа. Согласно введенному числу из файла справок считывается число - оценка за ответ. Оценки за все ответы складываются и затем выставляется одна оценка за работу со всеми вопросами раздела. Таким образом вводимый обучаемым номер ответа можно рассматривать как входную информацию, которая после обработки формирует определенные выходные данные - оценку работы за сеанс. Контрольные вопросы содержат разделы 3 - 7 . Доступ к изучению этих разделов ограничен. Возможно только два раза ответить на контрольные вопросы этих разделов. Все получение оценки фиксируются и хранятся в переменных главной программы до окончания работы с программой. По разделу меню "Результаты Вашей работы" можно получить на экране ведомость оценок. Обращение к данному разделу меню возможно в любой момент работы. Выводимые на экран оценки сохраняются до выхода из программы. Программа не предусматривает вывод этих оценок на печать или хранение их в памяти компьютера после окончания ее работы . Таким образом выходными данными программы являются оценки, выводимые на экран дисплея. В табл. 8 приведено соответствие между переменными главной программы, содержащими оценки, и аналогичными переменными процедур. NomerX - переменная, регламентирующая число возможных обращений к процедурам. Может принимать два значения - 1 и 2. REZY - переменная процедуры, которой присваивается значение выставляемой оценки. ballY[NomerX] - Переменная, хранящая значение оценки в главной программе. Формируется следующим образом: baUY[NomerX] :=REZY Itog[NomerX] - переменная накопления результатов работы за сеанс по итогам двух попыток. Формируется следующим образом: Itog[NomerX]:=ItogTNomerX3+baIlY[NomerX] tog[NomerX] - переменная вывода результатов работы за сеанс по итогам двух попыток, формируется следующим образом: tog£NonterX3: =Round(Itog[NomerX]/K[NomerX]), где К[NomerX] - переменная, накапливающая число попыток ответов на контрольные вопросы. Таблица 8Соответствие между переменными главной программы и процедур
4. ОПИСАНИЕ ПРИМЕНЕНИЯ 4.1. Назначение программы Программа для обучения работе в графическом режиме языка Turbo-Pascal предназначена для обучения студентов младших курсов Санкт-Петербургской государственной академии аэрокосмического приборостроения. Программа рассчитана на студента, знакомого со стандартом языка, имеющего понятие об инструментальной интегрированной среде , имеющего элементарные навыки работы с персональным компьютером. Программа содержит семь разделов для изучения по теме "Графический режим языка Turbo-Pascal" : программирование графических режимов, управление курсором и полем рисования, формирование прямолинейных монохромных изображений, управление цветом и стилем изображений, программирование цветных криволинейных изображений, формирование графических текстов, программирование озвученных динамических сцен. Эти разделы практически полностью охватывают тему. Программу Предполагается использовать как реальное средство обучения. Так как лекционных занятий по теме "Графические средства языка Turbo-Pascal" нет, то наличие данной программы восполняет пробел в теоретической и частично практической подготовки студентов по данной теме. Внедрение данной программы облегчит труд и студентов и преподавателей. Студенты смогут овладеть необходимыми знаниями в более короткий срок и будут освобождены От необходимости поиска нужной литературы. Кроме того режим контроля позволит студенту без помощи преподавателя разобраться в своих ошибках, повторить изучение и вновь проверить свои знания с помощью контрольных вопросов. В процессе работы с обучающей программой студент получает и практические навыки общения с ЭВМ, что в условиях дефицита машинного времени также важно. Преподаватель в этом случае освобождается от объяснения студентам теоретического материала и получает достаточно времени для индивидуальной работы с ними. Работая с программой каждый обучаемый может затратить неодинаковое время на изучение каждого раздела. Индивидуальный темп работы обеспечивает повышение качества знаний. 4.2. Условия применения 4.2.1. Технические средства Предлагаемая программа для обучения написана на языке Turbo-Pascal 7.0 . Она предназначена для установки на IBM PC и требует наличия монитора со следующими характеристиками: графический адаптер типа EGA, который будет иметь объем видеобуфера 256 К , графический вывод 640x350 Пиксел, 16 регистров палитры. Необходимо иметь в качестве программного обеспечения операционную систему DOS , инструментальную интегрированную среду Turbo-Pascal 7.0 , набор файлов нестандартных шрифтов bold.chr, goth.chr, sans.chr, trip.chr. 4-2.2. Общие характеристики входной и выходной информации Программа для обучения "Графика" работает в диалоговом режиме. При этом ЭВМ работает с обезличенным пользователем и требует лишь механической реакции на свои действия. Для начала работы программы достаточно обратиться к загрузочному модулю graphic.exe. В качестве входной информации в данной программе можно рассматривать вводимы обучаемым номера правильных ответов при работе с контрольными вопросами. Введение номера ответа влечет за собой следующие действия программы: Введенный номер считывается с клавиатуры и фиксируется в переменной СН. Затем при считывании файла справок значение этой переменной сравнивается со значением соответствующего поля номеров ответов. При совпадении этих значений переменной оценки RE2X присваивается значение поля Р5 , в котором расположены оценки за все варианты ответов. Далее эта переменная накапливает оценки за все четыре ответа/ обрабатывает их и формирует оценку за работу с разделом. Эта оценка передается в главную программу. Главная программа обеспечивает вывод этих оценок на экран по разделу меню "Результаты Вашей работы". Кроме того главная программа обрабатывает все оценки по разделам и формирует оценку работы за сеанс. Таким образом значения переменных вывода оценок являются выходной информацией. Подробнее процесс формирования выходной информации описан в подпункте 3.6. 4.3. Пример использования В этом подпункте описан пример конкретного использования программы для обучения работе в графическом режиме. Итак, программа запущена на исполнения. На экране появляется заставка с названием программы - "Графика", полное наименование -"Программа для обучения работе в графическом режиме", фамилия разработчика, место и год создания. Для "перелистывания экранов" необходимо пользоваться клавишей Enter. Нажимаем Enter. На экран выводится текст введения. В нем кратко описано содержание данной обучающей программы. После его прочтения можно перейти непосредственно к работе. Нажимаем Enter. На экране появляется окно вертикального меню. Внешний вид меню изображен в приложении 3. Перемещая курсор с помощью клавиш-стрелок вниз и вверх мы можем выбрать желаемый режим работы. Их, как было описано выше в подразделе 3.3 ,три. Выберем режим обучения. Допустим, курсор остановился на разделе 3 с названием "Формирование прямолинейных монохромных изображений". Для изучения этого раздела следует нажать клавишу Enter. Нажимаем Enter. Появляется экран , оформленный небольшой по толщине рамкой во весь экран. В верхней строке помещается название изучаемого раздела : ФОРМИРОВАНИЕ ПРЯМОЛИНЕЙНЫХ МОНОХРОМНЫХ ИЗОБРАЖЕНИЙ. В левой части экрана расположен текст теории, который содержит наименования процедур, выделенных красным цветом, и пояснения их работы. В правой части экрана расположены рисунки, поясняющие их работу, а именно фигуры, которые можно построить с помощью данных процедур. Изучив полученную информацию, можно перейти к следующему экрану. Текст теории раздела 3 содержится на трех экранах. Изучив содержимое третьего экрана нажимаем клавишу Enter. На экране появляется заставка с надписью "Контрольные вопросы". Далее , после очередного нажатия Enter , на экран будет выведен текст первого вопроса. Экран вопроса выглядит следующим образом. Экран оформлен той же рамкой, что и экран теории. Верхние строки занимает текст вопроса, выделенный крупным шрифтом. Ниже вертикально расположены четыре варианта ответа на поставленный вопрос. Если выведенный вопрос содержит иллюстрацию, то она расположена на уровне вариантов ответов в правой части экрана. Нижнюю строку экрана занимает надпись : "ВВЕДИТЕ НОМЕР ПРАВИЛЬНОГО ОТВЕТА ___". Прочитав все варианты и проанализировав их нужно выбрать один и ввести его, нажав клавишу с соответствующей цифрой. Если нажата клавиша отличная от клавиш 1,2,3 или 4, то После нажатия клавиши Enter введенный символ будет стерт, вопрос останется на экране. Номер ответа придется ввести вновь. Если введено допустимое число, то после нажатия клавиши Enter на экран будет выведен текст справки. Экран при этом оформлен аналогично экрану вопроса. Текст справки располагается в средней части экрана и содержит оценку за ответ в формулировке "правильно" или "неверно" и краткую информацию о допущенных ошибках. После нажатия Enter на экран выводится текст второго вопроса. Действия ЭВМ и обучаемого аналогичны действиям с первым вопросам. После прочтения последней справки последнего вопроса мы нажимаем Enter и возвращаемся в окно меню. Далее можно войти в любой другой раздел для изучения. Войдем в раздел "Результаты Вашей работы". Для этого переместим курсор в позицию с данным названием и нажмем клавишу Enter. На экране появилась ведомость оценок. Текст выполнен ярко-розовым цветом на синем фоне. Слева перечислены названия 7 изучаемых разделов, а справа два столбца оценок -первая попытка и вторая попытка. В графе "Формирование прямолинейных монохромных изображений" первая попытка стоит оценка (например "2"). В остальных графах стоят "О". Последняя графа левого столбца называется "Оценка работы за сеанс" . В этой графе 1 попытка стоит оценка "4". Для выхода из раздела "Результаты Вашей работы" необходимо вновь нажать клавишу Enter. Если повторно войти в третий раздел и ответить на вопросы, а затем войти в раздел "Результаты Вашей работы", то в графе "Формирование графических режиме" вторая попытка будет стоять не "О", а оценка (например, "4"). Третий раз войти в третий раздел нельзя, т.к. разрешено сделать только две попытки. Через меню войдем в четвертый раздел "Управление цветом и стилем изображений". Порядок работы в этом разделе такой же как и в предыдущем, как и в последующих. После изучения теории отвечаем на контрольные вопросы. Закончив работу с вопросами обучаемый попадает в окно меню и вновь может узнать результаты своей работы в виде оценок. Для этого необходимо вновь войти в раздел "Результаты Вашей работы, подведя курсор к разделу с этим названием и нажав клавишу Enter. Теперь к уже имеющимся двум оценкам по разделу "Формирование прямолинейных монохромных изображений" добавилась еще одна оценка в графе "Управление цветом и стилем изображений" первая попытка (например, "5") . Изменилась оценка работы за сеанс первой попытки и стала "4". Нажав вновь клавишу Enter вернемся в окно меню. На этом закончим работу с программой. Для этого необходимо подвести курсор к разделу с названием "Конец работы". На экране появляется заставка с надписью "Вы хотите закончить работу с программой Y/N?" . Нажимаем клавишу "Y" или "Н" и выходим из программы. При нажатии любой другой клавиши на экране появится окно меню. Если после выхода из программы вновь в нее войти и через меню войти в раздел "Результаты Вашей работы", то во всех графах будут находится "О". Это означает, что при выходе из программы результаты работы с ней не сохраняются. Поэтому, перед выходом из программы следует предъявить ведомость оценок преподавателю. 5. РУКОВОДСТВО ПРОГРАММИСТА 5.1. Назначение и условия применения программы Программа для обучения работе в графическом режиме языка Turbo-Pascal предназначена для обучения студентов младших курсов СПГУАП. Она знакомит студентов в основами программирования в графическом режиме, возможностями языка и turbo-среды, дает навыки работы с компьютером. Программа содержит материал для изучения по следующим темам: 1) Программирование графических режимов. 2) Управление курсором и полем рисования. 3) Формирование прямолинейных монохромных изображений. 4) Управление цветом и стилем изображения. 5) Программирование цветных криволинейных изображений. 6) Формирование графических текстов. 7) Программирование озвученных динамических сцен. Изучение темы по данным разделам обеспечивает основная программа graphic и семь модулей RAZTEX1-RAZTEX7. Основная программа выполняет следующие функции: формирует заставку, окно меню, вызывает на исполнение модули , формирует и выводит на экран ведомость оценок. Модули RAZTEX1-RAZTEX7 выполняют функции: связь с файлами базы данных, вывод на экран текста теории, вопросов, справок, считывание оценки за ответы на вопросы из файла справок. Для успешной работы программы необходимо иметь персональный компьютер IBM или совместимый с ним, растровый дисплей с графическим адаптером типа EGA с объемом видеобуфера 256 К, разрешением экрана 640x350 пиксел, 16 регистрами палитры. В качестве программного обеспечения необходимо иметь DOS, инструментальную интегрированную среду Turbo-Pascal 7.0 . Вызов И загрузка программы подробнее описаны ниже в подразделе 5.3. 5.2. Характеристики программы Программа для обучения рассчитана на работу в течение 45 минут. Программа работает в диалоговом режиме. В начале работы студенту предлагается воспользоваться окном меню для выбора раздела для изучения. Далее выдается теоретическая часть . После нее предлагаются контрольные вопросы. Вопросы выдержаны в режиме "вопрос -четыре варианта ответа" . Обучаемому предлагается выбрать один и ввести номер правильного ответа. Введенный ответ обрабатывается и выводится на экран справка о его правильности. Инструментальная интегрированная среда Turbo-Pascal имеет хорошо развитую службу помощи. Поэтому при возникновении ошибок она выдает на экране в верхней строке код ошибки и ее название. Для избежания возникновения ошибок следует внимательно вносить изменения в базу данный и программу , если это потребуется, четко выдерживать размеры полей файлов записей базы данных. Изменения в программу вносить только после подробного знакомства с программными документами. Особое внимание следует обратить на необходимость преобразования ASCIIZ-строки в строку стандарта Pascal при выводе ее на экран, а также преобразование символьного представления числа в двоичную форму перед тем как проводить сравнения его с числом. Если на экране при выводе текста появляются значки - признаки конца строки - это значит, что не соблюдены длины полей в соответствующем файле базы данных. 5.3. Обращение к программе Для успешной работы программы необходимо иметь в памяти компьютера следующие файлы: загрузочный модуль graphic.exe, библиотечные модули RAZDELl.tpu, RAZDEL2.tpu, RAZDEL3.tpu, RAZDEL4.tpu, RAZDELS.tpu, RAZDEL6.tpu, RAZDEL7.tpu, MYBOOK, файлы нестандартных шрифтов bold.chr, goth.chr, sans.chr, trip.chr, модуль среды Turbo-Pascal graph.tpu, драйвер egavga.bgi, текстовые файлы базы данных : raztexl.pas, raztex2.pas, raztexS.pas, raztex4.pas, raztexS.pas, raztex6.pas, raztex7.pas - содержащие тексты теоретической части, joing.pas, iod.pas, joi.pas, iodi.pas, join.pas, iodin.pas, jois.pas, iodis.pas, jos.pas, ios.pas - содержащие тексты вопроов и справок . Все эти файлы хранятся на жестком диске. Запуск программы на исполнение осуществляется обращением к загрузочному модулю graphic.exe. При этом необходимые модули автоматически подгружаются в оперативную память компьютера. Объем данной обучающей программы 80 000 байт, что значительно меньше объема оперативной памяти любого персонального компьютера. Необходимо, чтобы загрузочный модуль, библиотечные модули программы, а также файлы нестандартных шрифтов, модуль graph.tpu и драйвер egavga.bgi находились в одном каталоге. В противном случае работа программы становится невозможной. 5.4. Входные и выходные данные Как пояснялось выше данная обучающая программа работает в диалоговом режиме с обезличенным пользователем. Программа не требует ввода фамилии, группы и т.д. и соответственно не веден никаких журналов. Для запуска программы на исполнение от программиста не требуется ввод какой-либо входной информации. В качестве входной информации можно рассматривать введение обучаемым номеров правильных ответов. Введенное число считывается, анализируется и в результате выводятся на экран оценки, являющаяся выходными данными. Оценку можно увидеть , войдя в раздел "Результаты Вашей работы". Ведомость результатов работы сохраняется в течение всех работы с программой, однако после выхода из программы ведомость ликвидируется. Таким образом выходная информация имеет место, однако не сохраняется. Подробнее о процессе формирования выходных данных можно узнать из подраздела 3.6. 6. РУКОВОДСТВО ОПЕРАТОРА 6.1. Назначение программы Программа для обучения работе в графическом режиме "Графика" предназначена для обучения студентов младших курсов Санкт-Петербургской государственной академии аэрокосмического приборостроения работе с графическим режимом языка Turbo-Pascal. Программа предусматривает изучение темы по семи разделам , которые оформлены в семи модулях. Программу предполагается использовать для обучения студентов различных специальностей. Изложенный в ней материал дает возможность студентам быстро и эффективно овладеть навыками работы в графическом режиме. Подробнее с назначением данной обучающей программы можно ознакомиться в подразделе 1.2. 6.2. Условия выполнения программы Данная обучающая программа написана на языке Turbo-Pascal 7.0 Для ее успешной работы необходимо наличие персонального компьютера типа IBM или совместимого с ним. Программа написана в расчете на графический адаптер типа EGA с объемом видеобуфера 256 К, графическим выводом 640x350 пиксел, 16 регистров палитры. Перечисленные аппаратурные средства являются минимально необходимыми для работы программы. В качестве программного обеспечения необходимо иметь DOS, Turbo-Pascal 7.0, в текущем каталоге - файлы нестандартных шрифтов, используемые программой: goth.chr, sans.chr, trip.chr, bold.chr, библиотечный модуль Turbo-Pascal - graph.tpu, драйвер egavga.bgi. Непосредственно для работы программы требуется иметь в текущем каталоге загрузочный модуль программы "Графика" - graphic.exe, библиотечные модули программы - RAZDELl.tpu, RAZDEL2.tpu, RAZDELS.tpu, RAZDEL4.tpu, RAZDELS.tpu, RAZDEL6.tpu, RAZDEL7.tpu, файлы базы данных - raztexl.pas, raztex2.pas, raztex3.pas, raztex4.pas, raztexS.pas, raztex6.pas, raztex7.pas, joing.pas, joi.pas, join.pas, jois.pas, jos.pas, iod.pas, iodi.pas, iodin.pas, iodis.pas, ios.pas. 6.3. Выполнение программы Для обеспечения загрузки, запуска, выполнения и завершения программы оператору следует выполнить следующие действия: 1) Включить компьютер и подготовить его к работе. 2) Проверить наличие на данной ЭВМ необходимых для выполнения программы программных средств перечисленных в подразделе 6.2. 3) В случае отсутствия каких-либо файлов в текущем каталоге, но наличии их на другом диске, переписать в текущий каталог пользуясь командами Norton Commander. 4) Запуск программы осуществляется из Norton Commander. Необходимо обратиться к загрузочному модулю программы с именем graphic.exe. При этом необходимые модули автоматически будут загружены в оперативную память. Далее программа будет выполняться в диалоговом режиме. На экране появится заставка с названием программы. 5) Чтобы работать с программой необходимо "листать" экраны с помощью клавиши Enter. При работе с вопросами вводить номер правильного ответа с клавиатуры путем нажатия на клавиши с соответствующими цифрами. 6) Для выхода из программы необходимо войти в раздел меню "Конец работы" и нажать клавишу с символом "Y" или "Н". После этого для возвращения в Norton Commander необходимо нажать любую клавишу. 7) В случае внезапного прекращения работы программы или начального отказа от запуска вернуться в Norton Commander и еще раз проверить наличие необходимого программного обеспечения. Если ошибка загрузки и запуска не найдена, видимо ошибка в программе или базе данных и следует обратиться к программисту. 6.4. Сообщения оператору В процессе работы программы оператору могут выдаваться следующие сообщения. При окончании работы с программой , после ответа на вопрос "Вы хотите закончить работу с программой Y/N ?", на экран, закрашенный розовым цветом выдается сообщение "Press ENTER to return to the Norton Commander". По этому сообщению следует нажать клавишу ENTER и выйти в Norton Commander. Работа с программой завершена. Если в процессе выполнения программы не найден файл базы данных, к которому в данный момент обращается программа, то на экран выводится сообщение "Runtime error 002 at 0125:04E5. Press ENTER to return to the Norton Commander". По этому сообщению следует нажать клавишу ENTER, выйти в Norton Commander, проверить наличие файла базы данных который не был найден. Если файл отсутствует, то следует его загрузить в текущий каталог. Если файл имеется в каталоге, то вероятнее всего ошибка в программе и следует обратиться к программисту. В любом случае существует возможность исключить неисправный модуль и продолжать работу с программой . Эту задачу может также решить программист. Если в процессе выполнения программы в определенный момент времени файл базы данных найден, однако он пуст, на экран выводится сообщение:"Runtime error 100 at 01B6:076А. Press ENTER to return to the Norton Commander". По этому сообщению оператору следует нажать клавишу ENTER, вернуться в Norton Commander, проверить содержимое файла. Если на экране появляются значки признака конца строки, а затем надпись "Runtime error 100 at 0454:OOAF. Press ENTER to return to the Norton Commander" , то это означает, что ошибка содержится в файле базы данных, а именно не соблюдены длины полей записей. При возникновении такой ошибки следует обратиться к программисту. 7. ТЕХНОЛОГИЯ ИСПОЛЬЗОВАНИЯ ПРОГРАММЫ Предлагаемый программный продукт является средством обучения студентов работе в графическом режиме алгоритмического языка TURBO-PASCAL 6.0\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 Таблица Затраты времени на разработку программы, чел.-дн.
Для составления перечня работ разобьем компоненты на составляющие следующим образом: 1) разработка требований: разработка требований к программному обеспечению, разработка методических материалов; 2) составление алгоритма: составление алгоритма; 3) написание программы: написание основной программы, написание процедур, создание базы данных; 4) отладка: отладка основной программы, отладка модулей, общая отладка. Оценку трудоемкости проводим в соответствии с данными табл. 9 Перечень работ и их трудоемкость приведены в табл. 10 Таблица 10 Перечень работ по созданию обучающей Программы
Продолжение табл. 10
Как видно из приведенной выше таблицы для работы над программой привлекаются инженеры-программисты 1 и 3 категории. Причем с учетом всех видов работ целесообразно привлечь одного инженера программиста 1 категории и двух инженеров-программистов 3 категории. В этом случае часть работ возможно выполнять параллельно. Ленточный график отражает порядок распределения работ между исполнителями во времени. Ленточный график возможно построить пользуясь табл. , распределив работы между исполнителями с учетом квалификации и загрузки. Ленточный график работы над созданием обучающей программы приведен в табл. 11 Таблица 11
8.2. Расчет сметы затрат К разработке обучающей программы привлечены три инженера-программиста разной категории. Специалистам назначаются месячные оклады. Из составленного выше ленточного графика видно, что инженер-программист 1 категории имеет загрузку 35 рабочих дней, один инженер-программист 3 категории имеет 35 рабочих дней и второй инженер-программист 3 категории - 28 рабочих дней. С учетом выходных и праздничных дней в среднем в месяце приходится 20 рабочих дней. Их расчета 20 рабочих дней месяца сделаем расчет фонда заработной платы. Инженер-программист 1 категории будет работать 1 месяц 15 дней, первый инженер-программист 3 категории - 1 месяц 15 дней, а второй инженер-программист - 1 месяц 8 дней. Каждому специалисту начисляется основная и дополнительная заработная плата в соответствии с отработанным временем Расчет фонда заработной платы приведен в табл. 12 Таблица 12
Предполагается работа на арендуемой технике. Стоимость одного часа машинного времени 1000 руб.. Время работы над программой составляет 98 дней, что соответствует 764 часам из расчета 8-часового рабочего дня. Арендная плата за это время составит 764 000 руб.. Отчисления на социальное страхование, расходы на научные и производственные командировки и накладные расходы составляют соответственно 14%, 5%, 60% общего фонда заработной платы. После изготовления программа должна пройти недельное испытание. Для этого необхоимо использовать ЭВМ. Таким образом необходимо дополнительное машинное время в обьеме 40 часов. В смете затрат расходы на арендную плату за 40 часов машинного времени внесем в статью "Работы и услуги сторонних организаций". Расчет сметы затрат приведен в табл. 13 Таблица 13 Смета затрат
9. ВОПРОСЫ ОХРАНЫ ТРУДА И ОКРУЖАЮЩЕЙ СРЕДЫ. БЕЗОПАСНОСТЬ И САНИТАРНО-ГИГИЕНИЧЕСКЙЕ УСЛОВИЯ ТРУДА НА РАБОЧЕМ МЕСТЕ ПОЛЬЗОВАТЕЛЯ 9.1. Основные санитарно-технические требований к помещению Охрана труда имеет очень важное значение. Несоблюдение правил техники безопасности приводит к неблагоприятным последствиям и несчастным случаям. В этой части дипломной работы рассматриваются: 1) основные санитарно-технические требования к вычислительному центру; 2) характеристика санитарно-гигиенических условий труда пользователя; 3) расчет необходимого воздухообмена; 4) система освещения; 5) инженерно-технические мероприятия по созданию благоприятных условий труда пользователя; - защита от шума, - защита от излучения, - меры защиты от поражения электрическим током; 6) противопожарные требования; 7) организация рабочего места при работе с терминалом; 8) приборы контроля параметров среды. Рассматриваемое помещение является вычислительный центр. Во время учебных занятий в нем находится группа пользователей из 10 человек. Площадь вычислительного центра составляет 30 кв. м. и высотой 3,5 м. К вычислительному центру предъявляются следующие требования: 1) размеры помещения (площадь, объем, высота) должны соответствовать количеству работающих в нём человек и размещаемому в нем комплексу технических средств; 2) рациональное цветовое оформление помещения; 3) обеспечение изоляции от шумов, принятие мер для снижения шума, проникающего в помещение извне; 4) соблюдение требований, предъявляемых к отделке помещения; 5) обеспечение системы отопления и вентиляции; 6) соблюдение норм чистоты воздуха, температуры, относительной влажности; 7) соблюдение норм освещенности; 8) соблюдение защиты помещения от вхождения в него посторонних лиц; 9.2. Характеристика санитарно-гигиенических условий труда 9.2.1.Микроклимат производственного помещения Микроклимат производственного помещения определяется температурой, относительной влажностью и скоростью движения воздуха. Согласно ГОСТ 12.1.005-76 "ССБТ. Воздух рабочей зоны" нормирование параметров микроклимата в рабочей зоне производится в зависимости от периода года, категории работ по энергозатратам, избытка явного тепла. По избыткам явной теплоты помещение учебной лаборатории относится к помещениям с незначительными избытками явной теплоты, приходящимися на 1 куб.м объема помещения, 23,2 Дж/(м*с). В данном помещении выполняются легкие физические работы, характеристика которых приведена в табл. 14. В табл. 15 приведены оптимальные параметры микроклимата, допустимые параметры для холодного и переходного периода года приведены в табл. 16, а для теплого периода года в табл. 17. Таблица 14Характеристика легкой физической работы
Таблица 15Оптимальные параметры микроклимата
Таблица 16 Допустимые параметры для холодного и переходного периода года
Таблица 17 Допустимые параметры для теплого периода года
9.2.2. Вредные вещества и пыль При работе пользователей в вычислительном центре профилактика вычислительной техники не проводится, вредные вещества не используются. Однако, в помещении присутствует нетоксичная пыль. Максимально-разовая предельно-допустимая концентрация нетоксичной пыли, скапливающейся на оборудовании составляет 0,5 мг/куб. м. , а среднесуточная - 0,15 мг/куб. м. 9.2.3. Излучение В табл. 18 приведены нормированные значения излучения. Таблица 18Нормированные значения излучения на рабочем месте
9.2.4. Освещенность Нормированное значение освещенности на рабочем месте по СНиП П-4-79 приведено в таблице 19. Таблица 19Наименьшая освещенность рабочих поверхностей в производственных помещениях /по СНиП П-4-79/
9.2.5. Шум Согласно ГОСТ 12.1.003-83 устанавливаются допустимые уровни звукового давления. Они приведены в Таблица 20 Допустимые уровни звукового давления
9.3. Расчет необходимого воздухообмена Для нормализации воздушной среды производится расчет воздухообмена в производственном помещении. Согласно СН 245-71 в производственных помещениях с объемом на одного работающего менее 20 куб. м. следует проектировать подачу наружного воздуха в количестве не менее 30 куб.м./ч на каждого работающего. Рассчитаем объем приточного воздуха L по кратности воздухообмена: L = k * v, м/ч , где k - рекомендуемая кратность воздухообмена, которая для обычных производственных помещений обычно составляет 1 - 10 (в расчетах мы принимаем ее равной 2), v - объем помещения. Таким образом, L =2 * 160 = 320 куб.м/ч. Наилучший обмен воздуха осуществляется при сквозном проветривании, но кроме того, если позволяют погодные условия, то работу следует проводить при открытых окнах. 9.4.Система освещения Искусственное освещение по своему устройству бывает двух систем: общее и комбинированное . При выборе системы освещения учитывают психологические, физиологические, экономические и конструктивные факторы. Так как в помещении выполняются работы высокой точности IIIв, то целесообразнее использовать систему общего освещения. В нее включаются потолочные и подвесные люминесцентные светильники общей освещенностью 400 лк. Светильники распределяются равномерно рядами и параллельно источникам прямого света, так чтобы экран монитора находился в зоне защитного угла светильника, и его проекция не приходилась на экран монитора. Причем, для таких светильников рекомендуется использовать люминесцентные лампы мощностью по 40 Вт серий ЛП013, ЛП031, ЛПОЗЗ. Для улучшения освещенности важно правильно подобрать цветовую отделку интерьера и оборудования. Обычно потолок и стены выше панелей 1.5 - 1.7 м, если они не облицованы звукопоглощающим материалом, окрашиваются водоэмульсионной краской светлых, холодных тонов. 9.5. Инженерно - технические мероприятия благоприятных условий труда 9.5.1. Защита от шума Источниками шума в данном помещении являются принтеры, персональные компьютеры и сами люди, работающие в лаборатории. Кроме того, шум может поступать извне, а т.к. в помещении выполняются работы высокой точности, желательно, чтобы оно не граничило с помещениями, имеющими повышенные уровни воздушного и ударного шума. Для обеспечения изоляции помещения от шумов, проникающих извне можно использовать акустическую обработку помещения, которая заключается в облицовке потолка и стен звукопоглощающим материалом, причем для достижения максимально возможного звукопоглощения необходимо облицевать не менее 60% общей площади внутренних поверхностей помещения. Для сохранения стабильности звукопоглощающих характеристик такого покрытия необходимо периодически осуществлять различные профилактические мероприятия. Для уменьшения звука, поступающего извне данное помещение не должно граничить с помещениями, имеющими повышенные уровни воздушного и ударного шума, а также располагаться вблизи таких "шумных" помещений. Источники загазованности и вибрации в данном помещении отсутствуют. 9.5.2.Защита от излучения Результаты спец исследований показали, что мониторы испускают слабые рентгеновские лучи, но интенсивность такого излучения составляет менее половины мили рентгена в час - намного меньше допустимого уровня. Но даже от такого незначительного излучения можно защититься. В зависимости от условий воздействия электромагнитных полей (ЭМП), характера и местонахождения источника могут быть использованы следующие виды защиты : 1) защита временем, использующаяся в случае невозможности снизить интенсивность излучения в рабочей зоне; 2) защита расстоянием, позволяющая существенно уменьшить степень поражения излучением, так как интенсивность убывает пропорционально квадрату расстояния; 3) экранирование источника излучения или рабочего места. Оно должно отвечать следующим требованиям : - уменьшать интенсивность излучения до предельных уровней; - обеспечивать удобства в работе; - обеспечивать безопасность работы в отношении механических и электрических травм. Применительно к рассматриваемому помещению чаще всего используются следующие два способа защиты: 1) ввиду того, что незначительная утечка излучения из кинескопа обнаруживается только в пределах нескольких миллиметров от поверхности экрана и по мере удаления доза уменьшается, то можно применять защиту расстоянием. Нормальным расстоянием, на котором излучение не регистрируется даже чувствительной измеризмерительной аппаратурой является расстояние 0.3 - 0.4 метра; 2) можно использовать защитный экран или сетку. 9.5.3. Меры защиты от поражения электрическим током Статистика показывает, что число травм, вызванных электрическим током, составляет 11-12% от их общего числа. Но из всех случаев со смертельным исходом наибольшее количество происходит в результате поражения электрическим током. Причем до 80% всех случаев электротравматизма со смертельным исходом приходится на электрооборудование напряжением до 1000 Вив первую очередь 220...380 В. Электрооборудование в основном относится к установкам напряжением до 1000 В, исключения составляют лишь экранные пульты, дисплеи, электронно-лучевые трубки, которые имеют напряжение в несколько киловольт. Организационные мероприятия, обеспечивающие безопасность работ, заключаются в следующем: соблюдение режима работы и отдыха, правильная организация обслуживания действующих электроустановок ВЦ, проведение ремонтных и профилактических работ. По опасности поражения электрическим током рассматриваемое помещение относится к помещениям без повышенной опасности. Таблица 21Классификация помещения по степени опасности поражения человека электрическим током
К техническим мероприятиям, обеспечивающим безопасность работ со снятием напряжения относятся: - отключение оборудования на участке, принятие мер против ошибочного или самопроизвольного включения, ограждение при необходимости рабочих мест и оставшихся под напряжением токоведущих частей; - проверка отсутствия напряжения; - установка заземления. Применение только одних организационных и технических мероприятий по предупреждению поражения электрическим током не может в полной мере обеспечить необходимую электробезопасность при эксплуатации. Наряду с ними в вычислительных центрах используют защитное заземление. Нормативное значение сопротивления заземления приведено в табл. 22 Таблица 22 Нормативное, значение сопротивления заземления
Сопротивление изоляции электрических цепей ЭВМ общего назначения в нормальных климатических условиях должно быть не менее значений указанных в табл. 23 Таблица 23
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 Приборы контроля
ЗАКЛЮЧЕНИЕВ результате разработки данной дипломной работы написана программа для обучения работе в графическом режиме. Программа предназначена для студентов младших курсов Санкт-Петербургской государственной академии аэрокосмического приборостроения и знакомит их с графическими средствами языка Turbo-Pascal 6.0/7.0. Программа содержит семь разделов для изучения: 1) Программирование графических режимов. 2) Управление курсором и полем рисования. 3) Формирование прямолинейных монохромных изображений. 4) Управление цветом и стилем изображений. 5) Программирование цветных криволинейных изображений. 6) Формирование графических текстов. 7) Программирование озвученных динамических сцен. Программа позволяет индивидуально, в удобном для каждого обучаемого темпе , изучать работу с компьютером в графическом режиме. Изучаемый материал представлен в программе наглядно, теоретический материал сопровожден необходимыми иллюстрациями, что делает его более понятным. Предусмотрена возможность повторного изучения материала. В процессе обучения производится контроль приобретенных знаний в виде Контрольных вопросов. При ответах на контрольные вопросы студенту выставляются оценки, которые регистрируются и могут быть выведены на экран в любой момент работы с программой. Имеется возможность разъяснения студенту его ошибок в случае наличия таковых. После ответа на каждый вопрос на экран выводится комментарий, содержащий оценку в форме "правильно/неправильно" и в случае неверного ответа пояснения сущности ошибки. Продолжительность сеанса работы программы составляет 45 минут. Программа написана на языке Turbo-Pascal 7.0 и требует для использования наличия персонального компьютера типа IBM, монитора типа EGA с графическим выводом 640x350 пиксел, 16 регистрами палитры. Разработанная программа полностью соответствует требованиям Технического задания. СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 1. Брусенцов Н.П., Маслов С.П., Х.Рамиль Альварес Микрокомпьютерная система обучения "Наставник". М.: Наука , 1990. 223 с. 2. Демушкин А7С7, КирилловА.И., Сливин Н.А., Чубров Е.В., Кривошеев А.О., Фомин С.С. Компьютерные обучающие программы // Информатика и образование, 1995. N 3. 3. Казаков В.Г., Дорошквин А.А., Задорожный П.М., Князев Б.А. Лекционная мультимедиа аудитория // Информатика и образование, 1995. N4. 4. Фаронов В.В. турбо паскаль: в 3 т. М.: Учебно-инженерный центр "МВТУ-ФЕСТО ДИДАКТИК", 1992.Т.1: Основы турбо Паскаля. 286 с. 5. Епанешников A.M., Епанешников В.А. Программирование в среде TURBO-PASCAL 7.O.M.: "ДИАЛОГ-МИФИ", 1995. 282 С. 6. Петров В.И. Графические средства алгоритмического языка TURBO-PASCAL : Методические указания к выполнению лабораторных работ N 1,2 / ЛИАП.СПб., 1992. 33 с. 7. Петров В.И. Графические средства алгоритмического языка TURBO-PASCAL : Методические указания к выполнению лабораторных работ N 3,4,5 / ЛИАП.СПб., 1992. 43 с. 8. Технико-экономическое обоснование исследовательских и инженерных решений в дипломных проектах и работах: учебное пособие / под редакцией Минько Э.В., Покровского А.В. /Свердловск Уральский университет, 1990. 144 с. 9. Евдокимов В.И. Охрана труда и окружающей среды: Методические указания по дипломному проектированию / ЛИАП.Л., 1989. 34 с. 10. Евдокимов В.И., Козаченко В.И., Нейман Л.А., Румянцев В.В. Охрана труда в приборо- и радиоаппаратостроении: Учебное пособие / СПГУАП. СПб., 1993. 81 с. ПРИЛОЖЕИЕ 1 Текст программы program GRAPHIC; {главная программа "Графика"} uses Crt, Graph, Dos, Strings, MYBOOK, RAZDEL1, RAZDEL2, RAZDEL3, RAZDEL4 , RAZDEL5 , RAZDEL6 , RAZDEL7 ; Type Dlina=string[6Q]; var Gd,Gm: integer; Regime: byte; NOMER3 , NOMER4 , NOMER5 , NOMER6 , NOMER7 : integer ; Ball3 :array[l. .2} of integer; {переменные вывода результатов} ball4 :array[l. .2] of integer; { работы по разделам} ball5 :array[l. .2] of Integer; ball6 :array[l. .2] of integer; ball7:array[l. .2] of integer; Itog :array[l, .2] of integer; {переменная накопления результатов работы за сеанс} tog:array[l. .2] of integer; {переменная вывода результатов работы за сеанс} К:аггау[1. .2] of integer; {переменная контролирующая число обращений к процедурам рабочих модулей } Dh: Char; {переменная для принятия символа с клавиатуры} procedure Windol; {введение } Type Ann=record PPl:char; РР2:array [0. .69] of char; end; var FF:file of Ann; A: Ann; St :string[68]; label 1; begin Assign (FF, 'VEDEN. pas' ); {связь с файлом текста введения} {SI-} Reset(FF); {SI + } IF lOResulto 0 then Writeln ('Heт файла VEDEN1); ClearDevice; OKNO; {процедура оформления экрана} For N:=0 to 31 do {цикл вывода текста введения } begin Read(FF,A); St:=StrPas(A.PP2); case A.PP1 of {проверка наличия иллюстрации и их вывод} ‘ ‘: OutTextXY( 20 , 10*N+10 , St ) ; ‘0‘ : GoTo 1 ; end; end; 1:readkey; Close(FF); end; procedure Cursor(Flag:boolean); {Если Flag=True, то курсор видим;} { если Flag=False,TO невидим} const sizeCursor:word=0; var Red:registers; begin with Red do begin if Flag then begin CX:=SizeCursor; {Восстановим старый размер курсора} end else begin BH:=0; {0-я страница дисплея} АН:=03; {функция чтения размера и позиции курсора} Intr($10,Red); SizeCursor:=CX;{сохраняем размер курсора} СН:=$20; {делаем курсор невидимым} end; АН:=01; {функция установки размера курсора} Intr($10,Red); end; end; procedure SVETFON(C,F:byte); {установка цвета и фона} begin TextColor(C); TextBackground(F) end; procedure VERTIKALNOE_MENU(Kl,K2,Kp:byte;SS1,SS2,SS3,SS4,SS5,SS6, SS7,SS8,SS9:dlina;Var Result:byte); {процедура создания окна меню} Label Met; Const Kr=9; Var M:array[l..Kr] of string[60]; I,T:byte; Ch:char; Fl:boolean; begin Cursor(False); Fl:=True; M[1]:=SS1;M[2]:=SS2;M[3]:=SS3;M[4]:=SS4;M[5]:=SS5;M[6]:=SS6; M[7]:=SS7;M[8]:=SS8;M[9]:=SS9; T:=Length(M[I]); for I:=2 to Kp do if Length(M{I])>T then T:=Length(M[I]); for l:=l to Kp do begin if 1=1 then SVETFON(1,13) else SVETFON(13,1); GoToXY(Kl,K2+i); write(M[I]); end; SVETFON(13,1); I:=l; while Fl=True do begin Ch:=ReadKey; if Ch=#13 then Fl:=False; if(Ch=#0) and KeyPressed then begin Ch:=ReadKey; case Ch of #80: begin GoToXY(Kl,K2+i); SVETFON(13,1); write(M[I]); if i=(Kp+l) then begin I:=l; SVETFON(3,l); GoToXY(Kl,K2+l); SVETFON(1, 13); write(M[I]); SVETFON(13,1); goto Met; end; GoToXY(Kl,K2+I); SVETFON(1,13); write(M[I]); SVETFON(13,1); end; #72: begin if 1=1 then goto Met; GoToXY(Kl,K2+I); SVETFON(1371); write(M[I]); i:=I-1; GoToXY(Kl,K2+I); SVETFON(1,13); write(M[I]) end end; Met: end ; end; Result :=I; SVETFON(13,1); Cursor(True) ; end; begin {Начало основной программы} GraphRegim; SetBKColor(l); SetTextStyle(0,0,5); SetColor(12); OutTextXY(40,50, 'Т Р А Ф И К А'); SetTextStyle(0,0,1); SetColor(15); OutTextXY(100,225,'Программа для обучения работе в графическом режиме’); OutTextXY(170,245,'Разработал Черноткач Р. И.'); OutTextXY(232,285,'СПГУАП'); OutTextXY{240,305,'2002’); readkey; SetTextStyle(0,0,l); Windo1; CloseGraph; NOMER3:=0; {переменные, контролирующие доступ к разделам} NOMER4:=0; {{ не более двух раз) за сеанс} NOMER5:=0; NOMER6:=0; NOMER7:=0; К[1]:=0; К[2]:=0; while True do begin TextBackground(3); ClrScr; Cursor(False); GoToXY(15,5); TextColor(l); write('Какой раздел Вы хотели бы изучить?'); GoToXY(10,10); VERTIKALNOE_MENU(10,10,9, ' Программирование графических режимов ' Управление курсором и полем рисования ' Формирование прямоллинейньгх монохромных изображений ' Управление цветим и стилем изображений ' Программирование цветных криволинейных изображений ' Формирование графических текстов ' Программирование озвученных динамических сцен ' Результаты Вашей работы ' Конец работы Regime); case Regime of 1:RAZDEL10; 2:RAZDEL20; 3:begin NOMER3:=NOMER3+1; If NOMER3<3 then begin RAZDEL30; ball3[NOMER3]:=REZ3; Itog[nomer3]:=Itog[nomer3]+ball3[nomer3]; K[nomer3]:=K[nomer3]+l; end end; 4: begin NOMER4:=NOMER4+1; If NOMER4<3 then begin RAZDEL40; ball4[nomer4]:=rez4; Itog[nomer4]:=Itog[nomer4]+ball4[nomer4]; K[nomer4]:=K[nomer4]+l; end end; 5:begin NOMER5:=NOMER5+1; If NOMER5<3 then begin RAZDEL50; Ьа115[погаег5]:=rez5; Itog[nomer5]:=Itog[nomer5]+ball5[nomer5]; K[nomer5]:=K[nomer5]+1; end; end; 6:begin NOMER6:=NOMER6+1; If NOMER6<3 then begin RAZDEL60; ball6[nomer6]:=rez6; Itog[nomer6]:=Itog[nomer6]+ball6[nomer6]; K[nomer6]:=K[nomer6]+l; end; end 7:begin NOMER7:=NOMER7+1; IF NOMER7<3 then begin RAZDEL70; ball7[nomer7]:=rez7; Itog[nomer7]:=Itog[nomer7]+ball7[nomer7]; end; end; 8:begin {вывод результатов работы} If K[l]<>0 then tog[l3:=Round(Itog[l]/K[1); If K[2]<>0 then tog[2]:=Round(Itog[2]/K[2]); TextBackground(1); ClrScr; TextColor(12); writeln; Write('РЕЗУЛЬТАТЫ ВАШЕЙ РАБОТЫ’); writeln; writeln('l попытка 2 попытка':80); writeln; wtiteln('ФОРМИРОВАНИЕ ПРЯМОЛИНЕЙНЫХ МОНОХРОМНЫХ ИЗОБРАЖЕНИЙ'); writeln; writeln(' УПРАВЛЕНИЕ ЦВЕТОМ И СТИЛЕМ ИЗОБРАЖЕНИЙ1); writeln; writeln('ПРОГРАММИРОВАНИЕ ЦВЕТНЫХ КРИВОЛИНЕЙНЫХ ИЗОБРАЖЕНИЙ'); writeln; writeln(' ФОРМИРОВАНИЕ ГРАФИЧЕСКИХ ТЕКСТОВ'); writeln; writeln(' ПРОГРАММИРОВАНИЕ ОЗВУЧЕННЫХ ДИНАМИЧЕСКИХ СЦЕН'); writeln; writeln; writeln(' ОЦЕНКА РАБОТЫ ЗА СЕАНС'); GotoXY(64,6); writeln(ball3[1]); GoToXY(75,6); writeln(ball3[2]); GoToXY(64,8); writeln(ball4[l]); GoToXY(75,8); writeln(ball4[2]); GoToXY(64,10); writeln(ball5[l]); GoToXY(75,10); writeln(ball5[2]); GoToXY(64,12); writeln(ball6[l]); GoToXY(75,12); writeln(bal16[2]); GoToXY(64,14); writeln(bal17[l]); GoToXY(75,14); writeln(ball7[23) GoToXY(64,18); writeln(tog[l]); GoToXY(75,18); writeln(tog[2]); readkey; end; 9:begin GraphRegim; OKNO; SetTextStyle{0,0,4); SetColor(4); OutTextXY(150,80,'Bы хотите'); OutTextXY(60,120,'закончить работу') OutTextXY(100,160,'с программой?'); OutTextXY(230,280,'Y/N'); Dh:=ReadKey; If (Dh='y') or (Dh='н') then begin Cursor(True); ClrScr; Halt end else CloseGraph; end; end; end; CloseGraph; end. {$A+, B-, D+, E+, F-, G-, I+,L+,N-,O-,P-,Q-,R-,S+,T-,V+,X+} {$M 16384,0,655360} Unit RAZDEL1; interface uses Crt, Graph, Dos, Strings, MYBOOK; type An=record P1:Char; P2:array[0..69] of Char; end; var Fl:file of An ; A: An; Gd,Gm,Y,N:integer; St:string[68]; procedure RAZDEL10; {Обеспечение работы с разделом "Программиро вание графических режимов"} implementation procedure RAZDEL10; Label 1; begin GraphRegim; Assign(Fl,'RAZTEX1.pas'); {SI-} Reset (Fl); {SI+} If lOResult <>0 then Writeln ('Нет файла RAZTEX1.pas'); Repeat; ClearDevice; OKNO; Y:=10; For N:=0 to 31 do begin Read(Fl,A); St:=StrPas(A.P2); case A.P1 of ' ':OutTextXY(20,Y*N+10,St); '*':begin SetColor{4); OutTextXY(20,Y*N+10,St); SetColor(l); end; '0':GoTo 1; end; end; 1: readkey; until A.P1='O'; Close(Fl); CloseGraph; end; begin end. {$A+,B-,D+,E+,F-,G-,I+,L+,N-,O-,P-,Q-,R-,S+,T-,V+,X+} {$M 16384,0,655360} Unit RAZDEL2; interface
uses Crt,Graph,Dos,Strings,MYBOOK; type An=record P1:Char; P2:array[0..69] of Char; end; var F2:file of An ; A: An; Gd,Gm,X,Y,N:integer; St:string[68];
procedure RAZDEL20; {Обеспечение работы с разделом "Управление курсором и полем рисования"}
implementation procedure RAZDEL20; Label 1; begin GraphRegim; Assign(F2,'RAZTEX2.pas'); {SI-} Reset(F2); {SI+} If IOResult <> 0 then Writeln ('Нет файла RAZTEX2.pas'); repeat ClearDevice; OKNO; Y:=10; For N:=0 to 31 do begin Read(F2,A); St:=StrPas(A.P2); case A.P1 of ' ':OutTextXY(20,Y*N+10,St); '*':begin SetColor(4); OutTextXY(20,Y*N+10,St); SetColor(1); end; '0':GoTo 1; end; end; 1: readkey; until A.P1='0'; Close(F2); CloseGraph; end;
begin end. Unit RAZDEL3;
interface
uses Crt,Graph,Dos,Strings,MYBOOK;
type An=record {Теоретическая часть } P1:Char; {переменная поля флагов: конец файла, номер иллюстрации, строка, выделяемая цветом} P2:array[0..69] of Char; {переменная поля текста} end;
type Ant=record {Текст вопросов} P1:Char; {переменная поля флагов: конец файла, конец вопроса, номер иллюстрации} P2:array[0..1] of Char; {переменная номера вопроса} P3:array[0..69] of Char; {переменная поля текста} end;
type Antr=record { Справки } P1:Char; {переменная поля флагов: конец файла, конец вопроса, номер иллюстрации} P2:array[0..1] of Char; {переменная поля номера вопроса} P3:array[0..0] of Char; {переменная поля флагов: номера справки, конца справки} P4:array[0..69] of Char; {переменная поля текста} P5:array[0..2] of Char; {переменная поля оценки} end;
var F3:file of An ; {переменные теоретической части} A: An; St:string[68]; Y,N:integer;
var F32:file of Ant; { переменные вопросов} At:Ant; R1:string[2]; Z1:integer; S:string[68];
var F33:file of Antr; {переменные справок} Atr:Antr; R2:string[2]; R3:string[1]; Stt:string[68]; R4:string[2]; Z2,Z3,Z4:integer; CH: Char; {переменная для принятия символа с клавиатуры} K,J,I:integer; {переменные циклов} M: array[0..3] of integer; {массив для хранения четырех выбранных номеров вопросов} Code:integer;
var R5:string[1]; {переменные вывода результатов} Z5:integer; REZ3:Longint; {переменная оценки}
procedure RAZDEL30; {Обеспечение работы с разделом "Формирование прямолинейных монохромных изображений"}
implementation
const Mn:array[1..5] of PointType=((X:460;Y:30),(X:590;Y:90), (X:590;Y:120),(X:430;Y:120),(X:460;Y:30)); Mno:array[1..5] of PointType=((X:460;Y:170),(X:590;Y:230), (X:590;Y:260),(X:430;Y:260),(X:460;Y:170)); {Константы для формирование иллюстраций к тексту теории}
const Ww:array[1..5] of PointType=((X:390;Y:60),(X:510;Y:60), (X:510;Y:260),(X:390;Y:260),(X:390;Y:60)); WWW:array[1..5] of PointType=((X:380;Y:50),(X:520;Y:50), (X:520;Y:270),(X:380;Y:270),(X:380;Y:50)); {Константы для формирования иллюстраций к тексту вопросов}
procedure RAZDEL30;
Label 0,1,2,3;
begin REZ3:=6; GraphRegim; Assign(F3,'RAZTEX3.pas'); {Связь с файлом теста теории} {SI-} Reset(F3); {SI+} If IOResult <> 0 then Writeln ('Нет файла RAZTEX3.pas'); repeat OKNO; Y:=10; For N:=0 to 31 do {Цикл вывода текста теории} begin Read(F3,A); St:=StrPas(A.P2); {Преобразование ASCIIZ-строки A.P2 в строку типа string} case A.P1 of {Иллюстрации к тексту} ' ': OutTextXY(20,Y*N+10,St); '*': begin SetColor(4); OutTextXY(20,Y*N+10,St); SetColor(1); end; 'щ': begin SetColor(4); Line(460,120,593,120); OutTextXY(460,160,'0'); OutTextXY(593,130,'(X,Y)'); SetColor(1); end; '2':begin SetColor(4); OutTextXY(460,160,'0 dX'); OutTextXY(600,180,'dY'); OutTextXY(550,200,'(dX,dY)'); Line(460,170,593,170); Line(593,170,593,200); Line(460,170,593,200); SetColor(1); end; '3':begin SetColor(4); OutTextXY(430,245,'(X1,Y1)'); Line(460,260,593,285); OutTextXY(580,270,'(X2,Y2)'); SetColor(1); end; '4':begin SetBKColor(2); SetColor(4); Rectangle(460,40,590,90); SetColor(1); end; '5':begin SetFillStyle(1,4); Bar(459,129,591,181); SetFillStyle(8,5); SetColor(4); Bar(460,130,590,180); SetColor(1); end; '6':begin SetFillStyle(6,5); SetColor(4); Bar3D(460,240,590,300,20,true); SetCOLOR(1); SetFillStyle(1,15); SetBKColor(11); end; '7':begin SetBKColor(15); SetColor(4); DrawPoly(5,Mn); SetColor(1); end; '8':begin SetColor(4); SetFillStyle(11,5); SetBKColor(15); FillPoly(5,Mno); SetColor(1); SetFillStyle(1,15); end; '0':GoTo 0; end; end; 0:readkey; ClearDevice; OKNO; until A.P1='0'; Close(F3); Assign(F32,'Joing.pas'); {связь с файлом вопросов} {SI-} Reset(F32); {SI+} If IOResult<>0 then Writeln('Нет файла Joing.pas'); Assign(F33,'Iod.pas'); {связь с файлом справок} {SI-} Reset(F33); {SI+} If IOResult<>0 then Writeln('Нет файла Iod.pas'); OKNO1; {заставка "Контрольные вопросы"} readkey; ClearDevice; Randomize; {Выбор четырех номеров вопросов} For J:=0 to 3 do begin 1:I:=Random(10); If I=0 then GOTO 1; For K:=0 to J-1 do begin If M[k]=I then GOTO 1; end; M[J]:=I; end; repeat OKNO; begin Read(F32,At); R1:=StrPas(At.P2); {Преобразование ASCIIZ-строки At.P2 в строку типа string} Val(R1,Z1,Code); {Преобразование символьного представления номера вопроса в двоичную форму} Y:=20; If(Z1=M[0]) or (Z1=M[1]) or (Z1=M[2]) or (Z1=M[3]) then begin repeat S:=StrPas(At.P3); {Преобразование ASCIIZ-строки At.P3 в строку типа string} OutTextXY(20,Y,S); {Вывод текста вопроса} case At.P1 of {иллюстрации к тексту вопросов} '1':begin DrawPoly(5,Ww); DrawPoly(5,Www); Bar3D(410,100,470,120,20,true); Bar3D(410,120,470,250,20,false) end; '2':begin Bar3D(200,250,300,300,30,true); Bar3D(200,300,300,320,30,true) end; '3':begin Line(380,150,550,190); Line(380,190,550,190); Line(380,230,550,190); OutTextXY(375,140,'(X,Y)'); OutTextXY(375,170,'dY'); OutTextXY(555,190,'(X1,Y1)'); OutTextXY(375,200,'dY'); end; end; Y:=Y+10; Read(F32,At); until At.P1='*'; 2:OutTextXY(50,330,'ВВЕДИТЕ НОМЕР ПРАВИЛЬНОГО ОТВЕТА ___'); CH:=ReadKey; SetColor(4); OutTextXY(320,325,CH); SetColor(1); readkey; If(CH<>'1') and (CH<>'2') and (CH<>'3') and (CH<>'4') then begin SetFillStyle(1,11); Bar(318,320,327,340); GoTo 2; end else repeat Read(F33,Atr); R2:=StrPas(Atr.P2); {Преобразование ASCIIZ-строки Atr.P2 в строку типа string } Val(R2,Z2,Code); {Преобразование символьного представления номера вопроса в двоичную форму} If Z2=Z1 then begin repeat If Atr.P3=CH then begin Y:=100; OKNO; repeat Stt:=StrPas(Atr.P4); {Преобразование ASCIIZ-строки Atr.P4 в строку типа string } R5:=StrPas(Atr.P5); {Преобразование ASCIIZ-строки Atr.P5 в строку типа string } Val(R5,Z5,Code); {Преобразование символьного представления оценки в двоичную форму} REZ3:=Round((REZ3+Z5)/2); {Формирование оценки} OutTextXY(20,Y,Stt); {Вывод текста справки} Y:=Y+10; case Atr.P1 of {иллюстрации к тексту справок} '1':begin Line(380,150,550,190); MoveRel(380,190); Line(380,190,550,190); LineTo(550,190); OutTextXY(555,190,'(X1,Y1)'); OutTextXY(370,140,'(X,Y)'); OutTextXY(390,200,'(X,Y+dY)'); end; '2':begin GOTOXY(100,190); LineTo(100,190); LineRel(30,40); LineRel(0,80); end; '3':begin GOTOXY(100,190); LineTo(380,150); LineRel(30,40); LineRel(0,80); end; end; Read(F33,Atr); until Atr.P3='*'; readkey; GOTO 3; end else Read(F33,Atr); until Atr.P1='*'; end until Atr.P1='0'; end else 3: end; until At.P1='0'; Close(F32); Close(F33); CloseGraph; end;
begin end. Unit RAZDEL4;
interface
uses Crt,Graph,Dos,Strings,MYBOOK;
type An = record {Теория} P1:Char; {Переменная поля флага : конец файла, номер иллюстрации} P2:array[0..69] of char; {Переменная поля текста} end;
type Ant=record {Текст вопросов} P1:Char; {Переменная поля флага:конец файла, номер иллюст- рации, конец вопроса} P2:array[0..1] of Char; {Переменная поля номера вопроса} P3:array[0..69] of Char; {Переменная поля текста вопроса} end;
type Antr=record { Справки } P1:Char; {Переменная поля флага:конец файла, конец вопроса, номер иллюстрации} P2:array[0..1] of Char; {Переменная поля номера вопроса} P3:array[0..0] of Char; {Переменная поля флага: номер справки и конец справки} P4:array[0..69] of Char; {Переменная поля текста справки} P5:array[0..2] of Char; {Переменная поля оценки} end;
var F4: file of An ; {Переменные теории} A:An; N,Y:integer; St:string[68];
var F32:file of Ant; { Переменные вопросов} At:Ant; R1:string[2]; Z1:integer; S:string[68]; var F33:file of Antr; {Переменные справок} Atr:Antr; R2:string[2]; R3:string[1]; Stt:string[68]; R4:string[2]; Z2,Z3,Z4:integer; CH: Char;{Переменная для принятия символа с клвиатуры} K,J,I:integer; {Переменные циклов} M: array[0..3] of integer; {Массив для хранения черырех выбранных номеров вопросов} Code:integer;
var R5:string[1]; {переменные вывода результатов} Z5:integer; REZ4:Longint; {переменная оценки}
procedure RAZDEL40;
implementation
procedure RAZDEL40;
Label 0,1,2,3;
begin REZ4:=6; GraphRegim; Assign(F4,'RAZTEX4.pas'); {Связь с файлом текста теории} {SI-} Reset(F4); {SI+} If IOResult <> 0 then Writeln ('Нет файла RAZTEX4.pas'); repeat ClearDevice; OKNO; Y:=10; For N:=0 to 31 do {Вывод текста теории} begin Read(F4,A); St:=StrPas(A.P2); {Преобразование ASCIIZ-строки A.P2 в строку типа string} OutTextXY(20,Y*N+10,St); case A.P1 of '*':begin SetColor(4); OutTextXY(20,Y*N+10,St); SetColor(1); end; '1':begin SetFillStyle(1,15); Bar(350,45,600,340); SetFillStyle(1,0); Bar(350,45,600,65); SetFillStyle(1,1); Bar(350,65,600,85); SetFillStyle(1,2); Bar(350,85,600,105); SetFillStyle(1,3); Bar(350,105,600,120); SetFillStyle(1,4); Bar(350,120,600,135); SetFillStyle(1,5); Bar(350,135,600,150); SetFillStyle(1,6); Bar(350,150,600,165); SetFillStyle(1,7); Bar(350,165,600,185); SetFillStyle(1,8); Bar(350,185,600,200); SetFillStyle(1,9); Bar(350,200,600,215); SetFillStyle(1,10); Bar(350,215,600,235); SetFillStyle(1,11); Bar(350,235,600,255); SetFillStyle(1,12); Bar(350,255,600,275); SetFillStyle(1,13); Bar(350,275,600,295); SetFillStyle(1,14); Bar(350,295,600,315); SetFillStyle(1,15); Bar(350,315,600,340); end; '2':begin SetBKColor(15); SetFillStyle(1,15); Bar(200,100,600,300); SetFillStyle(2,2); Bar(200,100,600,120); SetFillStyle(3,2); Bar(200,120,600,145); SetFillStyle(4,2); Bar(200,145,600,168); SetFillStyle(5,2); Bar(200,168,600,190); SetFillStyle(6,2); Bar(200,190,600,210); SetFillStyle(7,2); Bar(200,210,600,228); SetFillStyle(8,2); Bar(200,228,600,246); SetFillStyle(9,2); Bar(200,246,600,264); SetFillStyle(10,2); Bar(200,264,600,282); SetFillStyle(11,2); Bar(200,282,600,300); SetFillStyle(1,0); end; '0':GoTo 0 end; end; readkey; 0:until A.P1='0' ; readkey; Close(F4); Assign(F32,'Joi.pas'); {связь с файлом вопросов} {SI-} Reset(F32); {SI+} If IOResult<>0 then Writeln('Нет файла Joi.pas'); Assign(F33,'Iodi.pas'); {SI-} Reset(F33); {связь с файлом справок} {SI+} If IOResult<>0 then Writeln('Нет файла Iodi.pas'); OKNO1; {"Контрольные вопросы"} readkey; ClearDevice; Randomize; {Выбор четырех номеров вопросов} For J:=0 to 3 do begin 1:I:=Random(10); If I=0 then GOTO 1; For K:=0 to J-1 do begin If M[k]=I then GOTO 1; end; M[J]:=I; end; M[1]:=1; repeat OKNO; begin Read(F32,At); R1:=StrPas(At.P2);{Преобразование ASCIIZ-строки At.P2 в строку типа string} Val(R1,Z1,Code); {Преобразование символьного представления номера вопроса в двоичную форму} Y:=20; If(Z1=M[0]) or (Z1=M[1]) or (Z1=M[2]) or (Z1=M[3]) then begin repeat S:=StrPas(At.P3); {Преобразование ASCIIZ-строки At.P3 в строку типа string} OutTextXY(20,Y,S); {Вывод текста вопроса} case At.P1 of ' ':begin end; end; Y:=Y+10; Read(F32,At); until At.P1='*'; OutTextXY(50,330,'ВВЕДИТЕ НОМЕР ПРАВИЛЬНОГО ОТВЕТА ___'); 2:CH:=ReadKey; SetColor(4); OutTextXY(320,325,CH); SetColor(1); readkey; If(CH<>'1') and (CH<>'2') and (CH<>'3') and (CH<>'4') then begin SetFillStyle(1,11); Bar(318,320,327,340); GoTo 2; end else repeat Read(F33,Atr); R2:=StrPas(Atr.P2); {Преобразование ASCIIZ-строки Atr.P2 в строку типа string} Val(R2,Z2,Code); {Преобразование символьного представления номера вопроса в двоичную форму} If Z2=Z1 then begin repeat If Atr.P3=CH then begin Y:=100; OKNO; repeat Stt:=StrPas(Atr.P4); {Преобразование ASCIIZ-строки Atr.P4 в строку типа string} R5:=StrPas(Atr.P5); {Преобразование ASCIIZ-строки Atr.P5 в строку типа string} Val(R5,Z5,Code); {Преобразование символьного представления оценки в двоичную форму} REZ4:=Round((REZ4+Z5)/2); {Формирование оценки } OutTextXY(20,Y,Stt); Y:=Y+10; case Atr.P1 of ' ':begin end; end; Read(F33,Atr); until Atr.P3='*'; readkey; GOTO 3; end else Read(F33,Atr); until Atr.P1='*'; end until Atr.P1='0'; end else 3:end; until At.P1='0'; Close(F32); Close(F33); CloseGraph; end;
begin end. Unit RAZDEL5;
interface
uses Crt,Graph,Dos,Strings,MYBOOK;
type An = record P1:Char; P2:array[0..69] of char; end;
type Ant=record {Текст вопросов} P1:Char; P2:array[0..1] of Char; P3:array[0..69] of Char; end;
type Antr=record { Справки } P1:Char; P2:array[0..1] of Char; P3:array[0..0] of Char; P4:array[0..69] of Char; P5:array[0..2] of Char; end;
var F5: file of An ; A:An; N,Y:integer; St:string[68];
var F52:file of Ant; { переменные вопросов} At:Ant; R1:string[2]; Z1:integer; S:string[68]; V:char;
var F53:file of Antr; {переменные справок} Atr:Antr; R2:string[2]; {поле Ant.P1-номер вопроса} R3:string[1]; {поле Ant.P2-номер варианта ответа} Stt:string[68];{поле Ant.P3-текст справки} R4:string[2]; {поле Ant.P4- оценка} Z2,Z3,Z4:integer; CH: Char; {номер варианта ответа} K,J,I:integer; M: array[0..3] of integer; Nom:Longint; Code:integer;
var R5:string[1]; {переменные вывода результатов} Z5:integer; REZ5:Longint;
procedure RAZDEL50;
implementation
procedure RAZDEL50;
Label 0,1,2,3;
begin REZ5:=0; GraphRegim; Assign(F5,'RAZTEX5.pas'); {SI-} Reset(F5); {SI+} If IOResult <> 0 then Writeln ('Нет файла RAZTEX5.pas'); repeat ClearDevice; OKNO; Y:=10; For N:=0 to 31 do begin Read(F5,A); St:=StrPas(A.P2); case A.P1 of ' ':OutTextXY(20,Y*N+10,St); '*':begin SetColor(4); OutTextXY(20,Y*N+10,St); SetColor(1); end; '1':begin SetColor(4); Arc(500,150,0,278,30); OutTextXY(490,140,'(X,Y)'); OutTextXY(500,150,'.'); SetColor(1); end; '2':begin SetColor(4); Circle(500,300,30); OutTextXY(475,290,'(X,Y)'); OutTextXY(500,300,'.'); SetColor(1); end; '3':begin SetBKColor(15); SetColor(4); Ellipse(500,100,0,278,50,25); OutTextXY(490,90,'(X,Y)'); OutTextXY(500,100,'.'); SetColor(1); end; '4': begin SetColor(2); Ellipse(500,180,10,270,50,30); Line(500,135,460,225); SetFillStyle(4,14); FloodFill(455,180,2); end; '5': begin SetColor(4); Ellipse(500,300,0,361,50,30); FillEllipse(500,300,50,30); SetFillStyle(1,15); SetColor(1); end; '6': begin SetFillStyle(7,13); PieSlice(500,120,0,120,50); end; '7': begin SetFillStyle(9,13); Sector(500,200,0,270,50,30); SetFillStyle(1,15); end; '8':begin SetFillStyle(1,9); Bar(250,100,600,200); SetViewPort(250,100,600,200,true); FloodFill(260,110, 1); Randomize; repeat PutPixel(Random(GetMaxX),Random(GetMaxY),15); Delay(15); until KeyPressed; SetFillStyle(1,15); SetViewPort(5,5,635,345,true); end; '9': begin Diogramma; end; '0':GoTo 0 end; end; 0:readkey; until A.P1='0'; Close(F5); Assign(F52,'Join.pas'); {связь с файлом вопросов} {SI-} Reset(F52); {SI+} If IOResult<>0 then Writeln('Нет файла Join.pas'); Assign(F53,'Iodin.pas'); {SI-} Reset(F53); {связь с файлом справок} {SI+} If IOResult<>0 then Writeln('Нет файла Iodin.pas'); OKNO1; {"Контрольные вопросы"} readkey; ClearDevice; Randomize; {Выбор четырех номеров вопросов} For J:=0 to 3 do begin 1:I:=Random(6); If I=0 then GOTO 1; For K:=0 to J-1 do begin If M[k]=I then GOTO 1; end; M[J]:=I; end; repeat OKNO; begin Read(F52,At); { вывод текста вопросов и справок } R1:=StrPas(At.P2); Val(R1,Z1,Code); Y:=20; If(Z1=M[0]) or (Z1=M[1]) or (Z1=M[2]) or (Z1=M[3]) then begin repeat S:=StrPas(At.P3); OutTextXY(20,Y,S); case At.P1 of '2':begin end end; Y:=Y+10; Read(F52,At); until At.P1='*'; OutTextXY(50,330,'ВВЕДИТЕ НОМЕР ПРАВИЛЬНОГО ОТВЕТА ___'); 2:CH:=ReadKey; SetColor(4); OutTextXY(320,325,CH); SetColor(1); readkey; If(CH<>'1') and (CH<>'2') and (CH<>'3') and (CH<>'4') then begin SetFillStyle(1,11); Bar(318,320,327,340); GoTo 2; end else repeat Read(F53,Atr); R2:=StrPas(Atr.P2); Val(R2,Z2,Code); If Z2=Z1 then begin repeat If Atr.P3=CH then begin Y:=100; OKNO; repeat Stt:=StrPas(Atr.P4); R5:=StrPas(Atr.P5); {формирование оценки} Val(R5,Z5,Code); REZ5:=Round((REZ5+Z5)/2); OutTextXY(20,Y,Stt); Y:=Y+10; case Atr.P1 of '1':begin end; '0':GoTo 3; end; Read(F53,Atr); until Atr.P3='*'; readkey; GOTO 3; end else Read(F53,Atr); until Atr.P1='*'; end until Atr.P1='0'; end else 3: end; until At.P1='0'; Close(F52); Close(F53); CloseGraph; end; begin end. Unit RAZDEL6;
interface
uses Crt,Graph,Dos,Strings,MYBOOK;
type An = record {Теория} P1:Char; {Переменная поля флага : конец файла, номер иллюстрации} P2:array[0..69] of char; {Переменная поля текста} end;
type Ant=record {Текст вопросов} P1:Char; {Переменная поля флага:конец файла, номер иллюст- рации, конец вопроса} P2:array[0..1] of Char; {Переменная поля номера вопроса} P3:array[0..69] of Char; {Переменная поля текста вопроса} end;
type Antr=record { Справки } P1:Char; {Переменная поля флага:конец файла, конец вопроса, номер иллюстрации} P2:array[0..1] of Char; {Переменная поля номера вопроса} P3:array[0..0] of Char; {Переменная поля флага: номер справки и конец справки} P4:array[0..69] of Char; {Переменная поля текста справки} P5:array[0..2] of Char; {Переменная поля оценки} end;
var F6: file of An ; {Переменные теории} A:An; Y,N,T1,T2,T3,T4:integer; St:string[68];
var F62:file of Ant; { переменные вопросов} At:Ant; R1:string[2]; Z1:integer; S:string[68];
var F63:file of Antr; {Переменные справок} Atr:Antr; R2:string[2]; R3:string[1]; Stt:string[68]; R4:string[2]; Z2,Z3,Z4:integer; CH: Char;{Переменная для принятия символа с клвиатуры} K,J,I:integer; {Переменные циклов} M: array[0..3] of integer; {Массив для хранения черырех выбранных номеров вопросов} Code:integer;
var R5:string[1]; {переменные вывода результатов} Z5:integer; REZ6:Longint; {переменная оценки}
procedure RAZDEL60; {Обеспечение работы раздела "Формирование графических текстов}
implementation
procedure RAZDEL60;
Label 0,1,2,3;
begin REZ6:=6; GraphRegim; Assign(F6,'RAZTEX6.pas'); {SI-} Reset(F6); {SI+} If IOResult <> 0 then Writeln ('Нет файла RAZTEX6.pas'); repeat ClearDevice; OKNO; For N:=0 to 31 do begin Read(F6,A); St:=StrPas(A.P2); {Преобразование ASCIIZ-строки A.P2 в строку типа string} case A.P1 of ' ':OutTextXY(20,10*N+10,St); '*':begin SetColor(4); OutTextXY(20,10*N+10,St); SetColor(1); end; '1':begin SetFillStyle(1,1); Bar(10,30,630,338); SetColor(15); SetTextStyle(2,0,1); OuttextXY(50,50,'TriplexFont, HorizDir, 15'); SetTextStyle(1,0,3); SetColor(12); OutTextXY(50,100,'DefaultFont, HorizDir, 12') ; SetTextStyle(3,0,4); SetColor(13); OutTextXY(50,160, 'SmallFont, HorizDir, 13'); SetTextStyle(4,0,5); SetColor(10); OutTextXY(50,220,'SanSerifFont, HorizDir, 10'); SetTextStyle(0,0,3); SetColor(14); OutTextXY(50,300,'GothicFont, HorizDir, 14'); SetTextStyle(0,1,2); SetColor(14); OutTextXY(30,30,'DefaultFont,VertDir'); SetTextStyle(0,0,1); SetColor(1); end; '2':begin SetColor(4); SetTextStyle(1,0,1); SetUserCharSize(1,1,1,1); OutTextXY(20,120,'Turbo-Pascal 7.0'); SetUserCharSize(3,2,3,2); OutTextXY(20,160,'Turbo-Pascal 7.0'); SetUserCharSize(2,1,2,1); OutTextXY(20,230,'Turbo-Pascal 7.0'); SetTextStyle(0,0,1); SetColor(1); end; '3':begin T1:=InstallUserFont('Goth'); T2:=InstallUserFont('sans'); T3:=InstallUserFont('trip'); T4:=InstallUserFont('bold'); If GraphResult<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; '#':GoTo 0; '0':GoTo 0
end; end; 0:readkey; until A.P1='0'; Close(F6); Assign(F62,'Jois.pas'); {связь с файлом вопросов} {SI-} Reset(F62); {SI+} If IOResult<>0 then OutTextXY(50,100,'Нет файла Jois.pas'); Assign(F63,'Iodis.pas'); {SI-} Reset(F63); {связь с файлом справок} {SI+} If IOResult<>0 then Writeln('Нет файла Iodis.pas'); OKNO1; {"Контрольные вопросы"} readkey; ClearDevice; Randomize; {Выбор четырех номеров вопросов} For J:=0 to 3 do begin 1:I:=Random(10); If I=0 then GOTO 1; For K:=0 to J-1 do begin If M[k]=I then GOTO 1; end; M[J]:=I; end; M[1]:=1; repeat OKNO; begin Read(F62,At); R1:=StrPas(At.P2);{Преобразование ASCIIZ-строки At.P2 в строку типа string} Val(R1,Z1,Code); {Преобразование символьного представления номера вопроса в двоичную форму} Y:=20; If(Z1=M[0]) or (Z1=M[1]) or (Z1=M[2]) or (Z1=M[3]) then begin repeat S:=StrPas(At.P3); {Преобразование ASCIIZ-строки At.P3 в строку типа string} OutTextXY(20,Y,S); {Вывод текста вопроса} case At.P1 of ' ':begin end; end; Y:=Y+10; Read(F62,At); until At.P1='*'; OutTextXY(50,330,'ВВЕДИТЕ НОМЕР ПРАВИЛЬНОГО ОТВЕТА ___'); 2:CH:=ReadKey; SetColor(4); OutTextXY(320,325,CH); SetColor(1); readkey; If(CH<>'1') and (CH<>'2') and (CH<>'3') and (CH<>'4') then begin SetFillStyle(1,11); Bar(318,320,327,340); GoTo 2; end else repeat Read(F63,Atr); R2:=StrPas(Atr.P2); {Преобразование ASCIIZ-строки Atr.P2 в строку типа string} Val(R2,Z2,Code); {Преобразование символьного представления номера вопроса в двоичную форму} If Z2=Z1 then begin repeat If Atr.P3=CH then begin Y:=100; OKNO; repeat Stt:=StrPas(Atr.P4); {Преобразование ASCIIZ-строки Atr.P4 строку типа string} R5:=StrPas(Atr.P5); {Преобразование ASCIIZ-строки Atr.P5 в строку типа string} Val(R5,Z5,Code); {Преобразование символьного представления оценки в двоичную форму} REZ6:=Round((REZ6+Z5)/2); {Формирование оценки } OutTextXY(20,Y,Stt); Y:=Y+10; case Atr.P1 of ' ':begin end; end; Read(F63,Atr); until Atr.P3='*'; readkey; GOTO 3; end else Read(F63,Atr); until Atr.P1='*'; end until Atr.P1='0'; end else 3:end; until At.P1='0'; Close(F62); Close(F63); CloseGraph; end;
begin end. Unit RAZDEL7;
interface
uses Crt,Graph,Dos,Strings,MYBOOK;
type An = record {Теория} P1:Char; {Переменная поля флага : конец файла, номер иллюстрации} P2:array[0..69] of char; {Переменная поля текста} end;
type Ant=record {Текст вопросов} P1:Char; {Переменная поля флага:конец файла, номер иллюст- рации, конец вопроса} P2:array[0..1] of Char; {Переменная поля номера вопроса} P3:array[0..69] of Char; {Переменная поля текста вопроса} end;
type Antr=record { Справки } P1:Char; {Переменная поля флага:конец файла, конец вопроса, номер иллюстрации} P2:array[0..1] of Char; {Переменная поля номера вопроса} P3:array[0..0] of Char; {Переменная поля флага: номер справки и конец справки} P4:array[0..69] of Char; {Переменная поля текста справки} P5:array[0..2] of Char; {Переменная поля оценки} end; var F7: file of An ; {Переменные теории} A:An; N,Y,T:integer; St:string[68];
var F72:file of Ant; { Переменные вопросов} At:Ant; R1:string[2]; Z1:integer; S:string[68]; var F73:file of Antr; {Переменные справок} Atr:Antr; R2:string[2]; R3:string[1]; Stt:string[68]; R4:string[2]; Z2,Z3,Z4:integer; CH: Char;{Переменная для принятия символа с клвиатуры} K,J,I:integer; {Переменные циклов} M: array[0..3] of integer; {Массив для хранения черырех выбранных номеров вопросов} Code:integer;
var R5:string[1]; {переменные вывода результатов} Z5:integer; REZ7:Longint; {переменная оценки} var Size:word; pt:pointer; u,Nn,xt,yt:integer;
procedure RAZDEL70;
implementation
procedure RAZDEL70;
Label 0,1,2,3;
begin REZ7:=6; GraphRegim; Assign(F7,'RAZTEX7.pas'); {связь с файлом теории} {SI-} Reset(F7); {SI+} If IOResult <> 0 then Writeln ('Нет файла RAZTEX7.pas'); repeat OKNO; For N:=0 to 32 do begin Read(F7,A); St:=StrPas(A.P2); {Преобразование ASCIIZ-строки A.P2 в строку типа string} case A.P1 of ' ':OutTextXY(20,10*N+10,St); '*':begin SetColor(4); OutTextXY(20,10*N+10,St); SetColor(1); end; '1':begin For Nn:=0 to 3 do begin GetMem(pt,ImageSize(0,200,50,250)); GetImage(0,200,50,250,pt^); u:=0; while u<(GetMaxX) do begin PutImage(u-1,150,pt^,1); u:=u+8; PutImage(u-1,150,pt^,1); end; Dispose(pt); end; end; '2':begin SetViewPort(10,50,630,330,true); SetBKColor(0); SetViewPort(20,60,620,320,true); ClearViewPort; SetBKColor(14); Sound(880); Delay(200); NoSound; SetBKColor(12); Sound(698); Delay(200); NoSound; SetBKColor(14); Sound(880); Delay(200); NoSound; SetBKColor(12); Sound(698); Delay(200); NoSound; SetBKColor(10); Sound(934); Delay(200); NoSound; SetBKColor(14); Sound(880); Delay(200); NoSound; SetBKColor(13); Sound(784); Delay(400); NoSound; SetBKColor(1); Sound(523); Delay(200); NoSound; SetBKColor(9); Sound(523); Delay(200); NoSound; SetBKColor(1); Sound(523); Delay(200); NoSound; SetBKColor(2); Sound(587); Delay(100); NoSound; SetBKColor(5); Sound(659); Delay(100); NoSound; SetBKColor(4); Sound(699); Delay(200); NoSound; SetBKColor(3); Sound(699); Delay(200); NoSound; SetBKColor(4); Sound(699); Delay(200); NoSound; Delay(600); SetViewPort(5,5,635,335,true); SetBKColor(14); ClearDevice; OKNO; End; '#':GoTo 0; '0':GoTo 0; end; end; 0:readkey; until A.P1='0' ; Close(F7); Assign(F72,'Jos.pas'); {связь с файлом вопросов} {SI-} Reset(F72); {SI+} If IOResult<>0 then Writeln('Нет файла Jos.pas'); Assign(F73,'Ios.pas'); {SI-} Reset(F73); {связь с файлом справок} {SI+} If IOResult<>0 then Writeln('Нет файла Ios.pas'); OKNO1; {"Контрольные вопросы"} readkey; ClearDevice; Randomize; {Выбор четырех номеров вопросов} For J:=0 to 3 do begin 1:I:=Random(7); If I=0 then GOTO 1; For K:=0 to J-1 do begin If M[k]=I then GOTO 1; end; M[J]:=I; end; repeat OKNO; begin Read(F72,At); R1:=StrPas(At.P2);{Преобразование ASCIIZ-строки At.P2 в строку типа string} Val(R1,Z1,Code); {Преобразование символьного представления номера вопроса в двоичную форму} Y:=20; If(Z1=M[0]) or (Z1=M[1]) or (Z1=M[2]) or (Z1=M[3]) then begin repeat S:=StrPas(At.P3); {Преобразование ASCIIZ-строки At.P3 в строку типа string} OutTextXY(20,Y,S); {Вывод текста вопроса} case At.P1 of ' ':begin end; end; Y:=Y+10; Read(F72,At); until At.P1='*'; OutTextXY(50,320,'ВВЕДИТЕ НОМЕР ПРАВИЛЬНОГО ОТВЕТА ___'); 2:CH:=ReadKey; SetColor(4); OutTextXY(320,310,CH); SetColor(1); readkey; If(CH<>'1') and (CH<>'2') and (CH<>'3') and (CH<>'4') then begin SetFillStyle(1,11); Bar(318,290,327,320); GoTo 2; end else repeat Read(F73,Atr); R2:=StrPas(Atr.P2); {Преобразование ASCIIZ-строки Atr.P2 в строку типа string} Val(R2,Z2,Code); {Преобразование символьного представления номера вопроса в двоичную форму} If Z2=Z1 then begin repeat If Atr.P3=CH then begin Y:=100; OKNO; repeat Stt:=StrPas(Atr.P4); {Преобразование ASCIIZ-строки Atr.P4 в строку типа string} R5:=StrPas(Atr.P5); {Преобразование ASCIIZ-строки Atr.P5 в строку типа string} Val(R5,Z5,Code); {Преобразование символьного представления оценки в двоичную форму} REZ7:=Round((REZ7+Z5)/2); {Формирование оценки } OutTextXY(20,Y,Stt); Y:=Y+10; case Atr.P1 of ' ':begin end; end; Read(F73,Atr); until Atr.P3='*'; readkey; GOTO 3; end else Read(F73,Atr); until Atr.P1='*'; end until Atr.P1='0'; end else 3:end; until At.P1='0'; Close(F72); Close(F73); CloseGraph; end; begin end. unit MYBOOK;
interface
uses Graph,Crt,Strings,Dos;
Type Dlina=string[10];
var Ch:char; Regime:byte; c,Gd,Gm,i,x1,x2,y1,y2:integer; ArcCoords:ArcCoordsType; StAngle,dAngle,KRadius:word;
const OK:array[1..11] of PointType= ((X:0;Y:0),(X:640;Y:0), (X:640;Y:350), (X:0;Y:350),(X:0;Y:8),(X:5;Y:8), (X:5;Y:345),(X:635;Y:345),(X:635;Y:5),(X:0;Y:5), (X:0;Y:0));
procedure Diogramma; procedure OKNO; procedure OKNO1; procedure GraphRegim;
implementation
procedure OKNO; begin SetColor(14); DrawPoly(11,OK); SetFillStyle(1,14); FloodFill(635,2,14); SetFillStyle(1,11); Bar(6,6,634,344); SetColor(1); end;
procedure OKNO1; const OK:array[1..11] of PointType= ((X:0;Y:0),(X:640;Y:0), (X:640;Y:350), (X:0;Y:350),(X:0;Y:8),(X:5;Y:8), (X:5;Y:345), (X:635;Y:345),(X:635;Y:5),(X:0;Y:5), (X:0;Y:0));
begin SetColor(14); DrawPoly(11,OK); SetFillStyle(1,14); FloodFill(635,2,14); SetFillStyle(1,11); Bar(6,6,634,344); SetColor(4); SetTextStyle(0,0,6); OutTextXY(50,100,'Контрольные'); OutTextXY(140,150,'вопросы'); SetTextStyle(0,0,1); SetColor(1); end;
procedure Diogramma; begin SetViewPort(0,0,GetMaxX,GetMaxY,true); SetColor(11); SetLineStyle(0,0,3); SetFillStyle(1,13); PieSlice(170,210,0,359,120); SetFillStyle(9,2); PieSlice(170,210,0,30,120); SetFillStyle(1,3); Sector(170,210,0,359,80,120); SetFillStyle(11,5); Sector(170,210,0,270,80,120); SetFillStyle(1,15); Circle(480,210,120); FloodFill(480,210,11); StAngle:=0; dAngle:=360 Div 16; while(StAngle+dAngle)<360 do begin c:=random(14); SetColor(c); Arc(535,210,StAngle,StAngle+dAngle,40); GetArcCoords(ArcCoords); with ArcCoords do begin KRadius:=Round(SQRT(SQR(Xend-600)+SQR(Yend-210))); Circle(Xend,Yend,KRadius); setfillstyle(1,c); floodfill(xend-kradius+5,yend,c); end; StAngle:=StAngle+dAngle; end; end;
procedure GraphRegim; var Gd,Gm:integer; begin Gd:=Detect; InitGraph(Gd,Gm,''); If GraphResult<>grOK then Halt(1); end;
begin end. Приложение 2 База данныхДля работы с настоящей программой Вам необходимо знание языка TURBO-PASCAL 7.0, интегрированной среды, персонального компьютера IBM PC. Расширенный алгоритмический язык TURBO-PASCAL7.0 в качестве гра- фических средств соддержит в арсенале два стандартных модуля: Grt и Graph. Модуль Grt содержит процедуры и функции следующего назначения: 1.Процедуры задания режимов работы. 2.Полцедуры управления цветом. 3.Процедуры и функции работы с экраном. 4.Функции работы с клавиатурой. 5.Процедуры управления звуком и др. Процедуры и функции модуля Graph имеют назначение: 1.Управление графическим режимом. 2.Управление экраном, окном, страницей. 3.Управление цветом и палитрой. 4.Работа с точками и линиями. 5.Построение различных фигур. 6.Работа с текстом. 7.Обмен с памятью. В настоящей программе они скомпанованы для изучения в следующие разделы: 1.Программирование графических режимов. 2.Управление курсором и полем рисования. 3.Формирование прямолинейных монохромных изображений 4.Управление цветом и стилем изображений. 5.Программирование цветных криволинейных изображений 6.Формирование графических текстов. 7.Программирование озвученных динамических сцен. Первые два раздела являются справочными, а остальные разделы содержат теоретическую часть и контрольные вопросы. 0 ПРОГРАММИРОВАНИЕ ГРАФИЧЕСКИХ РЕЖИМОВ Состав, назначение и взаимное положение операторов управления графическими режимами в языке TURBO-PASCAL удобно рассматривать в контексте структуры характерной графической программы: ---------- program <идентификатор> - заголовок программы. I uses Graph - используемые модули. I {Действия в текстовом режиме}. I ------ InitGraph - инициализация графических средств I I {Действия в графическом режиме " по умолчанию". I I SetGraphMode - изменение графического режима. I I {Действия в новом графическом режиме}. I I I-- RestoreCrtMode - временный переход в текстовому режиму. I I I {Действия в текстовом режиме}. I I I-> SetGraphMode - возврат в графический режим. I I {Действия в графическом режиме}. I I-----> CloseGraph I {Действия в текстовом режиме}. I--------> end. - завершение программы. * proсedure InitGraph(var GraphDriver:integer; * var GraphMode:integer; * DriverPath:string); Инициализирует графическую систему, устанавливает графический режим, устанавливает исходные значения текущего указателя, палитры, цвета и т.д.. ПРОГРАММИРОВАНИЕ ГРАФИЧЕСКИХ РЕЖИМОВ GraphDriver - переменная, в которую необходимо записать код требуемого графического драйвера или нуль, если требуется автоматическое определение драйвера. GraphMode - переменная, в которую процедура помещает код графического режима. DriverPath - строка, содержащая путь к драйверу (если строка пустая, считается, что драйвер находится в текущем каталоге). В случае аварийной ситуации процедура устанавливает код ошибки: -2 - нет графического адаптера; -3 - нет драйвера устройства; -4 - ошибка в драйвере; -5 - нет памяти для загрузки драйвера; -10 - недопустимый режим для выбранного драйвера. * procedure CloseGraph(без параметров); Восстанавливает текстовый режим работы дисплея,бывший до вызова графической системы, и освобождает динамическую память компьютера, отведенную под графический драйвер. * procedure SetGraphMode(Mode:integer); Mode - графический режим.Изменяет ранее используемый графи- ческий режим либо возвращает систему в прежний графический режим после временного перехода к текстовому режиму. Условием использо- вания оператора является сохранение в динамической области ОЗУ ранее загруженного графического драйвера. ПРОГРАММИРОВАНИЕ ГРАФИЧЕСКИХ РЕЖИМОВ * procedure RestoreCrtMode(без параметров); Восстанавливает исходный текстовый режим дисплея без потери в динамической области ОЗУ програмы графического драйвера. Имеется ряд операторов для получения справок о текущем графическом режиме: * function GetDriverName:string; - Возвращает строковое название текущего графического адаптера. * function GetModeName(ModeNumber:integer):string - Возвращает строковое название требуемого графического режима. * function GetMaxMode:integer - Возвращает максимальный номер графического режима для текущего адаптера. * procedure GetModeRange(GraphDriver:integer; * var LowMode,HighMode:integer); - Выдает справку о диапазоне номеров графических режимов задан- ного графического адаптера. Возвращаемые параметры LowMode и HighMode означают минимальный и максимальный номера графических режимов, соответственно. * function GetGraphMode:integer; - Возвращает номер текущего графического режима. ПРОГРАММИРОВАНИЕ ГРАФИЧЕСКИХ РЕЖИМОВ * procedure GetAspectRatio(var Xasp, Yasp:word); - Возвращает в своих параметрах ввеличины дискретов экрана по осям X и Y ,сооответственно. 0 УПРАВЛЕНИЕ КУРСОРОМ И ПОЛЕМ РИСОВАНИЯ В графическом режиме также как и в текстовом положение выво- димых на экран данных в каждый момент времени определяется курcо- ром. Однако, в этом случае курсор невидим. При вхождении в гра- фический режим с помощью процедуры InitGraph курсор автоматически помещается в левый верхний угол экрана, фон экрана принимает первый (черный) цвет палитры. Для определения и изменения положения курсора без рисования в TURBO-PASCAL предусмотрены операторы MoveTo,MoveRel, GetX,GetY. * procedure MoveTo(x,y:integer); где x,y - координаты по горизонтали и вертикали соответственно в отсчете от левого верхнего угла экрана. * procedure MoveRel(Dx,Dy:integer); Смещает курсор без рисования относительно его текущего поло- жения. Dx, Dy - смещения курсора по координатам x и y. * function GetX: word; Определяет для курсора значение координаты X. * function GetY: word; Определяет для курсора значение координаты Y. УПРАВЛЕНИЕ КУРСОРОМ И ПОЛЕМ РИСОВАНИЯ При управлении положением курсора полезными оказываются также справочные функции GetMaxX и GetMaxY, которые возвращают координаты самой правой и самой нижней возможных графических позиций курсора, соответственно, для текущего графического драйвера и режима. * procedure ClearDevice; Очищает экран от следов предшествовавшего рисования и восста- навливает исходные параметры графики. * procedure SetViewPort(X1,Y1,X2,Y2:word;Clip:boolean); Устанавливает прямоугольное окно рисования с перемещением курсора в левый верхний угол окна. Параметры процедуры имеют следу- ющий смысл:(X1,Y1) и (X2,Y2) определяют соответствввенно координаты левого верхнего и правого нижнего углов окна, а Clip принимает значение true при необходимости отсечения изображения за границами окна и false, когда этого делать не надо . * procedure ClearViewPort; Очищает текущее окно, заполняя его первым цветом текущей цветовой палитры, и переводит курсор в левый верхний угол окна. * procedure GetViewSettings(var ViewPortType); Возвращает параметры активного окна просмотра в переменной ViewPort. Тип ViewPortType описан в модуле Graph. 0 ФОРМИРОВАНИЕ ПРЯМОЛИНЕЙНЫХ МОНОХРОМНЫХ ИЗОБРАЖЕНИЙ В данном разделе не рассматривается управление цветом и стилем рисования и закрепляется за фоном светло-серый, а за курсором синий цвет. * procedure LineTo(X,Y:integer); щ Проводит отрезок прямой от текущего положения курсора к заданной точке (X,Y). * procedure LineRel(Dx,Dy:integer); 2 Рисует отрезок прямой по направлению к точке, смещенной от текущего положения курсора на рас- стояние Dx и Dy по осям OX и OY . * procedure Line(X1,Y1,X2,Y2:integer); 3 Проводит прямую между точками (X1,Y1) и (X2,Y2). После выполнения этой и последующих процедур курсор возвращается в предшествующее положение. ФОРМИРОВАНИЕ ПРЯМОЛИНЕЙНЫХ МОНОХРОМНЫХ ИЗОБРАЖЕНИЙ * procedure Rectangle(X1,Y1,X2,Y2:integer); 4 Строит контуры прямоугольника с координатами левого верхнего (X1,Y1) и нижнего правого (X2,Y2) углов. * procedure Bar(X1,Y1,X2,Y2:integer); 5 Строит прямоугольник, закрашенный текущим цветом и орнаментом заполнения. (X1,Y1), (X2,Y2) - координаты левого верхнего и правого нижнего углов соответственно. * procedure Bar3D(X1,Y1,X2,Y2:integer; * Depth:word;Top:boolean) 6 Рисует аксонометрию закрашенного по фасаду прямоугольного параллелепипеда. (X1,Y1),(X2,Y2) - координаты левого верхнего и правого нижнего углов прямоугольного фасада. Depth - ширина боковой грани (отсчитывается по годизонтали. Top - признак включения верхней грани. ФОРМИРОВАНИЕ ПРЯМОЛИНЕЙНЫХ МОНОХРОМНЫХ ИЗОБРАЖЕНИЙ * procedure DrawPoly(NumPoints:word; * var PolyPoints); 7Строит ломаную линию. NumPoints - число вершин многоугольника PolyPoints - переменная без типа, содержащая NumPoints+1 пар координат вершин многоугольника (первая и последняя вершины должны совпадать). * procedure FillPoly(NumPoints:word;var PolyPoints); 8 Закрашивает многоугольник текущим цветом и орнаментом. Параметры NumPoints и PolyPoints именют тот же смысл и тип, что и одноимеынные параметры процедуры DrawPoly. 0 01С ПОМОЩЬЮ КАКИХ ПРОЦЕДУР МОЖНО НАИБОЛЕЕ РАЦИОНАЛЬНО ПОСТРОИТЬ ОТРЕЗОК , ЕСЛИ ИЗВЕСТНЫ КООРДИНАТЫ КОНЦОВ? 1 LineTo(X,Y); Line(X1,Y1,X2,Y2); 2 Line(X1,Y1,X2,Y2); DrawPoly(NumPoint,PolyPoints); 3 LineTo(X,Y); Line(X1,Y1,X2,Y2); DrawPoly(NumPoint,Poly Points); 4 Line(X1,Y1,X2,Y2); * 02КАК ПОСТРОИТЬ СТОЛБЧАТУЮ ДИАГРАММУ В ЗАРАНЕЕ СФОРМИРОВАННОЙ РАМКЕ? 1 1 Bar3D(X1,Y1,X2,Y2,Depth,true); SetViewPort(X1,Y1,X2,Y2,false); ClearViewPort; Bar3D(X1,Y2,X2,Y3,Depth,false); 2 Bar3D(X1,Y1,X2,Y2,Depth,true); SetViewPort(X1,Y1,X2,Y2,Depth,true); ClearViewPort; Bar3D(X1,Y1,X2,Y3,Depth,false); 3 Bar3D(X1,Y1,X2,Y2,Depth,true); Bar3D(X1,Y2,X2,Y3,Depth,false); 4 Bar3D(X1,Y1,X2,Y2,Depth,true); Bar3D(X1,Y2,X2,Y3,Depth,true); * 03КАК НА ПОЛНОСТЬЮ ЗАКРАШЕННОМ ЭКРАНЕ ПОЛУЧИТЬ НЕЗАКРАШЕННУЮ ПРЯМОУ- ГОЛЬНУЮ ОБЛАСТЬ? 1 Bar(X1,Y1,X2,Y2); SetViewPort(X1,Y1,X2,Y2,true); ClearViewPort; 2 Bar(X1,Y1,X2,Y2); 3 Bar3D(X1,Y1,X2,Y2,Depth,true); 4 Bar3D(X1,Y1,X2,Y2,false); * 04КАК ИСКЛЮЧИТЬ ПОЯВЛЕНИЕ НА ЭКРАНЕ ЗАТЕНЯЕМЫХ КОНТУРОВ НИЖНЕГО 2 ПАРАЛЛЕЛЕПИПЕДА В ОБЬЕМНОЙ СТОЛБЧАТОЙ ДИАГРАММЕ? 1 Использовать процедуру Bar3D дважды. построенный верхний парал- лелепипед "закроет" автоматически верхнюю грань нижнего парал- лелепипеда. 2 Установить параметр Top=false в процедуре Bar3D при построении нижнего параллелепипеда. 3 Установить параметр Top=false в процедуре Bar3D при построении верхнего параллелепипеда. 4 Построить ломаную линию соответствующую контурам верхней грани нижжнего параллелепипеда с помощью процедуры DrawPole и закра- сить его в белый цвет с помощью процедуры FillPole. * 05КАК НА ЭКРАНЕ ЗАКРАСИТЬ БЕЛЫМ ЦВЕТОМ ОБЛАСТЬ, ОГРАНИЧЕННУЮ ЗВЕЗДОЙ? 1 Построить звезду с помощью процедуры DrawPole(10,zve),где zve - константа типа PointType, является массивом координат вершин фигуры и содержит 10 элементов. 2 Использовать процедуру DrawPole(10,zvez) , где константа zvez содержит 11 элементов. 3 Применить процедуру FillPole(10,zves), где константа zves содер- жит 11 элементов. 4 Установить цвет рисования белый и с помощью процедуры FillPole(10,zves) построить звезду, закрашенную белым цветом. * 06С ПОМОЩЬЮ КАКОЙ ПРОЦЕДУРЫ ИЛИ ФУНКЦИИ ВОЗМОЖНО УСТАНОВИТЬ СТРОКОВОЕ НАЗВАНИЕ ТЕКУЩЕГО ГРАФИЧЕСКОГО АДАПТЕРА? 1 Функция GetDriverName; 2 Функция GetModeName(ModeNumber); 3 Функция GetMaxMode; 4 Процедура GetModeRange(GraphDriver;LowMode,HighMode); * 07СУЩЕСТВУЕТ ЛИ ВОЗМОЖНОСТЬ ОПРЕДЕЛЕНИЯ ЗНАЧЕНИЯ КООРДИНАТ КУРСОРА. 1 Нет 2 Да, с помощью функций GetX, GetY. 3 Да, с помощью функций GetMaxX, GetMaxY. 4 Да, с помощью функции MoveRel. * 08С ПОМОЩЬЮ КАКОГО ФРАГМЕНТА ПРОГРАММЫ МОЖНО ВЫВЕСТИ НА ЭКРАН 3 СЛЕДУЮЩУЮ КАРТИНКУ? КУРСОР НАХОДИТСЯ В ТОЧКЕ (X1,Y1). 1 Line(X,Y,X1,Y1); MoveRel(X,Y+dY); Line(X,Y+dY,X1,Y1); MoveRel(0,dY); LineTo(X1,Y1); 2 LineTo(X1,Y1); LineRel(0,dY); LineRel(0,2dY); 3 LineTo(X,Y); MoveRel(0,dY); Line(X,Y+dY,X1,Y1); MoveRel(0,dY); Line(X,Y+2dY,X1,Y1); 4 LineTo(X,Y); LineRel(0,dY); LineRel(0,2dY); * 09ГДЕ ПОМЕЩАЕТСЯ КУРСОР И КАКОЙ ФОН ЭКРАНА УСТАНАВЛИВАЕТСЯ ПРИ ВХОЖДЕНИИ В ГРАФИЧЕСКИЙ РЕЖИМ С ПОМОЩЬЮ ПРОЦЕДУРЫ InitGraph? 1 Курсор помещается в центр экрана и устанавливается черный цвет фона экрана. 2 Курсор помещается в правый верхний угол экрана и устанав- ливается черный цвет фона экрана. 3 Курсор помещается в левый верхний угол экрана и устанавлива- ется черный цвет фона экрана. 4 Курсор помещается в левый верхний угол экрана и устанавлива- ется белый цвет фона экрана. * 10С КАКОЙ ЧАСТОТОЙ ОБНОВЛЯЕТ ЭКРАН КОНТРОЛЛЕР ДИСПЛЕЯ ПЭВМ IBM? 1 50-60 раз/сек 2 20-40 раз/сек 3 100-120 раз/сек 4 200 раз/сек * 0 011Процедуру LineTo(X,Y) можно использовать только в случае, когда 002 один из концов отрезка совпадает с положением курсора. * 2Ответ правильный. Однако, применение процедуры DrawPoly в данном 004 случае не является рациональным. * 3Процедуру LineTo(X,Y) можно использовать только в случае, когда один002 из концов отрезка совпадает с положением курсора. Процедура DrowPoly не является в данном случае рациональной. * 4Ответ правильный. 005 * * 021Отввет неверный. Верхний параллелепипед будет иметь очищенную перед-002 нюю грань. Это не требуется по условию задачи. При этом неверно указаны параметры процедуры Bar3D при построении второго параллеле- пипеда. * 2Неправильно указаны параметры процедуры SetViewPort. Координаты окна002 отсчитываются от левого верхнего угла экрана в то время как для про- цедуры Bar3D от левого верхнего угла окна. * 3Ответ правильный. 005 * 4Ответ не точный.На экране появятся затененные контуры нижнего парал-003 лелепипеда. * * 031Ответ не точный.Процедуры SetViewPort и ClearViewPort в данном слу- 003 чае излишние,т.к.уже процедура Bar рисует прямоугольную область, которую закрашивает первым цветом палитры, если цвет не задан ранее * 2Ответ правильный 005 * 3Процедура Bar3D рисует аксонометрию прямоугольного параллелепипеда,а002 не прямоугольную область. * 4Процедура Bar3D рисует аксонометрию прямоугольного параллелепипеда,а002 не прямоугольную область. * * 041Ответ неверный. Процедура Bar3D рисует контуры аксонометрии закра- 002 шенного по фасаду параллелепипеда. Боковая и верхняя грани не закра- шиваются, т.о. затемненная часть верхней грани нижнего параллелепи- педа не исчезнет. * 2Ответ правильный. 005 * 3Ответ неверный. Параметр Top процедуры Bar3D регулирует наличие или 002 отсутствие верхней (а не нижней) левой грани аксонометрии. * 4Ответ неверный. Достаточно установить параметр Top=False процедуры 002 Bar3D. Дополниетльные меры излишне. * * 051Ответ неверный. Процедура DrawPoly построит звезду с одной невидимой002 гранью. Цвет фигуры будет соответствовать цвету фона. * 2Ответ неверный. Цвет фигуры будет соответствовать цвету фона и будет002 белым только в случае, когда фон экрана белый. * 3Ответ правильный. 005 * 4Ответ правильный. Однако, закраска белым цветом возможна и 004 по умолчанию. * * 061Ответ правильный. 005 * 2Ответ неверный. Функция GetModeName возвращает строковое название 002 требуемого графического режима для текущего адаптера. * 3Ответ неверный.Функция GetMaxMode возвращает максимальный номер 002 графического режима для текущего адаптера. * 4Ответ неверный. Процедура GetModeRange выдает справку о диапазоне 002 номеров графических режимов заданного графического адаптера. * * 071Ответ неверный. Такая возможность существует. 002 * 2Ответ правильный. 005 * 3Ответ неверный. Данные процедуры возвращают максимально возможные 002 для текущего драйвера и режима графические позиции курсора. * 4Ответ неверный. Процедура MoveRel смещает курсор относительно его 002 текущей позиции. * * 1081Ответ неверный. Рисунок будет иметь следующий вид: 002 * 2 2Ответ неверный.Рисунок будет иметь следующий вид: 002 * 3Ответ правильный. 005 * 3 4Ответ неверный. рисунок будет иметь следующий вид: 002 * * 091Ответ неверный. 002 * 2Ответ неверный. 002 * 3Ответ правильный. 005 * 4Ответ неверный. 002 * * 101Ответ правильный. 005 * 2Ответ неверный. 002 * 3Ответ неверный. 002 * 4Ответ неверный. 002 * * 0 УПРАВЛЕНИЕ ЦВЕТОМ И СТИЛЕМ ИЗОБРАЖЕНИЙ В данном разделе мы рассмотрим возможности управления цветовой палитрой и стилем рисования. * procedure GetPalette(var PaletteType); Возвращает текущую плитру и количество цветов в ней. Применя- ется только в графическом режиме и только с драйверами EGA, EGA 64 и VGA. * procedure SetAllPalette(var Palette); Меняет все цвета палитры на заданные. Переменная без типа Palette в первом байте содержит число N- количество цветов в палитре а в последующих N байах - коды задаваемых цветов. Если задана вели- чина -1, то исходный цвет остается без изменений. * procedure SetPalette(NumberColor:word;Color:byte); Изменяет один из цветов палитры. NumberColor - порядковый номер изменяемого цвета. Color -код нового цвета. * procedure SetColor(Color:word); Устанавливает текущий цвет рисования.Color - код цвета либо его имя. Возможные значения параметра приведены на следующем экране УПРАВЛЕНИЕ ЦВЕТОМ И СТИЛЕМ ИЗОБРАЖЕНИЯ _____________________________________________________________________ Имя Значение Назначение -------------------------------------------------------------------- Black 0 черный Blue 1 синий Green 2 зеленый Cyan 3 голубой Red 4 красный Magenta 5 фиолетовый Brown 6 коричневый LightGray 7 светло-серый DarkGray 8 темно-серый LightBlue 9 светло-синий LightGreen 10 светло-зеленый LightCyan 11 светло-голубой LightRed 12 розовый LightMagenta 13 светло-фиолетовый Yellow 14 желтый 1White 15 белый УПРАВЛЕНИЕ ЦВЕТОМ И СТИЛЕМ ИЗОБРАЖЕНИЯ * procedure SetBKColor(Color:word); Устанавливает цвет фона рисования. Color - код или имя цвета. Для получения справок о кодах цветов, связанных с курсором и фоном рисования, используются функции: function GetColor:word; function GetBKColor:word; Факторами, определяющими стиль рисования, являются толщина и способ выражения линий, используемых в изображениях контурных линий и линий закраски замкнутых фрагментов рисунков. * procedure SetLineStyle(LineStyle:word; Pattern:word; * Thiekness:word); Устанавливает стиль контурных линий и их толщину. Параметр LineStyle может принимать следующие значения: SolidLn = 0 ___________________________________________________ DottedLn = 1 ................................................... CenterLn = 2 ._._._._._._._._._._._._._._._._._._._._._._._._._ . DashedLn = 3 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ UserBitLn = 4 тип, определяемый пользователем. Когда LineStyle=userBitLn, задается параметр Pattern - шаблон линии - двухбайтовое число, каждый бит которого равен 1, если оче- редной пиксель следует высветить, и 0 в противном случае. Параметр Thickness устанавливает толщину линий и может при- нимать следующие значения: NormWidth = 1 - тонкая линия ThickWidth= 3 - толстая линия УПРАВЛЕНИЕ ЦВЕТОМ И СТИЛЕМ ИЗОБРАЖЕНИЯ * procedure GetLineSettings(var LineInfo:LineSettingsType); Возвращает параметры текущего стиля контурных линий. Тип LineSettingsType описан в модуле Graph как запись, поля которой: LineStyle:word; Pattern:word; Thickness:word;, имеют тот же смысл, что и одноименные параметры процедуры SetLineStyle. * procedure SetFillStyle[(Pattern:word;Color:word)]; Устанавливает стандартные орнамент и цвет заполнения. "По умол- чанию" закраска белая сплошная. Параметр Color - установка цвета. Возможные значения параметра Pattern проиллюстрированы на следующем экране. * procedure SetFillPattern(Pattern:FillPatternType;Color:word); Задает произвольный орнамент и цвет заполнения фигур. Pattern - задаваемый пользователем орнамент. typeFillPatternType=array[1..8] of byte; Color - код цвета в палитре. * procedure GetFillSettings(varFillInfo:FillSettingsType) Возвращает код и цвет стандартного образца закраски в пере- менных Color и Pattern соответственно. УПРАВЛЕНИЕ ЦВЕТОМ И СТИЛЕМ ИЗОБРАЖЕНИЯ -------------------------------------------------------------------- Имя Значение -------------------------------------------------------------------- EmptyFill 0 Фоновым цветом SolidFill 1 Заданным цветом LineFill 2 LtSlashFill 3 SlashFill 4 BkSlashFill 5 LtBkSlashFill 6 HatchFill 7 XHatchFill 8 InterLeaveFill 9 WideDotFill 10 CloseDotFill 11 2 UserFill 12 Заполнение определяется пользователем 0-------------------------------------------------------------------- 01С ПОМОЩЬЮ КАКОЙ ПРОЦЕДУРЫ МОЖНО ВЫВЕСТИ НА ЭКРАН СПИСОК КОДОВ ЦВЕТОВ НЕИЗВЕСТНОЙ ВАМ ТЕКУЩЕЙ ЦВЕТОВОЙ ПАЛИТРЫ? 1 GetPalette(Palette); 1 2 SetPalette(NumberColor,Color); 3 SetAllPalette(Palette); 4 SetLineStyle(LineStyle,Pattern,Thickness); * 02УСТАНОВИТЕ НА ЧЕРНОМ ЭКРАНЕ КВАДРАТНОЕ ОКНО И ЗАКРАСЬТЕ ЕГО СПЛОШНЫМ БИРЮЗОВЫМ ЦВЕТОМ(3). 1 SetFillStyle(0,3); Bar(X1,Y1,X1+d,Y1+d); 2 SetBKColor(0); SetColor(3); Bar(X1,Y1,X1+d,Y1+d); 3 SetBKColor(0); SetFillStyle(0,3); Bar(X1,Y1,X1+d,Y1+d); 4 SetFillStyle(0,3); SetBKColor(0); Bar(X1,Y1,X1+d,Y1+d); * 03С ПОМОЩЬЮ КАКОГО ФРАГМЕНТА ВОЗМОЖНО ЗАКРАСИТЬ ПРЯМОУГОЛЬНУЮ ОБЛАСТЬ КРАСНОГО(4) ЭКРАНА ЧАСТОЙ СЕТКОЙ(9) СИНЕГО ЦВЕТА(1)? 1 SetBKColor(4); SetFillStyle(9,1,0); Bar(X1,Y1,X2,Y2); 2 SetBKColor(4); Rectangle(X1,Y1,X2,Y2); SetFillStyle(9,1,0); 3 SetBKColor(4); SetFillStyle(9,1); Bar(X1,Y1,X2,Y2); 4 SetBKColor(4); Bar(X1,Y1,X2,Y2); SetFillStyle(9,1); * 04ИМЕЕТСЯ ЛИ В ЯЗЫКЕ TURBO PASCAL ВОЗМОЖНОСТЬ УСТАНАВЛИВАТЬ ПРОИЗВОЛЬНЫЙ (ПО ЖЕЛАНИЮ ПОЛЬЗОВАТЕЛЯ) ЦВЕТ РИСОВАНИЯ, СТИЛЬ И ТОЛЩИНУ ЛИНИЙ РИСОВАНИЯ? 1 Нет 2 Только цвет 3 Только стиль линий 4 Только стиль и толщину линий * 05НАПИШИТЕ ПРОГРАММУ РИСОВАНИЯ КОНТУРОВ ПРЯМОУГОЛЬНИКА ЛИНИЯМИ, СОСТОЯЩИМИ ИЗ ЧЕРЕДУЮЩИХСЯ ПАР ТОЧЕК И ТИРЕ. 1 GetLineStyle(0,0,1); Rectangle(X1,Y1X2,Y2); 2 SetLineStyle(4,$3,1); Rectangle(X1,Y1,X2,Y2); 3 SetLineStyle(4,3,1); Rectangle(X1,Y1,X2,Y2); 4 SetLineStyle(0,13,1); Rectangle(X1,Y1,X2,Y2); * 06КАК ОБЕСПЕЧИТЬ ЗАКРАСКУ КАКОЙ-ЛИБО ОБЛАСТИ ЭКРАНА КРАСНЫМ(4) ЦВЕТОМ 25% ЯРКОСТИ? 1 SetFillPatern(1,2,4,8,1,2,4,8); 2 SetFillPatern(1,2,4,8,1,2,4,8;4); 3 SetFillPatern(11,22,44,88,11,22,44,88); 4 SetFillPatern(11,22,44,88,11,22,44,88;4); * 07КАКАЯ ИЗ НИЖЕУКАЗАННЫХ ПРОЦЕДУР УСТАНАВЛИВАЕТ СТАНДАРТНЫЕ ОБРАЗЦЫ ЗАКРАСКИ И ИХ ЦВЕТА? 1 SetFillStyle(Pattern:word;Color:word); 2 SetFillPatern(Pattern:FillPatternType;Color:Word); 3 GetFillSettings(var FillInfo:FillSettingsType); 4 SetLineStyle(LineStyle:Word;Pattern:Word;Thickness:Word); * 08С ПОМОЩЬЮ КАКОЙ ПРОЦЕДУРЫ МОЖНО ЗАМЕНИТЬ НУЛЕВОЙ,ЧЕРНЫЙ, ЦВЕТ ПАЛИТРЫ НА ДЕВЯТЫЙ, СВЕТЛО-ГОЛУБОЙ? 1 SetAllPalette; 2 SetColor; 3 SetPalette; 4 GetPalette; * 09НАПИШИТЕ ПРОГРАММУ ЗАМЕНЫ ЦВЕТА НЕИЗВЕСТНОГО СТАНДАРТНОГО СТИЛЯ ЗАКРАСКИ НА ЦВЕТ X. 1 Color:=X; SetFillStyle(Pattern,Color); 2 GetFillSettings; Color:=X; SetFillStyle(Pattern;Color); 3 GetFillSettings; Color:=X; SetFillPattern(Pattern;Color); 4 GetFillSettings; Color:=X; SetFillStyle(Color;Pattern); * 10НАПИШИТЕ ПРОГРАММУ РИСОВАНИЯ НА КРАСНОМ(4) ЭКРАНЕ ГОЛУБОГО(9) ОКНА, ЗАКРАШЕННОГО КЛЕТКОЙ СИНЕГО ЦВЕТА(1). 1 SetBKColor(4); SetFillStyle(7,1); Bar(X1,Y1,X2,Y2); 2 SetBKColor(4); Bar(X1,Y1,X2,Y2); SetFillStyle(7,1); Bar(X1,Y1,X2,Y2); 3 SetBKColor(4); SetFillStyle(1,9); Bar(X1,Y1,X2,Y2); SetFillStyle(7,1); Bar(X1,Y1,X2,Y2); 4 SetFillStyle(9,1); Bar(X1,Y1,X2,Y2); SetFillStyle(7,1); SetBKColor(4); * 0 011Ответ правильный. 005 * 2Ответ неверный. Процедура SetPalette изменяет один из цветов палитры002 * 3Ответ неверный. Процедура SetAllPalette изменяет цвета палитры. 002 * 4Ответ неверный. Процедура SetLineStyle устанавливает стиль 002 контурных линик и их толщину. * * 021Ответ правильный. 005 * 2Ответ неверный. Процедура SetColor задает цвет рисования. но не 002 закрашивает фигуры. * 3Ответ неверный. Нет необходимости устанавливать черный цвет, т.к. 003 он автоматически устанавливается при вхождении в графический режим. * 4Ответ неверный.На черном экране, установленном процедурой SetBKColor002 будет виден лишь белый контур квадрата. * * 031Ответ неверный.Ошибка в написании параметров процедуры SetFillStyle.002 * 2Ответ неверный. Результатом выполенния данного фрагмента будет 002 красный экран.Ошибка в написании параметров процедуры SetFillStyle. * 3Ответ правильный. 005 * 4Ответ неверный. Стиль и цвет закраски необходимо установить до 002 построения фигуры. * * 041Ответ неверный. В языке имеется возможность устанавливать 002 произвольный (по желанию пользователя) стиль контурных линий с помощью процедуры SetLineStyle(LineStyle,Pattern,Thickness). При этом параметр LineStyle устанавливается в значение UserBitLn(4) а параметр Pattern представляет собой битовую строку, определяющую стиль изображения кнтурных линий. Возможности установить призволь- ный цвет рисования нет. * 2Ответ неверный. В языке имеется возможность устанавливать 002 произвольный (по желанию пользователя) стиль контурных линий с помощью процедуры SetLineStyle(LineStyle,Pattern,Thickness). При этом параметр LineStyle устанавливается в значение UserBitLn(4) а параметр Pattern представляет собой битовую строку, определяющую стиль изображения кнтурных линий. Возможности установить призволь- ный цвет рисования нет. * 3Ответ правильный. 005 * 4Ответ неверный. В языке имеется возможность устанавливать 002 произвольный (по желанию пользователя) стиль контурных линий с помощью процедуры SetLineStyle(LineStyle,Pattern,Thickness). При этом параметр LineStyle устанавливается в значение UserBitLn(4) а параметр Pattern представляет собой битовую строку, определяющую стиль изображения кнтурных линий. Возможности установить призволь- ный цвет рисования нет. * * 051Ответ неверный. Процедура GetLineStyle не устанавливает стиль 002 контурных линий, а возвращает их текущие параметры. * 2Ответ правильный. * 005 3Ответ неверный. Параметр Pattern не может состоять из одной цифры, 002 т.к. его значение - двухбайтовое число. * 4Ответ неверный. При установке стандартного стиля контурных линий 002 параметр Pattern не задается. * * 061Ответ неверный. Не указан параметр Color и элементы массива Pattern 002 являются двухбайтовыми. * 2Ответ неверный. Элементы массива Pattern являются двухбайтовыми. 002 * 3Ответ неверный. Не указан параметр Color. 002 * 4Ответ правильный. 005 * * 071Ответ правильный. 005 * 2Ответ неправильный. Процедура SetFillPattern позволяет программисту 003 определить свой, нестандартный, образец закраски. Возможно смодели- ровать и стандартный стиль с помощью той же процедуры. * 3Ответ неверный. Эта процедура возвращает код и цвет стандартного 002 образца закраски. * 4Ответ неверный. Процедура SetLineStyle устанавливает стиль контурных002 линий. * * 081Ответ неверный. Данный способ замены одного цвета другим допустим, 004 но не рационален. * 2Ответ неверный. Процедура SetColor устанавливает текущий цвет 002 рисования. * 3Ответ правильный. 005 * 4Ответ неверный. Процедура GetPalette выдает справку о текущей 002 цветовой палитре, но не меняет цвета. * * 091Ответ неверный. Параметр Color не следует устанавливать предвари- 002 тельно для процедуры SetFillStyle. Процедура SetFillStyle устанав- ливает стандартный образец закраски и цвет. * 2Ответ правильный. 005 * 3Ответ неверный. Процедура SetFillPattern устанавливает нестандартный002 стиль закраски. * 4Ответ неверный. Параметры процедуры SetFillStyle следует употреблять003 в обратном порядке. * * 101Ответ неверный.Фон прямоугольлника (X1,Y1,X2,Y2) будет красным. 002 * 2Ответ неверный. Прямоугольник (X1,Y1,X2,Y2) будет по умолчанию 002 закрашен белым цветом, а не голубым. * 3Ответ правильный. 005 * 4Ответ неверный. Процедура SetBKColor закрасит экран красным цветом, 002 закрасив прямоугольник. * * 0 ПРОГРАММИРОВАНИЕ ЦВЕТНЫХ КРИВОЛИНЕЙНЫХ ИЗОБРАЖЕНИЙ В данном разделе рассматриваются процедуры, позволяющие програм- мировать изображение криволинейных фигур из класса круговых и эллип- тических дуг, секторов, а также операторы формирования растровых изображений и часто используемые вспомогательные процедуры. * procedure Arc(X,Y:integer;StAngle,EndAngle,Radius:word); 1 Рисует против часовой стрелки текущим стилем и цветом дугу окружности с центром (X,Y), радиусом Radius от начального угла StAngle до конечного угла AndAngle. Угловые параметры задаются в градусах. * procedure CetArcCords(var ArcCoords:ArcCoordsType); Возвращает в переменной ArcCoords координаты концов дуги, проведенной последней командой Arc.Тип ArcCoordsType описан в модуле Graph как запись, значения полей которой аналогичны значению параметров процедуры Arc. * procedure Circle(X,Y:integer;Radius:word); 2 Строит контуры окружности радиуса Radius с центром (X,Y), заданным ранее цветом и стилем рисования. ПРОГРАММИРОВАНИЕ ЦВЕТНЫХ КРИВОЛИНЕЙНЫХ ИЗОБРАЖЕНИЙ * procedure Ellipse (X,Y:integer; * StAngle,EndAngle,XRadius,YRadius:word); 3 Строит текущим стилем и цветом дугу эллписа с центром (X,Y), начальным StAngle и конечным EndAngle углами, двумя полуосями XRadius и YRadius. * procedure FloodFill(X,Y,Border:word); Обеспечивает закраску ограниченной области, в которую входит точка (X,Y) , по образцу, установленному предварительно процедурой SetFillStyle либо SetFillPattern. Параметр Border определяет код цвета, ограничивающего закрашиваемую область. * procedure FillEllipse(X,Y:integer;XRadius, YRadius:word); Закрашивает область эллипса,используя предварительно установленные стиль и цвет закраски. Значения параметров аналогичны значениям параметров процедуры Ellipse. 4 5 ПРОГРАММИРОВАНИЕ ЦВЕТНЫХ КРИВОЛИНЕЙНЫХ ИЗОБРАЖЕНИЙ * prosedure PieSlice(X,Y:integer; * StAngle,EndAngle,Radius:word); 6 Строит и закрашивает круговой сектор установленным стилем и цветом. Параметры имеют тот же смысл и тип, что и одноименные параметры процедуры Arc. * procedure Sector(X,Y:integer; * StAngle,EndAngle,XRadius,YRadius:word); 7 Рисует и закрашивает эллиптический сектор, используя текущие стиль и цвет рисования и зак- раски. Параметры имеют тот же смысл и тип что и одноименные параметры процедуры Ellipse. * procedure Randomize; Инициализирует встроенный генератор случайных чисел сллучайным значением, получаемым от системного таймера компьютера. Описана в модуле System . Число, получаемое в результате работы генератора, хранится в предописанной переменной RandSeed. Присваивая ей конкрет- ные значения можно получать каждый раз заданную последовательность случайных чисел. ПРОГРАММИРОВАНИЕ ЦВЕТНЫХ КРИВОЛИНЕЙНЫХ ИЗОБРАЖЕНИЙ * function Random(Rande:word):word; Возвращает случайное число. Переменная Rande должна быть выра- жением целого типа, а результатом будет случайное число X длиной в слово в диапазоне 0=<X<Rande. Если Rande=<0, Random возвращает 0. Если параметр функции не задан вовсе, то результатом будет вещественное число в диапазоне 0=<X<1. * procedure Delay(Time:word); Выполняет задержку на заданное число миллисекунд, описана в модуде Crt. * function KeyPressed:boolean; Возвращает значение true, если на клавиатуре нажата какая-либо символьная клавиша, и false - в противном случае. Описана в модуле Crt. * procedure PutPixel(X,Y:integer;Color:word); Рисует на экране в позиции (X,Y) точку цвета Color. Опивана в модуле Graph. * procedure GetPixel(X,Y:integer):word; Возвращает код цвета заданной точки растра (X,Y). ПРОГРАММИРОВАНИЕ ЦВЕТНЫХ КРИВОЛИНЕЙНЫХ ИЗОБРАЖЕНИЙ В качестве примера использования функции PutPixel продемон- стрируем возможность формирования "звездного неба" до нажатия любой символьной клавиши. ............. Randomize; repeat PutPixel(Random(GetMaxX), Random(GetMaxY), Red); Delay(50); until KeyPressed; ............. Приведем еще один пример использования процедур и функций, описанных в данном разделе.На следующем экране Вы можете наблюдать эллиптическую диаграмму с выделенными секторами различного стиля и цвета закраски, а также кардиоиду, представленную семейством окруж- ностей, проходящих через общею точку опорной окружности и с центрами в концах равных элементов, составляющих опорную окружность. Цвета элементов опорной окружности и окружностей кардиоиды назнача- ются случайным образом. 8 9 ПРОГРАММИРОВАНИЕ ЦВEТНЫХ КРИВОЛИНЕЙНЫХ ИЗОБРАЖЕНИЙ 0 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. * 0 ФОРМИРОВАНИЕ ГРАФИЧЕСКИХ ТЕКСТОВ В данном разделе мы рассмотрим возможность графического изобра- жения текстовых символов, управление типом шрифта, направлением вывода, размерами и пропорциями символов, пространственной привязкой текстовых строк к положению курсора и другими возможностями формиро- вания графических текстов. * procedure SetTextStyle(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 ФОРМИРОВАНИЕ ГРАФИЧЕСКИХ ТЕКСТОВ # ФОРМИРОВАНИЕ ГРАФИЧЕСКИХ ТЕКСТОВ * procedure SetUserCharSize(MultX,DivX,MultY,DivY:word); Используется после установки штрихового шрифта с целью измене- ния пропорций символов. Отношение MultX/DivX -коэффициент масштаби- рования обычной ширины используемого архивного штрихового шрифта. 2MultY/DivY - коэффициент масштабирования высоты шрифта. # ФОРМИРОВАНИЕ ГРАФИЧЕСКИХ ТЕКСТОВ * function TextHeight(TextString:strig):word; Возвращает высоту заданной текстовой строки TextString в элемен- тах изображения(пикселах) с учетом всех установок, выполненных ранее процедурами SetTextStyle и SetUserCharSize . * function TextWidth(TextString:string):word; Возвращает ширину заданной текстовой строки TextString при тех же условиях, что и функция TextHeight. * procedure SetTextJustify(Horiz,Vert:word); Обеспечивает привязку выводимого графического текста к теку- щему положению курсора. Параметры процедуры описаны в модуле Graph как константы и могут принимать следующие значения: Horiz: LeftText =0 - левым краем строки к курсору CenterText=1 - симметрично к курсору RightText =2 - правым краем строки к курсору Vert: BottomText =0 - строка над курсором CenterText =1 - симметрично к курсору TopText =2 - строка под курсором По "умолчанию" устанавливается параметр привязки выводимого графического текста соответствующий обращению SetTextJustify(0,2);. # ФОРМИРОВАНИЕ ГРАФИЧЕСКИХ ТЕКСТОВ * procedure OutText(TextString:string); Выводит на экран последовательность символов, начиная с текущей позиции, которая меняется только если текст выводится горизонтально с левым выравниванием. Если текст не помещается в графическое окно, он либо вообще не высвечивается ("грубый" шрифт, принятый по умолча- нию), либо высвечивается частично("гладкий" шрифт).Текущий цвет текста задается процедурой SetColor . параметры шрифта - процедурами SetTextStyle SetTextJustify.Коэффициенты увеличения ширины и высоты штриховых шрифтов можно задать процедурой SetUserCharSize. Ширину и высоту строки определяют с помощью функций TextWidth TextHeight. * procedure OutTextXY(X,Y:integer;TextString); Выводит на экран последовательность символов начиная с позиции (X,Y) и возвращает курсор в положение, предшествующее обращению к данной процедуре. * procedure GetTextSettings(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. * function InstallUserFont(NewFont:string):integer; Инсталлирует новый штриховой шрифт, т.е.вводит во внутреннюю таблицу шрифтов имя файла нового шрифта NewFont и возвращает номер этого шрифта в указанной таблице для использования в качестве значе- ния параметра Font процедуры SetTextStyly. Внутренняя таблица может содержать до 10 имен шрифтов, из которых 4 стандартных в ней содержатся постоянно. В файловой системе лабораторных компьютеров содержатся файлы 4 нестандартных штриховых шрифтов с именами: Bold.chr, Goth.chr, Sans.chr,Trip.chr. Если внутренняя таблица штриховых шрифтов переполнена, то функция возвращает значение 0 и, следовательно, устанавливается стандартный растровый шрифт. Для сброса внутренней таблицы шрифтов в исходное положение можно заново перезапустить операционную систему. На следующем экране Вы можете наблюдать примеры четырех нес- тандартных штриховых шрифтов, упомянутых в данном разделе. # ФОРМИРОВАНИЕ ГРАФИЧЕСКИХ ТЕКСТОВ 3 0 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. 1 SetTextStyle(SmallFont,0,5); SetColor(1); L:=TextHight('ПАСКАЛЬ'); SetUserCharSize(1,1,80,L); OutTextXY(10,200,'ПАСКАЛЬ'); 2 SetTextStyle(SmallFont,1,5); SetColor(1); L:=TextHight('ПАСКАЛЬ'); SetUserCharSize(80,L,1,1); OutTextXY(10,200,'ПАСКАЛЬ'); 3 SetTextStyle(SmallFont,1,5); SetColor(1); L:=TextHeight('ПАСКАЛЬ'); SetUserCharSize(1,1,80,L); OutText('ПАСКАЛЬ'); 4 SetTextStyle(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. * 0 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 выводимого текста к текущему положению курсора. * * 0 ПРОГРАММИРОВАНИЕ ОЗВУЧЕННЫХ ДИНАМИЧЕСКИХ СЦЕН В данном разделе Вы ознакомитесь с возможностями компьютера в области мультипликации, т.е. созданием эффекта движения статичес- ких изображений. Этот эффект можно достич используя динамическую и видеопамять компьютера, одноканальный звукогенератор, возможность сдвига и нало- жение изображений. Динамическая память используется для сохранения образа подвижного обьекта и ,возможно, образа фона изображения и не связывает пргограммиста с предопределенными размерами сохраняемых фрагментов экрана. Эффект движения создается циклическим уничтожением обьекта в старом положении и выводом его образа из динамической памяти на экран в новое положение. Уничтожение осуществляется либо заменой соответствующего фрагмента экранного изображения образом фона из динамической памяти, либо наложением на него образа такого же обь- екта из динамической памяти с проведением поразрядной логической операции суммирования по mod 2. Имеется возможность создания изображения одновременно на двух страницах видеобуфера и таким образом осуществлять мгновенную смену изображений на экране дисплея. Рассмотрим процедуры, обеспечивающие эти возможности. # ПРОГРАММИРОВАНИЕ ОЗВУЧЕННЫХ ДИНАМИЧЕСКИХ СЦЕН * function ImageSize(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(var p:pointer; Size:word); Создает новую динамическую переменную размера Size, которая указывает размер динамической области в байтах, и помещает адрес начала этого блока памяти в ссылочную переменную p, совместимую по типу со всеми другими типами указателей. На новую динамическую переменную можно ссылаться через указа- тель р^. Наибольший размер блока, который можно разместить единовре- менно, составляет 65 521 байт, наименьший - 1 байт. ПРОГРАММИРОВАНИЕ ОЗВУЧЕННЫХ ДИНАМИЧЕСКИХ СЦЕН Если динамическая область не фрагментирована, например в нача- ле программы, последовательные вызовы данной процедуры возвращают соседние блоки памяти. Когда в динамической области недостаточно места для размещения новой переменной, возникает ошибка времени вы- полнения программмы. Чтобы избежать этого можно использовать следу- ющую функцию. * function MaxAvail:longint; Возвращает размер наибольшего непрерывного свободного блока, имеющегося в динамической области памяти компьютера в текущий момент. * procedure GetImage(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); If MaxAvail<Size then begin RestoreCrtMode; writeln('Мало динамической памяти'); Halt(1) end else begin GetMem(p,Size); GetImage(50,50,100,100,p^); end; ........ end. {конец программы} # ПРОГРАММИРОВАНИЕ ОЗВУЧЕННЫХ ДИНАМИЧЕСКИХ СЦЕН * procedure PutImage(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. # ПРОГРАММИРОВАНИЕ ОЗВУЧЕННЫХ ДИНАМИЧЕСКИХ СЦЕН * procedure Dispos(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 {перемещение обьекта} begin PutImage(I-1,50,p^,XORPut);{уничтожение обьекта в прежнем состоянии} PutImage(I-1,50,p^,NormalPut);{копирование обьекта в новое end; состояние Dispose(p); {освобождение памяти} ...... end. # ПРОГРАММИРОВАНИЕ ОЗВУЧЕННЫХ ДИНАМИЧЕСКИХ СЦЕН 1 Проиллюстрируем приведенный выше пример: # ПРОГРАММИРОВАНИЕ ОЗВУЧЕННЫХ ДИНАМИЧЕСКИХ СЦЕН * procedure SetActivePage(Page:word); Направляет весь последующий графический выод на страницу видео- буфера, задаваемую параметром Page. Эта страница может и не отобра- жаться в это время на экране дисплея. Таким образом обеспечивается построение новых изображений за счет времени просмотра текущих,чтобы затем мгновенно обновить экран и создать эффект движения. Лабораторные компьютеры поддерживают двухстраничную организацию видеобуфера. Страницы имеют номера 0 и 1 и графический вывод по умолчанию осуществляется на 0-ю страницу. * procedure SetVisualPage(Page:word); Задает номер Page отображаемой на экран дисплейной страницы видеобуфера. По умолчанию визуализируется страница, на которую нап- равляется графический вывод. Приведем пример программы, обеспечивающей создание эффекта перемещения обьекта как в предыдущем примере: # ПРОГРАММИРОВАНИЕ ОЗВУЧЕННЫХ ДИНАМИЧЕСКИХ СЦЕН ...... var:integer; ...... begin ...... {по умолчанию вывод и визуализация 0-страницы} for I:=1 to(GetMaxX-50) do {перемещение обьекта} begin Bar(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. # ПРОГРАММИРОВАНИЕ ОЗВУЧЕННЫХ ДИНАМИЧЕСКИХ СЦЕН * procedure Sound(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<> # then FuncKey:=False else begin FuncKey:=true; Ch:=ReadKey end; ...... ПРОГРАММИРОВАНИЕ ОЗВУЧЕННЫХ ДИНАМИЧЕСКИХ СЦЕН * procedure SetWriteMode(WriteMode:integer); Устанавливает режим записи при вычерчивании линий с помощью процедур формирования прямолинейных изображений (кроме процедуры Bar3D). Процедура описана в модуле Craph. Параметр может принимать следующие значения: CopyPut = 0 - простое замещение - вычерчиваемая линия "затирает" то, что было на экране. XORPut = 1 - сложение по mod 2 - обеспечивается комбинирование вы- водимой линии с экранным изображе- нием на основе выполнения поточеч- ной поразрядной операции суммиро- вания по модулю2. Важно, что два одинаковых вывода на экран в режиме XORPut при- ведут сначала к стиранию линии на экране, а затем в восстановлению исходного экранного изображения. 0 01КАКОВЫ ФУНКЦИИ ПРОЦЕДУРЫ ImageSize? 1 Создание новой динамической переменной. 2 Сохранение в динамической памяти растрового образа заданной прямоугольной области экрана. 3 Возвращение числа байт, необходимых для сохранения прямоугольной области экранного изображения. 4 Вывод в заданное место экрана хранимого в динамической памяти растрового изображения. * 02КАКОЕ СУЩЕСТВУЕТ ОГРАНИЧЕНИЕ ПО ПЛОЩАДИ СОХРАНЯЕМЫХ В ДИНАМИЧЕСКОЙ ПАМЯТИ ОБЛАСТЕЙ ЭКРАНА? 1 Ограничений нет. 2 Не более одного экрана. 3 Не более 1/2 экрана. 4 Не более 1/4 экрана. * ОЗТРЕБУЕТСЯ ЛИ КОНТРОЛИРОВАТЬ РАЗМЕР СВОБОДНОЙ ДИНАМИЧЕСКОЙ ПАМЯТИ? 1 Да. С помощью функции MaxAvail. 2 Да. С помощью процедуры GetMem. 3 Нет, не требуется. Размер динамической памяти не ограничен. 4 Да, требуется. Контроль осуществляется с помощью процедуры Dispose. * 04КАКОГО ЦВЕТА БУДЕТ ВЫВЕДЕНО ИЗОБРАЖЕНИЕ ТОЧКИ НА ЭКРАНЕ, ЕСЛИ ТОЧКУ КРАСНОГО (4) ЦВЕТА ЗАМЕСТИТЬ С ПОМОЩЬЮ ПРОЦЕДУРЫ Putlmage (X,Y,p~,XORPut) точкой синего (1) цвета? 1 Черного (0). 2 Светло-бирюзового(11). 3 Красного (4). 4 Малиновый(5). * 05КАКУЮ ОРГАНИЗАЦИЮ ВИДЕОБУФЕРА ПОДДЕРЖИВАЮТ ЛАБОРАТОРНЫЕ КОМПЬЮТЕРЫ IBM PC С АДАПТЕРОМ EGA ПРИ ИСПОЛЬЗОВАНИИ ЯЗЫКА TURBO-PASCAL? 1 Одностраничную. 2 Двухстраничную. 3 Трехстраничную. 4 Четырехстраничную. * 06С ПОМОЩЬЮ КАКОЙ ПРОЦЕДУРЫ УСТАНАВЛИВАЕТСЯ СТРАНИЦА ВИДЕОБУФЕРА, НА КОТОРУЮ НАПРАВЛЯЕТСЯ ПОСЛЕДУЮЩИЙ ГРАФИЧЕСКИЙ ВЫВОД? 1 SetVisualActivePage 2 SetWriteMode 3 Dispose 4 SetActivePage * 07КАКОВЫ ФУНКЦИИ ПРОЦЕДУРЫ SetWriteMode? 1 Считывание символа с клавиатуры не отображая его на экран. 2 Установка режима записи при вычерчивании линий с помощью процедур формирования прямолинейных изображений. 3 Устанавливает номер страницы видеобуфера, на которую осуществляется последующий графический вывод. 4 устанавливает номер визуализируемой страницы видеобуфера. * О 011Ответ неверный. Эту функцию осуществляет процедура GetMem. 002 * 2Ответ неверный. Эту функцию осуществляет процедура GetImage. 002 * 3Ответ правильный. 005 * 4Ответ неверный. Эту функцию осуществляет процедура PutImage. 002 * * 021Ответ неверный. Объем памяти, необходимый для сохраненеия области 002 экрана, не должен быть равен или превышать 64К, что соответствует 1/2 площади экрана. * 2Ответ неверный. Объем памяти, необходимый для сохраненеия области 002 экрана, не должен быть равен или превышать 64К, что соответствует 1/2 площади экрана. * 3Ответ правильный. 005 * 4Ответ неверный. Объем памяти, необходимый для сохраненеия области 002 экрана, не должен быть равен или превышать 64К, что соответствует 1/2 площади экрана. * * 031Ответ првильный. Функция MaxAvail возвращает наибольший непрерывный 005 свободный блок, имеющийся в динамической области памяти в текущий момент. * 2Ответ неверный. Контроль требуется, однако, процедура GetMem 003 выполняет другие функции. * 3Ответ неверный. Если в динамической области недостаточно места для 002 размещения новой переменной, возникает ошибка времени выполнения программы. Чтобы этого избежать следует пользоваться функцией MaxAvail, которая возвращает размер наибольшего непрерывного свободного блока динамической области памяти. * 4Ответ неверный. контроль требуется, но с помощью функции MaxAvail. 003 * * 041Ответ неверный. При использовании в качестве значения параметра 002 BitBlt константы XORPut коды цветов точек складываются по модулю 2: 4(10) + 1(10) = 0100(2) + 0001(2) = 0101(2) = 5(10) * 2Ответ неверный. При использовании в качестве значения параметра 002 BitBlt константы XORPut коды цветов точек складываются по модулю 2: 4(10) + 1(10) = 0100(2) + 0001(2) = 0101(2) = 5(10) * 3Ответ неверный. При использовании в качестве значения параметра 002 BitBlt константы XORPut коды цветов точек складываются по модулю 2: 4(10) + 1(10) = 0100(2) + 0001(2) = 0101(2) = 5(10) * 4Ответ правильный. 005 * * 051Ответ неверный. Эти компьютеры имеют двухстраничную организацию 002 видеобуфера. * 2Ответ правильный. 005 * 3Ответ неверный. Эти компьютеры имеют двухстраничную организацию 002 видеобуфера. * 4Ответ неверный. Эти компьютеры имеют двухстраничную организацию 002 видеобуфера. * * 061Ответ неверный. процедура SetVisualPage задает номер отображаемой на 002 экран дисплейной страницы видеобуфера. * 2Ответ неверный. Процедура SetWriteMode выполняет другие функции. 002 * 3Ответ неверный. Процедура Dispose выполняет другие функции. 002 * 4Ответ правильный. 005 * * 071Ответ неверный. Процедура SetWriteMode устанавливает режим записи 002 при вычерчивании линий с помощью процедур формирования прямоугольных изображений. * 2Ответ правильный. 005 * 3Ответ неверный. Процедура SetWriteMode устанавливает режим записи 002 при вычерчивании линий с помощью процедур формирования прямоугольных изображений. * 4Ответ неверный. Процедура SetWriteMode устанавливает режим записи 002 при вычерчивании линий с помощью процедур формирования прямоугольных изображений. * * 0 Приложение 3 Экранные формы
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|