Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Методичка курсовой

.pdf
Скачиваний:
0
Добавлен:
10.06.2024
Размер:
806.79 Кб
Скачать

МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ

Коломенский институт (филиал)

федерального государственного автономного образовательного учреждения высшего образования

«Московский политехнический университет»

Актуализировано в составе основной профессиональной образовательной программы высшего образования – программы бакалавриата по направлению подготовки 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