Автор: Пользователь скрыл имя, 13 Сентября 2011 в 01:00, курсовая работа
В программе используются следующие определения.
Граф представляет собой множество точек (вершин, узлов) вместе с линиями, соединяющими некоторые или все пары точек. Направленные линии со стрелками называют дугами, не имеющие направления – ребрами.
1. ЗАДАНИЕ.
2. ОПИСАНИЕ ПРИМЕНЕНИЯ.
2.1. Постановка задачи.
2.2. Обращение к программе.
2.3. Входные данные.
2.4. Выходные данные.
2.5. Сообщения.
2.5.1. Информационные сообщения.
2.5.2. Сообщения об ошибках.
3. ОПИСАНИЕ ПРОГРАММЫ.
3.1. Структура программы.
3.2. Описание модулей.
3.2.1. main – главный модуль.
3.2.2. vvod – функция ввода данных.
3.2.3. vivod– функция вывода матрицы.
3.2.4. matrica_dopolnenii– функция получения дополнения графа.
3.2.5. matrica_sviaznosti – функция матрицы связности графа.
3.2.6. comp_sv– функция количества компонент связности.
4. ОТЛАДКА ПРОГРАММЫ.
4.1. План отладки.
4.2. Проектирование тестов программы.
4.2.1. Тесты черного ящика.
4.2.2. Тесты белого ящика.
4.3 Отладочные средства.
4.4 Отладка программы.
ЗАКЛЮЧЕНИЕ
СПИСОК ЛИТЕРАТУРЫ
ПРИЛОЖЕНИЯ
ВХОДНЫЕ ДАННЫЕ: n – количество вершин в графе, матрица связности графа.
ВЫХОДНЫЕ ДАННЫЕ: количество компонент связности.
РАБОЧИЕ ДАННЫЕ:
i – номер вершины, с которой начинается ребро.
j – номер вершины, которой заканчивается ребро.
kol – количество компонент связности.
vp[NMAX]
– вектор посещения.
АЛГОРИТМ:
см. алгоритм 3.7.
Алгоритм 3.7. Алгоритм модуля int comp_sv(int n, int mtrsv[NMAX][NMAX])
int comp_sv(int n, int mtrsv[NMAX][NMAX])
{ объявление переменных i, j, kol и vp[NMAX];
обнуление в цикле kol и vp;
for ( i=0;i<n;i++)
{ if (vp[i]==0)
{ vp[i]=1;
for (j=0;j<n;j++)
if (mtrsv[i][j]==1)
vp[j]=1; kol++;
}
}возврат kol;}
4.
ПОДГОТОВКА К ОТЛАДКЕ
ПРОГРАММЫ
4.1.
План отладки
Особенности данной программы затрудняют применение для нее в чистом виде традиционной стратегии тестирования. Отладка данной программы длительный и трудоемкий процесс, так как данная программа имеет несколько больших модулей, работу которых совместно очень трудно проверить. Необходимо проверять каждый модуль в отдельности, что и делалось при отладке. Отладка производилась по следующим пунктам:
4.2.
Проектирование тестов
программы
4.2.1.
Тесты черного ящика
Для
проектирования тестов программы методами
черного ящика с помощью эквивалентного
разбиения входных/выходных данных на
области (классы) эквивалентности составлен
список ситуаций, каждая, из которых должна
создаваться хотя бы одним тестом. Тестовые
ситуации приведены в таблице 4.1., в скобках
указаны их номера.
Таблица
4.1.
Области
входных/выходных данных тестов программы
Входное/выходное условие (значение) | «Правильные» классы эквивалентности | «Неправильные» классы эквивалентности |
Количество вершин n | 2..NMAX (1) | n<2 (2), n>NMAX (3) |
Номера вершин ребер | 0..n-1 (4) | i<0 (5), i>=n (6),
j<0 (7), j>=n (8), i=j (9)
gr[i][j]==1 (10) |
Сообщения программы | 1 (11), 2(12), 3(13), 4(14), 5(15), 6(16) | 7(17), 8(18), 9(19) |
Для
создания перечисленных тестовых ситуаций
разработаны тесты, представленные в таблице
4.2. Входные и выходные данные тестов по
возможности выбирались ближе к границам
классов эквивалентности.
Таблица
4.2.
Тесты
чёрного ящика для
отладки программы
№ теста | Вход | Выход | Ситуации | |
Н е п р а в и л ь н ы е т е с т ы | ||||
|
n =0 | Сообщения: 1, 2, 7 | 2, 11, 17 | |
|
n=-1 | Сообщения: 1, 2, 7 | 2, 11, 17 | |
|
n =160 | Сообщения: 1, 2, 7 | 3, 11, 17 | |
|
n =2
Ребра: 0-2 |
Сообщения: 1, 2, 3, 8 | 1, 8, 11, 12, 13, 18 | |
|
n =2
Ребра: 0-4 |
Сообщения: 1, 2, 3, 8 | 1, 8, 11, 12, 13, 18 | |
|
n =4
Ребра: 2-3 1-5 |
Сообщения: 1, 2, 3, 8 | 1, 8, 11, 12, 13, 18 | |
|
n =4
Ребра: 1-(-2 |
Сообщения: 1, 2, 3, 8 | 1, 7, 11, 12, 13, 18 | |
|
n =4
Ребра: 1-2 2-(-3) |
Сообщения: 1, 2, 3, 8 | 1, 7, 11, 12, 13, 18 | |
|
n =2
Ребра: 2-0 |
Сообщения: 1, 2, 3, 8 | 1, 6, 11, 12, 13, 18 | |
10. | n =2
Ребра: 4-0 |
Сообщения: 1, 2, 3, 8 | 1, 6, 11, 12, 13, 18 | |
11. | n =4
Ребра: 3-2 5-1 |
Сообщения: 1, 2, 3, 8 | 1, 6, 11, 12, 13, 18 | |
12. | n=4
Рёбра: (-1)-2 |
Сообщения: 1, 2, 3, 8 | 1, 5, 11, 12, 13, 18 | |
13. | n=4
Рёбра: 0-1 (-1)-2 |
Сообщения: 1, 2, 3, 8 | 1, 5, 11, 12, 13, 18 | |
14. | n=4
Рёбра: 1-1 |
Сообщения: 1, 2, 3, 8 | 1, 9, 11, 12, 13, 18 | |
15. | n=4
Рёбра: 0-1 2-2 |
Сообщения: 1, 2, 3, 8 | 1, 9, 11, 12, 13, 18 | |
16. | n=4
Рёбра: 0-1 0-1 |
Сообщения: 1, 2, 3, 9 | 1, 10, 11, 12, 13, 19 | |
17. | n=4
Рёбра: 0-1 1-2 1-2 |
Сообщения: 1, 2, 3, 9 | 1, 10, 11, 12, 13, 19 | |
П р а в и л ь н ы е т е с т ы | ||||
18. | n=2
Рёбра: 0-1 <Ctrl+Z> |
Сообщения:
1, 2, 3, 4, 5, 6
Количество компонент связности : 2 |
1, 4, 11, 12, 13, 14, 15, 16 | |
19. | n=4
Рёбра: 0-1 0-3 1-2 2-3 <Ctrl+Z> |
Сообщения:
1, 2, 3, 4, 5, 6
Количество компонент связности : 2 |
1, 4, 11, 12, 13, 14, 15, 16 | |
20. | n=12
Рёбра: 0-1 0-3 1-6 3-6 3-5 5-8 7-10 10-9 9-2 2-7 12-4<Ctrl+Z> |
Сообщения:
1, 2, 3, 4, 5, 6 Количество компонент связности : 2 |
1, 4, 11, 12, 13, 14, 15, 16 |
В ребрах вершины обозначаются через тире
для наглядности.
4.2.2.
Тесты белого ящика
Разработанные тесты проверены методами белого ящика по критериям охвата основных путей выполнения алгоритмов модулей. В программе имеются составные условия. Поэтому использован метод комбинаторного покрытия условий (см. таблицу 4.3.).
Таблица
4.3.
Комбинаторное
покрытие условий
тестами белого ящика.
Модуль | Элементарное условие | Номера тестов | |
Истина | Ложь | ||
main | n<2 | 1, 2 | 3, 4, 5, 6, 7, 8, 9, 10 и др. |
main | n> NMAX | 3 | 4, 5, 6, 7, 8, 9, 10 и др. |
main | While (n<2||n>NMAX) | 1, 2, 3 | 4, 5, 6, 7, 8, 9, 10 и др. |
vvod | i<n | 4, 5, 6, 7, 8, 12, 13, 14, 15, 16, 17, 18, 19, 20 | 9, 10, 11 |
vvod | j<n | 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 | 4, 5, 6 |
vvod | i==j | 14, 15 | 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 16, 17, 18, 19, 20 |
vvod | i<0 | 12, 13 | 4, 5, 6, 7, 8, 9, 10, 11, 14, 15, 16, 17, 18, 19, 20 |
vvod | j<0 | 7, 8 | 4, 5, 6, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 |
vvod | i>=n | 9, 10, 11 | 4, 5, 6, 7, 8, 12, 13, 14, 15, 16, 17, 18, 19, 20 |
vvod | j>=n | 4, 5, 6 | 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 |
vvod | gr[i][j]==1 | 16, 17 | 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 18, 19, 20 |
vivod | i<n | 4, 5, 6, 7, 8, 12, 13, 14, 15, 16, 17, 18, 19, 20 | 9, 10, 11 |
vivod | i<n | 4, 5, 6, 7, 8, 12, 13, 14, 15, 16, 17, 18, 19, 20 | 9, 10, 11 |
vivod | j<n | 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 | 4, 5, 6 |
vivod | i<n | 4, 5, 6, 7, 8, 12, 13, 14, 15, 16, 17, 18, 19, 20 | 9, 10, 11 |
matrica_ dopolnenii | i<n | 4, 5, 6, 7, 8, 12, 13, 14, 15, 16, 17, 18, 19, 20 | 9, 10, 11 |
matrica_ dopolnenii | j<n | 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 | 4, 5, 6 |
matrica_ dopolnenii | gr[i][j]==0 | 18, 19, 20 | 18, 19, 20 |
matrica_ dopolnenii | i<n | 4, 5, 6, 7, 8, 12, 13, 14, 15, 16, 17, 18, 19, 20 | 9, 10, 11 |
matrica_ sviaznosti | i<n | 4, 5, 6, 7, 8, 12, 13, 14, 15, 16, 17, 18, 19, 20 | 9, 10, 11 |
matrica_ sviaznosti | j<n | 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 | 4, 5, 6 |
matrica_ sviaznosti | k<n | 18, 19, 20 | 18, 19, 20 |
matrica_ sviaznosti | i<n | 4, 5, 6, 7, 8, 12, 13, 14, 15, 16, 17, 18, 19, 20 | 9, 10, 11 |
matrica_ sviaznosti | mtrsv[i][k]==1 | 18, 19, 20 | 18, 19, 20 |
matrica_ sviaznosti | j<n | 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 | 4, 5, 6 |
comp_sv | i<n | 4, 5, 6, 7, 8, 12, 13, 14, 15, 16, 17, 18, 19, 20 | 9, 10, 11 |
comp_sv | i<n | 4, 5, 6, 7, 8, 12, 13, 14, 15, 16, 17, 18, 19, 20 | 9, 10, 11 |
comp_sv | vp[i]==0 | 18, 19, 20 | 18, 19, 20 |
comp_sv | j<n | 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 | 4, 5, 6 |
comp_sv | mtrsv[i][j]==1 | 18, 19, 20 | 18, 19, 20 |
4.3.
Отладочные средства
Перечень
необходимых отладочных средств в
соответствии с планом приведен в разделе
4.1. Несмотря на то, что планируются правильные
входные данные, предусмотрены сообщения
об ошибках на случай, если ошибка все
же появиться.
4.4.
Отладка программы
Программа отлажена по плану на всех предусмотренных в нем тестах. Результаты тестирования приведены в приложении 7.
Во время отладки обнаружены следующие ошибки:
Заключение
Курсовая работа выполнена в соответствии с требованиями и в полном объеме.
Список литературы
Приложение
1. Системные файлы проекта
vvod.c
vivod.c
matrica_dopolnenii.c
matrica_sviaznost.c
comp_sv.c
main.c
#ifndef _GRAFH
#define _GRAFH
#ifndef NMAX
#define NMAX 150 /* максимальное количество вершин графа*/
#endif
/* Прототиты библиотечных функций */
vvod (int n,int gr[][NMAX]);
vivod(int n,int gr[][NMAX]);
void matrica_dopolnenii(int n,int gr[NMAX][NMAX]);
void matrica_sviaznosti(int n, int gr[NMAX][NMAX],int mtrsv[NMAX][NMAX]);
int comp_sv(int n, int mtrsv[NMAX][NMAX]);
#endif
Библиотека создана после компиляции подпрограмм командой вызова библиотекаря.
Приложение
2. Текст программы модуля main
/**************************
/* Курсовая работа */
/* по программированию на языке высокого уровня */
/* Количество компонент связности в дополнении заданного графа*/
/*
/**************************
#include <stdio.h>
#include "graf.h"
#define NMAX 150
void main()
{ int n; /* количество вершин в графе */
int i, j; /* номера вершин в ребре */
Информация о работе Количество компонент связности в дополнении заданного графа