Разработка математической модели

На данном этапе производится декомпозиция задачи, формализация, разработка математической модели, выбор метода решения.

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

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

Под формализацией задачи понимают представление исходных данных и условий решения задачи, сформулированных словесно, в виде, удобном для ввода и последующей обработки в ЭВМ.

Математическая модель задачи представляет собой совокупность математических выражений, описывающих данную задачу. В общем виде математическую модель можно представить следующим образом:

Функция_цели = F(x1, x2, …,xn, q1,q2, …,qm, t1,t2,…,tp)

min

Функциональные ограничения:

q1 <= j1(x1, x2, … xn)

q2 <= j2(x1, x2, … xn)

qm = jm(x1, x2, … xn)

Ограничения на значения параметров:

x1 >= T1

x2 >= T2

xn >= Tn

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

Разработка алгоритма программы

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

Основные подходы к разработке алгоритмов и программ:

- структурное проектирование;

- информационное моделирование предметной области и связанных с ней приложений;

- объектно-ориентированное проектирование.

В основе структурного проектирования лежит последовательная декомпозиция, целенаправленное структурирование на отдельные составляющие. Типичными методами структурного проектирования являются:

- нисходящее проектирование, кодирование и тестирование программ;

- модульное программирование;

- структурное программирование.

Нисходящее проектирование предполагает разложение общей функции обработки данных на простые функциональные элементы "сверху – вниз" (рис. 8.1.3). В результате образуется функциональная схема алгоритма.

 
 

При реализации принципа нисходящего проектирования программа разрабатывается в следующей последовательности:

· на основе анализа задача разбивается на подзадачи, выделяются уровни и подуровни, функции отдельных блоков. В результате составляется иерархическая структура – функциональная структура программы;

· для каждого уровня:

- разрабатывается математическая модель и определяется метод решения задачи;

- определяются основные блоки программы и разрабатывается укрупненная схема алгоритма;

- определяются входные и выходные переменные, общие для данного уровня;

разрабатываются схемы алгоритмов для реализации основных блоков программы, определяются входные и выходные переменные соответствующего уровня;

- определяется порядок взаимодействия с другими блоками.

Этот процесс продолжается, пока схема алгоритма не будет доведена до базовых структур соответствующего языка программирования.

Модульное программирование основано на понятии модуля. Модуль – логически взаимосвязанная совокупности функциональных элементов, оформленных в виде отдельных программных модулей, имеющих один вход и один выход.

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

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

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