YourLib.net
Твоя библиотека
Главная arrow Информатика (Под общ. ред. А.Н. Данчула) arrow 4.6. Пример анализа и проектирования программы
4.6. Пример анализа и проектирования программы

4.6. Пример анализа и проектирования программы

   Рассмотрим пример разработки программы для неоднократного решения в диалоговом режиме квадратного уравнения ax2 +bх + с = 0 при произвольно вводимом наборе действительных коэффициентов а, b с и отсутствии необходимости сохранения результатов решения. Реализация предполагается на объектно-ориентированном языке Visual Basic. Она описана в п. 4.5 и 4.6. Рассматриваемый пример довольно прост и носит вспомогательный (для изучения программирования на Visual Basic) характер. Поэтому применяется адаптированный метод разработки, использующий модели, характерные для процессно-ориентированного анализа и объектно-ориентированной реализации.
   На фазе анализа устанавливается, что процесс обработки информации при использовании программы решения квадратного уравнения состоит из трех подпроцессов или этапов — Р1, Р2 и Р3 (рис. 4.16).
   Подпроцесс нахождения решения заключается в определении дискриминанта уравнения D, определении вида решения по результатам анализа значений коэффициентов уравнения и дискриминанта и формировании необходимых данных для выводимого на экран сообщения. Пусть нас интересуют только действительные корни квадратного уравнения, тогда результаты анализа, определяющего вид решения, удобно представить в виде таблицы решений (табл. 4.2).

Рис. 4.16. Этапы обработки информации при решении задачи 

Рис. 4.16. Этапы обработки информации при решении задачи

Таблица 4.2. Таблица решений

Таблица 4.2. Таблица решений

Таблица 4.3. Перечень данных

 Таблица 4.3. Перечень данных

   Введение двух форм представления коэффициентов и корней уравнения вызвано тем, что процессы ввода-вывода работают с интерфейсными переменными символьного типа, а процесс вычисления — с переменными числового типа. Поэтому входные данные (коэффициенты) должны преобразовываться из символьного типа в числовой, а выходные (корни) — из числового в символьный.
   При разработке интерфейса программы необходимо обеспечить выполнение этапов ввода и вывода. Простота приложения позволяет разместить все необходимые интерфейсные элементы в одном окне (форме) программы. На форме должны быть предусмотрены следующие элементы (кнопки) управления ходом процесса обработки информации:
   —  «Ввод» — для перехода в режим (состояние) ввода коэффициентов информации (реализация этапа P1);
   —  «Решение» —для инициализации процессов решения уравнения и отображения результатов решения (этапы Р2 и Р3), по завершении которых программа переходит в состояние отображения результатов;
   —  «Выход» — для завершения работы с программой.
   Интерфейс программы, обеспечивающий выполнение этапов ввода и вывода, можно описать диаграммой перехода состояний (рис. 4.17).

Рис. 4.17. Диаграмма перехода состояний для интерфейса программы 

Рис. 4.17. Диаграмма перехода состояний для интерфейса программы

Рис. 4.18. Блок-схема анализа вариантов решений 

Рис. 4.18. Блок-схема анализа вариантов решений

   На диаграмме отражена необходимость очистки формы (удаления из окна программы результатов решения для предыдущего набора коэффициентов) при нажатии кнопки «Ввод». Кроме того, для обеспечения надежной работы программы после завершения ввода коэффициентов (нажатия кнопки «Решение») требуется проверить, что введенные данные являются числами. В случае ошибки (внутреннее ветвление) необходимо выдать сообщение об ошибке и повторить процесс ввода (внести исправления). Эту часть диаграммы, выделенную бледным оттенком, можно не вводить на фазе анализа, а добавить на фазе проектирования.
   Рассмотренные модели являются исходными данными для фазы проектирования программы.
   Алгоритм обработки информации состоит из двух последовательно выполняемых частей (их блок-схемы представлены на рис. 4.18 и 4.19):
   1)  определения вида (указателя варианта п) решения по результатам анализа значений коэффициентов уравнения и детерминанта;
   2)  формирования данных для выводимого на экран сообщения.
   Поскольку в качестве средства реализации программы выбран язык Visual Basic, обладающий средствами построения объектно-ориентированного интерфейса, структура программы (состав и связь программных модулей) будет определяться управляющими элементами программы, являющимися объектами.

Рис. 4.19. Нахождение решения уравнения 

Рис. 4.19. Нахождение решения уравнения

   На объекте экранная форма должны быть представлены объекты:
   а) ранее рассмотренные кнопки «Ввод», «Решение» и «Выход» для управления ходом процесса обработки информации;
   б) текстовые окна, используемые для отображения вводимой пользователем информации;
   в) метки для отображения результатов решения (текстового сообщения — Ls и корней — Lx1 и Lx2).
   Нас будут интересовать событийные процедуры, связанные с:
   —  нажатием на кнопку (*_Сliск);
   —  выходом курсора из текстового окна при завершении ввода (*_LostFocus).
   Обозначения интересующих нас управляющих элементов и событийных процедур приведены в табл. 4.4. В отличие от текстовых окон информация, отображаемая в метках, может изменяться только программой, поэтому с ними не связаны никакие процедуры.
   Так как приложение использует лишь одну форму, она будет автоматически загружаться при каждом запуске программы. На этапе реализации в форме для удобства пользователя можно разместить и другие метки (надписи). Таким образом, программа будет содержать семь событийных процедур, указанных в табл. 4.4.
   Необходима также сервисная процедура описания переменных, общих для всех объектов формы. Переменные, приведенные в табл. 4.2, используются несколькими программными модулями. Поэтому наиболее рациональным будет вариант, когда

Таблица 4.4. Управляющие элементы и событийные процедуры

 Таблица 4.4. Управляющие элементы и событийные процедуры

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

 
< Пред.   След. >