
- •Введение
- •1 Теоретический раздел
- •Определение списка
- •1.2 Свойства списка
- •1.3 Виды списков
- •1.3.1 Линейный односвязный список
- •1.3.2 Кольцевой односвязный список
- •1.3.3 Линейный двусвязный список
- •1.3.4 Кольцевой двусвязный список
- •1.3.5 Многосвязные списки
- •1.4 Описание компилятора Microsoft Visual Studio
- •1.5 Visual Studio 2010
- •1.6 Приложения Windows Forms
- •1.6.1 Графические элементы Windows Forms
- •1.6.1.1 Двухмерная векторная графика
- •1.6.1.2 Рисунки
- •1.6.1.3 Типографская разметка
- •1.6.2 Классы Windows Forms
- •1.7 Определение сортировки слиянием
- •1.8 Пример сортировки слиянием
- •1.9.1 Временя работы
- •1.9.2 Анализ времени работы сортировки слиянием через рекуррентное соотношение
- •1.10 Достоинства и недостатки сортировки слиянием
- •2 Проектный раздел
- •2.1 Постановка задачи
- •2.2 Алгоритм сортировки слиянием
- •3 Программный раздел
- •3.1 Архитектура программы
- •3.2 Описание структуры программы и её основных частей
- •3.3 Описание функций составных частей и связей между ними
- •Заключение
- •Список использованных источников
АННОТАЦИЯ
Настоящий документ содержит описание программы Tratata.cpp и предназначен для пользователей и программистов. Описывается функциональное назначение программы, ее разработка и порядок ее применения. Изложена логика работы, описаны составные. В данной курсовой работе рассмотрена сортировка слиянием, выполненная с помощью графических примитивов и приложений Windows Forms в программе Microsoft Visual Studio 2010 . Для рассматриваемой программы проведено изучение предметной области в соответствии с требованиями к данному программному продукту. Разработаны алгоритм и математическая постановка задачи для создания программы. Дана блок-схема алгоритма и результаты тестирования готовой программы.
В работе детально обоснован выбор языка программирования. Дана оценка эффективности программы. Рассматриваемые методы сортировок в силу своей простоты особенно хорошо подходят для изучения свойств большинства принципов сортировки, программы, основанные на данных методах легки для понимания и коротки (это также позволяет экономить память, занимаемую программой). Так же важно отметить, что хотя сложные алгоритмы требуют меньшего числа операций, но эти операции являются более сложными. Поэтому при относительно малом количестве сортируемых элементов простые методы сортировки работают достаточно быстро. В этой работе рассматривается сортировка слиянием (mergesort), которая является дополнением быстрой сортировки в том, что она состоит из двух рекурсивных вызовов с последующей процедурой слияния.
Курсовой проект выполнен на листах формата А4, содержит 32 рисунка и 1 приложение.
СОДЕРЖАНИ
АННОТАЦИЯ 2
Настоящий документ содержит описание программы Tratata.cpp и предназначен для пользователей и программистов. Описывается функциональное назначение программы, ее разработка и порядок ее применения. Изложена логика работы, описаны составные. В данной курсовой работе рассмотрена сортировка слиянием, выполненная с помощью графических примитивов и приложений Windows Forms в программе Microsoft Visual Studio 2010 . Для рассматриваемой программы проведено изучение предметной области в соответствии с требованиями к данному программному продукту. Разработаны алгоритм и математическая постановка задачи для создания программы. Дана блок-схема алгоритма и результаты тестирования готовой программы. 2
ВВЕДЕНИЕ 6
1 ТЕОРЕТИЧЕСКИЙ РАЗДЕЛ 9
1.1 Определение списка 9
1.2 Свойства списка 9
1.3 Виды списков 10
1.3.1 Линейный односвязный список 11
1.3.2 Кольцевой односвязный список 12
1.3.3 Линейный двусвязный список 12
1.3.4 Кольцевой двусвязный список 13
1.3.5 Многосвязные списки 14
1.4 Описание компилятора Microsoft Visual Studio 15
1.5 Visual Studio 2010 15
1.6 Приложения Windows Forms 15
1.6.1 Графические элементы Windows Forms 15
1.6.1.1 Двухмерная векторная графика 16
1.6.1.2 Рисунки 16
1.6.1.3 Типографская разметка 17
1.6.2 Классы Windows Forms 17
1.7 Определение сортировки слиянием 18
1.8 Пример сортировки слиянием 19
1.9.1 Временя работы 20
1.9.2 Анализ времени работы сортировки слиянием через рекуррентное соотношение 20
1.10 Достоинства и недостатки сортировки слиянием 21
2 ПРОЕКТНЫЙ РАЗДЕЛ 21
2.1 Постановка задачи 21
2.2 Алгоритм сортировки слиянием 22
3 ПРОГРАММНЫЙ РАЗДЕЛ 23
3.1 Архитектура программы 23
3.2 Описание структуры программы и её основных частей 24
3.3 Описание функций составных частей и связей между ними 25
3.5 Описание входных и выходных данных 33
4 ЭКСПЕРИМЕНТАЛЬНЫЙ РАЗДЕЛ 33
Тестирование 33
4.1 Тестирование А. 33
4.2 Тестирование Б. 34
ЗАКЛЮЧЕНИЕ 37
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 38
ПРИЛОЖЕНИЕ А 40
Листинг программы 40
А.1 Листинг Tratata.cpp 40
А.2 Листинг заголовочного файла Form1.h 40
ВВЕДЕНИЕ 5
ТЕОРЕТИЧЕСКИЙ РАЗДЕЛ 8
1.1 Определение списка 8
1.2 Свойства списка 8
1.3 Виды списков 9
1.3.1 Линейный односвязный список 10
1.3.2 Кольцевой односвязный список 11
1.3.3 Линейный двусвязный список 11
1.3.4 Кольцевой двусвязный список 12
1.3.5 Многосвязные списки 13
1.4 Описание компилятора Microsoft Visual Studio 14
1.5 Visual Studio 2010 14
1.6 Приложения Windows Forms 14
1.6.1 Графические элементы Windows Forms 15
1.6.1.1 Двухмерная векторная графика 15
1.6.1.2 Рисунки 16
1.6.1.3 Типографская разметка 16
1.6.2 Классы Windows Forms 16
1.7 Определение сортировки слиянием 18
1.8 Пример сортировки слиянием 18
1.9.1 Временя работы 19
1.9.2 Анализ времени работы сортировки слиянием через рекуррентное соотношение 19
1.10 Достоинства и недостатки сортировки слиянием 20
ПРОЕКТНЫЙ РАЗДЕЛ 21
2.1 Постановка задачи 21
2.2 Алгоритм сортировки слиянием 21
ПРОГРАММНЫЙ РАЗДЕЛ 23
3.1 Архитектура программы 23
3.2 Описание структуры программы и её основных частей 24
3.3 Описание функций составных частей и связей между ними 25
3.5 Описание входных и выходных данных 34
ЭКСПЕРИМЕНТАЛЬНЫЙ РАЗДЕЛ 35
Тестирование 35
4.1 Тестирование А. 35
4.2 Тестирование Б. 36
ЗАКЛЮЧЕНИЕ 40
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 41
ПРИЛОЖЕНИЕ А. Листинг программы 43
Введение
С помощью ЭВМ можно решать самые разные задачи, в том числе автоматически выполнять требуемую сортировку данных. Сортировка может требоваться в различных ситуациях, например когда нужно отобразить визуально распределение данных. Для различных данных существуют определенные методы сортировок повышающие производительность и скорость сортировки именно для этого типа данных.
Рассматриваемый в данной работе с метод сортировки является относительно простым, и хотя его эффективность ниже чем у более сложных и совершенных методов, но он так же имеет ряд преимуществ, и к тому же лежит в основе большинства других методов сортировки.
Целью курсового проекта является программная реализация сортировки слиянием с использованием списка с помощью приложений Windows Forms, а так же графических примитивов с помощью класса Graphics.
Для достижения поставленной цели необходимо выполнить следующие задачи:
детальное изучение предметной области поставленной задачи, расширенная постановка задачи;
изучение дополнительных средств языка С и С++, предназначенных для работы с графикой;
описание функционирования сортировки слияния с использованием списка;
разработка алгоритма;
программная реализация разработанных алгоритмов;
тестирование программы.
Расчетно-пояснительная записка состоит из введения, 4 разделов, заключения, списка использованных источников.
В первом разделе приведено описание предметной области. Во втором разделе приведена модель, по которой создавалась программа. В третьем приведены логические модели, блок схемы и фрагменты кода. Четвертом разделе происходит тестирование готовой программы.
Словесная постановка задачи
Написать программу на языке высокого уровня C, позволяющую сортировать элементы списка. В программе должны быть реализованы функции:
1) добавления элемента в список;
2) просмотр добавленных элементов;
3) сортировка слиянием списка;
Требования к программе:
текст программы должен сопровождаться комментариями;
в заголовке указать имя автора, группу, краткую формулировку задания – эта же информация должна выводиться на экран при запуске программы;
переменные должны иметь осмысленные имена, при этом желательно объявление переменной снабжать комментарием о ее назначении;
следует структурировать программу, разбивая ее на (относительно) независимые части;
длинные программы (свыше 200 строк) следует разбивать на несколько файлов, и создавать проект;
интерфейс программы должен быть достаточно удобен для пользователя: пользователю должна предоставлять возможность выбора действия (добавления элемента или вывода списка);
программа должна компилироваться без ошибок и предупреждений при всех включенных сообщениях компилятора;
исходные данные должны вводиться с клавиатуры или из файла;
реализовать графический интерфейс;
провести тестирование программы.