КП_ПЯВУ_1курс. Курсовой проект по дисциплине Программирование на языках высокого уровня Тема Проектирование и тестирование программы. Задание 32.
![]()
|
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ «ВОРОНЕЖСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ» (ФГБОУ ВО «ВГТУ», ВГТУ) Факультет заочного образования Кафедра «Автоматизированные и вычислительные системы» Направление «Информатика и вычислительная техника» Профиль «Вычислительные машины, комплексы, системы и сети» КУРСОВОЙ ПРОЕКТ по дисциплине: «Программирование на языках высокого уровня» Тема: «Проектирование и тестирование программы. Задание №32.» Расчетно–пояснительная записка
Воронеж 2018 ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ «ВОРОНЕЖСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ» (ФГБОУ ВО «ВГТУ», ВГТУ) Кафедра «Автоматизированные и вычислительные системы» Задание на курсового проекта по дисциплине " Программирование на языках высокого уровня" Тема: «Проектирование и тестирование программы». Задание №32» Студент группы зВМ–11 Голованов Евгений Владимирович Фамилия, имя, отчество Номер варианта 32 . Технические условия: освоить работу в среде программирования Visual Studio; реализовать проектирование и тестирование программы по варианту; оформить расчетно–пояснительную записку. Содержание и объем работы (графические работы, расчеты и прочее): расчетно – пояснительная записка – 15 страниц формата А4. Изучение теоретического материала по языку высокого уровня С++. Выполнение практического задания, где подробно рассматривается процесс проектирования программы и тестирования программы. Сроки выполнения этапов: изучение теоретического материала по С++ «Основы языка С++» – до 15.11.2018 г., реализация практического задания – до 05.12.2018 г., оформление расчетно–пояснительной записки – до 20.12.2018 г. Срок защиты курсового проекта: декабрь2018-январь2019 .
Студент группы ___________________________________________________ фамилия, имя, отчество Замечания руководителя РЕФЕРАТ Пояснительная записка 15 с., таблица 1, рисунков 4. Ключевые слова: прямоугольная матрица, обработка элементов матрицы, характеристики матрицы. Объект исследования или разработки – целочисленная матрица. Цель работы – проектирование программы для обработки элементов целочисленной матрицы и получения определенных характеристик целочисленной матрицы. Полученные результаты – получена программа с использованием инструментария программирования среды программирования Visual Studio СОДЕРЖАНИЕ
ВВЕДЕНИЕ 6 1 ФОРМУЛИРОВКА ЗАДАЧИ 7 2 СПЕЦИФИКАЦИИ ЗАДАЧИ 7 3 МАТЕМАТИЧЕСКАЯ ПОСТАНОВКА ЗАДАЧИ 7 4 ОПИСАНИЕ ВЫЧИСЛИТЕЛЬНЫХ МЕТОДОВ 8 5 СХЕМА АЛГОРИТМА 8 6 ТЕКСТ ПРОГРАММЫ 11 7 РУЧНОЙ ПРОСЧЕТ ОТЛАДОЧНОГО ВАРИАНТА 12 8 РЕЗУЛЬТАТЫ МАШИННОГО ТЕСТИРОВАНИЯ ПРОГРАММЫ 13 ЗАКЛЮЧЕНИЕ 15 БИБЛИОГРАФИЧЕСКИЙ СПИСОК 16 ВВЕДЕНИЕРазработка сложных современных программных систем, характеризующихся высокой надежностью работы требует знаний теоретических и практических методов и средств разработки программных систем. Для успешного написания эффективных программ невозможно без знания основных понятий и определений в области программирования и алгоритмизации, особенностей программирования на алгоритмическом языке, основ программирования в среде программирования. Курсовая работа посвящена разработке программы на языке высокого уровня С++ в среде программирования Visual Studio. 1 ФОРМУЛИРОВКА ЗАДАЧИВариант №ХХ. Написать программу, которая для целочисленной матрицы 10х10 определяет среднее арифметическое ее элементов и количество положительных элементов в каждой строке. Проектируемая программа предназначена для обработки элементов числовой последовательности и получения определенных характеристик числовой последовательности. Программа должна: осуществлять ввод с клавиатуры значений элементов целочисленной матрицы; определять среднее арифметическое элементов целочисленной матрицы; определять количество положительных элементов в каждой строке целочисленной матрицы; выводить результаты вычислений. 2 СПЕЦИФИКАЦИИ ЗАДАЧИВходные данные: исходная числовая последовательность –целочисленная матрица. Выходные данные — характеристики целочисленной матрицы: среднее арифметическое элементов, количество положительных элементов. 3 МАТЕМАТИЧЕСКАЯ ПОСТАНОВКА ЗАДАЧИДля решения задачи необходимо определить первоначальный ряд переменных, сведения о которых показаны в табл. 1. Эта исходная таблица может быть дополнена на стадии разработки алгоритма. Таблица 1. Переменные программы
Примем, что а обозначает исходную целочисленную матрицу, при обработке которой получаем требуемые характеристики. Переменные n_posl_el, s используются для хранения показателей. Причем таким образом: s — для хранения среднего арифметического; n_posl_el — для количества положительных чисел строки. 4 ОПИСАНИЕ ВЫЧИСЛИТЕЛЬНЫХ МЕТОДОВОпределение среднего арифметического прямоугольной матрицы воспользуемся формулой: ![]() где a[i][j] —элемент i-й строки (i= 1, 2,..., nrow), j-го столбца (j=1, 2,..., ncol). Вычисление количества положительных элементов строки прямоугольной матрицы производится по формуле: ![]() где a[i][j] —элемент i-й строки, j-го столбца (j=1, 2,..., ncol). При вычислении количества положительных элементов для каждой строки выполняются однотипные действия: обнуление счетчика N, просмотр каждого элемента строки и сравнение его с нулем, при необходимости увеличение счетчика на единицу, а после окончания вычислений — вывод результирующего значения счетчика. 5 СХЕМА АЛГОРИТМАДля решения поставленной задачи был выбран вариант построения программы со следующей последовательностью действий: инициализация переменных; ввод значений матрицы; контрольный вывод на экран; обработка элементов матрицы построчно для определения количества положительных элементов и вывода на экран полученной характеристики; подсчет среднего арифметического элементов матрицы. ![]() Рисунок 1 - Схема алгоритма основной программы Программа работает со следующими типами и константами: const int nrow=3, ncol = 3; int a[nrow][ncol]; int i, j; int n_posl_el; float s = 0; Схема алгоритма основной программы содержит следующие типовые структурные элементы: цикл, ветвление, выбор. Перед выполнением циклической части в программе производится инициализация переменных. При выполнении тела цикла осуществляется согласно алгоритму последовательное выполнение некоторых действий. Рассмотрим их: считывание данных с клавиатуры cin >> a[i][j] ; вывод на экран считанных данных cout << setw(4) << a[i][j] << " "; вычисление значений показателей для считанной последовательности: s += a[i][j]; if (a[i][j]>0) n_posl_el++; вывод на экран значений полученных показателей cout << "Строка:" << i << "количество: "<< n_posl_el << endl; вычисление значения среднего арифметического и вывод его на экран s /= nrow*ncol; cout << "Среднее арифметическое"<< s<< endl; После вывода на экран значения среднего арифметического происходит задержка экрана system ("pause"); При нажатии любой клавиши программа завершает свою работу. 6 ТЕКСТ ПРОГРАММЫПрограмма, соответствующая представленному на рисунке алгоритму, приведена в листинге. Тексты содержат достаточно подробные комментарии и выводимые на экран монитора приглашения для ввода определенных значений исходных данных. Листинг. #include "stdafx.h" #include #include using namespace std; void main( ) { // инициализация переменных const int nrow=10, ncol = 20; int a[nrow][ncol]; int i, j; setlocale (LC_ALL, "rus"); // возможность вывода информации на экран на русском языке // ввод элементов массива с клавиатуры cout << "Введите элементы массива:" << endl; for (i = 0; i < nrow; i++) for (j = 0; j < ncol; j++) cin >> a[i][j]; // вывод элементов массива на экран // ширина поля для вывода устанавливается в четыре символа //с помощью манипулятора setw() for (i = 0; i < nrow; i++){ for (j = 0; j < ncol; j++) cout << setw(4) << a[i][j] << " "; cout << endl; } // инициализация переменных int n_posl_el; float s = 0; // обработка элементов матрицы для определения ее характеристик for (i = 0; i < nrow; i++){ n_posl_el =0; for (j = 0; j < ncol; j++) { s += a[i][j]; // сумма всех элементов матрицы if (a[i][j]>0) n_posl_el++;// подсчет положительных элементов строки } cout << "Строка:" << i << "количество: "<< n_posl_el << endl; } s /= nrow*ncol; // расчет среднего арифметического cout << "Среднее арифметическое"<< s<< endl; system ("pause"); // осуществляет задержку экрана } 7 РУЧНОЙ ПРОСЧЕТ ОТЛАДОЧНОГО ВАРИАНТАРазмерность массива задана именованными константами (const int nrow=3, ncol = 3;), что позволяет легко ее изменять. Для упрощения отладки заданы небольшие значения этих величин (3,3) , можно приготовить тестовый массив в текстовом файле и изменить программу так, чтобы она читала значения из файла. Тестовые примеры составлены таким образом, чтобы строки массива содержали разное количество отрицательных элементов (ни одного элемента, один и более элементов, все элементы). 1 вариант отладки Пусть исходная информация содержит следующую числовую последовательность а: -1,-2,-3,-4,5,6,7,8,9 Ручной проверочный расчет для этой последовательности дает следующие результаты: 1 строка - 0 положительных элементов 2 строка - 2 положительных элемента 3 строка - 3 положительных элемента Среднее арифметическое – 2,78 2 вариант отладки Пусть исходная информация содержит следующую числовую последовательность а: 1,2,3,4,5,6,7,8,9 Ручной проверочный расчет для этой последовательности дает следующие результаты: 1 строка - 3 положительных элемента 2 строка - 3 положительных элемента 3 строка - 3 положительных элемента Среднее арифметическое – 4,78 3 вариант отладки Пусть исходная информация содержит следующую числовую последовательность а: 1,2,-3,-4,-5,6,7,8,9 Ручной проверочный расчет для этой последовательности дает следующие результаты: 1 строка - 2 положительных элемента 2 строка - 1 положительных элемента 3 строка - 3 положительных элемента Среднее арифметическое – 2,33 8 РЕЗУЛЬТАТЫ МАШИННОГО ТЕСТИРОВАНИЯ ПРОГРАММЫНа рисунках 2-4 приведены результаты машинного тестирования программы. Вывести все три отладочных варианта ![]() Рисунок 2 - Первый вариант отладки ![]() Рисунок 3 - Второй вариант отладки ![]() Рисунок 4 - Третий вариант отладки Выводы: результаты ручного и машинного тестирований совпадают по всем параметрам, погрешность вычисления среднего арифметического образуется за счет округления при выводе результата. ЗАКЛЮЧЕНИЕВ результате выполнения курсового проекта были решены следующие задачи: - изучение основ языка программирования С++; - освоение работы в среде программирования Visual Studio 12; - формирование технического задания на выполнение курсового проекта; - выбор математических методов реализации практической части курсового проекта; - разработка алгоритма выполнения поставленной задачи; - кодирование созданного алгоритма; - составление пояснительной записки к курсовому проекту. Таким образом, в ходе выполнения курсового проекта были решены все поставленные задачи. Небольшие программы имеют размер порядка одной – нескольких сотен строк, разрабатываются, как правило, одним человеком без применения специальных методов разработки. На написание таких программ уходит несколько дней, а срок их использования очень короткий. Тем не менее, они являются неотъемлемой частью повседневной работы инженера. БИБЛИОГРАФИЧЕСКИЙ СПИСОКПавловская, Т. А. C/C++. Структурное программирование: Практикум / Т. А. Павловская, Ю. А. Щупак. — СПб.: Питер, 2003. — 240 с. Павловская, Т. А. C/C++. Программирование на языке высокого уровня / Т. А. Павловская. — СПб.: Питер, 2003. — 461 с. Можно указать книги и сайты, информацией которых вы пользовались |