Рекомендуемая категория для самостоятельной подготовки:
Курсовая работа*
Код |
283014 |
Дата создания |
06 октября 2014 |
Страниц |
28
|
Мы сможем обработать ваш заказ (!) 27 декабря в 12:00 [мск] Файлы будут доступны для скачивания только после обработки заказа.
|
Описание
Заключение
Разработка программного обеспечения – это комплексная задача, решение которой выходит далеко за рамки простого написания кода приложения. Любое приложение начинается с идеи как справиться с возникшей проблемой. И в первую очередь проблему необходимо формализовать. То есть свести задачу к такому виду, которым можно будет оперировать в рамках математической логики и языка программирования. При этом саму проблему необходимо свести к некой модели, которая будет отражать наиболее значимые части проблемы и позволит отбросить те условия, которые не являются критичными.
Это необходимо, в первую очередь, потому что зачастую очень трудно или даже практически невозможно учесть все возможные варианты и решить проблему для любых наборов данных. А потому, задача сводится к математической мод ...
Содержание
Оглавление
Задание на курсовую работу 2
Введение 4
Основная часть 6
Глава 1 Разработка эскизного и технического проектов программы 6
Глава 2 Разработка рабочего проекта 15
Глава 3 Внедрение 21
Глава 4. Обзор источников и литературы 22
Заключение 23
Глоссарий 25
Список использованных источников 26
Список сокращений 27
Приложения 28
Введение
Введение
Проблема.В ходе данного курсового проекта выполняется работа над разработкой прикладного программного обеспечения на основе работы с обработкойслучайного набора числовых данных представленного в матричном виде и освоение основных средств. Во время работы над приложением мы также ознакомимся с проблемой обработки численных данных, которая является одной из краеугольных задач программирования, так как зачастую становится основой многих более сложных проектов и приложений. Обработка числовых данных требует для своего решения знаний основ логики и алгоритмов. Зачастую, именно плохо проработанная логика работы с данными становится основной причиной некорректной работы программного обеспечения.
Степень разработанности проблемы.
Разработка программного обеспечения – это комплексная зада ча, при решении которой необходимо учитывать массу тонкостей и нюансов.
Для того, чтобы разработать приложение, недостаточно одного только знания языка программирования или даже владение навыками работы со средой разработки. Не имея представлений о полном цикле разработки программного обеспечения невозможно создать по-настоящему качественное приложение.[1]
Разработка программного обеспечения начинается вовсе не с того момента, когда создан новый проект в среде разработки, а с постановки задачи, которая будет решаться приложением. Умение грамотно сформулировать задачу, структурировать данные, которые потребуются в ходе её решения, не менее важны, чем знания команд яп.
Проблемам работы с численными алгоритмами и алгоритмами сортировки данных посвящается огромная часть исследований, как среди математиков, так и среди представителей IT-индустрии. И не смотря на это, проблема остается актуальной на данный момент. Такое положение дел связано, прежде всего, со сложностью получения универсальных алгоритмов, которые могли бы эффективно работать с любым произвольным набором входных данных. К сожалению, зачастую это просто невозможно. А потому, алгоритмы разрабатываются в соответствии с задачами, которые они призваны выполнять. Иными словами, алгоритмы, написанные для одних данных, могут быть крайне неэффективными для других и вовсе некорректными для третьих.
В литературе можно встретить немало исследовательских работ по данной теме. Мы же в ходе работы над приложением не ставим своей целью поиск оптимального алгоритма, а лишь познакомимся с ними и применим один из них на практике.
Цель исследования – ознакомление с процессом разработки программного обеспечения, создание собственного приложения, позволяющего работать с числовыми данными.Задачей исследования является знакомство с такими процессами разработки ПО как постановка задачи, разработка приложения, написание документации, внедрение и тестирование разработанного ПО.
В ходе исследования использовались следующиеметоды исследования:
• изучение и анализ научной литературы;
• изучение и обобщение отечественной и зарубежной практики;
• интервьюирование пользователей по
Практическая значимость.Данное исследование может служить основой для дальнейшей разработки персонализированных прикладных приложений, которые смогут стать прекрасными помощниками в работе над конкретными задачами, возникающими в ходе практической деятельности.
Фрагмент работы для ознакомления
После отработки данных алгоритмов у пользователя есть выбор: завершить программу или очистить приложение. Для очистки приложения от всех введенных данных в приложении реализована кнопка «Очистить», которая приводит приложение в исходное состояние. Кнопка «очистить» доступна на любом шаге, выполняемом пользователем. Для выхода из программы достаточно нажать на стандартный для Windows значок окончания работы с приложением.1.3.2 Описание алгоритмаВ рамках приложения, необходимо реализовать несколько логически-независимых блоков:Считывание входных данныхГенерация матрицыПреобразование матрицы и выделение цветом диагоналей и элементов, подвергшихся изменениямЗадача считывания входных данных должна быть реализована максимально просто и служить фильтром входящей информации. Для реализации такогофильтра будут использованы два принципа защиты от ввода неверной входной информации: прямое запрещение ввода некорректной информации и вывод сообщения об ошибке в случае, если будет введено число, не удовлетворяющее оставшимся непроверенными условиям. Прямое запрещение ввода некорректной информации запретит элементу ввода данных принимать для записи символы, отличные от цифр, общее количество которых больше 2, причем 0 нельзя будет ввести первым. В случае нашего приложения, остается проверить лишь ограничение на нечетность числа. Таким образом, при попытке ввода четного числа подзадача выдаст сообщение о некорректном вводе. Алгоритм данной подпрограммы представлен на рисунке 2.Рис.2 Алгоритм обработки входных данныхВторой подзадачей является генерация матрицы. На вход данная подзадача получает от предыдущей подзадачи размерность матрицы, которую необходимо сгенерировать. В случае попытки генерации матрицы до введения размерности, подпрограмма должна отклонить данное действие выводом предупреждающего сообщения. Матрица создается процедурой генерации матрицы, принимающей на вход числовое значение размерности. После создания объекта матрица заданного размера, производится её заполнение при помощи генератора случайных чисел, который вызывается для обработки каждой клетки созданной матрицы. Сокращенный вид генерации матрицы представлен на рисунке 3. Полная блок-схема алгоритма вместе с листингом процедуры представлены в приложении А.Рис.3 Алгоритм создания матрицыПодзадача преобразования матрицы и выделение цветом диагоналей и элементов, подвергшихся изменениям, будет реализована в рамках приложения при помощи двух независимых процедур, вызываемых совместно по нажатию кнопки на форме. Алгоритм преобразования матрицы определит адрес центрального элемента матрицы. После чего будет реализован цикл последовательного перебора элементов, стоящих на диагоналях матрицы и сравнения их с условным максимум, за который изначально будет принят элемент, стоящий в первой строке первого столбца. Просмотр элементов будет реализован в два этапа: первый цикл для просмотра элементов главной диагонали, второй цикл – для просмотра элементов побочной диагонали. Как только во время работы цикла встретится элемент, больший, чем элемент, сохраненный в данный момент в качестве условного максимума, значение и положение условного максимума будет обновлено. Вне зависимости от того, встретил ли цикл на своем пути элементы, большие, чем условный максимум, работа цикла будет продолжаться, пока алгоритм не просмотрит все элементы главной и побочной диагоналей. По выходу из цикла условный максимум будет принят за МЭД. Его значение запишется на пересечение диагоналей, а значение, стоявшее на пересечении диагоналей, будет записано по адресу, которое сохранилось для МЭД. Сокращенный алгоритм процедуры представлен на рисунке 4. В блок-схеме для краткости использованы следующие обозначения: i - переменная для обращения к элементам, max, max_i, max_j - условный максимум и значения его строки и столбца; mid, mid_i, mid_j – центральный элемент матрицы и значения его строки и столбцаn – размерность матрицыmatrix – элемент матрицы, который в данный момент просматривается как возможный условный максимум Рис.4 Установка МЭД матрицы на место их пересеченияПоследний алгоритм, который необходим для реализации данного приложения - закрашивания диагоналей и подсвечивание цветом тех элементов, которые будут переставлены. Данный алгоритм не является обязательным для корректности работы приложения, но делает работу приложения гораздо удобнее для пользователя. Таким образом, данная функция вводится в приложение исключительно из соображений дружелюбности интерфейса. Для того чтобы выполнить данную процедуру, вызывается цикл, который применит определенный стиль форматирования для ячеек, которые удовлетворят условиям: номер столбца и строки элемента совпадают или номер строки равен разности количества столбцов и номера столбца, увеличенной на единицу. Это позволит обработать одновременно и элементы главной и элементы побочной диагоналей. Полный алгоритм работы процедуры и её листинг приведены в приложении А.1.3.3 Организация входных и выходных данныхДля оптимальной работы приложения входные данные необходимо организовать в виде считывания численного значения размерности с формы приложения. Для предотвращения ошибок используемый компонент формы не должен допускать ввод некорректной информации. В качестве входных данных могут быть приняты только нечетные целые числа от 1 до 15 включительно. В ином случае поведение компонента может развиваться по 2 сценариям:входящая информация не будет воспринята и никак не отобразится на экраневходящая информация будет воспринята, обработана как ошибочная, информация отклонена от дальнейшей передачи в работу, выведено сообщение об ошибке Для непосредственной работы с входными данными на форме приложения устанавливаются компоненты SizeInput: TEdit; SizeInputLabel: TLabel; ClearBtn: TButton. Компонент SizeInput: TEdit содержит подсказку пользователю, какие конкретно данные приложение ожидает от него. SizeInputLabel: TLabel – элемент для ввода информации. ClearBtn: TButton – позволяет очистить приложение от любой введенной информации и привести приложение в исходное положение.Для работы с входной информацией заводится переменная n: byte.В случае ввода неверной информации используются диалоговые окна messageDlg.После обработки информации, на выходе программа генерирует матрицу случайных чисел заданного размера на основе введенных данных. Для организации выходных данных на основной форме приложения располагается структурный элемент MatrixForm: TMatrixForm. Данный элемент служит для отрисовки сетки матрицы. На выходе данные представлены при помощи переменной matrix: array of array of double. Данная переменная является двумерным массивом вещественных чисел, что соответствует поставленной перед приложением задаче.1.3.4 Выбор состава технических и программных средствОписанные нами алгоритмы могут быть реализованы на любом языке высокого уровня. В связи с этим, выбирать язык программирования мы можем исходя из собственных предпочтений. Для разработки приложения был выбран императивный объектно-ориентированный язык Object Pascal. Огромным достоинством данного языка является высокий уровень структурируемости кода и его высокий уровень читаемости. Для выбора конкретной реализации необходимо рассмотреть ещё одно требование к приложению.Одним из основных требований к приложению является его Windows OS совместимость. Помимо того, что оно должно корректно запускаться под данной операционной системой, данное приложение должно также соответствовать принципам и стандартам, принятым в Microsoft. В данном случае, мы имеем ввиду удобство использования интерфейса, его эстетическую составляющую и понятность для пользователя.Учитывая все вышеописанные требования по реализации задачи, считаем оптимальным использование использования интегральной среды разработки программ Delphi. Данная среда разработки, помимо достоинств самого языка Object Pascal, также значительно упрощает создания графического интерфейса приложения.Приложение, разработанное в IDE Delphi, может быть запущенно под любой операционной системой семейства Windows, начиная от версии Windows 95 и выше. Минимальные требования, которыми должен обладать компьютер, на котором будет запускаться приложение: минимальное доступное дисковое пространство 80-200Mb, минимальная оперативная память 32-64Mb, процессор (минимум) Pentium 90, Операционная система Windows 95, 98, Windows NT 4.0 (Service Pack 3), Windows XP, Windows 2000, Windows 7, 8.Глава 2 Разработка рабочего проектаЭтап разработки рабочего проекта включает в себя разработку программы и программной документации, а также испытание программы.2.1 Разработка программыПроект разрабатывается в IDE Delphi. Для его реализации достаточно одной формы MatrixForm, которая одновременно взаимодействует с пользователем, отображает данные и их модификации. Внешний вид данной формы можно посмотреть в приложении A.При реализации компонента MatrixForm, на нем помещаются все остальные компоненты, необходимые для корректного взаимодействия приложения с пользователями. Полный листинг свойств и объектов приведен в приложении А. Обозначим лишь кратко основные компоненты, реализованные на форме. Объект SizeInputLabel класса TLabel. Данный объект предназначен для ввода размерности матрицы пользователем. Объект MatrixGrid класса TStringGrid, предназначенный для отрисовки матрицы. Для данного объекта подключено событие OnDrawCell, собственно отвечающее за отрисовку матрицы. Данное событие позволяет производить различные действия с матрицей: такие как окрашивание её клеток, объединение некоторых ячеек, заполнение фиксированным текстом и т.п.Объект GenerateBtn класса TButton. В данном объекте подключено событие OnClick = GenerateBtnClick, предназначенное для запуска генерации матрицы для записи в MatrixGrid, по клику на соответствующей кнопке.Объект SizeInput класса TEdit. Данный компонент представляет собой окно для ввода пользователем входных данных. Содержит событие OnKeyPress служащее сигналом к считыванию введенных данных в программу.Объект ClearBtn класса TButton. Данному объекту, так же как объекту GenerateBtn подключено событие OnClick, запускающее процедуру приведения формы в исходное состояние по клику на кнопку.Для работы с данными объектами в файле matrixunit.pas созданы обработчики событий. Полный листинг исходного текста программы приведен в приложении А. Разберем основные свойства и принципы работы данных обработчиков событий.Для обработки различных действий программа разбивается на процедуры, описание работы которых разберем ниже. procedure FormCreate(Sender: TObject); - Данная процедура предназначена для создания формы и помещения её в центр экрана путем установки атрибутов MatrixForm.Left и MatrixForm.Top в значения (Screen.DesktopWidth - MatrixForm.Width) div 2 и (Screen.DesktopHeight - MatrixForm.Height) div 2 соответственно. procedure TransformBtnClick(Sender: TObject); - данная процедура предназначена для трансформации созданной матрицы. Кнопка, запускающая процесс выполнения процедуры становится доступной только после того, как в приложении выполнится первоначальная генерация матрицы. Данная процедура принимает за максимум первый элемент матрицы, определяет элемент на пересечении диагоналей, сравнивает элементы главной диагонали с максимумом, сравнивает элементы побочной диагонали с максимумом, меняет местами МЭД и элемент на пересечении диагоналей, вызывает процедуру, окрашивающую клетки, элементы которых были поменяны местами. В конце работы процедура выводит на экран диалоговое окно, сообщающее пользователю, что преобразования выполнены и адреса ячеек, которые поменялись местами. procedure SizeInputKeyPress(Sender: TObject; var Key: Char); - данная процедура реализована для запрета ввода некорректных данных. Процедура разрешает ввод только цифр и Backspace, при этом запрещая принимать на вход более двух цифр или вводить 0 первым. procedure GenerateBtnClick(Sender: TObject); - данная процедура генерирует матрицу. Для этого внутри процедуры сначала проверяются поступившие входные данные. Если данные некорректны, программа выведет сообщение об ошибке, очистит объект SizeInput, и попросит заново ввести данные. В случае, если данные введены корректно, процедура последовательно создаст матрицу размера n x n, заполнит созданную матрицу случайными элементами, используя для этого генератор случайных чисел и записывая их в ячейки матрицы, используя цикл, для последовательного обхода и заполнения всех ячеек матрицы. procedure MatrixGridDrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); - данная процедура предназначена для форматирования матрицы. В ходе своей работы процедура окрашивает все ячейки диагоналей матрицы одним цветом, затем отдельно окрашивает ячейку, стоящую на пересечении диагоналей и ячейку, содержащую МЭД, в другой цвет. procedure ClearBtnClick(Sender: TObject); - процедура, возвращающая форму в исходное состояние. Данная процедура очищает SizeInput, делает недоступной кнопку TransformBtn, возвращает матрицу к размеру 2 х 2 ячейки, очищая каждую из них при помощи вызова метода MatrixGrid.Rows[i].Clear объекта MatrixGrid. 2.2 Спецификация программыПриложение открывается при помощи исполняемого файла matrixproj.exe. Список файлов проекта приложения приведен ниже CITATION Del \l 1033 [2].НаименованиеОбозначениеПримечаниеmatrixproj.dprDelphi Project FileОсновной файл проекта. Содержит исходный код проекта Delphi. В файле содержатся основные отправные точки для создания приложения. Содержит инструкции компилятору. Без данного файла приложение невозможно будет заново скомпилировать.matrixproj.dprojDelphi Project File for the native compilerФормируется компилятором и содержит конкретные указания к исполнению.matrixproj.dproj.localUser-specific project optionsФормируется во время перепостроения проектов и содержит указания компиляторуmatrixproj.identcacheTemporary CacheБинарный файл, содержащий кэшированные привязки к файлам для приложенияmatrixproj.resResource FileБинарный файл содержащий ресурсную информацию по используемым иконкам, строкам, изображениям, etc.matrixunit.dcuDelphi Compiled Unit FileБинарный файл приложений Win32, создаваемый компилятором. Является скомпилированным модулемmatrixunit.dfmDelphi Win32 Form FileТекстовый файл, содержащий информацию о используемых в приложении объектах, их свойствах и событиях обработкиmatrixunit.pasDelphi Unit Source FileТекстовый файл, содержащий исходный код модуля2.3 Текст программыПолный листинг файлов matrixproj.dpr, matrixunit.dfm и matrixunit.pas приведен в приложении А.2.4 Описание программыОбщие сведения. Приложение Матрица разработано на языке Object Pascal в IDE Delphi. Минимальные системные требования к приложению: минимальное доступное дисковое пространство 80-200Mb, минимальная оперативная память 32-64Mb, процессор (минимум) Pentium 90, Операционная система Windows 95, 98, Windows NT 4.0 (Service Pack 3), Windows XP, Windows 2000, Windows 7, 8.Функциональное назначение. Приложение используется для решения задачи нахождения МЭД матрицы и обмена местами центрального элемента с МЭД. Программа работает с матрицами нечетной размерности от 1 до 15.Описание логики приложения. Приложение состоит из одного окна, в котором пользователь может подавать на вход приложению размерность матрицы. Приложение самостоятельно генерирует матрицу случайных вещественных чисел заданной размерности.
Список литературы
Список использованных источников
[1] Брайан Керниган, Р. Пайк, Практика программирования, СПб: Невский диалект, 2005.
[2] «Delphi programming,» [ВИнтернете]. Available: http://delphi.wikia.com/wiki/Delphi_File_Extensions.
[3] А. Архангельский, Программирование в Delphi. Учебник по классическим версиям Delphi, Бином, 2006.
[4] С. Скиена, Алгоритмы. Руководство по разработке, СПб: БХВ-Петербург, 2013.
[5] «Хабрхабр,» [В Интернете]. Available: http://habrahabr.ru/.
[6] «CyberForum\delphi,» [ВИнтернете]. Available: http://www.cyberforum.ru/delphi/.
[7] «Клуб ПРОграммистов,» [В Интернете]. Available: http://programmersforum.ru/.
[8] «#ХэшКод,» [В Интернете]. Available: http://hashcode.ru/.
Пожалуйста, внимательно изучайте содержание и фрагменты работы. Деньги за приобретённые готовые работы по причине несоответствия данной работы вашим требованиям или её уникальности не возвращаются.
* Категория работы носит оценочный характер в соответствии с качественными и количественными параметрами предоставляемого материала. Данный материал ни целиком, ни любая из его частей не является готовым научным трудом, выпускной квалификационной работой, научным докладом или иной работой, предусмотренной государственной системой научной аттестации или необходимой для прохождения промежуточной или итоговой аттестации. Данный материал представляет собой субъективный результат обработки, структурирования и форматирования собранной его автором информации и предназначен, прежде всего, для использования в качестве источника для самостоятельной подготовки работы указанной тематики.
bmt: 0.00493