
- •Формулировка задачи
- •2. Представление данных и ограничения
- •Описание функций программы
- •3.1. Иерархическая схема
- •Title – вывод заголовка программы
- •3.2. Прототипы функций
- •4. Алгоритм решения задачи
- •Поменять местами calc и yesno
- •5. Тестовые наборы данных и реакции
- •5.1. Таблица тест-реакция для чисел
- •5.2. Таблица тест-реакция для управления
- •Исходный текст программы
- •7. Описание тестирования программы
- •7.1. Таблица точек останова
- •1. Было:
- •2. Было:
- •3. Было
- •8. Анализ работы по решению задачи
- •1. Было:
- •2. Было:
- •3. Было
Поменять местами calc и yesno
Calc:
нет
да
printf(
OUTMSG, g, g*g )
Finish:
printf
5. Тестовые наборы данных и реакции
5.1. Таблица тест-реакция для чисел
№ теста |
Начальное число |
Количество чисел |
Ожидаемая реакция |
Реакция |
1 |
-200 |
5 |
Вывод пяти строк начиная с -181 |
совпадает |
2 |
-181 |
5 |
Вывод пяти строк начиная с -181 |
совпадает |
3 |
0 |
6 |
Вывод шести строк начиная с 0 |
совпадает |
4 |
181 |
6 |
Вывод одной строки квадрат 181 |
совпадает |
5 |
200 |
7 |
Вывод одной строки квадрат 181 |
совпадает |
6 |
10 |
-10 |
Вывод одной строки квадрат 10 |
совпадает |
7 |
10 |
1 |
Вывод одной строки квадрат 10 |
совпадает |
8 |
20 |
18 |
Вывод 18 строк начиная с 20 |
совпадает |
9 |
20 |
22 |
Вывод 20 строк начиная с 20 |
совпадает |
10 |
W |
6 |
Вывод шести строк начиная с 0 |
совпадает |
11 |
142 |
Н |
Вывод 10 строк начиная с 142 |
совпадает |
12 |
12а |
Хх |
Вывод 10 строк начиная с 12 |
совпадает |
13 |
Gh |
Zz |
Вывод 10 строк начиная с -181 |
совпадает |
14 |
“1” |
“ ” |
Программа не реагирует |
совпадает |
|
“ “ |
См. ожидаемую реакцию |
|
|
5.2. Таблица тест-реакция для управления
№ |
с |
Ожидаемая реакция |
Реакция |
1 |
Y |
Вывод сообщения «» и запроса «» |
совпадает |
2 |
y |
Вывод сообщения «» и запроса «» |
совпадает |
3 |
3хх |
Выход |
совпадает |
-
Исходный текст программы
Содержание файла проекта sq2.prj:
main2.c
myio2.c
calc.c
text.c
/****
Файл: main2.c
Содержание: основная функция программы «Квадраты
целых чисел»
Компилятор: Turbo C, v.2.1
Автор: Столяров В.О. группа А1-04
Версия: 1.3
Дата: .11
****/
#include “myfuncs.h”
extern char *SQUARES, *QUERY, *FINAL
void main( void )
{
do {
Title( SQUARES );
GetPar();
Calc();
} while(YesNo( QUERY ));
Finish( FINAL );
}
/****
файл: myio2.c
Содержание: Функции ввода/вывода программы
«Квадраты целых чисел»
Компилятор: Turbo C, v.2.1
Автор: Столяров В.О. группа А1–04
Версия: 1.3
Дата: 20.11.2011
****/
#include <STDIO.H>
#include “const.h”
extern char *STARTNUM, *NUMBERS;
int Begnum, /*Начальное обрабатываемое число , вводимое пользователем */
Maxnum; /*Количество обрабатываемых чисел , указываемое пользователем */
/*вывод заголовка*/
void Title( char *text )
{
printf( “\n%s”, text );
}
/*получение входных параметров*/
void GetPar( void )
{
Begnum = GetNum( STARTNUM, MINNUM, MAXNUM );
Maxnum = GetNum( NUMBERS, MINLINES, MAXLINES );
if(Begnum + Maxnum > MAXNUM + 1)
Maxnum = MAXNUM – Begnum + 1;
}
/*получение целого числа в заданном диапазоне
Вход: query – указатель на текст запроса;
minnum – минимально допустимое значение числа;
maxnum – максимально допустимое значение числа;
Выход: целое число в заданном диапазоне;*/
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;
}
/*запрос типа Да/Нет
Вход: text – указатель текста запроса;
Выход: признак продолжения работы – 1 или
признак завершения работы - 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;
}
/*действия по завершению программы
Вход: final – указатель текста сообщения;*/
void Finish( char *final )
{
printf( “\n%s”, final );
}
/****
файл: calc2.c
Содержание: Функция вычисления квадратов
и вывод результатов программы «Квадраты целых
чисел»
Компилятор: Turbo C, v.2.1
Автор: Столяров В.О. группа А1–04
Версия: 1.3
Дата: .11
****/
#include <STDIO.H>
extern char *OUTMSG;
extern int Begnum, Maxnum;
/*вычисление квадратов чисел*/
void Calc( void )
{
int i, n;
for( i = 0; i < Maxnum; i++)
{
n = Begnum + i;
printf( OUTMSG, n, n * n );
}
}
/****
файл: text2.с
Содержание: тексты выводимых сообщений программы «Квадраты
целых чисел»
Компилятор: Turbo C, v.2.1
Автор: Столяров В.О.группа А1–04
Версия: 1.0
Дата: .11
****/
#include “version.h”
#ifdef ENGLISH
char *SQUARES = “Integer squares output”;
char *STARTNUM = “First number”;
char *NUMBERS = “Quantity of numbers”;
char *FINAL = “Done!”;
char *QUERY = “Again”;
char *OUTMSG = “\nNumber = %5d, its square = %6d”;
#else
char *SQUARES = “Вывод квадратов целых чисел”;
char *STARTNUM = “Начальное число”;
char *NUMBERS = “Количество чисел”;
char *FINAL = “Работа закончена!”;
char *QUERY = “Повторить”;
char *OUTMSG = “\nчисло = %5d, квадрат = %6d”;
#endif
/****
файл: const.h
Содержание: константы – числа программы «Квадраты целых чисел»
Компилятор: Turbo C, v.2.1
Автор: Столяров В.О. группа А1–04
Версия: 1.1
Дата: .11
****/
#define MINNUM -181 /*минимальное обрабатываемое число*/
#define MAXNUM 1 81 /*максимальное обрабатываемое число*/
#define MINLINES 1 /* мин. количество обрабатываемых чисел*/
#define MAXLINES 20 /* макс. количество выводимых строк */
/****
файл: myfuncs.h
Содержание: прототипы функций программы «Квадраты целых чисел»
Компилятор: Turbo C, v.2.1
Автор: Столяров В.О. группа А1–04
Версия: 1.1
Дата: 11
****/
void Title( char *text );
void GetPar( void );
int GetNum( char* query, int minnum, int maxnum );
int YesNo( char* text );
void Finish( char *final );
void Calc( void );
/****
файл: version.h
Содержание: управление версией генерируемой программы «Квадраты
целых чисел»
Компилятор: Turbo C, v.2.1
Автор: Столяров В.О. группа А1–04
Версия: 1.1
Дата: 11
****/
/* определение языка сообщений */
#define ENGLISH1 /* ENGLISH1 – диалог на русском языке
ENGLISH 1 – диалог на английском
*/