- •Министерство образования и науки Российской Федерации
- •Методы проектирования программ
- •Методы программирования
- •Технология нисходящего программирования
- •Управляющая
- •Уровень II
- •Заглушка 3
- •Восходящее программирование
- •Повышение качества проектирования программ
- •2. Организация выполнения курсовой работы
- •2.1 Этапы выполнения курсовой работы
- •2.2 Требования к пояснительной записке
- •3. Задания на курсовое проектирование
- •3.1. Числовые задачи
- •3.2. Создание и введение баз данных. Справочники
- •3.3. Контролирующие и обучающие программы
- •3.4. Звукогенерация. Графика и движение
- •3.5. Помехоустойчивое кодирование
- •3.6. Игровые задачи
- •Психологическое тестирование
- •3.8. Моделирование арифметических операций
- •Задачи по программированию / с.А. Абрамов и др. - м.: Наука, 1988.- 224 с.
- •Савельев а. Я. Прикладная теория цифровых автоматов. - м.: Высш.Шк., 1987. - 272 с.
- •10. Фаронов в. В. Турбо Паскаль 7.0. Начальный курс. - м.: Нолидж, 2001.-
- •11. Шафеева о. П. Обнаружение и исправление ошибок в вычислительных системах многовекторными кодами. Учеб. Пособие. - Омск: ОмПи, 1991.-76 с.
- •Курсовой проект (работа)
- •3. Разработка алгоритмов. 4. Особенности разработки программы.
- •1. Анализ задания и формулировка задач на проектирование
- •2. Разработка алгоритмов для контроля передачи данных
- •2.1. Кодирование двоичных данных кодом с проверкой на четность
- •2.2. Декодирование данных
- •2.3. Универсальный алгоритм кодирования-декодирования
- •3. Особенности разработки программы
- •4. Инструкция пользователя
- •5. Результаты тестирования
- •Содержание
Восходящее программирование
Восходящий метод проектирования алгоритмов и программ применяется для программирования задач с легко выделяемыми или известными заранее подзадачами, либо с небольшими, относительно независимыми частями, алгоритмы, для решения которых можно разрабатывать отдельно.
Восходящее программирование предполагает проектирование программы ‘‘снизу
вверх’’(bottom – up programming) [8]. Сначала отдельно проектируются и отлаживаются программы для каждой простой подзадачи, а затем разработанные модули последовательно (поочередным подключением) объединяются в единую программу.
Примером проектирования программного комплекса с известными подзадачами является выполнение расчетно‑графической работы (РГР) по дисциплине ‘‘Алгоритмические языки и программирование’’.
Задание для РГР: разработать схему алгоритма, написать и отладить программу для расчета и построения графиков двух функций (результаты расчетов должны храниться в виде массивов и распечатываться в виде таблицы), цветом необходимо выделить наибольшее и наименьшее значения для каждой из функций. Добавить в нее решение нелинейного уравнения и вычисления приближенного значения определенного интеграла по заданию преподавателя.
Общая схема алгоритма реализации, проектируемой студентами программы, может быть представлена рис. 1.7. Сначала отлаживается программа, включающая лишь сведения об авторе. Далее проектируется алгоритм и отлаживается программа для графической заставки, после отладки подключается к первой. Затем поочередно проектируется, отлаживаются и подключаются к основной программе фрагменты для расчета таблиц и построения графиков для заданных функций; решения уравнения; вычисления интеграла.
Отчет по РГР
печатается в текстовом редакторе Word
и включает следующие разделы:
1. Задание.
2. Математическая формулировка задачи.
3. Детальная схема общего алгоритма.
4. Текст программы.
5. Таблица результатов с выделением максимального и минимального значений для каждой функции, выполненная с помощью табличного процессора Excel. Расчеты коэффициентов для масштабирования функций.
6. Графики функций, напечатанные через Excel.
7. Заданное нелинейное уравнение и результат его
решения.
8. Интеграл, метод решения и результат.
Рис. 1.7. Схема алгоритма для РГР
Далее следует детализировать (уточнить) части алгоритма рис. 1.7. Например, для решения нелинейного уравнения можно применять метод бисекций и хорд. Для
возможности программной реализации проведем математический анализ этого метода и спроектируем алгоритм [6].
Пусть задано уравнение f(x)=0 и интервал [a,b], где функция f(x) непрерывна, имеет разные знаки на концах интервала.
Алгоритм нахождения корня на интервале методом половинного деления (бисекции) сводится к следующей последовательности действий:
1) вычисляется середина интервала c= (a+b)/2;
2) если |f(c)|<e, где e= 10-3 - 10-5 определяет погрешность вычислений, то c будет являться приближенным значением корня уравнения и выводится как результат расчетов;
3) если |f(c)|>e, то проверяются знаки функций f(a) и f(c) на концах отрезка [a,c], для чего вычисляется их произведение. Если f(a)f(c)<0, то функции будут иметь противоположные знаки и корень находится на отрезке [a,c]. В этом случае интервал [a,b] заменяется отрезком [a,c], для чего присвоим b=c;
4) иначе, если f(a)f(c)>0, корень уравнения находится на отрезке [c,b] и в расчетах интервал [a,b] заменяется [c,b], для чего присвоим a=c;
5) вычисления по схеме п.1-п. 4 повторяются в итерационном цикле до тех пор, пока не выполнится условие п. 2 - |f(c)|< e.
В случае метода хорд схема алгоритма расчета корня уравнения остается прежней за исключением п.1, в котором нужно использовать формулу
c= (af (b)-b f(a))/(f(b)-f(a)).
Для исключения зацикливания следует правильно определять начальный интервал [a,b], чтобы выполнялось условие f(a)f(b)<0. Схема алгоритма для метода половинного деления приведена на рис.1.8.
Рис. 1.8. Схема алгоритма решения нелинейного уравнения
Отладив программу для решения нелинейного уравнения, включим ее в общую программу для реализации задания по РГР.
Затем аналогичным образом проанализируем и разработаем программу для вычисления определенного интеграла.
Приближенное значение определенного интеграла вычисляется как сумма площадей N прямоугольников, построенных на интервале интегрирования [a,b]. Интервал [a,b] разбивается на N равных частей длиной h = (b-a)/N, на каждой из которых строится прямоугольник с высотой, равной значению функции f(xi) в центре участка с координатой
xi = a+(i-0.5)h, где i=1,2,...,N
Формула прямоугольников для приближенного вычисления значения интеграла будет иметь вид
.
В методе трапеций интервал [a,b] разбивается на N равных частей длиной h=(b- a)/N, на каждой из которых строится трапеция. Приближенное значение интеграла определяется суммой площадей трапеций, построенных на интервале [a,b]
где xi =a+i* h .