Файл: Динамические структуры данных. Бинарные деревья.pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 29.03.2023

Просмотров: 171

Скачиваний: 4

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

ВВЕДЕНИЕ

В настоящее время существует большое количество языков программирования, которые включают в себя различные операции, направленные на решение определенных задач компьютерной системы. В рамках данной курсовой работы мы рассматриваем одну из структур выделения памяти под данные, которая называется динамическим способом. В первой части работы мы рассмотрим разновидности существующих динамических систем, однако более подробно остановимся на изучении бинарных деревьях.

В современном мире наблюдается процесс постоянного внедрения новейших информационных технологий, что обусловлено развитием общества и повышением качества жизни.

Системы, которые предназначены для хранения, поиска и обработки различного рода информации приобретают всё большее значение, повышается их роль и в технологической части построения эффективной организационной системы учреждений. Вместе с этим увеличивается конкуренция, появляется всё больше попыток взлома и несанкционированных проникновений к важной информации.

С каждым годом информации становится всё больше и больше, оптимизируются способы её хранения, быстрой передачи и различных видов использования.

Динамический способ позволяет отводить определенное количество памяти под выполнения той или иной операции. Выделяют два вида распределяемой памяти: статистической и динамической.

Применение динамических величин открывает перед программистами массу возможностей, что и характеризует актуальность выбранной темы:

- это позволяет увеличить объем памяти;

- позволяет освободить память для другой информации;

- создает структуры данных переменного размера.

Динамические структуры достаточно часто применяют для того, чтобы добиться более эффективной работы с различными данными, размер которых известен, особенно для решения задач сортировки, поскольку при упорядочивании динамических структур нет необходимости перестанавливать элементы, что сводится к изменению указателей на эти элементы.

В данной курсовой работе мы более подробно рассмотрели элемент динамической структуры данных, который называется бинарным деревом.

Объект данного исследования – бинарные деревья в динамических структурах данных.

Предмет исследования – динамические структуры данных в программировании.

Цель курсовой работы – изучить сущность и значение динамических структур данных, разобраться в таком виде динамических структур, как бинарные деревья.


Для достижения поставленной цели, необходимо решить следующие задачи:

  1. Определить понятие, сущность и необходимость построения динамических структур данных.
  2. Изучить существующую классификацию динамической структуры данных.
  3. Подробно рассмотреть структуру бинарных деревьев.
  4. Определить алгоритм реализации программ при работе с бинарными деревьями.
  5. Описать данные программы.

Работа состоит из двух разделов. Первый раздел включает теоретическое описание аспектов динамических структур данных и состоит из трех параграфов. Второй раздел содержит описание программ пи работе с бинарными деревьями и состоит из двух параграфов.

При написании данной курсовой работы мы использовали метод анализа научной литературы отечественных и, по большей части, зарубежных авторов, таких как: С.Н. Белоусова, Г.В. Ваныкина, В.П. Гергель, О.Л. Голицына, Р.С. Сикорд, В.И. Оседлов, А. Поляков, О.Е. Степаненко и другие.

При написании данной курсовой работы использовались следующие методы социологических исследований:

  • теоретический анализ и синтез информации;
  • аналогия и моделирование;
  • изучение опыта программирования;
  • анализ научной литературы.

1 ТЕОРЕТИЧЕСКИЕ АСПЕКТЫ ДИНАМИЧЕСКИХ СТРУКТУР ДАННЫХ: ДЕРЕВЬЯ

    1. Понятие, сущность и необходимость динамических структур данных

В современном мире наблюдается процесс постоянного внедрения новейших информационных технологий, что обусловлено развитием общества и повышением качества жизни.

Системы, которые предназначены для хранения, поиска и обработки различного рода информации приобретают всё большее значение, повышается их роль и в технологической части построения эффективной организационной системы учреждений. Вместе с этим увеличивается конкуренция, появляется всё больше попыток взлома и несанкционированных проникновений к важной информации.

С каждым годом информации становится всё больше и больше, оптимизируются способы её хранения, быстрой передачи и различных видов использования.


Многие организации имеют достаточно много конфиденциальной информации о сотрудниках, об организационных моментах предприятия, о продукции и так далее. Информацией владеет также и каждый человек, храня ее в своем смартфоне.

К сожалению, от угроз взлома не застрахован никто, так как каждый день появляются новые способы получения той или иной информации. Рассмотрим более подробно суть проблемы информационной безопасности и обозначим основные пути обеспечения её безопасности.

Любая сфера жизни может быть оцифрована информацией, изменение или потеря которой может привести к достаточно серьезным и зачастую неблагоприятным последствиям. Информация на сегодняшний день становится стратегическим ресурсом, в защите которой заинтересованы государство, бюджетные и частные компании, публичные личности и так далее. Риски, связанные с информационной безопасностью делятся на два вида, один из которых связан с внезапными стихийными бедствиями, сбоем в работе техники, устареванием программных обеспечений и так далее. Другой вид связан с человеческим фактором, связанным с умышленным намерением похитить или изменить информацию.

В силу технического прогресса, большие объемы информации на предприятии обрабатываются при помощи специальной вычислительной техники, а для более удобной и оперативной работы сотрудников организации, разрабатываются корпоративные сети.

Возникают проблемы защиты обрабатываемой информации, а также передаваемой в сети информации.

Для того чтобы предотвратить взлом или изменение информации, специалисты в области информационной безопасности должны постоянно мониторить и оценивать новости, касающиеся появлению новых способов атак на информационные системы. Они также должны уметь выделять новые угрозы, определять уровень их воздействия и находить способы минимизации или полного устранения проблемы.

Чтобы разработать политику безопасности предприятия, необходимо определить необходимые программные решения в области информационной безопасности.

Организация должны быть готова заранее к любым видам атак, обезопасив себя эффективными способами защиты.

В свою очередь, защита информации характеризует собой деятельность, направленную на устранение утечки защищаемой информации, несанкционированных и непреднамеренных попыток воздействия на защищаемую информацию.

Огромное количество задач, которые необходимо решить в системе программирования, требуют эффективной работы со статистическими переменными, которые создаются в момент определения и автоматически удаляются при выходе из программы, когда заканчивается область их действия.


Статистические переменные и структуры данных имеют определенный размер выделенной памяти.

Помимо этого, однако, существуют такие задачи, при которых использование структур данных фиксированного размера не допускаются, и требуют введения динамических структур, которые, в свою очередь, могут увеличиваться в размерах во время работы программы.

Об этом говорится в лекциях Стивена Прата, который подробно описывал особенности практического использования языка программирования[1].

Если до начала работы с данными невозможно понять, сколько именно памяти потребуется для их хранения, то память должна выделять по мере необходимости отдельными блоками, связанными друг с другом указателями. Динамическая структура может занимать несмежные участки оперативной памяти[2].

Язык С++ имеет средства, направленные на создание динамических структур данных, которые необходимы для образования во время работы объекты, выделять и освобождать в них память, когда это необходимо[3].

Итак, сформулируем определение динамических структур данных, которые представляют собой структурную организацию различной информации, при которой размер памяти, который был отведен под нее, не фиксируется.

Другими словами, объект данных обладает динамической структурой в том случае, когда его размер трансформируется в процессе реализации какой-либо программы или он потенциально бесконечен.

Динамические структуры данных в процессе существования в памяти могут изменять не только число составляющих их элементов, но и характер связей между этими элементами.

При этом, важно отметить, что не учитывается изменение содержимого самих элементов данных[4].

Такие особенности динамических структур, как непостоянство их размера и характера отношений между элементами, приводят к тому, что на этапе создания машинного кода программа-компилятор не может выделить для всей структуры в целом участок памяти фиксированного размера, а также не может сопоставить с отдельными компонентами структуры конкретные адреса.

Динамические структуры часто используются программистами для создания тех или иных программ, приложений и так далее, чтобы создать определенный объем памяти, необходимый для осуществления определенных функций.

В рамках данной курсовой работы мы рассматриваем динамические системы, как способы создания и управления памятью, так необходимой при работе с программами.


Несомненно, память является хоть и важнейшим компонентом создания программы. Для того, чтобы подробней разобраться в изучаемом объекте, определим ее основные характеристики. Каждой динамической структуре данных сопоставляется статическая переменная типа указатель (ее значение – адрес этого объекта), посредством которой осуществляется доступ к динамической структуре. Сами динамические величины не требуют описания в программе, поскольку во время компиляции память под них не выделяется. Во время компиляции память выделяется только под статические величины. Указатели – это статические величины, поэтому они требуют описания[5].

Выделим основные характеристики динамической структуры данных, которые мы изучили в процессе написания работы (рисунок 1):

Характеристики динамической структуры данных

Изменчивость взаимосвязи

Выделение памяти

Отсутствие имени

Размерность структуры может меняться

Возможность не фиксировать количество элементов структуры

Рисунок 1 - Характеристики динамической структуры данных

На рисунке 1, мы представили основные характеристики динамических структур данных, к которым можно отнести:

- отсутствие имени;

- выделение памяти в процессе осуществления программы;

- возможность не фиксировать количество элементов структуры;

- размерность структуры может меняться в процессе выполнения программы;

- может меняться характер взаимосвязи между элементами[6].

Рассмотрим ситуации, в которых необходимо использовать динамическую структуру данных (рисунок 2):

Ситуации использования динамической структуры данных

Когда размер данных, обрабатываемых в программе, превышает объем сегмента данных.

В процессе работы программы нужен массив, список или иная структура, размер которой изменяется в широких пределах и трудно предсказуем.

При использовании переменные, которые имеют довольно большой размер (например, массивы большой размерности), необходимые в одних частях программы и совершенно не нужные в других.

Рисунок 2 – Ситуации использования динамической структуры данных

На рисунке 2 данной курсовой работы представлены ситуации, при которых необходимо использовать динамические структуры данных.