Разработка структуры программы


При разработке данного программного средства был выбран структурный подход программирования. Это объясняется тем, что данный программный продукт создавался одним человеком, и требовалось создать программу, наиболее удачно отображающую весь смысл решения данной задачи.

3.1. Анализ предметной области задачи

Анализируя предметную область задачи можно выделить следующие её компоненты:

· Прежде всего, требуется создать наглядный пользовательский интерфейс.

· Необходимо подключить устройство «мышь» для более удобной работы в данном редакторе.

· Далее необходимо выбрать базовый набор электрических элементов, с которыми в дальнейшем будет проводиться работа.

· После этого необходимо оформить изображения этих элементов на рабочих кнопках.

· Следующим шагом является написание функций, осуществляющих непосредственное рисование конкретных элементов в рабочей области экрана.

· Когда эта проблема решена надо организовать главный фрагмент программы, отвечающий за вполне определённый вызов функции, выбранной пользователем.

· И, наконец, необходимо создать кнопки и, соответствующие им функции, отвечающие за работу с отдельными устройствами, такими как: жёсткий диск (винчестер), обиходная дискета 3.5 дюйма, принтер, экран монитора и прочее.

3.2. Декомпозиция задачи.

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

3.1. Структурная схема декомпозиции:

Ниже приводится символическая блок – схема, описывающая составные блоки программы (см. рисунок 1):

Смысл данной блок-схемы довольно простой.

В начале программы подключаются все необходимые для работы стандартные библиотеки (за исключением «mouse.cpp», о которой речь пойдёт ниже). Главная их задача – обеспечить доступ к функциям, определённых в этих библиотеках.

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

Об определении глобальных переменных речь пойдёт ниже.

Определение используемых функций – это описание тех действий, которые они будут выполнять.

В свою очередь тело главной функции (main) состоит из следующих наиболее важных частей (см. рисунок 2):

Фрагмент программы, отвечающий за подключение графического режима, автоматически выделяет видеоадаптер (в данном случае VGA), на основе параметров которого (размер зерна, цветовая палитра и т.д.) в дальнейшем строится вся работа. В случае неудачного подключения графики выводится сообщение об ошибке.

Фрагмент программы, отвечающий за оформление интерфейса, создаёт удобную и наглядную пользовательскую среду, в которой будет проводиться основная работа.

Работа главного фрагмента программы будет рассмотрена после приведения пояснительной блок-схемы к ней.

Пояснительную блок-схему см. на рисунке 3 на следующей странице.

Главный фрагмент программы отвечает уже непосредственно за рисование электрических элементов. В начале осуществляется пассивный запрос о выбранной кнопке (в виде бесконечного цикла, программа находится в ожидании). После щелчка «мыши» определённые переменные (x и y) получают координаты «нажатого пикселя». Затем по этим координатам определяется выбранная кнопка. После этого вызывается оператор выбора, которому в качестве параметра передаётся номер выбранной кнопки. За каждым номером кнопки следуют операторы, осуществляющие рисование соответствующего элемента. Последняя кнопка №25 содержит в себе операторы, проверяющие, была ли нажата кнопка выхода из программы. Если она была нажата, то работа в редакторе прекращается и происходит выход из программы.

3.2. Функциональная схема декомпозиции:

Опишем функциональную схему программы.

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

· Группа функций, выполняющих непосредственное рисование элемента.

· Группа функций, дающих пользователю дополнительные возможности при редактировании уже готовой электрической схемы (к ним относятся: проставление узлов, ввод пояснительного текста, а также коррекция неудачно построенного элемента).

· Группа функций, предназначенная для работы с устройствами персонального компьютера (сюда относятся запись готовой схемы на жёсткий диск или 3-х дюймовую дискету как текстовой информации в виде нулей и единиц, чтение файла с диска и вывод схемы на печать).

· Функции, использующиеся другими функциям при конструировании элементов (как, например, определение угла наклона элемента к оси ох).

Рассмотрим спецификации этих функций, описанных на формальном языке: