- •Расчётно-пояснительная записка к курсовой работе на тему:
- •Реферат на расчетно-пояснительную записку к курсовой работе на тему: программа «MathX»
- •Содержание
- •Введение.
- •1. Анализ технических требований и уточнение спецификаций
- •1.1. Анализ задания, выбор технологии, языка и среды программирования
- •1.2. Разработка диаграммы вариантов использования
- •1.3. Выбор методов решения задачи и разработка основных алгоритмов предметной области
- •2. Проектирование структуры программного продукта
- •2.1. Разработка интерфейса пользователя
- •2.1.1. Разработка диаграммы состояний интерфейса
- •2.1.2. Разработка меню
- •2.1.3. Разработка форм ввода вывода
- •2.2.Разработка структурной схемы программного продукта.
- •2.3.Разработка основных алгоритмов программного продукта.
- •3. Реализация программы.
- •4. Выбор стратегии тестирования и разработка тестов
- •Заключение
- •Список литературы
2.2.Разработка структурной схемы программного продукта.
Структурная схема – схема, отражающая состав и взаимодействие по управлению частей разрабатываемого продукта. При объектной декомпозиции такими частями являются объекты, при структурной декомпозиции – подпрограммы.
Сначала нужно определить, какие фрагменты имеет смысл реализовать в виде подпрограмм.
В подсистеме «Калькулятор» :
- Во-первых, следует отдельно выделить функцию преобразования строки (содержащей выражение), т.к. она является достаточно громоздкой. Это функция преобразует строку к нужному для разбора виду.
- Во-вторых, необходимо выделить функцию разбора выражения (перевода из инфиксной записи числа в постфиксную) и функцию расчета выражения в постфиксной записи.
В подсистеме «Анализ функции», помимо преобразования строки и разбора выражения имеет смысл реализовать в виде подпрограмм следующие операции, т.к. они достаточно сложные:
- Вычисление производной функции в точке.
- Вычисление определенного интеграла 3 способами(прямоугольников, трапеций, Симпсона)
В подсистеме «Работа с матрицами» такие операции как сумма, разность и произведение нецелесообразно выделять в подпрограммы, т.к. их алгоритмы сравнительно легкие и используются один раз. А вот такие операции, как вычисление определителя матрицы, и вычисление обратной матрицы следует вынести в функции.
Структурная схема вычислительной части программы представлена на рисунке 12.
Программа
для работы с функциями и матрицами.
Программа
вычисления выражений Программа
анализа функции Программа
работы с матрицами Преобразование
строки с выражением Разбор
выражения Расчет
значения выражения
Вычисление
обратной матрицы
Вычисление
определителя матрицы
Вычисление
производной в точке Вычисление
определенного интеграла
Рисунок 12 –Структурная схема программного обеспечения.
2.3.Разработка основных алгоритмов программного продукта.
Вычисление определителя имеет несколько алгоритмов. Вычисление определителя методом Гаусса имеет вычислительную сложность примерно O (N3), а правило Крамера - O (N4). Но т.к. программа рассчитана на студентов и школьников, то в ней, в отличие от профессиональных программ, не потребуется вычисление сложных определителей. Поэтому был выбран алгоритм разложения матрицы по строке. Этот алгоритм сравнительно прост в реализации и подходит для матриц размерности 10*10.
Ниже приведен алгоритм вычисление определителя матрицы:
При вычислении определителя нужна функция вычеркивания строки и столбца (рисунок 13) и сама функция вычисления определителя( рисунок 14).
Рисунок 13 –Вычеркивание строки и столбца.
Приведенный алгоритм позволяет вычеркнуть строку и столбец, проходящие через элемент с индексами i,j. Результатом является временная temp_matr, которая имеет размерность (n-1)*(n-1).
При вычислении определителя матрицы было решено использовать рекурсивный алгоритм. То есть, при вычеркивании строки и столбца получается матрица размера (n-1)*(n-1). При вызове функции вычисления определителя для этой матрицы получается матрица (n-2)*(n-2) и т.д.. А когда матрица станет 2*2 ее вычисляют по стандартной формуле.
Ниже приведена схема алгоритма вычисления определителя:
Рисунок 14 - схема алгоритма вычисления определителя.