- •Восходящее и нисходящее программирование
- •1 Методы программирования
- •1.2 Восходящее программирование
- •1.2 Нисходящее программирование
- •Уровень II
- •Управляющая
- •Заглушка 1
- •Заглушка 2
- •1.3 Повышение качества проектирования программ
- •2 Организация выполнения курсовго проекта
- •2.1 Этапы выполнения курсового проекта
- •2.2 Требования к пояснительной записке
- •3 Задания на курсовое проектирование
- •3.1 Числовые задачи
- •3.2 Создание и введение баз данных. Справочники
- •3.3 Контролирующие и обучающие программы
- •3.4 Звукогенерация, графика, движение, мультипликация
- •3.5 Помехоустойчивое кодирование
- •3.7. Игровые задачи
- •3.8. Психологическое тестирование
- •3.8 Моделирование арифметических операций
- •3.9 Олимпиадные задачи
- •Курсовой проект
- •Задание
- •Студент Панова Александра Николаевна группа в-115
- •Разработка алгоритмов кодирования – декодирования двоичных данных кодом с проверкой на четность
- •1 Анализ задания и формулировка задач на проектирование
- •2 Разработка алгоритмов для контроля передачи данных
- •2.1 Кодирование двоичных данных кодом с проверкой на четность
- •2.2 Декодирование данных
- •2.3. Универсальный алгоритм кодирования-декодирования
- •3 Особенности разработки программы
- •4 Инструкция пользователя
- •5 Результаты тестирования
Федеральное государственное бюджетное образовательное учреждение
высшего профессионального образования
Омский государственный технический университет
Кафедра Информатики и вычислительной техники
О. П. Шафеева
Восходящее и нисходящее программирование
Учебно-методическое пособие по проектированию программ
и выполнению РГР и курсового проекта по дисциплине «Программирование»
Омск 2015
УДК 004.415.25
ББК 32.973
Ш 30
Автор: Шафеева Ольга Павловна, канд. техн. наук, доцент кафедры ИВТ
Рецензент: А.Г. Янишевская, профессор кафедры «Инженерная
геометрия и САПР», д.т.н., доцент
Шафеева, О.П.
Восходящее и нисходящее программирование: учеб.-метод. пособие / О.П. Шафеева. – Омск: Изд-во ОмГТУ, 2015. – 32с.
ISBN
Рассмотрены этапы разработки программного обеспечения и комплексов программ, методы нисходящего и восходящего проектирования программ. Приведены требования к выполнению расчетно-графической (РГР) и курсовой работам по дисциплине «Программирование», а также правила оформления пояснительной записки. Предложены темы для реализации студентами в виде РГР и курсовых проектов по программированию. Имеются примеры заполнения бланка задания, оформления титульного листа и написания пояснительной записки.
Учебно-методическое пособие предназначено для студентов направлений 09.03.01 – «Информатика и вычислительная техника»,
09.03.02 – «Информационные системы и технологии»,
09.03.03 – «Прикладная информатика»,
09.03.04 – «Программная инженерия»,
02.03.03 – «Математическое обеспечение и администрирование информационных систем»
УДК 004.415.25
ББК 32.973
© О.П. Шафеева, 2015
ISBN
© ФГБОУ ВПО «Омский государственный
технический университет», 2015
Печатается по решению редакционно-издательского совета Омского государственного технического университета
1 Методы программирования
Технология программирования – это совокупность методов и средств, используемых в процессе разработки программного обеспечения (ПО) 5. При структурном проектировании программ, реализации и тестировании компонентов ПО применяют два подхода: нисходящий (нисходящее программирование) и восходящий (восходящее программирование).
1.2 Восходящее программирование
Восходящий подход к проектированию алгоритмов и программ применяется для программирования задач с легко выделяемыми или известными заранее подзадачами, либо с небольшими, относительно независимыми частями, алгоритмы, для решения которых можно разрабатывать отдельно.
Восходящее программирование предполагает проектирование программы ‘‘снизу вверх’’(bottom – up programming) [5, 8]. Сначала отдельно проектируются и отлаживаются программы для каждой простой подзадачи, а затем разработанные модули последовательно (поочередно подключением) объединяются в единую программу.
Примером проектирования программного комплекса с известными подзадачами является выполнение расчетно‑графической работы (РГР) по дисциплине «Программирование» [10].
Задание для РГР: разработать схему алгоритма, написать и отладить программу для расчёта и построения графиков двух функций (результаты расчётов должны храниться в виде массивов и распечатываться в виде таблицы), цветом необходимой выделить наибольшее и наименьшее значения для каждой из функций. Добавить в неё решение нелинейного уравнения и вычисление приближённого значения определённого интеграла по заданию преподавателя.
Общая схема алгоритма реализации, проектируемой студентами программы, может быть представлена рис.1.7. Сначала отлаживается программа, включающая лишь сведения об авторе. Далее проектируется алгоритм и отлаживается программа для графической заставки, после отладки подключается к первой. Затем поочередно проектируются, отлаживаются и подключаются к главной программе (первым двум задачам) фрагменты для расчета таблиц и построения графиков для заданных функций, решения уравнения, вычисление интеграла.
Далее следует детализировать (уточнить) части алгоритма рис. 1.7. Например, для решения нелинейного уравнения можно применять метод бисекций и хорд. Для возможности программной реализации проведем математический анализ этого метода и спроектируем алгоритм [12].
Пусть задано уравнение f(x)=0 и интервал [a,b], где функция f(x) непрерывна имеет разные знаки на концах интервала.
Отчёт по РГР печатается
в текстовом редакторе Word
и включает следующие
разделы:
Задание.
Математическая
формулировка задачи.
Детальная схема
общего алгоритма.
Текст программы.
Таблица
результатов с выделением максимального
и минимального значений для каждой
функции, выполненная с помощью табличного
процесса Excel.
Расчёты коэффициентов для масштабирования
функций.
Графики
функций, напечатанные через Excel.
Заданное нелинейное
уравнение и результат его решения.
Интеграл, метод
решения и результат.
Рисунок 1.7 – Схема алгоритма для РГР
Алгоритм нахождения корня на интервале методом половинного деления (бисекции) сводится к следующей последовательности действий:
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 = (a f(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 :
Восходящий
подход к проектированию алгоритмов и
программ применяется для программирования
сравнительно несложных.
