Структура программы (уровень-1)
Проект «Тест с выбором ответа» Программа должна будет давать пользователю возможность пройти тест из нескольких вопросов с выбором одного правильного ответа из нескольких предложенных. При этом данные теста (вопросы, варианты ответов, ключи и т.п.) будут хранится в электронной таблице. Таким образом нам предстоит создать относительно универсальный проигрыватель тестов. На примере этого проекта мы планируем рассмотреть три идеи, относящиеся к категории «технологий программирования»: 1) организацию диалоговой программы циклического вида; 2) программирование пользовательской формы; 3) взаимодействие между программой и электронной таблицей. Коротко прокомментируем их место в проекте. 1. В тесте будет несколько вопросов, с которыми мы будем выполнять одинаковые действия, – это безусловный признак цикла. «Хитрость» заключается в том, что циклическая по сути программа будет организована без использования обычных циклов (For i или While). Это является следствием объектно-событийной организации программы для пользовательской формы: пользователь будет выбирать ответ и щелкать по кнопке, тем самым давая программе команду двигаться дальше. 2. Мы уже имели дело с пользовательской формой в последнем варианте крестиков-ноликов. Однако там мы работали только с кнопками, причем использовали их не самым типичным способом. В рамках данного проекта нам предстоит познакомиться с большим количеством элементов управления и их использованием в более типичных ситуациях. 3. Взаимодействие программы и электронной таблицы также присутствовало в нашей практике – в первом решении крестиков-ноликов. Однако там электронная таблица выполняла роль интерфейса – роль явно не основную ни с точки зрения возможностей таблицы, ни с точки зрения интерфейса. В этом проекте таблица будет использоваться по прямому назначению – как способ хранения данных, дающий возможность расположить их максимально близко к обрабатывающей их программе. Материал в данном разделе организован по «концентрическому» принципу: мы постараемся как можно быстрее сделать пусть примитивный, но зато работающий вариант программы, а затем будем совершенствовать его, постепенно осваивая новые возможности. Для начала возьмем простой вариант теста – с одинаковым количеством ответов на все вопросы. Работу над проектом начнем по уже знакомому плану: 1. Планирование данных 2. Анализ интерфейса 3. Библиотечные процедуры: 4. Основные действия
Организация данных Исходные данные теста мы размещаем на листе электронной таблицы.
Для адресации заведем глобальную объектную переменную с именем mesto1. Рекомендуется завести глобальную переменную для хранения количества ответов на один вопрос (kol_otv). Результаты теста также будем запоминать в таблице, но на другом листе. Для адресации будем использовать глобальную объектную переменную с именем mesto2. Рекомендуются осмысленные имена листов («Данные», «Результаты»). Интерфейс Основным элементом интерфейса будет пользовательская форма. На ней мы разметим следующие элементы управления: § надпись – для вывода вопросов § радиокнопки – для вывода вариантов ответа и для выбора ответа пользователем; § кнопку для подтверждения ответа, присовоим ей логическкое имя «Дальше». Библиотечные процедуры Из-за нового для нас интерфейса библиотечные процедуры не очень понятны. пока пропустим этот шаг работы над проектом. Основные действия Из структуры пользовательской формы следуют два действия: старт программы (инициализация формы) и событийная процедура, которая будет запускаться щелчком по кнопке «Дальше». Будем называть ее «Дальше_Click». С обсуждения основных действий и начнем работу над проектом. Структура программы (уровень-1) Представим действия программы и механизм их реализации в виде схемы:
Из схемы видно, что логический шаг (работа с одним вопросом) и зона действия событийной процедуры Дальше_Click не совпадают друг с другом: процедура Дальше_Click начинает с обработки ответа на один вопрос, а заканчивается выводом следующего. В этом заключается основная «хитрость» организации программ подобного типа. Итак, мы можем «утвердить» структуру событийной процедуры Дальше_Click: 1. Обработка ответа пользователя. 2. Переход к следующему вопросу (сдвиг объектных переменных) 3. Вывод вопроса (и вариантов ответа) Из схемы очевидны еще два решения: · Первый вопрос должен быть задан в «предыдущей» процедуре. · Вывод вопроса на экран удобно оформить, как отдельную процедуру (vopros) и использовать ее как вложенную в Дальше_Click и в «предыдущую» процедуру. На первом уровне создания нашей программы «предыдущей» процедурой будет стартовая процедура Форма_Инициализация. Подготовительные действия: 1. Работаем в новом файле. 2. Двум листам рабочей книги присваиваем имена «Данные» и «Результаты». 3. На листе «Данные» набираем тест, начиная с ячейки A1, в формате, указанном в разделе «Организация данных». Напомним, что надо подобрать либо придумать тест с тремя вариантами ответа на каждый вопрос. 4. В редакторе Visual Basic создаем новый модуль. 5. В редакторе Visual Basic создаем пользовательскую форму и размещаем на ней два элемента управления: · надпись (Label1) – для вывода вопроса · кнопку (CommandButton1); вручную пишем «Дальше» на кнопке. 6. Двойным щелчком по кнопке «Дальше», создаем модуль программ для формы и заготовку процедуры CommandButton1_Click. 7. Из раскрывающихся списков выбираем объект UserForm и событие Initialize, тем самым получаем заготовку для событийной процедуры Форма_Инициализация. Появившуюся «по пути» заготовку процедуры UserForm_Click можно удалить. Первая стадия проекта В качестве первой версии проекта создадим программу, которая просто выводит на экран все вопросы теста. Программирование Нам надо объявить глобальные переменные, написать тексты двух событийных процедур и вложенной процедуры vopros. Все теоретические сведения и большинство рекомендаций были даны выше, поэтому приводим программные тексты с минимальными комментариями:
Популярное: Организация как механизм и форма жизни коллектива: Организация не сможет достичь поставленных целей без соответствующей внутренней... Почему двоичная система счисления так распространена?: Каждая цифра должна быть как-то представлена на физическом носителе... Как вы ведете себя при стрессе?: Вы можете самостоятельно управлять стрессом! Каждый из нас имеет право и возможность уменьшить его воздействие на нас... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (192)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |