Вы находитесь на странице: 1из 38

Федеральное государственное бюджетное образовательное учреждение

высшего профессионального образования

Омский государственный технический университет

Кафедра Информатики и вычислительной техники

О. П. Шафеева

Восходящее и нисходящее программирование

Учебно-методическое пособие по проектированию программ


и выполнению РГР и курсового проекта по дисциплине
«Программирование»
Омск 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

2
Печатается по решению редакционно-издательского совета Омского государственного
технического университета

3
1 МЕТОДЫ ПРОГРАММИРОВАНИЯ
Технология программирования – это совокупность методов и средств,
используемых в процессе разработки программного обеспечения (ПО) 5. При
структурном проектировании программ, реализации и тестировании
компонентов ПО применяют два подхода: нисходящий (нисходящее
программирование) и восходящий (восходящее программирование).
1.2 Восходящее программирование
Восходящий подход к проектированию алгоритмов и программ применяется
для программирования задач с легко выделяемыми или известными заранее
подзадачами, либо с небольшими, относительно независимыми частями,
алгоритмы, для решения которых можно разрабатывать отдельно.
Восходящее программирование предполагает проектирование программы
‘‘снизу вверх’’(bottom – up programming) [5, 8]. Сначала отдельно
проектируются и отлаживаются программы для каждой простой подзадачи, а
затем разработанные модули последовательно (поочередно подключением)
объединяются в единую программу.
Примером проектирования программного комплекса с известными
подзадачами является выполнение расчетно-графической работы (РГР) по
дисциплине «Программирование» [10].
Задание для РГР: разработать схему алгоритма, написать и отладить
программу для расчёта и построения графиков двух функций (результаты
расчётов должны храниться в виде массивов и распечатываться в виде
таблицы), цветом необходимой выделить наибольшее и наименьшее значения
для каждой из функций. Добавить в неё решение нелинейного уравнения и
вычисление приближённого значения определённого интеграла по заданию
преподавателя.
Общая схема алгоритма реализации, проектируемой студентами программы,
может быть представлена рис.1.7. Сначала отлаживается программа,
включающая лишь сведения об авторе. Далее проектируется алгоритм и
отлаживается программа для графической заставки, после отладки
подключается к первой. Затем поочередно проектируются, отлаживаются и
подключаются к главной программе (первым двум задачам) фрагменты для
расчета таблиц и построения графиков для заданных функций, решения
уравнения, вычисление интеграла.
Далее следует детализировать (уточнить) части алгоритма рис. 1.7.
Например, для решения нелинейного уравнения можно применять метод
бисекций и хорд. Для возможности программной реализации проведем
математический анализ этого метода и спроектируем алгоритм [12].
4
Пусть задано уравнение f(x)=0 и интервал [a,b], где функция f(x)
непрерывна имеет разные знаки на концах интервала.

Начало Отчёт по РГР


печатается в текстовом редакторе Word
и включает следующие разделы:
Сведения об авторе
1. Задание.
2. Математическая формулировка задачи.
3. Детальная схема общего алгоритма.
Графическая
заставка 4. Текст программы.
5. Таблица результатов с выделением
Расчет максимального и минимального значений для
таблиц
каждой функции, выполненная с помощью
Построение
табличного процесса Excel. Расчёты
графиков коэффициентов для масштабирования функций.
6. Графики функций, напечатанные через Excel.
Решение 7. Заданное нелинейное уравнение и результат его
уравнения
решения.
Вычисление
8. Интеграл, метод решения и результат.
интеграла

Конец
Рисунок 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.

5
В случае метода хорд схема алгоритма расчета корня уравнения остается
прежней за исключением п.1, в котором используется формула
C = (a f(b) - b f(a))/(f(b) - f(a)).
Для исключения зацикливания следует правильно определять начальный
интервал [a,b], чтобы выполнялось условие f(a)f(b)<0. Схема алгоритма для
метода половинного деления приведена на рис.1.8.

начало

Ввод
a,b,Е

С=(a+b)/2

Да
|f(c)|<E
Вывод
Нет с

f(a).f(c)<0 Нет
конец
Да

b=c

a=c

Рис 1.8. Схема алгоритма решения нелинейного уравнения

После отладки программы для решения нелинейного уравнения, включим


ее в общую программу для реализации задания по РГР в виде отдельной
функции.
Затем аналогичным образом проанализируем и разработаем программу для
вычисления определенного интеграла.
Приближенное значение определенного интеграла вычисляется как сумма
площадей N прямоугольников, построенных на интервале интегрирования
[a,b]. Интервал [a,b] разбивается на N равных частей длиной h = (b-a)/N, на

6
каждой из которых строится прямоугольник с высотой, равной значению
функции f(xi) в центре участка с координатой xi = a+(i-0.5)h, где i=1,2,...,N
Формула прямоугольников для приближенного вычисления значения
интеграла будет иметь вид
b N N
∫ f ( x )dx=∑ hf ( x i )=h ∑ f ( xi )
a i=1 i=1
В методе трапеций интервал [a,b] разбивается на N равных частей длиной
h=(b-a)/N, на каждой из которых строится трапеция. Приближенное значение
интеграла определяется суммой площадей трапеций, построенных на интервале
[a,b] , где xi =a+i* h :
b n−1
∫ f ( x )dx=[ f (a)+ f ( x i )]h/2+[ f ( xi )+f ( x2 )]h/2+.. .+[ f ( x n−1 )+ f (b )]h/2=h{[ f (a)+ f (b )]/2+ ∑ f ( x i )}
a i=1

Восходящий подход к проектированию алгоритмов и программ


применяется для программирования сравнительно несложных.
1.2 Нисходящее программирование
Нисходящий подход предполагает проектирование программы “сверху
вниз” (top – down programming), когда, на каждом шаге детализации для каждой
задачи составляется программа в терминах выделенных в ней подзадач 5, 8.
Данный метод применяется при разработке сложных алгоритмов и программ, а
также их комплексов.
Для проектирования алгоритма функционирования основной программы
определяются видимые “сверху” относительно самостоятельные задачи.
Разрабатывается структура основной программы (или программного
комплекса), в которой отдельные программные модули (или программы)
решают свою задачу. Далее производится детализация алгоритмов решения
задач с выделением в них подзадач. В процессе кодирования
(программирования) алгоритма программные модули нижнего уровня, для
которых еще не спроектированы алгоритмы, заменяются «заглушками» в виде
текстовых сообщений.
Таким образом, отладка программного комплекса начинается с основной
программы или главного модуля и в любой момент разработки имеется
действующий вариант. Тестирование и отладка отдельных программных
модулей и комплекса в целом ведется по ходу его проектирования [6, 7].
Одним из средств реализации модульной структуры в языках
программирования являются процедуры и функции, каждой из которых
отведена роль решения конкретной подзадачи. Для удобства работы
рекомендуется их делать небольшими. Это позволит легче модифицировать
7
программные комплексы и эффективнее тестировать. Программный модуль
(или подпрограмма) должен решать самостоятельную задачу; иметь
собственную спецификацию (формализованное описание свойств,
характеристик и функций 9); иметь один вход и один выход; возвращать
управление тому программному модулю, который его вызвал.
Проектирование структуры программы удобно выполнять с помощью схем
алгоритмов: сначала разработать схему основного алгоритма, а затем уже его
программировать и детализировать.
При реализации курсового проекта можно выделить три части:
проектирование графической заставки; решение математических задач;
разработка игровой программы. Кроме того, должны выдаваться сведения о
разработке, разработчике и меню пользователя, что можно предусмотреть в
основной программе.
Разработка программного комплекса начинается с главной программы.
Примером проектирования такого комплекса является разработка программы
для курсового проекта по дисциплине «Программирование» в соответствии со
схемой алгоритма рис.1.1. В ней пока не отражено, сколько математических
задач решается.
Начало

Сведения о разработке

Меню

Ввод пункта
меню

Р 1 Заставка

2 Математичес-
Номер кие задачи
не верен
3
Игровая
программа
4
Иначе
Завершение
работы
8

Конец
Рисунок 1.1– Схема основного алгоритма
Пусть задач будет две, тогда структуру проектируемого программного
комплекса можно изобразить схемой рис.1.2.

Уровень I Управляющая
программа

Уровень II Графическая Математические Игровая


заставка 1 Задачи 2 программа 3

Уровень III Подзадача Подзадача


2.1 2.2
Рисунок 1.2 – Схема программного комплекса для курсового проекта

Для тестирования и отладки основной программы необходимо иметь


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

Управляющая
программа

Заглушка 1 Заглушка 2 Заглушка 3

Рисунок 1.3 – Схема отладки программы I уровня

После того, как главный программный модуль “управляющий алгоритм”


протестирован и программа для него отлажена, программируется графическая
9
заставка. Программные модули при этом для решения математических задач и
игровой программы, по-прежнему, остаются замененными заглушками. В
результате на данном этапе схема тестирования преобразуется в рис.1.5,а.

10
Начало

Сведения о разработке

Вывод меню

Вывод пункта М

1
Заглушка 1
2
Вывод пункта М
Заглушка 2
1 3
Заглушка 3
иначе
2

Конец

Рисунок 1.4 – Схема алгоритма на I этапе отладки

Управляющая Управляющая
программа программа

Графическа Заглушка Заглушка Заставка Заглушка Игровая


я заставка 2 3 2 программа
а) б)
Рисунок 1.5 – Схемы тестирования программных модулей II уровня, не
содержащих подзадач

Далее протестируем модули второго уровня, не содержащие вызовов других


программных модулей (или подпрограмм). Следующей ликвидируем третью
заглушку. Для этого разработаем алгоритм и программу для игровой задачи
(рис.1.5,б).
11
Чтобы подключить модуль для решения математических задач (заглушка 2),
необходимо вызываемые им подпрограммы для подзадач 2.1 и 2.2 заменить
своими заглушками (рис.1.6,а), запрограммировать и отладить общие функции
– действия, не включенные в подзадачи 2.1 и 2.2.
Таким образом, при отладке подпрограмм, содержащих вызовы других
подпрограмм, первоначально ставятся “заглушки” в подпрограммы на уровень
ниже тестируемого, а затем они поочередно снимаются или переносятся с
коррекцией текста на более низкий уровень. Так после проектирования
алгоритма для подзадачи 2.1, он программируется и тестируется, заглушка 2.2
при этом сохраняется (рис.1.6,б). После замены последней заглушки
производится отладка и тестирование программного модуля подзадачи 2.2.

Управляющая Управляющая
программа программа

Заставка Математиче Игровая Заставка Задачи Игровая


ские задачи программа программа

Заглушка Заглушка Заглушка Заглушка


2.1 2.2 2.1 2.2
а) б)
Рисунок 1.6 – Схемы тестирования сложных программных модулей II и
простых последнего III уровня

На этом процесс проектирования и комплексного тестирования


программного комплекса завершается. Следует подчеркнуть, что при
нисходящем программировании помимо отладки и тестирования каждого
программного модуля одновременно ведется отладка и тестирование
программного комплекса в целом.

1.3 Повышение качества проектирования программ


При разработке программ рекомендуется придерживаться основных этапов
рис.1.9.

Физический и
Задача математический Алгоритм Программа Компьютер
анализ

Рисунок 1.9. Краткая схема разработки программы


12
Алгоритм относится к фундаментальным понятиям информатики. На основе
алгоритма составляются программы для реализации на компьютере.
Алгоритм – это определенная последовательность, которая за конечное
число шагов приводит к решению поставленной задачи [6]. Он характеризуется
следующими свойствами: однозначностью, дискретностью, связностью,
результативностью, конечностью, массовостью. Для описания алгоритмов
известно несколько способов: запись на естественном языке, схемы
алгоритмов, структурограммы, псевдокоды.
Каждый проектировщик программы может выбрать наиболее удобный для
себя способ, с точки зрения наглядности, простоты правил построения. Автор
является сторонником применения схем алгоритмов в процессе обучения с
использованием структуризации.
Структурированными считаются алгоритмы и программы, составленные
только с использованием трех правил структурной композиции 8 (в схемах
алгоритмов они имеют графическое изображение): альтернативный выбор
(блок “решение”); циклический повтор (два типа блоков для циклов);
вспомогательные алгоритмы (подпрограммы).
Неструктурированными считаются программы, в которых используются
операторы goto… или отсутствует ступенчатая запись циклов и альтернатив.
Алгоритм считается правильным и грамотным, если он дает правильные
результаты при любых допустимых исходных данных и выдает
диагностические сообщения при появлении запрещенных ситуаций и данных.
Структурный подход снижает количество ошибок в алгоритмах.
Структурная форма записи упрощает поиск и исправление ошибок при отладке
программы. Гарантии отсутствия ошибок сам по себе структурный подход не
дает 2Абра. О правильности программ нельзя утверждать ничего, если
неизвестны предъявляемые к нему требования. Только при наличии строгих и
четких спецификаций, систематическом их использовании для анализа
проектируемых алгоритмов и программ, можно судить о правильности работы
созданной программы.
Отладка программы – это процесс поиска и исправления ошибок в
программе. Синтаксические ошибки обнаруживаются и локализуются
компилятором, а семантические (смысловые или алгоритмические) находятся в
процессе тестирования.
Тестирование – это проверка программ на компьютере с помощью
некоторого набора тестовых примеров (теста) с целью выявления ошибок [5].
Спецификация программы – это точная и полная формулировка задачи,
содержащая информацию, необходимую для разработки алгоритма
13
(программы) ее решения 9, включающая описание характеристик, свойств и
выполняемых ею функций.
Для разработки программ на любом языке программирования полезно
предварительное проектирование реализуемых в них алгоритмов. Эти описания
алгоритмов вместе со спецификациями позволяют в полной мере оценивать
правильность написанных в дальнейшем программ с точки зрения семантики
(или смыслового значения).
Разработка программ с доказательством их правильности называется
доказательным программированием 7, 8. Для формирования заключения о
наличии ошибок в алгоритмах или программе достаточно указать входной
набор, при котором получаются неправильные результаты. В доказательном
программировании необходимо показать, что правильные результаты будут
получаться для всех допустимых данных путем исчерпывающего анализа
результатов выполнения программы при любых допустимых данных.
Существуют два подхода к проверке программ: прагматический и
доказательный. При прагматическом подходе проверка программ реализуется
на компьютере путем тестирования. При доказательном – предполагается
составление спецификаций и доказательство правильности алгоритмов и
программ по отношению к этим спецификациям.
Рекомендуется применять комплексный подход к доказательству
правильности программы. Сначала обосновывается полнота спецификаций.
Затем доказывается правильность алгоритма по отношению к этим
спецификациям. Доказательство правильности алгоритмов следует проводить
за два этапа:
1) при проектировании алгоритмов;
2) после окончания разработки алгоритмов.
На первом этапе показывается, что алгоритм является корректной
реализацией метода решения, и доказывает, что метод - правильный. На
втором этапе производится программирование [5,10, 13] и проводится
исчерпывающий анализ результатов выполнения алгоритмов на соответствие
постановке решаемых задач для любых допустимых данных.
Далее программа тестируется. При этом тест для каждой функции должен
включать такие тестовые наборы, которые охватывают все спецификации,
тестируют все условия, и предполагают выполнение всех ветвей алгоритма, а
также каждого оператора программы [5,7]. Для сложных программ
дополнительно тестируются межмодульные интерфейсы [5].

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

15
2 ОРГАНИЗАЦИЯ ВЫПОЛНЕНИЯ КУРСОВГО ПРОЕКТА

Целью выполнения курсового проекта является закрепление теоретических


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

2.2 Требования к пояснительной записке


Общий объем ПЗ к курсовому проекту не должен превышать 25-30 листов,
в том числе введение - не более 2 листов.
ПЗ должна давать полное представление о принципе решения
поставленной задачи с обоснованием выбранного алгоритма решения, форм
представления входных и выходных данных, набора контрольных примеров,
на которых проверялась программа. Записка должна содержать основные
сведения о разработанной программе, необходимые для ее эксплуатации,
модификации, и иллюстрироваться схемами алгоритмов, выполненными
соблюдением всех требований ЕСПД.
Схемы алгоритмов и тексты программ (листинги) входят в общий объем
ПЗ и нумеруются.
ПЗ к курсовому проекту должна включать в указанной последовательности
титульный лист; аннотацию (реферат); бланк задания, подписанный
руководителем; оглавление с указанием страниц; введение; разделы и
подразделы основной части; заключение; список использованной литературы;
приложения [1].
Заглавие "АННОТАЦИЯ" пишется на отдельной строке прописными бук-
вами. Аннотация состоит из текста аннотации и сведений об объеме ПЗ, в том
числе о количестве страниц, иллюстраций и таблиц. Текст аннотации
должен раскрывать сущность выполненной работы, сведения об

16
использованных методах решения задачи и программирования, языке
программирования и объеме программы в байтах и в строках операторов [3].
ОГЛАВЛЕНИЕ включает введение, наименование всех разделов курсового
проекта, а также подразделов и пунктов, если они имеют наименование, с
указанием страниц, на которых размещается начало разделов, подразделов,
пунктов. Размещается на отдельной (пронумерованной) странице и
снабжается заголовком "ОГЛАВЛЕНИЕ", не нумеруется как раздел и
включается в общее количество страниц ПЗ. Наименования, включенные в
содержание, записываются строчными буквами. Прописными указываются
только заглавные буквы и аббревиатуры.
ВВЕДЕНИЕ содержит анализ задания, содержательное описание задачи,
которая вытекает из задания, ее актуальность для народного хозяйства и
область использования полученных результатов. Дается краткий анализ
возможных методов решения поставленной задачи. Указываются сноски на
литературные источники, по которым делается обзор. Введение снабжается
заголовком "ВВЕДЕНИЕ" и не нумеруется как раздел.
ОСНОВНАЯ ЧАСТЬ ПЗ должна отражать процесс проектирования и
включать разделы
- анализ задания и математическая формулировка задачи;
- разработку логической структуры (алгоритма);
- особенности разработки программы;
- входные и выходные данные;
- характеристики программы;
- инструкция пользователя;
- результаты тестирования.
В разделе "АНАЛИЗ ЗАДАНИЯ" указываются общие принципы решения
задачи, анализируются и обосновываются физические и математические
методы ее решения, производится формализация задачи и подзадач.
В разделе "РАЗРАБОТКА ЛОГИЧЕСКОЙ СТРУКТУРЫ" должны быть
обоснованы выбранные методы решения задачи, описан алгоритм.
Описание алгоритма иллюстрируется схемами алгоритмов, которые
оформляются в виде рисунков и размещаются по тексту. Правила оформления
схем алгоритмов регламентируются ГОСТ [ 4].
В разделе "ОСОБЕННОСТИ РАЗРАБОТКИ ПРОГРАММЫ"
отражаются особенности реализации программы, ее структурe с указанием
функций составных частей и связей между ними.
В разделе "ВХОДНЫЕ И ВЫХОДНЫЕ ДАННЫЕ" приводятся состав,
типы, диапазон изменения входных и выходных данных, описание ор-

17
ганизации данных на внешних носителях (структура входных и выходных
записей, форматы ввода и вывода, обоснование формы представления дан-
ных).
В разделе "ХАРАКТЕРИСТИКИ ПРОГРАММЫ" содержатся основные
характеристики и особенности программы (временные характеристики,
режимы работы, объем необходимой памяти, технические средства и средства
контроля правильности...).
В разделе "ИНСТРУКЦИЯ ПОЛЬЗОВАТЕЛЯ" должна быть указана
последовательность действий, обеспечивающих загрузку, запуск, выполнение
и завершение программы.
В ″ЗАКЛЮЧЕНИИ″ делаются выводы по выполненной работе,
возможностях ее использования и дальнейшем совершенствовании.
В зависимости от особенностей задания на курсовой проект некоторые из
указанных разделов могут отсутствовать или могут вводиться до-
полнительные разделы, позволяющие более точно описать специфику
выполненного задания.
Список использованной литературы содержит перечень источников,
использованных при выполнении курсового проекта.
Заглавие "БИБЛИОГРАФИЧЕСКИЙ СПИСОК" пишется на отдельной
строке прописными буквами, а ниже следует перечень библиографических
ссылок. Правила записи библиографических ссылок определены ГОСТ [2].
Примерами их записи может служить библиография настоящих мето-
дических указаний.
ПРИЛОЖЕНИЯ содержат листинг программ, результаты тестирования вы-
полнения программы на контрольных примерах и другой вспомогательный
материал.
ПЗ является основным документом, предъявляемым студентом при защите
курсового проекта. Она печатается студентом на одной стороне листа бумаги
формата А4 (210*297 мм) через 1 интервал. Текст должен быть представлен в
виде распечатки. Сокращение слов не допускается за исключением
общепринятых в русском языке сокращений.
Если в ПЗ принята особая система сокращения слов или наименований, то
в ней должен быть приведен перечень принятых сокращений.
Изложение текста должно быть кратким, четким и вестись в совершенной
форме, например: сделано, разработано и т.п.
Весь текст ПЗ делят на разделы. Каждый раздел следует начинать с новой
страницы. Разделы и подразделы имеют порядковые номера, обозначенные
арабскими цифрами, например: 1  первый раздел; 2  второй раздел; 2.1 
18
первый подраздел второго раздела. Заголовки разделов пишут прописными
буквами и размещают симметрично относительно правой и левой границ
текста. Заголовки подразделов записываются с абзаца строчными буквами
(кроме первой прописной). Точку в конце заголовка не ставят. Если заголовок
состоит из двух предложений, то их разделяют точкой.
Иллюстрация (рисунки) располагаются в тексте после их первого
упоминания. Иллюстрации, если их более одной, нумеруются арабскими
цифрами в текстовом редакторе Microsoft Word, шрифтом размера 14 с
указанием раздела и номера рисунка в разделе. Ссылки на иллюстрации дают
по типу: "на рисунке 2.2". Ссылки на ранее упомянутые иллюстрации дают с
сокращением «см.», например "см. рис. 2.2". Номер рисунка помещают под
поясняющим текстом в виде "Рисунок 1.2  Наименование".
Цифровой материал для достижения лучшей наглядности следует
оформлять в виде таблицы. Таблица может иметь заголовок, который следует
выполнять строчными буквами (кроме первой прописной). На все таблицы
должны быть ссылки в тексте, при этом слово "Таблица" пишут полностью.
Формулы в ПЗ, если их более одной, нумеруются арабскими цифрами,
номер ставят с правой стороны страницы в круглых скобках на уровне
формулы. Ссылки на формулу указывают порядковым номером формулы в
круглых скобках, например, "в формуле (6)".
При ссылке в тексте на используемую литературу указывают порядковый
номер из библиографического списка, выделенный двумя квадратными
скобками, например, [13].
Приложения оформляют как продолжение ПЗ на последующих страницах.
Каждое приложение должно начинаться с новой страницы с указанием в
середине слова "ПРИЛОЖЕНИЕ" и иметь тематический заголовок, который
записывают симметрично тексту прописными буквами. При наличии более
одного приложения все нумеруются русскими буквами. На приложения
должны быть ссылки в тексте. В приложения выносятся фрагменты программ
дополнительная информация (например, распечатки файлов исходных
данных).
В ПЗ все страницы, в том числе титульный лист, аннотация, бланк задания,
содержание, введение, текст разделов с рисунками и таблицами, листы
приложений нумеруются. На титульном листе номер не ставят, на
последующих страницах номер проставляют сверху симметрично тексту.
Общее оформление ПЗ должно быть выполнено в соответствии с
требованиями к текстовым документам [1].

19
Оформленная ПЗ подписывается студентом и руководителем и сдается на
проверку. На защиту курсового проекта представляется проверенная
руководителем ПЗ, отлаженная программа, выполнение которой
демонстрируется, и делается доклад со слайдами.
3 ЗАДАНИЯ НА КУРСОВОЕ ПРОЕКТИРОВАНИЕ
3.1 Числовые задачи
1. Сформировать календарь на любой интервал времени: месяц, семестр,
календарный или учебный год, по дате определить день недели. По дню
недели  числа в определенном интервале дат.
2. Сформировать календарь на учебный год, семестр с указанием номера
недели (I,II,III,IY). Предусмотреть в программе подсчет числа однотипных
дней недели, количество занятий (часов) по каждому предмету за семестр.
3. Спроектировать программу расчета биоритмов.
4. Программа с помощью нестандартного датчика случайных чисел
выбирает число в диапазоне от 0 до N. Угадать это число с ограничением
числа попыток и без ограничения. После каждой попытки сообщается, больше
или меньше названное число задуманного. Использовать для выдачи чисел
графику и звуковые сигналы. Реализовать несколько вариантов угадывания
многозначных чисел.
5. Разработать программу, которая обучает различным операциям над
матрицами и их преобразованиям. Предусмотреть вывод задачи, правила
выполнения, демонстрацию решения задачи(возможно и фрагмента
программы).
6. Разработать программу «калькулятор» (в виде калькулятора на экране).
7. Спроектировать программу решения определенного класса
математических задач с графической интерпретацией.
8. Разработать программу для решения комбинаторных задач.
9. Спроектировать программу работы с матрицами.
10. Разработать программу «Сортировка и поиск чисел в массивах».

3.2 Создание и введение баз данных. Справочники


1. С использованием структурированного типа (struct) сформировать
данные "Тематический список литературы". Список должен включать тема-
тику, название книги, методических указаний или др. издания, автора
(составителя), год издания, полное количество страниц, наличие в фондах (УФ,
НФ, ЧЗ) с указанием числа экземпляров. Разработанная программа должна
предусматривать выборки всех изданий по теме в алфавитном порядке; по

20
теме и по годам; по наличию в фондах библиотеки. Распечатываться список
должен с соблюдением ГОСТа по оформлению библиографии [2].
2. Сформировать данные по курсовому (дипломному) проектированию
студентов в группе (на курсе), указав ФИО студента, группу, наименование
предметов, по которым выполняется курсовое проектирование, если их
несколько; раздел, тему, наличие ПК. Программа должна предусматривать
выдачу всего списка тем по разделам, по учебным группам в алфавитном
порядке студентов, отдельно списка студентов группы.
3. Разработать электронную "записную книжку", содержащую фамилии,
имена, отчества; номера телефонов, адрес; год, месяц и день рождения. По
запросу должен выдаваться на экран ПК номер телефона, фамилия по номеру
телефона или другая информация; список лиц с днями рождения в одном
месяце в порядке возрастания дат.
4. Создать базу данных "студенты группы", включающую ФИО, дату
рождения, домашний адрес, номера телефонов, место работы (если работает),
тематику научных исследований, руководитель, наличие ПК. Для ино-
городних студентов указать постоянное место жительства. Предусмотреть
формирование файлов списка группы (для ведомости сдачи экзаменов),
работающих студентов и занимающихся научной работой.
5. Сформировать список владельцев ПК в группе (на курсе) с указанием
типа ПК, домашнего телефона, если он есть, знания языков и систем
программирования. Предусмотреть выборки по списку студентов в группе,
по владельцам ПК, знаниям ТП, С,С++ и др.
6. Разработать электронный телефонный справочник, включающий те-
лефоны и адреса предприятий с подразделениями, служб города и некоторых
абонентов.
7. Разработать программу создания и ведения базы данных "выпускники
кафедры ИВТ (ЭВМ)". Предусмотреть следующие поля: год выпуска, ФИО,
группу, тему дипломного проекта, ФИО руководителя и рецензента, дату
защиты, место работы, раздел примечаний. Если есть руководитель от
предприятия, то указать его ФИО и предприятие.
8. Справочник "Лекарственные средства", включающий сведения о составе,
показаниях к применению, противопоказания, время приема, особенности
применения (для детей) и т.п.
9. Электронный справочник «Лекарственные растения».

21
10. Разработать программу-справочник калорийности пищевых продуктов и
их совместимости. По названию продукта программа должна выдавать группу,
к которой он относится и список продуктов из базы данных, с которыми он
совместим. В режиме по двум продуктам должна определяться их
совместимость. Учесть, что белки и углеводы несовместимы, а жиры и белки и
также жиры и углеводы совместимы.
12. Компьютерный Справочник содержания витаминов и микроэлементов в
пищевых продуктах и их смесях, а также их характеристики и свойства.
Предусмотреть в меню пользователя пункты редактирования, пополнения,
поиска, получения справки.
13. Электронный справочник минералов (состав, характеристики,
свойства...).
14. Электронный справочник исторических дат.
15. Программу-справочник «Цвета. Свойства, влияние на организм».
16. Электронный справочник праздников года.
17. Электронный справочник «Писатели».
18. Компьютерный справочник «Музыканты».
19. Электронный справочник «Поэты».
20. Компьютерные гороскопы.
21. Справочник «Планеты солнечной системы».
22. Электронный справочник «Созвездия и звезды».
23. Справочник химика (вещества, элементы).
24. Электронный справочник для абитуриентов омских вузов.
25. Компьютерный справочник «Поступающему в ОмГТУ», содержащий
поля: направление (шифр и наименование), специальность (профиль),
проходные баллы за последние три года, экзамены, профессия, другие
сведения.
26. Электронный справочник «Личная библиотека».
3.3 Контролирующие и обучающие программы
1. Элементы языка С/С++. Алфавит языка, ключевые слова с переводом,
константы. Если используется ключевое слово в операторе, то выдать его
структуру. Примеры программа должна выдавать при наличии запроса.
2. Классификация типов. Порядковые типы (структура типа, выполняемые
в нем операции, функции). Структурированные типы.
4. Операторы языка. Ввод-вывод (В/В) в языке С/С++. Шаблоны В/В,
функции.
5. Библиотеки функций в С/С++.Функции для работы со строками.
6. Функции для работы с графикой. Озвучивание символов клавиатуры.
7. Составить программу для обучения устному счету. На каждом шаге
должны предлагаться числа и арифметические действия, которые следует
выполнить над этими числами. Числа должны быть крупными, верный и

22
неверный ответ - сопровождаться разными звуковыми сигналами и
соответствующими сообщениями.
9. Операции в языке С/С++. Вид, назначение, приоритет, примеры
использования.
10. Тест-контрольная "Аксиомы алгебры логики".
11. Тест-экзамен по программированию.
12. Составить программу обучения работе с клавиатурой. Программа
должна выдавать на экран буквы, цифры, слова и фразы, которые следует
набрать на клавиатуре; анализировать время выполнения задания и сообщать
оценку и рекомендации.
13. Разработать программу для тренировки памяти. На экране должно
высвечиваться несколько точек (фигур), тренирующийся должен указать, в
каком порядке (месте) эти точки (фигуры) располагались. Координаты точек
выбираются с помощью датчика случайных чисел. Количество точек (фигур)
на каждом новом уровне тренировки должно возрастать.
14. Расчет траектории полета движущегося объекта с демонстрацией
попадания в определенную область экрана.
15. Разработать программу для демонстрация ряда физических законов.

3.4 Звукогенерация, графика, движение, мультипликация


1. Составить игровую программу "Музыкальная шкатулка". Программа
должны воспроизводить по выбору одну из нескольких популярных мелодий.
2. Составить программу для воспроизведения мелодии, сыгранной на
клавиатуре компьютера. Каждой клавише ставится в соответствие некоторая
нота, длительность звучания ноты определяется длительностью нажатия
клавиши.
3. Выполнить задание 2 с изображением фортепианной клавиатуры и
курсором указывать звучащую клавишу.
4. Разработать программму-генератор случайных чисел от 1 до 6. Выдачу
числа производить на грани кубика (или вертушки). Предусмотреть повторные
бросания, вращение кубика (вертушки) и угадывание числа.
5. Получить мультфильм "круги на воде", используя семь концентрических
окружностей.
6. В рисованных мультфильмах иллюзия движения создается последо-
вательной сменой кадров, каждый из которых фиксирует очередное положение
движущегося объекта. Используя этот принцип, получить мультфильм,
показывающий бегущего, затем идущего человечка, далее второго человечка,

23
двигающегося навстречу первому и их приветствие друг другу со звуковыми
сигналами.
7. Получить звуковой мультфильм "Танцующий человечек". Танец может
заключаться в выполнении самых простых движений, например, прито-
пывание ногой или приседании, в такт мелодии, воспроизводимой по зву-
когенератору.
8. Изобразить на экране доску Гальтона c движущимися по ней шариками.
Одновременно по доске должно двигаться несколько шариков. Закончившие
движение шарики остаются в нижней части доски. Использовать датчик
случайных чисел для выбора пути шарика при прохождении через
препятствие.
9. Разработать программу расчета и построения траектории полета шара с
демонстрацией попадания заданную область.
3.5 Помехоустойчивое кодирование
1. Коррекция ошибок блочным кодом с проверкой на четность строк и
столбцов (кодирование, декодирование).
2. Кодирование двоичных данных непрерывным двухстепенным кодом и
исправление одиночных ошибок.
3. Исправление многократных ошибок непрерывным двухстепенным кодом
с проверкой четностей слов и диагоналей.
4. Коррекция ошибок блочным двумерным кодом.
5. Коррекция ошибок модифицированным блочным двумерным кодом.
6. Применение помехоустойчивого непрерывного двух векторного кода для
повышения достоверности передачи данных.
7. Коррекция ошибок непрерывным трех векторным кодом.
8. Исправление ошибок непрерывным 3мин-вектор-кодом.
9. Коррекция ошибок блочным трех векторным кодом.
10. Кодирование и исправление ошибки в двоичном слове данных СВ-
кодом.

3.7. Игровые задачи


1. "Семь лунок". Вдоль доски расположено семь лунок, в которых лежат
слева 3 черных, а справа 3 белых шара. Передвинуть черные шары на место
белых, а белые на место черных. Шар можно передвинуть либо в соседнюю с
ним пустую лунку, либо в пустую лунку, находящуюся непосредственно за
ближайшим шаром.
2. "Прыгающие шарики". Эта игра похожа на предыдущую. Исходная
позиция - 8 лунок, в которых расставлены 4 черных (слева) и 3 белых (справа)

24
шара. Поменять местами черные и белые шары. В отличие от предыдущей
игры черные шары можно передвигать только вправо, а белые только влево.
3. Вдоль доски расположены девять лунок и в каждой лунке лежит
красный, белый или синий шар. Одним ходом разрешается менять местами два
любых шара. Добиться того, чтобы все красные шары шли первыми, все синие
- последними, белые - посередине. Если общее число лунок равно N, то для
решения задачи достаточно сделать не более N-1 хода.
4. "Пятнадцать". На квадратном поле размером 4х4 с помощью датчика
случайных чисел расставлены 15 фишек с номерами от 1 до 15. Имеется одна
свободная позиция. Расставить фишки по возрастанию их номеров.
Передвигать фишки можно только на свободную соседнюю позицию.
5. "Ипподром". Играющий выбирает одну их трех лошадей, состязающихся
в бегах, и выигрывает, если его лошадь приходит первой. Скорость
передвижения лошадей на разных этапах выбирается программой с помощью
датчика случайных чисел.
6. Игра в слова. Программа выбирает слово и рисует на экране столько
прочерков (прямоугольников), сколько букв в этом слове. Отгадать, какое
слово загадано программой. В каждый ход играющий указывает одну букву.
Если названа буква, входящая в состав слова, она подставляется вместо
соответствующего прочерка (прямоугольника). В противном случае играющий
теряет одно очко. В начальный момент у играющего 15 очков.
7. Программа должна выбирать с помощью датчика случайных чисел четы-
рехзначное число с разными цифрами. Угадать это число. На каждом шаге
играющий называет четырехзначное число, а программа сообщает, сколько
цифр числа угадано и сколько цифр угадано и стоит на нужном месте.
Количество угадываний ограничить. Предусмотреть варианты для другой
разрядности.
8. "Жизнь". Игра моделирует жизнь поколений гипотетической колонии
живых клеток, которые выживают, размножаются или погибают в со-
ответствии со следующими правилами. Клетка выживает, если и только если
она имеет двух или трех соседей из восьми возможных. Если у клетки только
один сосед или вовсе ни одного, она погибает в изоляции. Если клетка имеет
четырех или более соседей, она погибает от перенаселения. В любой пустой
позиции, у которой ровно три соседа, в следующем поколении появляется
новая клетка.
9. Требуется ввести курсор в область экрана (небольшой круг),
расположение которого неизвестно играющему. Передвижение курсора

25
сопровождается звуковым сигналом: если курсор приближается к области, то
звуковой сигнал выше, если удаляется - ниже.
10. "Морской бой". На поле 10х10 позиций стоят невидимые корабли: 4
корабля по одной клетке, 3 корабля по две клетке, 2 корабля по три клетки и
один корабль в четыре клетки. Необходимо поразить каждую из клеток
кораблей. Позиции указываются русскими буквами от А до К (по строкам) и
цифрами от 1 до 10 (по столбцам). Конфигурация и положение кораблей на
поле выбираются с помощью датчика случайных чисел. Если клетка корабля
угадана играющим верно, она отмечается крестиком; в противном случае
точкой.
11. Разработать программу «тетрис».
3.8. Психологическое тестирование
Разработать программу, выполняющую тестирование для нескольких тестов
[11], либо реализующую психологическое тестирование и какую-либо
математическую или другую задачу. Примеры тестов:
1. Тип твоей психики. 5. Умеете ли вы контролировать себя?
2. Отношение к жизни. 6. Общительный ли вы человек?
3. Эмоциональная стойкость. 7. Ваше отношение к проблемам.
4. Надежный ли вы человек? 8. Выносливый ли вы человек?
3.8 Моделирование арифметических операций
Разработать программную модель потактового выполнения арифметических
операций, заданных индивидуальным кодом (таблица 1).
Таблица 1 – Варианты заданий
№ № № № №
Код Код Код Код Код
вар. вар. вар. вар. вар.
1 1-1-1 13 1-1-2 25 1-1-5 37 9-1-2 49 3-2-1
2 2-1-2 14 1-2-2 26 2-1-4 38 9-1-1 50 3-2-2
3 3-1-5 15 3-1-1 27 3-1-3 39 11-1-4 51 3-2-3
4 4-1-1 16 4-1-2 28 4-1-5 40 1-2-1 52 3-2-4
5 3-1-4 17 1-1-3 29 8-1-1 41 2-2-2 53 3-2-5
6 5-1-1 18 2-1-3 30 1-2-4 42 2-2-3 54 4-2-2
7 6-1-1 19 1-2-3 31 8-1-3 43 4-2-1 55 4-2-3
8 8-1-2 20 4-1-4 32 8-1-4 44 2-2-4 56 4-2-4
9 9-1-3 21 1-1-4 33 8-1-5 45 8-2-1 57 4-2-5
10 10-1-1 22 2-1-5 34 9-1-5 46 2-2-5 58 1-2-1
11 11-1-2 23 3-1-2 35 9-1-4 47 12-1-1 59 2-2-1
12 11-1-3 24 4-1-3 36 1-2-5 48 2-1-1 60 11-1-5
26
Наименования пунктов в коде:
- Арифметические операции
1. Сложение.
2. Вычитание.
3. Умножение, начиная с младших разрядов множимого.
4. Умножение, начиная со старших разрядов множимого.
5. Ускоренное умножение с анализом групп нулей и единиц.
6. Ускоренное умножение с обработкой за один такт двух разрядов
множителя.
7. Ускоренное умножение с обработкой за один такт трех разрядов
множителя.
8. Деление с восстановлением остатка.
9. Деление без восстановления остатка
10. Ускоренное деление.
11. Деление с неподвижным сумматором.
12. Извлечение квадратного корня.
- Форма представления числа
1. С фиксированной запятой. 2. С плавающей запятой.
- Тип используемого двоичного кода
1. Прямой.
2. Обратный код.
3. Дополнительный.
4. Обратный модифицированный.
5. Дополнительный модифицированный.
3.9 Олимпиадные задачи
1. Даны два куба одного размера с раскрашенными разными цветами
гранями. Можно ли совместить кубы таким образом, чтобы совмещенные
грани были одного цвета? На этот вопрос должна давать ответ ваша
программа.
2. В трехмерном пространстве задано множество материальных точек.
Найти разбиение этого множества такое, чтобы их центры тяжести находились
наиболее близко друг к другу.
3. Составить программу, которая позволяет определить, являются ли
линейно независимыми три заданных вектора целых чисел размерностью 30.

27
БИБЛИОГРАФИЧЕСКИЙ СПИСОК
1. ГОСТ 2.105-95. ЕСКД. Общие требования к тестовым документам. –
Минск: ИПК Изд-во стандартов, 1996. – 38с.
2. ГОСТ 7.1-2003. Библиографическая запись. Библиографическое
описание документа. Общие требования и правила составления. – М.:
Стандартинформ, 2006. – 48 с.
3. ГОСТ 7.9-95. СИБИД. Реферат и аннотация. – Минск: ИПК Изд-во
стандартов, 2001. – 4 с.
4. ГОСТ 19.701-90. ЕСПД. Схемы алгоритмов, программ, данных и
систем. – М.: Изд-во стандартов, 1991. – 26с.
5. Иванова Г.С. Технология программирования. – М.: Изд-во МГТУ
им.Баумана, 2011 – 333 с.
6. Крылов, Е.В. Техника разработки программ: Кн.2. Технология,
надежность и качество программного обеспечения: Учебник / Е.В. Крылов,
В.А. Острейковский, Н.Г. Типикин. – М.: Высш. шк., 2008. – 469 с.
7. Липаев, В.В. Тестирование компонентов и комплексов программ:
Учебник – / В.В. Липаев. – М.: Синтег, 2010. - 392с.
8. Методы проектирования программ: Метод. указания/ Сост.: О.П.
Шафеева. – Омск: Изд-во ОмГТУ, 2004. – 32с.
9. Першиков, В. И. Толковый словарь по информатике / В. И. Першиков,
В.М. Савинков. – М .: Финансы и статистика, 1995. – 544с.
10. Программирование на языке Си: Метод. указания / Сост. О. П. Шафеева:
Изд-во ОмГТУ. 2008. – 72 с.
11. Сборник психологических тестов. Часть I: Пособие / Сост. Е.Е.
Миронова – Мн.: ЭНВИЛА, 2005. –155 с.
12. Системы программирования: Метод. указания / Сост. О.П. Шафеева,
И.А. Волчкова, С.А.Гончаров.  Омск: ОмГТУ, 2012. – 32 с.
13. Шафеева О.П. Технологии программирования. С++. Учебное пособие. –
Омск, Изд-во ОмГТУ. 2007. – 80 с.

28
ПРИЛОЖЕНИЕ А
Пример оформления титульного листа к пояснительной записке

Федеральное государственное бюджетное образовательное учреждение


высшего профессионального образования

Омский государственный технический университет

Кафедра Информатики и вычислительной техники


Направление 09 03 01 – Информатика и вычислительная техника
Профиль «Вычислительные машины, комплексы, системы и сети»

КУРСОВОЙ ПРОЕКТ

на тему: Разработка программы помехоустойчивой передачи данных


_________________________________________________________

по дисциплине «Программирование»

Студент(ка) Панова Александра Николаевна группы В-115


(Ф.И.О. полностью)

Пояснительная записка

Шифр проекта (работы)_________________________

Руководитель проекта (работы)


Шафеева О.П., к.т.н.,доцент
(Ф.И.О.)
___________________________
(Подпись, дата)

Разработал студент
___________________________
(Подпись, дата)

Омск 2015
29
ПРИЛОЖЕНИЕ Б
Пример оформления листа задания к курсовому проектированию

ФГБОУВПО Омский государственный технический университет

Кафедра Информатики и вычислительной техники


Направление 09 03 01 – Информатика и вычислительная техника

Профиль «Технологии разработки ПО»

Задание
на курсовое проектирование
по дисциплине «Программирование»

Студент Панова Александра Николаевна группа В-115


(Ф.И.О. полностью)
1. Тема проекта Разработка программы помехоустойчивой передачи
данных _______________________________________________________________________
2. Срок сдачи студентом законченного проекта 15 апреля
3. Исходные данные к проекту _____код с проверкой на
четность_,_______________________С/С+
+__________________________________________
4. Содержание проекта (работы):
4.1. Разделы пояснительной записки (перечень подлежащих разработке
вопросов)
Введение. 1- Постановка задач на проектирование. 2- Методика
решения. 3- Разработка алгоритмов. 4- Особенности разработки
программы.
5- Инструкция пользователя. 6- Результаты тестирования.
Приложения (текст программы).
4.2. Перечень графического материала
1. Схема алгоритма кодирования
2. СА декодирования
3. Структура универсальной программы
4._____________________________________
5. Основная рекомендуемая
1) Шафеева О.П.Технологии программирования.С++. Учебное пособие. – Омск, Изд-во
ОмГТУ. 2007. – 80 с.
2) Крылов, Е.В. Техника разработки программ: Кн.2. Технология, надежность и
качество программного обеспечения: Учебник / Е.В. Крылов, В.А. Острейковский, Н.Г.
Типикин. – М.: Высш. шк., 2008. – 469 с.
3) Программирование на языке Си: Метод. указания / Сост. О. П. Шафеева: Изд-во
ОмГТУ. 2008. – 72 с.
4) Методы проектирования программ: Метод. указания / Сост. О. П. Шафеева: Изд-
во ОмГТУ. Омск, 2015. – 32 с.

30
6. Дата выдачи задания 10.02. Руководитель _______________________________
(подпись, дата)
Студент ________________________________________________(подпись, дата)

31
ПРИЛОЖЕНИЕ В
Пример оформления текста пояснительной записки
РАЗРАБОТКА АЛГОРИТМОВ
КОДИРОВАНИЯ – ДЕКОДИРОВАНИЯ ДВОИЧНЫХ ДАННЫХ
КОДОМ С ПРОВЕРКОЙ НА ЧЕТНОСТЬ
Титульный лист
Задание
Оглавление
Введение
1 Анализ задания и формулировка задач на проектирование
2 Разработка алгоритмов для контроля передачи данных
2.1 Кодирование двоичных данных кодом с проверкой на
четность
2.2 Декодирование данных
2.3 Универсальный алгоритм кодирования декодирования
3 Особенности разработки программы
4 Инструкция пользователя
5 Результаты тестирования
Заключение
Список использованной литературы
Приложения
Введение
Контролирующие коды используются для обнаружения ошибок в системах
передачи данных, являющихся составной частью вычислительной сети или
вычислительной системы. Влияние внешних помех может привести к потере
или искажению информации.
Для проверки возникновения ошибок при передаче двоичных данных по
каналам связи применяются корректирующие коды. Кодирование данных
выполняет специальное устройство-кодер, декодирование-декодер.
Объединенная структура системы передачи данных с контролем включает
компоненты рис.1.

Помехи

Источник Кодер Канал передачи Декодер Приемник


данных данных данных
32
Рисунок и1 формулировка
1 Анализ задания  Структура системы
задачпередачи данных
на проектирование
Согласно заданию на курсовой проект для обнаружения ошибок должен
использоваться код с проверкой на четность. Код образуется добавлением к
информационному двоичному слову данных одного контрольного бита
(рис.2.1)

информационные биты

контрольный разряд

Рисунок 2.1  Структура кода

При кодировании в контрольный разряд записывается "1", если число


единиц в исходном слове нечетно и "0" - в противном случае. Например, к
семибитовому двоичному слову (1011001) добавляется восьмой контрольный
бит (равный "0").
На приемном конце канала передачи данных должна выполняться проверка
установленной кодером четности единиц кода (8 бит). Если обнаружится, что
четность кода нарушена, то в процессе передачи данных произошли ошибки
(исказились значения) и декодер должен выдать соответствующие сообщение.
Например, если получен код 10110010, то "ошибок нет", если 10111010, то "в
слове имеется ошибка".
Для реализации контроля помехоустойчивой передачи данных необхо-
димо разработать алгоритмы и программы:
- кодирования исходного двоичного слова данных в код (для
кодера),
- проверки (декодирования) переданного по каналу кода на
верность
- (для декодера),
- универсального алгоритма и программы на языке С/С++ для
ПК, выполняющего функции кодера и декодера одновременно в
двунаправленной системе передачи данных.
2 Разработка алгоритмов для контроля передачи данных
2.1 Кодирование двоичных данных кодом с проверкой на четность
Для кодирования N-разрядного двоичного слова необходимо вычислить
(N+1)-й разряд по правилу четности.
Пусть исходное слово  это массив А из N-разрядов, тогда массив-код будет
содержать (N+1)-разряд. Для определения четности можно использовать
33
операцию сложения по модулю два, либо подсчитать сумму единиц в массиве
A, а затем определить четна она или нет. Если сумма четна, то в A[N+1]=0, в
противном случае A[N+1]=1.
В данной работе для реализации выбран последний способ. Тогда схема
алгоритма (СА) вычисления контрольного разряда имеет вид рис. 2.2.
Дополнительно на СА (рис.2.1) введены обозначения: i  номер разряда, s
 сумма единиц слова.
После ввода самого N-разрядного слова A (бл.2) вычисляется значение
(N+1)-го контрольного бита (бл.35), затем печатается или вводится в канал
ПД весь (N+1)-разрядный код (бл.6).
Начало

Ввод N и слова
A[N+1]=
A[1..N]
S mod 2

i =1,N Вывод кода


A[1..N+1]

S=S+A[i] Конец

Рисунок 2.2  СА кодирования двоичного слова

2.2 Декодирование данных


При декодировании слова, поступившего из канала ПД, проверяется,
сохранена ли в процессе передачи четность, установленная кодером или нет.
Для этого должны быть использованы те же правила, что и при кодировании.
СА декодирования разработана на основе указанных замечаний и приведена на
рис. 2.3.
Начало Да
S=0

Ввод М, и А[1..М] Нет “Ошибок нет”


“Ошибки”

i = 1,M Вывод
A [1,M-1]

S = S+A[i] Конец
34
Рисунок 2.3  СА декодирования кода

2.3. Универсальный алгоритм кодирования-декодирования


Здесь С - массив-код из М=N+1 элементов, S - сумма единиц кода. После
ввода разрядности слов в коде (М) и самого слова (бл.1)вычисляется сумма
единиц в коде (бл.2,3). Затем производится проверка:
если сумма равна нулю, то ошибок не произошло (бл.5) в принятом из ка-
нала передачи данных коде, далее выдается информационная часть кода (без
контрольного бита) (бл.6) для дальнейшей обработки. В случае обнаружения
ошибки выдается соответствующее сообщение.
Анализ СА рис.2.2. и рис.2.3. показывают, что в обоих вычисляется сум-
ма, т.е. есть общая часть. Поэтому возможно объединение алгоритмов ко-
дирования и декодирования в единый алгоритм. При этом вычисление
суммы следует выделить в подпрограмму, тогда универсальный алгоритм
примет вид рис.2.3, на котором использованы следующие обозначения:
М - разрядность кода или слова;
R - режим (R=1 - кодирование, R=2 - декодирование),
C[1..M] - код для декодирования,
C[1..M] - слово из М информационных разрядов для кодирования

Начало Нет Нет


R=1 S=0

Ввод М, R,С[1..М] Да Да
Ошибок
Ошибки
C[m+1]=S%2 нет

i = 1,M

Вывод С
S += A[i]
Конец

Рисунок 2.4  Схема универсального алгоритма

3 Особенности разработки программы

35
Для программной реализации алгоритма рис. 2.4 выбран
универсальный язык программирования С/С++. Программа разработана в
строгом соответствии со СА и представлена файлом. Она занимает 16 байт
в памяти и состоит из 40 строк.

4 Инструкция пользователя
Для запуска программы необходимо запустить на выполнение файл
KODDEK.PAS. По запросу ввести режим (кодирование (декодирование)) и
двоичный массив для обработки. Результаты просмотреть в окне результа-
тов.
Дополнительные модули к программе не подключаются. Для ее работы
достаточен стандартный набор средств языка.

5 Результаты тестирования
Программа протестирована во всех возможных режимах, и результаты
тестирования сведены в таблице.
Таблица  Тестирование
Режим Исходное Разрядность Ожидаемый Полученный Сообщение
_____ __слово__ ___________ __результат_ __результат__ __________
R=1 10100 5 101000 101000
R=1 0101100 7 01011001 01011001
R=2 101000 6 101000 101000 Ошибок нет
R=2 101010 6 ошибка Ошибка
R=2 001000 6 ошибка 0101100 Ошибка
R=2 01011001 8 0101100 Ошибок нет
R=2 01011000 8 ошибка Ошибка

Заключение
В результате выполнения курсового проекта разработаны алгоритмы
кодирования и исправления ошибок кодом с проверкой на четность, а также
универсальный алгоритм кодирования-декодирования двоичных данных. На
основе алгоритмов разработана и отлажена универсальная программа, которая
может использоваться в реальной системе передачи данных с контролем в
универсальной ЭВМ, осуществляющей прием/передачу данных. Разрядность
слов может быть переменной.
Если ПК используется в однонаправленной системе ПД, то следует в нем
использовать конкретную программу кодирования, либо декодирования.
Библиографический список (к приложению)
36
1. Шафеева, О.П. Технологии программирования. С++. Учебное пособие. –
Омск, Изд-во ОмГТУ. 2007. – 80 с.
2. Программирование на языке Си: Метод. указания / Сост. О. П. Шафеева:
Изд-во ОмГТУ, 2008. – 72 с.
3. Шафеева, О.П. Методы проектирования программ: Уч.-метод. Пособие. –
Омск: Изд-во ОмГТУ, 2015. – 32с.
4. Системы программирования: Метод. указания / Сост. О.П.Шафеева,
И.А. Волчкова, С.А.Гончаров.  Омск: ОмГТУ, 2012. – 32 с.
Содержание

1. МЕТОДЫ ПРОГРАММИРОВАНИЯ 3
1.1 Восходящее программирование 3
1.2 Нисходящее программирование 6
1.3 Повышение качества проектирование программ 10
2 ОРГАНИЗАЦИЯ ВЫПОЛНЕНИЯ КУРСОВОГО ПРОЕКТА 13
2.1 Этапы выполнения курсового проекта 13
2.2 Требования к пояснительной записке 13
3 ЗАДАНИЯ НА КУРСОВОЕ ПРОЕКТИРОВАНИЕ 17
3.1 Числовые задачи 17
3.2 Создание и введение баз данных. Справочники 17
3.3 Контролирующие и обучающие программы 19
3.4 Звукогенерация, графика, движение, мультипликация 20
3.5 Помехоустойчивое кодирование 20
3.6 Игровые задачи 21
3.7 Психологическое тестирование 22
3.8 Моделирование арифметических операций 22
3.9 Олимпиадные задачи 24
БИБЛИОГРАФИЧЕСКИЙ СПИСОК 24
ПРИЛОЖЕНИЯ 25
Приложение А. Пример оформления титульного листа к
пояснительной записке 25
Приложение Б. Пример оформления листа задания по курсовому
проектированию 26
Приложение В. Пример оформления текста пояснительной
записки. Разработка алгоритмов кодирования - декодирования
двоичных данных кодом с проверкой на четность 27

37
Редактор ________________
Компьютерная верстка – _______________

ИД № ____________________ от . . 2015 г.

Сводный темплан 2015 г.


Подписано в печать . .2015 г. Формат 60х84 1/16. Бумага офсетная.
Отпечатано на дупликаторе. Уч. изд.-л. 2.Тираж

38

Вам также может понравиться