
- •Формулировка задачи
- •2. Представление данных и ограничения
- •Описание функций программы
- •3.1. Иерархическая схема
- •Title – вывод заголовка программы
- •3.2. Прототипы функций
- •4. Алгоритм решения задачи
- •Поменять местами calc и yesno
- •5. Тестовые наборы данных и реакции
- •5.1. Таблица тест-реакция для чисел
- •5.2. Таблица тест-реакция для управления
- •Исходный текст программы
- •7. Описание тестирования программы
- •7.1. Таблица точек останова
- •1. Было:
- •2. Было:
- •3. Было
- •8. Анализ работы по решению задачи
- •1. Было:
- •2. Было:
- •3. Было
8. Анализ работы по решению задачи
Общее количество прогонов программы = 100
в том числе для устранения синтаксических ошибок = 13
синтаксические ошибки:
1. Было:
файл: myio2.с, функция Finish
void finish( char *final );
{
printf( “%s\n ”,final )
}
стало:
void Finish( char *final )
{
printf( “%s\n ”,final );
}
2. Было:
файл: main2.c, функция main
{
do{
title( SQUARES );
getpar( );
calc( );
…
стало:
{
do{
Title( SQUARES );
GetPar( );
Calc( );
…
3. Было
файл: calc2.c, функция calc
…
for( i = 0; i < maxnum; i+)
{
n = Begnum + i;
printf( OUTMSG, n n * n );
…
стало
…
for( i = 0; i < Maxnum; i++)
{
n = Begnum + i;
printf( OUTMSG, n, n * n );
…
в том числе для устранения логических ошибок = 42
Логические ошибки:
1. Было:
файл: myio2.c, функция YesNo
int YesNo( char *text )
{
int c;
printf( “\n%s”, text );
c = getchar( );
if( (c == ’y’) || (c == ’Y’) )
return 1;
else
return 0;
}
стало:
файл: myio2.c, YesNo
int YesNo( char *text )
{
int c;
printf( “\n%s”, text );
fflush( stdin );
c = getchar( );
if( (c == ’y’) || (c == ’Y’) )
return 1;
else
return 0;
}
2. Было:
файл: const.h
#define MINNUM 1 /* мин. обрабатываемое число */
#define MAXNUM 1000 /* макс. Обрабатываемое число */
#define MINLINES 1 /* мин. выводимое число строк */
#define MAXLINES 100 /* макс. выводимое число строк */
стало:
#define MINNUM -181 /* мин. обрабатываемое число */
#define MAXNUM 181 /* макс. Обрабатываемое число */
#define MINLINES 1 /* мин. количество выводимых строк */
#define MAXLINES 20 /* макс. количество выводимых строк */
3. Было:
файл: myio2.c, функция GetPar
void GetPar( void )
{
Begnum = GetNum( STARTNUM, MINNUM, MAXNUM );
Maxnum = GetNum( NUMBERS, MINLINES, MAXLINES );
}
стало:
файл: myio2.c, функция GetPar
void GetPar( void )
{
Begnum = GetNum( STARTNUM, MINNUM, MAXNUM );
Maxnum = GetNum( NUMBERS, MINLINES, MAXLINES );
if( Begnum + Maxnum > MAXNUM + 1 )
Maxnum = MAXNUM - Begnum + 1;
}
4. Было:
Файл: myio2.c, функция GetNum
int GetNum( char* query, int minnum, int maxnum )
{
int n;
printf( "\n%s = ", query );
if( n < minnum )
n = minnum;
else if( n > maxnum )
n = maxnum;
return n;
}
стало:
int GetNum( char* query, int minnum, int maxnum )
{
int n;
printf( "\n%s = ", query );
fflush( stdin );
if( scanf( "%d", &n ) != 1 )
n = ( minnum + maxnum ) / 2;
else if( n < minnum )
n = minnum;
else if( n > maxnum )
n = maxnum;
return n;
}
5. Было:
Файл: myio2.c, функция YesNo
int YesNo( char* text )
{
int c;
printf( “%s”, text );
fflush( stdin );
c = getchar( );
if ( (c == ’y’) || (c == ’Y’) )
return 1;
else
return 0;
}
стало:
int YesNo( char* text )
{
int c;
printf( “\n%s [Y/N]? ”, text );
fflush( stdin );
c = getchar( );
if ( (c == ’y’) || (c == ’Y’) )
return 1;
else
return 0;
в том числе для тестирования = 45
Общее количество строк исходного текста программы = 169
в том числе строк только с комментариями = 72
Размер исполняемого модуля (*.exe), байт = 14217 байт.