- •Д.Г. Хохлов
- •Оглавление
- •Предисловие
- •1. Основные понятия
- •2. Проектирование программы
- •2.1. Постановка и анализ задачи
- •2.2. Внешнее проектирование
- •2.2.1. Методика внешнего проектирования
- •2.2.2. Внешнее представление данных
- •2.3. Проектирование структуры программы
- •2.4. Проектирование модуля
- •2.4.1. Этапы проектирования модуля
- •2.4.2. Стиль программирования
- •2.4.3. Пример проектирования модуля
- •3. Отладка программы
- •3.1. Планирование отладки
- •3.2. Проектирование тестов
- •3.3. Отладочные средства
- •5.1.2. Файл проекта
- •6.2. Выполнение и оформление работы
- •6.2.1. Задание
- •6.2.2. Описание применения
- •6.2.3. Описание программы
- •6.2.3. Подготовка к отладке программы
- •6.2.4. Отладка программы
- •6.2.5. Заключение
- •6.2.6. Общие правила оформления
- •Список литературы
- •Приложение. Пример выполнения курсовой работы
- •1. Задание
- •2. Описание применения
- •2.1. Постановка задачи
- •2.2. Обращение к программе
- •2.3. Входные данные
- •2.4. Выходные данные
- •2.5. Сообщения
- •2.5.1. Информационные сообщения
- •2.5.2. Сообщения об ошибках
- •3. Описание программы
- •3.1. Метод решения задачи
- •3.2. Структура программы
- •3.3. Описание модулей
- •3.3.1. Main - главный модуль
- •3.3.2. Pminc - поиск минимального цикла
- •3.3.3. Vvodg - ввод графа
- •3.3.4. Vyvodp - вывод пути
- •4. Подготовка к отладке программы
- •4.1. План отладки
- •4.2. Проектирование тестов
- •4.2.1. Тесты черного ящика
- •4.2.2. Тесты белого ящика
- •4.3. Отладочные средства
- •1. Отладка программы
- •3. Заключение
- •Список литературы
- •Приложение 1. Системные файлы проекта
- •Приложение 2. Текст программы модуля main
- •Приложение 3. Текст программы модуля pminc
- •Приложение 4. Текст программы модуля vvodg
- •Приложение 5. Текст программы модуля vyvmsm
- •Приложение 6. Текст программы модуля vyvodp
- •Приложение 7. Текст программы модуля vyvsoob
- •Приложение 8. Текст отладочной программы драйвера dvvodg
- •Приложение 9. Результаты тестирования программы
- •Приложение 10. Трудоемкость курсовой работы
- •Приложение 11. Дневник выполнения курсовой работы
Приложение 4. Текст программы модуля vvodg
/********************************************************/
/* Ввод количества вершин n и перечня ребер графа */
/* из файла stdin в матрицу смежности g. */
/* Значение: */
/* 0 - ввод завершен без ошибок; */
/* 1 - было повторение ребер (игнорировалось); */
/* 2 - входной файл пуст; */
/* 3 - недопустимое количество вершин; */
/* 4 - недопустимый номер вершины; */
/* 5 - только одна вершина в ребре. */
/* При значениях 2 - 5 ввод прерывается. */
/* И.И. Иванов 17.03.95 */
/********************************************************/
#include <stdio.h>
#include "graf.h"
int vvodg (int *n, char g[][NMAX])
{
. . .
}
Примечание. Текст программы в пособии полностью не приводится, чтобы стимулировать самостоятельную разработку студентами этого модуля.
Приложение 5. Текст программы модуля vyvmsm
/**************************************************************/
/* Вывод матрицы смежности g графа с количеством вершин n */
/* в файл stdout. */
/* И.И. Иванов 13.03.95 */
/**************************************************************/
#include <stdio.h>
#include "graf.h"
void vyvmsm (int n, char g[][NMAX])
{
int i, j;
printf ("\nМатрица смежности графа\n");
for (i=0; i<n; i++)
{ for (j=0; j<n; j++)
printf (" %d", g[i][j]);
putchar ('\n');
}
}
Приложение 6. Текст программы модуля vyvodp
/**************************************************/
/* Вывод в файл stdout номеров вершин */
/* пути графа из массива p; */
/* kvp - количество вершин пути. */
/* И.И. Иванов 03.03.95 */
/**************************************************/
#include <stdio.h>
void vyvodp (int kvp, int p[])
{
int i; /* индекс текущей вершины пути */
for (i=0; i<kvp; i++)
printf (" %d", p[i]);
printf ("\n");
}
Приложение 7. Текст программы модуля vyvsoob
/**************************************************/
/* Вывод i-го сообщения в файл stdout */
/* И.И. Иванов 13.03.95 */
/**************************************************/
#include <stdio.h>
void vyvsoob (int i)
{
char *t[] = { " ",
/* 1 */ "\nКратчайший цикл длиной ",
/* 2 */ "\nВ графе нет циклов\n",
/* 3 */ "\nВведите граф (колич.вершин от 1 до 20 и ребра, \
конец Ctrl-Z).\n",
/* 4 */ "\nОшибка: нет исходных данных\n",
/* 5 */ "\nОшибка: количество вершин должно быть от 1 до ",
/* 6 */ "\nОшибка: номер вершины должен быть от 0 до ",
/* 7 */ "\nОшибка: ребро должно содержать две вершины\n",
/* 8 */ "\nРешение прекращено\n",
/* 9 */ "\nПредупреждение: было дублирование ребер \
(игнорировалось)\n",
/* 10 */ "\nПредупреждение: граф содержит петли \
(игнорируются)\n" };
printf ("%s", t[i]);
}