Методичка курсовой
.pdfМИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ
Коломенский институт (филиал)
федерального государственного автономного образовательного учреждения высшего образования
«Московский политехнический университет»
Актуализировано в составе основной профессиональной образовательной программы высшего образования – программы бакалавриата по направлению подготовки 27.03.04 Управление в технических системах решением Ученого совета
Коломенского института (филиала) Московского политехнического университета (Протокол № 4 от «07» июля 2023 г.)
Методические рекомендации по курсовому проекту по учебной дисциплине
«Структуры и алгоритмы обработки данных»
Основная профессиональная образовательная программа высшего образования — программа бакалавриата по направлению подготовки 27.03.04 Управление в технических системах
Профиль «Управление и информатика в технических системах»
Направление подготовки 27.03.04 Управление в технических системах
Нормативный срок освоения программы - 4 года
Ежегодно актуализируется и утверждается в составе основной профессиональной образовательной программы высшего образования — программы бакалавриата по направлению подготовки 27.03.04 Управление в технических системах на заседании Ученого совета института
Коломна
Оглавление |
|
Цель выполнения курсового проекта ................................................................... |
3 |
Введение................................................................................................................... |
3 |
Методические указания .......................................................................................... |
3 |
Темы курсовых проектов........................................................................................ |
4 |
Пример выполнения курсового проекта ............................................................... |
7 |
Список литературы ............................................................................................... |
31 |
2
Цель выполнения курсового проекта
Целью является отработка практических навыков самостоятельной разработки и отладки программ, использующих сложные структуры данных и
алгоритмы их обработки. Тематика курсовой работы включает в себя разработку программ с развитым пользовательским интерфейсом в графическом режиме, работу с файлами, обработку числовых и текстовых данных. При создании программ необходимо использовать способы представления данных таких как массивы, динамические списки, древовидные иерархические структуры, хеш-таблицы, структуры данных для представления
графов.
Введение
Настоящее методическое пособие по курсу «Структуры и алгоритмы обработки данных» предназначено для студентов, обучающихся по
направлениям «Управление в технических системах», «Информатика и вычислительная техника», выполняющих курсовой проект на ПК с использованием визуальной среды программирования Delphi.
Данную разработку следует рассматривать как органическое продолжение и дополнение методических указаний к лабораторным работам,
При выполнении курсовой работы студенты должны уметь применить теоретические знания и практические навыки, полученные при изучении дисциплин: «Программирование и основы алгоритмизации», «Информатика», «Высшая математика». Студенты должны освоить на практике программную реализацию сложных структур данных и алгоритмов их обработки, включая
весь цикл работ предметной области: от математической постановки задачи до анализа полученных результатов, включая оформление работы в соответствии с требованиями.
Работая в своих задачах с конкретными алгоритмами, исследуя их области применения, сходимость, оценивая точность получаемых результатов, студенты приобретают навыки исследовательской работы, необходимые при разработке и решении задач прикладного программирования.
Методические указания
Каждый студент, выполняющий курсовой проект, должен решить одну сложную, состоящую из 2-3 менее сложных, задач. При этом необходимо
написать и отладить в Delphi многооконное приложение, содержащее несколько модулей. Один из них является динамической библиотекой, содержащей отлаженные предварительно подпрограммы реализации алгоритмов обработки сложных структур данных в соответствии с вариантом задания. Главный модуль должен выполнять управляющую роль по отношению к остальным модулям в проекте, иметь интуитивный пользовательский интерфейс.
3
Оформление задачи должно включать написание ее условия, общую структурную блок-схему алгоритма всего приложения с необходимыми комментариями, подробные блок-схемы для каждого модуля, реализующего
конкретный алгоритм, распечатку программы, тестирующей этот метод, обоснование выбора тестовых данных с результатами тестирования (распечатка форм с исходными тестовыми данными и полученными для них результатами); затем необходимо приложить общую распечатку программы всего приложения с распечатками всех форм с исходными, промежуточными и результирующими данными для контрольного примера своего варианта. Общая структурная блок-
схема алгоритма должна иметь подробное описание, которое объясняет организацию проекта, связи между модулями и делает прозрачным весь процесс вычислений, организованный в работе. К блок-схеме для каждого
алгоритма необходимо приложить описание метода, реализованного в нем. Все программные модули должны содержать подробные комментарии, улучшающие читаемость программы. Необходимо создать удобный, в соответствии с требованиями Windows, интерфейс для управления всем приложением, дать подробное описание этого интерфейса, а также разработать справку для пользователя, в которой должна быть отражена структура проекта и должны быть даны указания пользователю по работе с проектом.
Номер варианта задания назначается преподавателем. Курсовой проект оформляется на стандартных листах формата А4 с использованием текстового процессора Word. Форма титульного листа приведена в приложении 1.
Выполнение отлаженной программы студент демонстрирует на ЭВМ, после чего защищает работу преподавателю. Оценивается работа по пяти-бальной
системе.
Темы курсовых проектов
1.Создать программный модуль, содержащий описание динамической библиотеки, обладающей следующими подпрограммами:
– организация структуры данных типа стек;
– создание стека, уничтожение стека, добавление элемента, исключение элемента, определение текущего числа элементов в стеке, очистка стека.
Написать программу, иллюстрирующую работу с данной библиотекой.
2.Создать программный модуль, содержащий описание динамической библиотеки, обладающей следующими подпрограммами:
– организация структуры данных типа очередь;
– создание очереди, уничтожение очереди, добавление элемента, исключение элемента, определение текущего числа элементов в очереди, очистка очереди.
Написать программу, иллюстрирующую работу с данной библиотекой.
3.Создать программный модуль, содержащий описание динамической библиотеки, обладающей следующими подпрограммами:
– организация структуры данных типа дек
4
– создание дека, уничтожение дека, добавление элемента, исключение элемента, определение текущего числа элементов в деке, очистка дека.
Написать программу, иллюстрирующую работу с данной библиотекой.
4.Создать программный модуль, содержащий описание динамической библиотеки, обладающей следующими подпрограммами:
– организация структуры данных типа кольцевая очередь;
– создание кольцевой очереди, уничтожение очереди, добавление элемента, исключение элемента, определение текущего числа элементов в кольцевой очереди, очистка очереди.
Написать программу, иллюстрирующую работу с данной библиотекой.
5.Создать программный модуль, содержащий описание динамической библиотеки, обладающей следующими подпрограммами:
– организовать структуру данных типа строка (с представлением строки
переменной длины со счётчиком) ;
– функции создания строки, уничтожения строки, присваивания строки, определения длины строки, конкатенацию (слияние) строк, поиска вхождения подстроки в строке.
Написать программу, иллюстрирующую работу с организованной динамической библиотекой.
6.Создать программный модуль, содержащий описание динамической библиотеки, обладающей следующими подпрограммами:
– организовать структуру данных типа строка (с представлением строки переменной длины с признаком конца) ;
– функции создания строки, уничтожения строки, присваивания строки, определения длины строки, конкатенацию (слияние) строк, поиска вхождения подстроки в строке.
Написать программу, иллюстрирующую работу с организованной динамической библиотекой.
7.Создать программный модуль, содержащий описание динамической библиотеки, обладающей следующими подпрограммами:
– организация структуры данных типа двусвязный линейный список;
– функции создания списка, уничтожения списка, доступа к элементу списка, обновления элемента списка, вставки элемента в список, удаления элемента из списка, сортировки элементов, поиска вхождения элемента.
Написать программу, иллюстрирующую работу с организованной динамической библиотекой.
8.Сравнить эффективность алгоритмов сортировки – шейкерной и сортировки вставками. Для этого подсчитать среднее число сравнений (по 30 реализациям, со случайным расположением элементов), необходимое для сортировки n элементов тем и другим алгоритмом. Организовать библиотеку,
содержащую подпрограммы для реализации функциональности поставленной задачи
9.Сравнить эффективность алгоритмов сортировки – пузырьковой и сортировки прямым выбором. Для этого подсчитать среднее число сравнений (по 100 реализациям, со случайным расположением элементов), необходимое
5
для сортировки n элементов тем и другим алгоритмом. Организовать
библиотеку, содержащую подпрограммы для реализации функциональности поставленной задачи
10. Сравнить эффективность алгоритмов сортировки – сортировки
вставками и сортировки выбором. Для этого подсчитать среднее число сравнений (по 100 реализациям, со случайным расположением элементов), необходимое для сортировки n элементов тем и другим алгоритмом.
Организовать библиотеку, содержащую подпрограммы для реализации функциональности поставленной задачи
11. Сравнить эффективность алгоритмов поиска – последовательного и
бинарного. Для этого подсчитать среднее число сравнений (по 100 реализациям, с упорядоченным расположением элементов), необходимое для поиска вхождения случайного элемента тем и другим алгоритмом. Организовать библиотеку, содержащую подпрограммы для реализации функциональности поставленной задачи
12 Создать программный модуль, содержащий описание динамической библиотеки, обладающей следующими подпрограммами:
–организация иерархической структуры данных : бинарное дерево поиска(БД);
–создание БД, поиск и вставка элемента в БД, удаления элемента из БД, обход дерева тремя стандартными способами.
Написать программу, иллюстрирующую работу с организованной динамической библиотекой.
13.Создать программный модуль, содержащий описание динамической библиотеки, обладающей следующими подпрограммами:
– организация иерархической структуры данных :сбалансированное бинарное дерево (АВЛ);
– создание АВЛ-дерева, поиск и вставка элемента в АВЛ-дерево с грамотной балансировкой, удаления элемента из АВЛ-дерева, обход дерева
тремя стандартными способами.
Написать программу, иллюстрирующую работу с организованной динамической библиотекой.
14.Создать программный модуль, содержащий описание динамической библиотеки, обладающей следующими подпрограммами:
– организация иерархической структуры данных :сильноветвящееся дерево (Б-дерево);
– создание Б-дерева, поиск и вставка элемента в Б-дерево с возможностью расщепления страниц, удаления элемента из Б-дерева с возможным слиянием страниц,
Написать программу, иллюстрирующую работу с организованной динамической библиотекой.
15.Создать программный модуль, содержащий описание динамической библиотеки, обладающей следующими подпрограммами:
– организация хеш-таблицы с разрешением коллизий методом внешних цепочек;
6
– создание хеш-таблицы с использованием хеш-функции универсального хеширования, поиск и вставка элемента в хеш-таблицу, удаления элемента из хеш-таблицы.
Написать программу, иллюстрирующую работу с организованной динамической библиотекой.
16.Создать программный модуль, содержащий описание динамической библиотеки, обладающей следующими подпрограммами:
– организация хеш-таблицы методом двойного хеширования
– создание хеш-таблицы с использованием хеш-функции универсального хеширования, поиск и вставка элемента в хеш-таблицу, удаления элемента из хеш-таблицы,
Написать программу, иллюстрирующую работу с организованной динамической библиотекой.
17.Создать программный модуль, содержащий описание динамической библиотеки, со следующими подпрограммами:
– организация структуры данных для представления ориентированного взвешенного графа
– поиск каркаса минимального веса алгоритмом Прима, обход графа поиском в ширину, построение дерева поиска в ширину.
Написать программу, иллюстрирующую работу с организованной динамической библиотекой
18.Создать программный модуль, содержащий описание динамической библиотеки, со следующими подпрограммами:
– организация структуры данных для представления ориентированного взвешенного графа
– поиск каркаса минимального веса алгоритмом Крускала, обход графа поиском в глубину, построение и сохранение каркаса поиском в глубину.
Написать программу, иллюстрирующую работу с организованной динамической библиотекой
19.Создать программный модуль, содержащий описание динамической библиотеки, со следующими подпрограммами:
– организация структуры данных для представления ориентированного взвешенного графа
– поиск каркаса минимального веса, поиск кратчайшего пути в графе
алгоритмом Дейкстры.
Написать программу, иллюстрирующую работу с организованной динамической библиотекой.
Пример выполнения курсового проекта
1 Постановка задачи
Осуществить исследование прямых методов сортировки: - метод прямого выбора;
7
-метод прямой вставки;
-метод прямого обмена.
Исследование осуществить, используя массивы упорядоченных и неупорядоченных чисел по 10,100,1000 и 10000 элементов.
2 Краткая теория
При обработке данных важно знать и информационное поле данных, и размещение их в машине.
Различают внутреннюю и внешнюю сортировки:
-внутренняя сортировка - сортировка в оперативной памяти;
-внешняя сортировка - сортировка во внешней памяти.
Сортировка - это расположение данных в памяти в регулярном виде по их
ключам. Регулярность рассматривают как возрастание (убывание) значения ключа от начала к концу в массиве.
Если сортируемые записи занимают большой объем памяти, то их перемещение требует больших затрат. Для того, чтобы их уменьшить, сортировку производят в таблице адресов ключей, делают перестановку указателей, т.е. сам массив не перемещается. Это метод сортировки таблицы адресов.
При сортировке могут встретиться одинаковые ключи. В этом случае при сортировке желательно расположить после сортировки одинаковые ключи в том же порядке, что и в исходном файле. Это устойчивая сортировка.
Эффективность сортировки можно рассматривать с нескольких критериев:
-время, затрачиваемое на сортировку;
-объем оперативной памяти, требуемой для сортировки;
-время, затраченное программистом на написание программы.
Выделяем первый критерий. Можно подсчитать количество сравнений при выполнении сортировки или количество перемещений.
Пусть Н = 0,01n2 + 10n - число сравнений. Если n < 1000, то второе слагаемое
больше, если n > 1000, то больше первое слагаемое.
Т. е. при малых n порядок сравнения будет равен n2, при больших n порядок сравнения - n.
8
Порядок сравнения при сортировке лежит в пределах от 0 (n log n) до 0 (n2); 0 (n) - идеальный случай.
Различают следующие методы сортировки:
-базовые методы;
-улучшенные методы. Базовые методы:
1)метод прямого включения;
2)метод прямого выбора;
3)метод прямого обмена.
Количество перемещений в этих трех методах примерно одинаково.
2.1 Сортировка методом прямого включения
Неформальный алгоритм
for i = 2 to n
x = a(i)
находим место среди а(1)…а(i) для включения х
next i
Программа на Паскале:
for i := 2 to n do begin
x := a[i]; a[0] = x;
for j := i - 1 downto 1 do
if x < a[j] then a[j + 1] := a[j] else a[j + 1] := x;
end;
Эффективность алгоритма:
Количество сравнений в худшем случае будет равно (n - 1)(n - 1).
2.2 Сортировка методом прямого выбора
9
Рассматриваем весь ряд массива и выбираем элемент, меньший или больший элемента а(i), определяем его место в массиве - k, и затем меняем местами
элемент а(i) и элемент а(k). Программа на Паскале:
for i := 1 to n - 1 do begin
x := a[i]; k := i;
for j := i + 1 to n do if x > a[j] then begin
k := j;
x := a[k]; end;
a[k] := a[i]; a[i] := x; end;
Эффективность алгоритма:
Число сравнений М = .
Число перемещений Cmin = 3(n - 1), Cmax = 3(n - 1) (порядок n2).
В худшем случае сортировка прямым выбором дает порядок n2, как и для числа
сравнений, так и для числа перемещений.
2.3 Сортировка с помощью прямого обмена (пузырьковая)
Идея: n - 1 раз проходят массив снизу вверх. При этом ключи попарно
сравниваются. Если нижний ключ в паре меньше верхнего, то их меняют местами.
Программа на Паскале:
for i := 2 to n do
for j := n downto i do
10