При разработке данного программного средства был выбран структурный подход программирования. Это объясняется тем, что данный программный продукт создавался одним человеком, и требовалось создать программу, наиболее удачно отображающую весь смысл решения данной задачи.
3.1. Анализ предметной области задачи
Анализируя предметную область задачи можно выделить следующие её компоненты:
· Прежде всего, требуется создать наглядный пользовательский интерфейс.
· Необходимо подключить устройство «мышь» для более удобной работы в данном редакторе.
· Далее необходимо выбрать базовый набор электрических элементов, с которыми в дальнейшем будет проводиться работа.
· После этого необходимо оформить изображения этих элементов на рабочих кнопках.
· Следующим шагом является написание функций, осуществляющих непосредственное рисование конкретных элементов в рабочей области экрана.
· Когда эта проблема решена надо организовать главный фрагмент программы, отвечающий за вполне определённый вызов функции, выбранной пользователем.
· И, наконец, необходимо создать кнопки и, соответствующие им функции, отвечающие за работу с отдельными устройствами, такими как: жёсткий диск (винчестер), обиходная дискета 3.5 дюйма, принтер, экран монитора и прочее.
3.2. Декомпозиция задачи.
В соответствии с выбранным структурным подходом программирования можно разбить данную программу на несколько логически независимых друг от друга частей. На основе этого выделим структурную и функциональную схемы декомпозиции.
3.1. Структурная схема декомпозиции:
Ниже приводится символическая блок – схема, описывающая составные блоки программы (см. рисунок 1):
Смысл данной блок-схемы довольно простой.
В начале программы подключаются все необходимые для работы стандартные библиотеки (за исключением «mouse.cpp», о которой речь пойдёт ниже). Главная их задача – обеспечить доступ к функциям, определённых в этих библиотеках.
Объявление используемых функций – это те функции, которые были созданы специально для данной программы с учётом тех потребностей, в которых она нуждается.
Об определении глобальных переменных речь пойдёт ниже.
Определение используемых функций – это описание тех действий, которые они будут выполнять.
В свою очередь тело главной функции (main) состоит из следующих наиболее важных частей (см. рисунок 2):
Фрагмент программы, отвечающий за подключение графического режима, автоматически выделяет видеоадаптер (в данном случае VGA), на основе параметров которого (размер зерна, цветовая палитра и т.д.) в дальнейшем строится вся работа. В случае неудачного подключения графики выводится сообщение об ошибке.
Фрагмент программы, отвечающий за оформление интерфейса, создаёт удобную и наглядную пользовательскую среду, в которой будет проводиться основная работа.
Работа главного фрагмента программы будет рассмотрена после приведения пояснительной блок-схемы к ней.
Пояснительную блок-схему см. на рисунке 3 на следующей странице.
Главный фрагмент программы отвечает уже непосредственно за рисование электрических элементов. В начале осуществляется пассивный запрос о выбранной кнопке (в виде бесконечного цикла, программа находится в ожидании). После щелчка «мыши» определённые переменные (x и y) получают координаты «нажатого пикселя». Затем по этим координатам определяется выбранная кнопка. После этого вызывается оператор выбора, которому в качестве параметра передаётся номер выбранной кнопки. За каждым номером кнопки следуют операторы, осуществляющие рисование соответствующего элемента. Последняя кнопка №25 содержит в себе операторы, проверяющие, была ли нажата кнопка выхода из программы. Если она была нажата, то работа в редакторе прекращается и происходит выход из программы.
3.2. Функциональная схема декомпозиции:
Опишем функциональную схему программы.
Как уже было сказано выше, вся программа разбивается на независимые друг от друга логические части. В программе роль таких частей играют специально для этого созданные нестандартные функции. Все эти части условно можно разделить на четыре группы:
· Группа функций, выполняющих непосредственное рисование элемента.
· Группа функций, дающих пользователю дополнительные возможности при редактировании уже готовой электрической схемы (к ним относятся: проставление узлов, ввод пояснительного текста, а также коррекция неудачно построенного элемента).
· Группа функций, предназначенная для работы с устройствами персонального компьютера (сюда относятся запись готовой схемы на жёсткий диск или 3-х дюймовую дискету как текстовой информации в виде нулей и единиц, чтение файла с диска и вывод схемы на печать).
· Функции, использующиеся другими функциям при конструировании элементов (как, например, определение угла наклона элемента к оси ох).
Рассмотрим спецификации этих функций, описанных на формальном языке:
