алгоритм программный автоматизированный
Каждый программный продукт состоит из модулей. Модуль может разрабатываться отдельно и, таким образом, модернизировать программное средство, улучшая его функциональность.
Целью работы является:
- Закрепление полученных теоретических знаний по дисциплинам Прикладное программирование, Системное программирование, Теория алгоритмов, Основы программирования и алгоритмические языки»;
- Сбор, анализ и обобщение материалов для подготовки отчета по практике.
Задачи работы обусловлены индивидуальным заданием:
- анализ поставленной задачи;
- выбор методов и разработка основных алгоритмов решения;
- выбор технологии и среды программирования;
- построение каркаса приложения и проектирование интерфейса пользователя;
- разработка кода программного продукта на основе готовой спецификации;
- выбор стратегии тестирования и разработки тестов;
- использование средств отладки представляемых интерфейсом пользователей;
- проведение тестирования программного модуля по определенному сценарию;
- оформление документации на программное средство.
Работа состоит из пяти разделов.
В первом разделе описывается разработка алгоритма поставленной задачи и реализация его средствами автоматизированного проектирования.
Во втором разделе обоснован выбор технологии среды программирования описан спроектированный интерфейс пользователя и разработан код программного продукта.
В третьем разделе описано использование инструментальных средств на этапе отладки программного модуля.
В четвертом разделе описано проведение тестирования программного модуля, охарактеризовано функциональное, структурное, оценочное тестирование.
Пятый раздел посвящен оформлению документации на программное
средство.
Необходимо написать программу, которая будет выполнять
действия на матрицами: умножения, сложения, вычитания, транспонирования.
Программа должна решать введенные вручную матрицу в форму. Для удобства
пользователя программа должна иметь интуитивно понятный интерфейс.
В программе используется следующий алгоритм работы: в программе есть формы, в которые вводятся элементы матриц, элементы переводятся из String типа в Integer. Затем нужно нажать кнопку соответствующего действия. Выполняется алгоритм решения матриц и результат выводится в элемент DataGridView.
Для построения блок-схем использовалась программа Microsoft Office Visio 2013. С её помощью можно
составлять различные диаграммы и схемы, в том числе, блок-схемы.
Рисунок 1.1 - Блок схема считывания и записи данных из записи
в массив
Рисунок 1.2 - Проверка на доступность для ввода
Рисунок 1.3 - Блок схема ввода данных в textbox и сравнения с
существующим массивом
Рисунок 1.4 - Вызов метода Vizov с параметрами
Калькулятор матриц реализован на языке программирования C# в среде программирования Microsoft Visual Studio Ultimate 2013. Выбор языка C# обусловлен тем, что он современный и популярный объектно-ориентированный язык программирования, а среда Microsoft Visual Studio Ultimate 2013 является мощным средством, позволяющим быстро создать программу, обладающую графическим оконным интерфейсом.
Макет окна представлен на рисунке 2.1
Рисунок 2.1 - Оконный интерфейс будущего приложения
На форме располагается 3 элемента DataGridView, в них будут размещаться матрицы. Так же 4 Button для выполнения действий над матрицами.
При отладке программного продукта необходимо воспользоваться
командой меню Отладка (рис. 3.1). В меню отладка существуют ряд команд,
назначение которых представлено ниже.
Рисунок 3.1 - Окно меню Отладка
Окна - открывает в интегрированной среде окно Точки останова, которое дает доступ ко всем точкам останова данного решения. Показывает в интегрированной среде окно Вывод.
Окно Вывод - это бегущий журнал множества сообщений, выдаваемых интегрированной средой, компилятором и отладчиком. Поэтому эта информация относится не только к сеансу отладки, а также открывает в интегрированной среде окно Интерпретация, которое позволяет выполнять команды:
- начать отладку - запускает приложение в режиме отладки;
- присоединиться к процессу - позволяет прикрепить отладчик к выполняющемуся процессу (исполняемому файлу). например, если запущено приложение без отладки, то можете потом прикрепиться к этому выполняющемуся процессу и начать отладку;
- исключения - открывает диалоговое окно Исключения, которое позволяет выбрать способ останова отладчика для каждого исключительного состояния;
- шаг с заходом - запускает приложение в режиме отладки. для большинства проектов выбор команды шаг с заходом означает вызов отладчика на первой выполняемой строке приложения. таким образом, можно войти в приложение с первой строки;
- шаг с обходом - когда вы не находитесь в сеансе отладки, то команда шаг с обходом просто запускает приложение точно так же, как это сделала бы кнопка run;
- точка останова - включает или выключает точку останова на текущей (активной) строке кода текстового редактора. эта опция неактивна, если в интегрированной среде нет активного кодового окна;
- создавать точку останова - активирует диалоговое окно создавать точку останова позволяющее указать имя функции, для которой необходимо создать точку останова;
- удалить все точки останова - удаляет все точки останова из текущего решения;
- очистить все подсказки по данным - деактивирует (без удаления) все точки останова текущего решения;
- параметры и настройки - Прерывать
выполнение, когда исключения пересекают границу домена приложения или границу
между управляемым и машинным кодом.
Оценочное тестирование, которое также называют «тестированием системы в целом» целью которого является тестирование программы на соответствие основным требованиям. Эта стадия тестирования особенно важна для программных продуктов. Включает следующие виды:
- тестирование удобства использования - последовательная проверка соответствия программного продукта и документации на него основным положениям технического задания;
- тестирование на предельных объемах - проверка работоспособности программы на максимально больших объемах данных, например, объемах текстов, таблиц, большом количестве файлов и т.п.;
- тестирование на предельных нагрузках - проверка выполнения программы на возможность обработки большого объема данных, поступивших в течение короткого времени;
- тестирование удобства эксплуатации - анализ психологических факторов, возникающих при работе с программным обеспечением; это тестирование позволяет определить, удобен ли интерфейс, не раздражает ли цветовое или звуковое сопровождение и т.п.;
- тестирование защиты - проверка защиты, например, от несанкционированного доступа к информации;
- тестирование производительности - определение пропускной способности при заданной конфигурации и нагрузке;
- тестирование требований к памяти - определение реальных потребностей в оперативной и внешней памяти;
- тестирование конфигурации оборудования - проверка работоспособности программного обеспечения на разном оборудовании;
- тестирование совместимости - проверка преемственности версий: в тех случаях, если очередная версия системы меняет форматы данных, она должна предусматривать специальные конвекторы, обеспечивающие возможность работы с файлами, созданными предыдущей версией системы;
- тестирование удобства установки - проверка удобства установки;
- тестирование надежности - проверка надежности с использованием математических моделей;
- тестирование восстановления - проверка восстановления программного обеспечения, например, системы, включающей базу данных, после сбоев оборудования и программы;
- тестирование удобства обслуживания - проверка средств обслуживания, включенных в программное обеспечение;
- тестирование документации - тщательная проверка документации, например, если документация содержит примеры, то их все необходимо попробовать;
- тестирование процедуры - проверка ручных процессов, предполагаемых в системе.
Естественно, целью всех этих проверок является поиск
несоответствий техническому заданию. Считают, что только после выполнения всех
видов тестирования программный продукт может быть представлен пользователю или
к реализации. Однако на практике обычно выполняют не все виды оценочного
тестирования, так как это очень дорого и трудоемко. Как правило, для каждого
типа программного обеспечения выполняют те виды тестирования, которые являются
для него наиболее важными. Так базы данных обязательно тестируют на предельных
объемах, а системы реального времени - на предельных нагрузках.
Созданный программный продукт предназначен для выполнения арифметических действий над матрицами.
Для того чтобы создать матрицы, необходимо ввести размерности
матрицы и нажать кнопки «Построить». Затем ввести данные в матрицу и выбрать
желаемое действие.
Рисунок 5.1 - Работающее приложение
Программа имеет удобный интерфейс и предоставляет возможность
с легкостью решать матрицы произвольных размерностей.
В ходе работы было выполнено индивидуальное задание:
- выполнен анализ предметной области;
- обоснован выбранный и разработанный алгоритм решения;
- определенна технология и выбрана среда программирования;
- построен каркас приложения и спроектирован интерфейс пользователя;
- разработан код программного модуля;
- описаны использованные средства отладки при тестировании;
- проведено тестирование программного модуля по определенному сценарию;
- добавлен пункт меню с кратким описанием работы с программой.
Поставленные цели достигнуты.
1 Кибер форум [Электронный ресурс]: http://CyberForum.ru
Microsoft Developer [Официальная документация Майкрософт по C#] ttps://msdn.microsoft.com
http://programming-edu.ru/
Блог помощи для новичков С#
Код программы
MyMatrix.cs
using System;System. Collections. Generic;System. Linq;System. Text;System. Windows. Forms;
Matrix
{MyMatrix
{[,] a=new int [3,3];
// передача значенийvoid Set (int i, int j, int znach)
{[i, j] = znach;
}
// сложениеstatic MyMatrix operator +(MyMatrix matrix1, MyMatrix matrix2)
{NewMatrix = new MyMatrix();(int i = 0; i < 3; i++)
{(int j = 0; j < 3; j++)
{.a [i, j] = matrix1.a [i, j] + matrix2.a [i, j];
}
}NewMatrix;
}
// вывод матрицыstring Visual (int i, int j)
{a [i, j].ToString();
}
// вывод всей и сразу. ХдDataGridView FullVisual (DataGridView dt)
{(int i = 0; i < 3; i++)
{(int j = 0; j < 3; j++)
{. Rows[j].Cells[i].Value = a [i, j];
}
}dt;
}
// вычитаниеstatic MyMatrix operator - (MyMatrix matrix1, MyMatrix matrix2)
{NewMatrix = new MyMatrix();(int i = 0; i < 3; i++)
{(int j = 0; j < 3; j++)
{.a [i, j] = matrix1.a [i, j] - matrix2.a [i, j];
}
}NewMatrix;
}
// транспонированиеMyMatrix Trans()
{NewMatrix = new MyMatrix();(int i = 0; i < 3; i++)
{(int j = 0; j < 3; j++)
{.a [i, j] = a [j, i];
}
}NewMatrix;
}
// умножениеstatic MyMatrix operator *(MyMatrix matrix1, MyMatrix matrix2)
{NewMatrix = new MyMatrix();(int i = 0; i < 3; i++)
{(int k = 0; k < 3; k++)
{
//int a = 0;(int j = 0; j < 3; j++)
{
//a += matrix1.a [j, k] * matrix2.a [i, j];.a [i, k]+= matrix1.a [j, k] * matrix2.a [i, j];
}
//NewMatrix.a [i, k] = a;
}
}NewMatrix;
}
// заполнениеvoid Zapoln (DataGridView grid)
{(int j = 0; j < 3; j++)
{[i, j] = Convert. ToInt32 (grid. Rows[j].Cells[i].Value);
}
}
}
}
}
.csSystem;System. Collections. Generic;System. ComponentModel;System. Data;System. Drawing;System. Linq;System. Text;System. Windows. Forms;
Matrix
{partial class Form1: Form
{Form1 ()
{();
}
void Form1_Load (object sender, EventArgs e)
{(int i = 0; i < 3; i++)
{. Rows. Add();. Rows. Add();. Rows. Add();
//dataGridView1. Rows[i].Cells[0].Value = i. ToString();
}
}
void button1_Click (object sender, EventArgs e)
{matrix1 = new MyMatrix();matrix2 = new MyMatrix();matrix3;. Zapoln(dataGridView1);. Zapoln(dataGridView2);= (matrix1 + matrix2);. FullVisual(dataGridView3);
}
void button2_Click (object sender, EventArgs e)
{matrix1 = new MyMatrix();matrix2 = new MyMatrix();matrix3;. Zapoln(dataGridView1);. Zapoln(dataGridView2);= (matrix1 - matrix2);. FullVisual(dataGridView3);
}
void button3_Click (object sender, EventArgs e)
{matrix1 = new MyMatrix();matrix3;. Zapoln(dataGridView1);= matrix1. Trans();. FullVisual(dataGridView3);
}
void button4_Click (object sender, EventArgs e)
{matrix1 = new MyMatrix();matrix2 = new MyMatrix();matrix3;. Zapoln(dataGridView1);. Zapoln(dataGridView2);= (matrix1 * matrix2);. FullVisual(dataGridView3);
}
}
}