Мегаобучалка Главная | О нас | Обратная связь


Структура программы (уровень-1)



2019-05-24 192 Обсуждений (0)
Структура программы (уровень-1) 0.00 из 5.00 0 оценок




Проект «Тест с выбором ответа»

Программа должна будет давать пользователю возможность пройти тест из нескольких вопросов с выбором одного правильного ответа из нескольких предложенных. При этом данные теста (вопросы, варианты ответов, ключи и т.п.) будут хранится в электронной таблице. Таким образом нам предстоит создать относительно универсальный проигрыватель тестов.

На примере этого проекта мы планируем рассмотреть три идеи, относящиеся к категории «технологий программирования»:

1) организацию диалоговой программы циклического вида;

2) программирование пользовательской формы;

3) взаимодействие между программой и электронной таблицей.

Коротко прокомментируем их место в проекте.

1. В тесте будет несколько вопросов, с которыми мы будем выполнять одинаковые действия, – это безусловный признак цикла. «Хитрость» заключается в том, что циклическая по сути программа будет организована без использования обычных циклов (For i или While). Это является следствием объектно-событийной организации программы для пользовательской формы: пользователь будет выбирать ответ и щелкать по кнопке, тем самым давая программе команду двигаться дальше.

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

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

Материал в данном разделе организован по «концентрическому» принципу: мы постараемся как можно быстрее сделать пусть примитивный, но зато работающий вариант программы, а затем будем совершенствовать его, постепенно осваивая новые возможности. Для начала возьмем простой вариант теста – с одинаковым количеством ответов на все вопросы.

Работу над проектом начнем по уже знакомому плану:

1. Планирование данных

2. Анализ интерфейса

3. Библиотечные процедуры:

4. Основные действия

 

Организация данных

Исходные данные теста мы размещаем на листе электронной таблицы.

  A B
1 Вопрос 1    
2 Ответ 1.1    
3 Ответ 1.2    
4 Ответ 1.3    
5     – пустая строка рекомендуется
6 Вопрос 2   для большей наглядности
7 Ответ 2.1    
8 Ответ 2.2    
9 Ответ 2.3    
  и т.д.    

Для адресации заведем глобальную объектную переменную с именем mesto1. Рекомендуется завести глобальную переменную для хранения количества ответов на один вопрос (kol_otv).

Результаты теста также будем запоминать в таблице, но на другом листе. Для адресации будем использовать глобальную объектную переменную с именем mesto2. Рекомендуются осмысленные имена листов («Данные», «Результаты»).

Интерфейс

Основным элементом интерфейса будет пользовательская форма. На ней мы разметим следующие элементы управления:

§ надпись – для вывода вопросов

§ радиокнопки – для вывода вариантов ответа и для выбора ответа пользователем;

§ кнопку для подтверждения ответа, присовоим ей логическкое имя «Дальше».

Библиотечные процедуры

Из-за нового для нас интерфейса библиотечные процедуры не очень понятны. пока пропустим этот шаг работы над проектом.

Основные действия

Из структуры пользовательской формы следуют два действия: старт программы (инициализация формы) и событийная процедура, которая будет запускаться щелчком по кнопке «Дальше». Будем называть ее «Дальше_Click». С обсуждения основных действий и начнем работу над проектом.

Структура программы (уровень-1)

Представим действия программы и механизм их реализации в виде схемы:

  Действия Процедуры

Работа с одним

вопросом

Программа выводит вопрос (и варианты ответа) Работает «предыдущая» процедура (вложенная процедура vopros)
Пользователь выбирает ответ Никакая процедура не работает
Пользователь щелкает по кнопке «Дальше» Запускается процедура Дальше_Click
Программа обрабатывает (запоминает) ответ.

 

 

Работает процедура Дальше_Click

 

(вложенная процедура vopros)

Программа переходит к следующему вопросу (сдвиг объектных переменных)

 

Программа выводит вопрос (и варианты ответа)
Пользователь выбирает ответ Никакая процедура не работает
и т.д.  

Из схемы видно, что логический шаг (работа с одним вопросом) и зона действия событийной процедуры Дальше_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. Все теоретические сведения и большинство рекомендаций были даны выше, поэтому приводим программные тексты с минимальными комментариями:



2019-05-24 192 Обсуждений (0)
Структура программы (уровень-1) 0.00 из 5.00 0 оценок









Обсуждение в статье: Структура программы (уровень-1)

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:
Организация как механизм и форма жизни коллектива: Организация не сможет достичь поставленных целей без соответствующей внутренней...
Почему двоичная система счисления так распространена?: Каждая цифра должна быть как-то представлена на физическом носителе...
Как вы ведете себя при стрессе?: Вы можете самостоятельно управлять стрессом! Каждый из нас имеет право и возможность уменьшить его воздействие на нас...



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (192)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.006 сек.)