Добавлен: 29.03.2023
Просмотров: 197
Скачиваний: 4
ВВЕДЕНИЕ
В настоящее время существует большое количество языков программирования, которые включают в себя различные операции, направленные на решение определенных задач компьютерной системы. В рамках данной курсовой работы мы рассматриваем одну из структур выделения памяти под данные, которая называется динамическим способом. В первой части работы мы рассмотрим разновидности существующих динамических систем, однако более подробно остановимся на изучении бинарных деревьях.
В современном мире наблюдается процесс постоянного внедрения новейших информационных технологий, что обусловлено развитием общества и повышением качества жизни.
Системы, которые предназначены для хранения, поиска и обработки различного рода информации приобретают всё большее значение, повышается их роль и в технологической части построения эффективной организационной системы учреждений. Вместе с этим увеличивается конкуренция, появляется всё больше попыток взлома и несанкционированных проникновений к важной информации.
С каждым годом информации становится всё больше и больше, оптимизируются способы её хранения, быстрой передачи и различных видов использования.
Динамический способ позволяет отводить определенное количество памяти под выполнения той или иной операции. Выделяют два вида распределяемой памяти: статистической и динамической.
Применение динамических величин открывает перед программистами массу возможностей, что и характеризует актуальность выбранной темы:
- это позволяет увеличить объем памяти;
- позволяет освободить память для другой информации;
- создает структуры данных переменного размера.
Динамические структуры достаточно часто применяют для того, чтобы добиться более эффективной работы с различными данными, размер которых известен, особенно для решения задач сортировки, поскольку при упорядочивании динамических структур нет необходимости перестанавливать элементы, что сводится к изменению указателей на эти элементы.
В данной курсовой работе мы более подробно рассмотрели элемент динамической структуры данных, который называется бинарным деревом.
Объект данного исследования – бинарные деревья в динамических структурах данных.
Предмет исследования – динамические структуры данных в программировании.
Цель курсовой работы – изучить сущность и значение динамических структур данных, разобраться в таком виде динамических структур, как бинарные деревья.
Для достижения поставленной цели, необходимо решить следующие задачи:
- Определить понятие, сущность и необходимость построения динамических структур данных.
- Изучить существующую классификацию динамической структуры данных.
- Подробно рассмотреть структуру бинарных деревьев.
- Определить алгоритм реализации программ при работе с бинарными деревьями.
- Описать данные программы.
Работа состоит из двух разделов. Первый раздел включает теоретическое описание аспектов динамических структур данных и состоит из трех параграфов. Второй раздел содержит описание программ пи работе с бинарными деревьями и состоит из двух параграфов.
При написании данной курсовой работы мы использовали метод анализа научной литературы отечественных и, по большей части, зарубежных авторов, таких как: С.Н. Белоусова, Г.В. Ваныкина, В.П. Гергель, О.Л. Голицына, Р.С. Сикорд, В.И. Оседлов, А. Поляков, О.Е. Степаненко и другие.
При написании данной курсовой работы использовались следующие методы социологических исследований:
- теоретический анализ и синтез информации;
- аналогия и моделирование;
- изучение опыта программирования;
- анализ научной литературы.
1 ТЕОРЕТИЧЕСКИЕ АСПЕКТЫ ДИНАМИЧЕСКИХ СТРУКТУР ДАННЫХ: ДЕРЕВЬЯ
В современном мире наблюдается процесс постоянного внедрения новейших информационных технологий, что обусловлено развитием общества и повышением качества жизни.
Системы, которые предназначены для хранения, поиска и обработки различного рода информации приобретают всё большее значение, повышается их роль и в технологической части построения эффективной организационной системы учреждений. Вместе с этим увеличивается конкуренция, появляется всё больше попыток взлома и несанкционированных проникновений к важной информации.
С каждым годом информации становится всё больше и больше, оптимизируются способы её хранения, быстрой передачи и различных видов использования.
Многие организации имеют достаточно много конфиденциальной информации о сотрудниках, об организационных моментах предприятия, о продукции и так далее. Информацией владеет также и каждый человек, храня ее в своем смартфоне.
К сожалению, от угроз взлома не застрахован никто, так как каждый день появляются новые способы получения той или иной информации. Рассмотрим более подробно суть проблемы информационной безопасности и обозначим основные пути обеспечения её безопасности.
Любая сфера жизни может быть оцифрована информацией, изменение или потеря которой может привести к достаточно серьезным и зачастую неблагоприятным последствиям. Информация на сегодняшний день становится стратегическим ресурсом, в защите которой заинтересованы государство, бюджетные и частные компании, публичные личности и так далее. Риски, связанные с информационной безопасностью делятся на два вида, один из которых связан с внезапными стихийными бедствиями, сбоем в работе техники, устареванием программных обеспечений и так далее. Другой вид связан с человеческим фактором, связанным с умышленным намерением похитить или изменить информацию.
В силу технического прогресса, большие объемы информации на предприятии обрабатываются при помощи специальной вычислительной техники, а для более удобной и оперативной работы сотрудников организации, разрабатываются корпоративные сети.
Возникают проблемы защиты обрабатываемой информации, а также передаваемой в сети информации.
Для того чтобы предотвратить взлом или изменение информации, специалисты в области информационной безопасности должны постоянно мониторить и оценивать новости, касающиеся появлению новых способов атак на информационные системы. Они также должны уметь выделять новые угрозы, определять уровень их воздействия и находить способы минимизации или полного устранения проблемы.
Чтобы разработать политику безопасности предприятия, необходимо определить необходимые программные решения в области информационной безопасности.
Организация должны быть готова заранее к любым видам атак, обезопасив себя эффективными способами защиты.
В свою очередь, защита информации характеризует собой деятельность, направленную на устранение утечки защищаемой информации, несанкционированных и непреднамеренных попыток воздействия на защищаемую информацию.
Огромное количество задач, которые необходимо решить в системе программирования, требуют эффективной работы со статистическими переменными, которые создаются в момент определения и автоматически удаляются при выходе из программы, когда заканчивается область их действия.
Статистические переменные и структуры данных имеют определенный размер выделенной памяти.
Помимо этого, однако, существуют такие задачи, при которых использование структур данных фиксированного размера не допускаются, и требуют введения динамических структур, которые, в свою очередь, могут увеличиваться в размерах во время работы программы.
Об этом говорится в лекциях Стивена Прата, который подробно описывал особенности практического использования языка программирования[1].
Если до начала работы с данными невозможно понять, сколько именно памяти потребуется для их хранения, то память должна выделять по мере необходимости отдельными блоками, связанными друг с другом указателями. Динамическая структура может занимать несмежные участки оперативной памяти[2].
Язык С++ имеет средства, направленные на создание динамических структур данных, которые необходимы для образования во время работы объекты, выделять и освобождать в них память, когда это необходимо[3].
Итак, сформулируем определение динамических структур данных, которые представляют собой структурную организацию различной информации, при которой размер памяти, который был отведен под нее, не фиксируется.
Другими словами, объект данных обладает динамической структурой в том случае, когда его размер трансформируется в процессе реализации какой-либо программы или он потенциально бесконечен.
Динамические структуры данных в процессе существования в памяти могут изменять не только число составляющих их элементов, но и характер связей между этими элементами.
При этом, важно отметить, что не учитывается изменение содержимого самих элементов данных[4].
Такие особенности динамических структур, как непостоянство их размера и характера отношений между элементами, приводят к тому, что на этапе создания машинного кода программа-компилятор не может выделить для всей структуры в целом участок памяти фиксированного размера, а также не может сопоставить с отдельными компонентами структуры конкретные адреса.
Динамические структуры часто используются программистами для создания тех или иных программ, приложений и так далее, чтобы создать определенный объем памяти, необходимый для осуществления определенных функций.
В рамках данной курсовой работы мы рассматриваем динамические системы, как способы создания и управления памятью, так необходимой при работе с программами.
Несомненно, память является хоть и важнейшим компонентом создания программы. Для того, чтобы подробней разобраться в изучаемом объекте, определим ее основные характеристики. Каждой динамической структуре данных сопоставляется статическая переменная типа указатель (ее значение – адрес этого объекта), посредством которой осуществляется доступ к динамической структуре. Сами динамические величины не требуют описания в программе, поскольку во время компиляции память под них не выделяется. Во время компиляции память выделяется только под статические величины. Указатели – это статические величины, поэтому они требуют описания[5].
Выделим основные характеристики динамической структуры данных, которые мы изучили в процессе написания работы (рисунок 1):
Характеристики динамической структуры данных
Изменчивость взаимосвязи
Выделение памяти
Отсутствие имени
Размерность структуры может меняться
Возможность не фиксировать количество элементов структуры
Рисунок 1 - Характеристики динамической структуры данных
На рисунке 1, мы представили основные характеристики динамических структур данных, к которым можно отнести:
- отсутствие имени;
- выделение памяти в процессе осуществления программы;
- возможность не фиксировать количество элементов структуры;
- размерность структуры может меняться в процессе выполнения программы;
- может меняться характер взаимосвязи между элементами[6].
Рассмотрим ситуации, в которых необходимо использовать динамическую структуру данных (рисунок 2):
Ситуации использования динамической структуры данных
Когда размер данных, обрабатываемых в программе, превышает объем сегмента данных.
В процессе работы программы нужен массив, список или иная структура, размер которой изменяется в широких пределах и трудно предсказуем.
При использовании переменные, которые имеют довольно большой размер (например, массивы большой размерности), необходимые в одних частях программы и совершенно не нужные в других.
Рисунок 2 – Ситуации использования динамической структуры данных
На рисунке 2 данной курсовой работы представлены ситуации, при которых необходимо использовать динамические структуры данных.