Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Основы разработки программ на языке С++ для систем информационной безопасности. Учебное пособие

.pdf
Скачиваний:
1
Добавлен:
07.09.2026
Размер:
1 Мб
Скачать
☆
19. Тестирование программного кода
101
тают протестированным весь класс объектов. Например, тестируя программ­ный код, выбирают 2–3 функции; при тестировании спецификаций прове­ряют 5–7 основных разделов.
Рис. 28. Тестовое покрытие области тестирования
Класс 1
Класс 2
Класс i
Класс j
Класс k
19. Тестирование программного кода
102
ЛАБОРАТОРНЫЕ РАБОТЫ
Лабораторная работа № 1
Изучение консольных приложений и функций
ввода-вывода с консоли
Задание: разработать программу, позволяющую вводить данные с клавиатуры и выводить их на экран с простейшим форматированием. Инди­видуальные задания в табл. 1.
Таблица 73
Варианты для лабораторной работы № 1
№
вар.
Входные данные
Представление выходных данных
1
20 двух- и трёхзначных чисел
Два столбца: в одном двузначные, во втором трёхзначные
2
20 символов
Два столбца: в одном строчные, во втором про­писные
3
15 слов
Два столбца: в первом слово, во втором – число букв
4
20 чётных и нечётных чи­сел
Два столбца: в одном чётные, во втором нечёт­ные
5
10 фамилий и номеров учебных групп
Три столбца: порядковый номер, наименова­ние группы, фамилия
6
20 целых и дробных чи­сел
Два столбца: в одном целые, во втором дроб­ные 7 20 цифр и букв
Два столбца: в первом буквы, во втором цифры
8
10 комплексных чисел
Три столбца: модуль, мнимая и действительная части
9
12 дат в виде дд. мм. гг
Четыре столбца по три даты в каждом
10
6 полных фамилий, имён и отчеств
Три столбца: имя, отчество, фамилия
11
10 телефонных номеров
мобильных телефонов в виде ХХХХХХХХХХ
Три столбца: порядковый номер, номер сети (первые три цифры), номер телефона внутри сети
12
5 пар наименований города и междугородный код
Три столбца: порядковый номер, код межгорода, наименование города
Лабораторная работа № 1
103
Окончание табл. 73
№
вар.
Входные данные
Представление выходных данных
13
5 пар наименований Интер­нет-порталов и их адресов
Три столбца: порядковый номер, адрес портала в Интернет, наименование
14
6 наименований учебных курсов и оценки по ним в чис­ловом виде
Три столбца: порядковый номер, наименова­ние учебного курса, наименование оценки (отлично, хорошо, удовлетворительно)
Методические указания
Для решения поставленной задачи следует использовать консольные
функции ввода-вывода библиотеки С и С++.
int printf(char *управляющая строка, список переменных); int scanf(char *управляющая строка, список переменных);
Оператору << передаются различные значения – строки, значения пе-
ременных, которые выводятся на консоль.
Строки могут содержать управляющие последовательности, которые
интерпретируются определенным образом. Например, последовательность "\n" интерпретируется как перевод на новую строку. Из других управляю­щих последовательностей также нередко употребляется "\t", которая интер­претируется как табуляция.
Для считывания с консоли данных применяется оператор ввода >>, который принимает два операнда. Левый операнд представляет объект типа istream (в данном случае объект cin), с которого производится считывание, а правый операнд – объект, в который считываются данные.
Оператор ввода >> возвращает левый операнд – объект cin, поэтому мы можем по цепочке считывать данные в различные переменные.
Таблица 74
Спецификаторы формата в управляющей строке
Обозначение
Тип
%с
Символ
%d
Целое десятичное число
%i
Целое десятичное число
%e
Десятичное число в виде x.xx e+xx
Лабораторные работы
104
Окончание табл. 74
Обозначение
Тип
%E
Десятичное число в виде x.xx E+xx
%f
Десятичное число с плавающей запятой xx.xxxx
%F
Десятичное число с плавающей запятой xx.xxxx
%g
%f или %e, что короче
%G
%F или %E, что короче
%o
Восьмеричное число
%s
Строка символов
%u
Беззнаковое десятичное число
%x
Шестнадцатеричное число
%X
Шестнадцатеричное число
%%
Символ %
%p
Указатель
%n
Указатель
К командам формата могут быть применены модификаторы l и h.
Таблица 75
Модификаторы
Обозначение
Действие модификатора
%ld
Печать long int
%hu
Печать short unsigned
%Lf
Печать long double
Пример использования функций:
#include <stdio.h>
void main(void) { int x; printf("Введите переменную x:"); scanf("%d",&x); printf("Переменная x=%d",x); }
Лабораторная работа № 2
105
Лабораторная работа № 2
Разработка консольных приложений для числовой
обработки информации
Задание: разработать программу вычисления выходного значения
функции y=f(x1,x2,x3,x4). Тип входных и выходных данных, вид функции за­даны в табл. 2. Выходное значение и входные должны отображаться на экране в следующем виде:
X1= X2= X3= X4= Y=
Разработать функцию, которая автоматически заполняет массив из 10
наборов входных данных. Массив затем подвергается обработке, т.е. в цикле вычисляются значения функции и выводятся на экран в виде
Y1= Y2= Y3= Y4= и т.д.
Варианты индивидуальных заданий приведены в табл. 76.
Таблица 76
Варианты для лабораторной работы № 2
№
вар.
Тип входных
данных
Тип выходных
данных
Функция
1
Целые
Целое
2
Вещественные
Вещественное
3
Целые
Целое
4
Вещественные
Вещественное
5
Целые
Целое
6
Вещественные
Вещественное
4 4
3
3
4
2
5
1
501030050 xx.xx. +++
4
4
3 3
4 2
5
1
3012
43530
xx
x.x.
−
+
4321
xsinxxsinx +
)xx(tg
)xx(tg
4
0
3
2
0
1
190
90
−
−
7
43
3
21
xxxx +++
)x(log)xx(log
x 4215
4
3
+++
Лабораторные работы
106
Окончание табл. 76
№
вар.
Тип входных
данных
Тип выходных
данных
Функция
7
Целые
Целое
8
Вещественные
Вещественное
9
Целые
Целое
10
Вещественные
Вещественное
11
Целые
Целое
12
Вещественные
Вещественное
13
Вещественные
Целое
14
Целые
Вещественное
15
Вещественные
Целое
16
Целые
Вещественное
17
Вещественные
Целое
18
Целые
Вещественное
Методические указания
Для построения программ необходимо использовать математическую
библиотеку стандартной библиотеки С, заголовочный файл для которой именуется как math.h. Функции библиотеки приведены ниже в табл. 77.
При построении алгоритма следует предусмотреть проверку коррект­ности вводимых данных (в том числе выход за разрядную сетку) и коррект­ность промежуточных результатов. Также в файле cmath есть набор полезных числовых констант, например константа M_PI хранит значение числа π.
4 4
3
3
4
2
5
1
501030050 xx.xx. +++
5
1
4 4
3 3
4
2
530
3012
43
x.
xx
x.
+
−
4321
xsinxxsinx +
)xx(tg
)xx(tg
4
0
3
2
0
1
190
90
−
−
7
43
3
21
xxxx +++
)x(log)xx(log
x 4215
4
3
+++
4 4
3
3
4
2
5
1
5350 xxxx. +++
4
4
3 3
4 2
5
1
3012
4030
xx
x.x.
−
+
4321
xsinxxsinx +
)xx(tg
)xx(tg
43
21
−
7
43
3
21
100500 +++− xxxx
4215
3
xlog))xx(sin(log
x
++
Лабораторная работа № 2
107
Таблица 77
Функции математической библиотеки
Имя
Описание
abs
Возвращает абсолютную величину числа
acos
Арккосинус
asin
Арксинус
atan
Арктангенс
atan2
Арктангенс с двумя параметрами
ceil
Округление до ближайшего большего целого числа
cos
Косинус
cosh
Гиперболический косинус
exp
Вычисление экспоненты
fabs
Абсолютная величина (числа с плавающей точкой)
floor
Округление до ближайшего меньшего целого числа
fmod
Вычисление остатка от деления нацело для чисел с плавающей точкой
frexp
Разбивает число с плавающей точкой на мантиссу и показатель степени
ldexp
Умножение числа с плавающей точкой на целую степень двух
log
Натуральный логарифм
log10
Логарифм по основанию 10
modf(x,p)
Извлекает целую и дробную части (с учетом знака) из числа с плавающей точкой
pow(x,y)
Результат возведения x в степень y, xy
sin
Синус
sinh
Гиперболический синус
sqrt
Квадратный корень
tan
Тангенс
tanh
Гиперболический тангенс
Лабораторные работы
108
Лабораторная работа № 3
Разработка консольных приложений,
осуществляющих битовую обработку данных
Задание: разработать программу, которая преобразует последова­тельность входных бит в выходную. Преобразование включает в себя ло­гические операции над отдельными битами. Подобным образом чаще всего обрабатываются пакеты данных, получаемые из сетей различного назначе­ния. В данной работе рассматривается 32-разрядный пакет, содержащий следующие поля:
F0 – поле флага, обозначающего принадлежность пакета определён­ной системе;
F1 – поле типа пакета (команда или данные);
F2 – поле содержания (непосредственная информация о данных или команде);
F3 – контрольное поле.
Обработка пакета в данной работе заключается в выделении содержи­мого отдельных полей принятого пакета и контроля ошибок. Пакет вводится по запросу с клавиатуры в виде 16-ричной символьной комбинации.
Контрольная комбинация вычисляется как побайтная сумма по мо­дулю 31 содержимого разрядов пакета. Результат обработки выводится на экран как двоичное содержимое каждого из полей пакета.
В табл. 78 приведены варианты индивидуальных заданий.
Таблица 78
Варианты для лабораторной работы № 3
№
вар.
Разрядность F1
Разрядность F2
Разрядность F3
Разрядность F4
1 4 1
22
5
2 6 2
20
5 3 3 2 22
5 4 2 1 24
5 5 3 1 23
5
6 6 1
20
5
7 4 2
21
5 8 3 2 22
5 9 4 2 21
5
10 2 1
24
5
Лабораторная работа № 4
109
Окончание табл. 78
№
вар.
Разрядность F1
Разрядность F2
Разрядность F3
Разрядность F4
11 6 2
19
5
12 4 1
22
5
Методические указания
Для выделения отдельных групп разрядов в данной работе предлага-
ется использовать двоичное маскирование разрядов. Маска – это двоичная комбинация, содержащая двоичные единицы в требуемых разрядах числа. Например, чтобы выделить старшие 5 разрядов 32-битного слова, исполь­зуют двоичную маску
11111000000000000000000000000000,
что в 16-ричной системе счисления задается константой F8000000. Выпол­нив поразрядное логическое умножение любого значения на данную маску и сдвинув результат на 27 разрядов вправо, получаем число, находящееся в поле из старших пяти разрядов.
Пример программного кода:
unsigned int Kadr,Mask,Field; Kadr = 0x88000000; Mask = 0xF8000000; Field = Kadr&Mask ; Field = Field >> 27;
Переменная Field получает двоичное значение
00000000000000000000000010001,
означающее, что в старших пяти разрядах переменной Kadr содержалась двоичная комбинация 10001.
Лабораторная работа № 4
Разработка приложений,
содержащих представление информации таблицами
Задание: разработать программу, позволяющую представлять инфор-
мацию в виде таблицы заданной структуры, хранить ее содержимое в тек­стовом файле. Структура таблицы задается набором полей каждой записи.
Лабораторные работы
110
Число записей не ограничено. Варианты индивидуальных заданий показаны в табл. 79.
Таблица 79
Варианты для лабораторной работы № 4
№
вар.
Поле 1
Поле 2
Поле 3
1
Наименование пред­приятия
ИНН
Ф.И.О. директора
2
Ф.И.О. работника
Дата приема на работу
Номер приказа о приеме на работу
3
Наименование арен­дуемого помещения
Срок аренды
Наименование арендатора
4
Объект недвижимо­сти
Стоимость
Владелец
5
Наименование товара
Номер накладной
Количество
6
Наименование услуги
Договорная цена
Отметка о выполнении
7
Наименование пред­приятия
ИНН
Ф.И.О. директора
8
Ф.И.О. работника
Ставка месячной оплаты
Премия
9
Наименование арен­дуемого помещения
Срок аренды
Стоимость аренды в месяц
10
Объект недвижимо­сти
Владелец
Адрес
11
Наименование товара
Тип товара
Место хранения
12
Наименование услуги
Содержание
Время исполнения
Методические указания
Таблицы на программном уровне рекомендуется описывать перемен­ными структурного типа. Чтение и сохранение в файл выполняется незави­симо для каждого поля структуры.
Вывод в C++ может быть буферизован по соображениям производи­тельности. Это означает, что всё, что выводится в файловый поток, не может сразу же быть записанным на диск (в конкретный файл). Когда данные бу­фера записываются на диск, то это называется очисткой буфера. Одним из способов очистки буфера является закрытие файла.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]