
- •3. Алгоритмизация вычислительных процессов
- •3.1. Этапы разработки программ.
- •3.1.1 Анализ задания
- •3.1.2. Разработка алгоритмов
- •3.1.3. Подготовка тестов
- •3.1.4. Подготовка текстов программы и подпрограмм.
- •3.1.5. Отладка программы
- •3.2. Алгоритм и его свойства.
- •3.2.1. Свойства алгоритма.
- •3.2.2. Требования к алгоритму
- •3.3. Способы изображения алгоритмов.
Лекция 5
3. Алгоритмизация вычислительных процессов
3.1. Этапы разработки программ.
3.1.1 Анализ задания
Работа над программой начинается с анализа и формализации задания. На этом этапе необходимо выбрать и обосновать методы, которые будут использоваться для реализации тех или иных функций, определить функции программы, проанализировать численные методы, установить ограничения и дополнительные условия (в частности сформулировать сообщения, которые должна выдавать программа в тех или иных режимах работы). Кроме того, необходимо определить наборы входных и выходных данных, их структуру, тип, диапазоны значений и выбрать форму представления этих данных.
Обычно для реализации одной и той же функции можно применить различные численные методы, отличающиеся по трудоемкости их программирования, затратам памяти ЭВМ и машинного времени на решение.
Методы решения выбираются на основе физического и математического анализа. Цель - определить теоретические методы, которые могут быть использованы при решении задачи. Выбор осуществляется на основе оценки точности и затрат различных методов.
Пример.
Индуктивность металлической рамки можно определить из соотношения
L = 8X(Ln(8X / B) - 2.58)
Если надо определить индуктивность, то достаточно подставить исходные данные в формулу и выполнить соответствующие арифметические действия. Если же надо определить размер X для заданной индуктивности, то надо решать нелинейное уравнение, которое в данном случае имеет вид
X = L / (8(Ln(8X / B) - 2.58))
При обосновании применяемого метода следует выявить его достоинства и недостатки по сравнению с другими возможными методами реализации функций.
Раздел анализа задания должен содержать все математические соотношения, которые будут в дальнейшем использоваться в алгоритме и программе.
3.1.2. Разработка алгоритмов
.
Разработка алгоритмов решения задачи проводится методом структурного программирования и включает в себя разработку: схемы иерархии; укрупненных и детальных схем алгоритмов.
В алгоритмах должны быть предусмотрены средства контроля данных, чтобы исключить аварийный останов программы при задании неправильных данных. Для итерационных методов необходимо предусматривать средства контроля количества итераций и формирования соответствующего признака завершения вычислительного процесса. Сообщения, выводимые программой, должны быть лаконичными и подсказывающими пользователю путь выхода из данной ситуации.
3.1.3. Подготовка тестов
Тест - это совокупность исходных данных, результатов и промежуточных значений переменных, рассчитанных вручную или любым другим способом. Результаты теста могут быть получены различными путями. Если есть возможность, то результаты теста лучше получать путем, отличным от реализованного в программе, так как, если вычисления проводить точно по алгоритму, то можно не заметить ошибку, которую затем не выявит и отладка.
Например, если в программе решается нелинейное уравнение численным методом, то значение корня уравнения можно получить путем решения этого уравнения в приложении MathCad.
Хотя тесты используются на этапе отладки программы, составляют их после разработки схем алгоритмов, но до составления программы, так как подготовка тестов часто помогает выявить многие ошибки в алгоритмизации. Комплект тестов должен быть таким, чтобы все ветви схемы алгоритма были пройдены, по крайней мере, по одному разу.