Общие характеристики, классификация и особенности применения типов и структур данных

Содержание

Слайд 2

Структуры данных

Структуры данных

Составитель курса лекций:
Спиричева Наталия Рахматулловна,
ст. преподаватель каф. Информационных технологий

Структуры данных Структуры данных Составитель курса лекций: Спиричева Наталия Рахматулловна, ст. преподаватель каф. Информационных технологий

Слайд 3

Структуры данных

Общие характеристики, классификация и особенности применения типов и структур данных

Структуры данных Общие характеристики, классификация и особенности применения типов и структур данных

Слайд 4

Структуры данных

Цели изучения

Изучение основных характеристик алгоритма;
Знакомство классификацией структур данных.

Структуры данных Цели изучения Изучение основных характеристик алгоритма; Знакомство классификацией структур данных.

Слайд 5

Структуры данных

Основная литература

Вирт. Н Алгоритмы и структуры данных– Москва : ДМК-Пресс, 2010

Структуры данных Основная литература Вирт. Н Алгоритмы и структуры данных– Москва :
— 272 с.
Котов В.М. Алгоритмы и структуры данных. –Минск:БГУ,2011.-267с
Гагарина Л.Г. Алгоритмы и структуры данных. Москва: ИНФРА-М, 2009 – 304 с.
4. Т. Х. Кормен, Ч.И. Лейзерсон, Р.Л. Ривест, К. Штайн. Алгоритмы: построение и анализ. – Вильямс, 2006
Ахо А., Хопкрофт Д., Ульман Д. Структуры данных и алгоритмы. – Вильямс, 2000
Кнут Д. Искусство программирования для ЭВМ. (1978)

Слайд 6

Структуры данных

Содержание

Основные темы лекции:
Концепция структур данных и алгоритмов их обработки
Классификация структур данных
Операции

Структуры данных Содержание Основные темы лекции: Концепция структур данных и алгоритмов их
над структурами данных
Структурность данных и технология программирования

Слайд 7

Структуры данных

Тема 1: Концепция структур данных и алгоритмов их обработки

(Н. Вирт)

Алгоритм

+

Структуры данных

=

Программа

Структуры данных Тема 1: Концепция структур данных и алгоритмов их обработки (Н.

Слайд 8

Структуры данных

Концепция структур данных и алгоритмов их обработки

Структуры данных и алгоритмы служат

Структуры данных Концепция структур данных и алгоритмов их обработки Структуры данных и
теми материалами, из которых строятся программы. Более того, сам компьютер состоит из структур данных и алгоритмов.
Встроенные структуры данных представлены теми регистрами и словами памяти, где хранятся двоичные величины. Заложенные в конструкцию аппаратуры алгоритмы - это воплощенные в электронных логических цепях жесткие правила, по которым занесенные в память данные интерпретируются как команды, подлежащие исполнению.

Слайд 9

Структуры данных

Алгоритм – свод конечного числа правил, задающих последовательность выполнения операций при

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

Концепция структур данных и алгоритмов их обработки

Слайд 10

Структуры данных

Само по себе слово “алгоритм” (algorithm) очень интересно. Это слово

Структуры данных Само по себе слово “алгоритм” (algorithm) очень интересно. Это слово
еще не вошло в Webster’s New World Dictionary даже 1957 года издания. Там можно найти только старую форму “Algorism”, что означает правило выполнения арифметических действий с использованием арабских цифр. К средним векам сложились две враждующие партии среди приверженцев различных традиций счета. Абакисты считали на абаках – счетах, алгоритмики же использовали начатки математической символики. Происхождение слова algorism долгое время оставалось неясным.

Слайд 11

Структуры данных

algorism: от имени автора известного арабского учебника по математике –

Структуры данных algorism: от имени автора известного арабского учебника по математике –
Abu Ja’far Mohammed ibn Musa al-Khowarizmi (около 825 г.), означающего буквально “Отец Джафара, Магомет, сын Моисея, уроженец Ховаризма”. В настоящее время Ховаризм – город Хива. Вышеназванный уроженец Ховаризма написал знаменитую книгу “Kitab al jabr w’al-muqabala” (“Правила восстановления и преобразования”); заглавие этой книги дало начало другому слову – “алгебра”, хотя сама книга в действительности была не совсем алгебраической.

Слайд 12

Структуры данных

Постепенно форма и значение слова “algorism” исказились; как объясняет “Oxford English

Структуры данных Постепенно форма и значение слова “algorism” исказились; как объясняет “Oxford
Dictionary”, слово было “ошибочно видоизменено” в результате “укоренившейся путаницы” со словом arithmetic. Изменение algorism на algoritm нетрудно понять, если учесть, что истинное происхождение слова давно было забыто.

Слайд 13

Структуры данных

Алгоритм Евклида

К 1950 г. под словом алгоритм чаще всего подразумевали

Структуры данных Алгоритм Евклида К 1950 г. под словом алгоритм чаще всего
изложенный Евклидом процесс нахождения наибольшего общего делителя двух чисел (алгоритм Евклида).
Алгоритм Евклида
Даны два целых положительных числа m и n. Требуется найти их наибольший общий делитель, т.е. наибольшее положительное целое число, которое нацело делит как m, так и n.
Шаг 1. [Нахождение остатка.] Разделим m на n. Пусть остаток равен r. (Имеем 0<=rШаг 2. [Это нуль?] Если r=0, алгоритм кончается; n – искомое число.
Шаг 3. [Замена] Положите m<-n, n<-r и возвращайтесь к шагу 1.

Слайд 14

Структуры данных

Алгоритм имеет пять важнейших особенностей:
Конечность
Определенность
Ввод
Вывод
Эффективность

Структуры данных Алгоритм имеет пять важнейших особенностей: Конечность Определенность Ввод Вывод Эффективность

Слайд 15

Структуры данных

Конечность. Алгоритм должен заканчиваться после конечного числа шагов.
Определенность. Каждый шаг алгоритма

Структуры данных Конечность. Алгоритм должен заканчиваться после конечного числа шагов. Определенность. Каждый
должен быть точно определен. Действия, которые необходимо произвести, должны быть строго и недвусмысленно определены в каждом возможном случае.
Ввод. Алгоритм имеет некоторое (может быть, равное нулю) число входных данных, то есть величин, заданных ему до начала работы. Эти данные берутся из некоего конкретного множества объектов.

Слайд 16

Структуры данных

Вывод. Алгоритм имеет одну или несколько выходных величин, то есть величин,

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

Слайд 17

Структуры данных

На практике нам нужны хорошие алгоритмы.
Они определяются характеристиками:
число, указывающее, сколько раз

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

Слайд 18

Структуры данных

Структура данных относится, по существу, к "пространственным" понятиям: ее можно свести

Структуры данных Структура данных относится, по существу, к "пространственным" понятиям: ее можно
к схеме организации информации в памяти компьютера. Алгоритм же является соответствующим процедурным элементом в структуре программы - он служит рецептом расчета.

Слайд 19

Структуры данных

Тема 2: Классификация структур данных

Структуры данных Тема 2: Классификация структур данных

Слайд 20

Структуры данных

Понятие "ФИЗИЧЕСКАЯ структура данных" отражает способ физического представления данных в памяти

Структуры данных Понятие "ФИЗИЧЕСКАЯ структура данных" отражает способ физического представления данных в
машины и называется еще структурой хранения, внутренней структурой или структурой памяти.
Рассмотрение структуры данных без учета ее представления в машинной памяти называется абстрактной или ЛОГИЧЕСКОЙ структурой.

Слайд 21

Структуры данных

Различаются ПРОСТЫЕ (базовые, примитивные) структуры (типы) данных и ИНТЕГРИРОВАННЫЕ (структурированные, композитные,

Структуры данных Различаются ПРОСТЫЕ (базовые, примитивные) структуры (типы) данных и ИНТЕГРИРОВАННЫЕ (структурированные,
сложные).
Простыми называются такие структуры данных, которые не могут быть расчленены на составные части, большие, чем биты. С точки зрения физической структуры важным является то обстоятельство, что в данной машинной архитектуре, в данной системе программирования мы всегда можем заранее сказать, каков будет размер данного простого типа и какова структура его размещения в памяти. С логической точки зрения простые данные являются неделимыми единицами.
Интегрированными называются такие структуры данных, составными частями которых являются другие структуры данных - простые или в свою очередь интегрированные.

Слайд 22

Структуры данных

В зависимости от отсутствия или наличия явно заданных связей между элементами

Структуры данных В зависимости от отсутствия или наличия явно заданных связей между
данных следует различать НЕСВЯЗНЫЕ структуры (векторы, массивы, строки, стеки, очереди) и СВЯЗНЫЕ структуры (связные списки).
Весьма важный признак структуры данных - ее изменчивость - изменение числа элементов и (или) связей между элементами структуры. В определении изменчивости структуры не отражен факт изменения значений элементов данных, поскольку в этом случае все структуры данных имели бы свойство изменчивости. По признаку изменчивости различают структуры СТАТИЧЕСКИЕ, ПОЛУСТАТИЧЕСКИЕ, ДИНАМИЧЕСКИЕ.

Слайд 23

Структуры данных

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

Структуры данных Важный признак структуры данных - характер упорядоченности ее элементов. По
признаку структуры можно делить на ЛИНЕЙНЫЕ И НЕЛИНЕЙНЫЕ структуры.
В зависимости от характера взаимного расположения элементов в памяти линейные структуры можно разделить на структуры с ПОСЛЕДОВАТЕЛЬНЫМ распределением элементов в памяти (векторы, строки, массивы, стеки, очереди) и структуры с ПРОИЗВОЛЬНЫМ СВЯЗНЫМ распределением элементов в памяти (односвязные, двусвязные списки). Пример нелинейных структур - многосвязные списки, деревья, графы.

Слайд 24

Структуры данных

В языках программирования понятие "структуры данных" тесно связано с понятием

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

Слайд 25

Структуры данных

В большинстве случаев новые типы данных определяются с помощью ранее определенных

Структуры данных В большинстве случаев новые типы данных определяются с помощью ранее
типов данных. Значения, принадлежащие к такому типу, обычно представляют собой совокупности значений компонент, принадлежащих к определенным ранее типам компонент, такие составные значения называются структурированными. Если имеется только один тип компонент, т.е. все компоненты принадлежат одному типу, то он называется базовым.
Число различных значений, принадлежащих типу Т, называется кардинальным числом Т. Кардинальное число определяет размер памяти, нужной для размещения переменной x типа T. Этот факт обозначается так: x:T.

Слайд 26

Структуры данных

Структуры данных

Фундамен-тальные типы данных

Статичес-
кие структуры

Полуста-тические стуктуры

Динами-
ческие структуры

Файловые структуры

Объекты (Классы)

Числовые
Символьные
Логические
Перечисле-ние
Интервал
Указатели
Ссылка

Векторы
Массивы
Множества
Записи
Таблицы

Стеки
Очереди
Деки
Строки

Линейные
связные
Списки
Разветвлен-ные связные
списки
Графы
Деревья

Последовательные
Прямого доступа
Комбинированного

Структуры данных Структуры данных Фундамен-тальные типы данных Статичес- кие структуры Полуста-тические стуктуры
доступа
Организованные разделами

Слайд 27

Структуры данных

Данные

Элементарные
(простые)

Составные
(структуры)

Символ

Целое

Динамические

Статические

Массив

Запись

Множество

Дерево

Список

Структуры данных Данные Элементарные (простые) Составные (структуры) Символ Целое Динамические Статические Массив Запись Множество Дерево Список

Слайд 28

Структуры данных

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

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

Слайд 29

Структуры данных

Структуры данных можно реализовывать и в традиционных языках программирования, и в

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

Слайд 30

Структуры данных

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

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

Слайд 31

Структуры данных

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

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

Слайд 32

Структуры данных

Тип (сорт) — относительно устойчивая и независимая совокупность элементов, которую можно выделить во

Структуры данных Тип (сорт) — относительно устойчивая и независимая совокупность элементов, которую
всём рассматриваемом множестве (предметной области).
Математически тип может быть определён двумя способами:
Множеством всех значений, принадлежащим типу.
Предикатной функцией, определяющей принадлежность объекта к данному типу

Слайд 33

Структуры данных

Типы данных различаются начиная с нижних уровней системы. В Ассемблере х86

Структуры данных Типы данных различаются начиная с нижних уровней системы. В Ассемблере
различаются типы «целое число» и «вещественное число». Это объясняется тем, что для чисел рассматриваемых типов отводятся различные объёмы памяти, используются различные регистры микропроцессора, а для операций с ними применяются различные команды Ассемблера и различные ядра микропроцессора.
Концепция типа данных появилась в языках программирования высокого уровня как естественное отражение того факта, что обрабатываемые программой данные могут иметь различные множества допустимых значений, храниться в памяти компьютера различным образом, занимать различные объёмы памяти и обрабатываться с помощью различных команд процессора.

Слайд 34

Структуры данных

Как правило, типы в языках программирования не всегда строго соответствуют подобным

Структуры данных Как правило, типы в языках программирования не всегда строго соответствуют
типам в математике. Например, тип «целое число» большинства языков программирования не соответствует принятому в математике типу «целое число», так как в математике указанный тип не имеет ограничений ни сверху, ни снизу, а в языках программирования эти ограничения есть.

Слайд 35

Структуры данных

Теоретически не может существовать языков, в которых отсутствуют типы (включая полиморфные).

Структуры данных Теоретически не может существовать языков, в которых отсутствуют типы (включая
Это следует из того, что все языки основаны на машине Тьюринга или на лямбда-исчислении. И в том, и в другом случае необходимо оперировать как минимум одним типом данных — хранящимся на ленте (машина Тьюринга) или передаваемым и возвращаемым из функции (лямбда-исчисление).

Слайд 36

Структуры данных

Теоретически не может существовать языков, в которых отсутствуют типы. Это следует

Структуры данных Теоретически не может существовать языков, в которых отсутствуют типы. Это
из того, что все языки основаны на машине Тьюринга или на лямбда-исчислении. И в том, и в другом случае необходимо оперировать как минимум одним типом данных — хранящимся на ленте (машина Тьюринга) или передаваемым и возвращаемым из функции (лямбда-исчисление).

Языки без типов

Слайд 37

Структуры данных

Каждый язык программирования поддерживает один или несколько встроенных типов данных (базовых типов), кроме того,

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

Базовые типы

Слайд 38

Структуры данных

Надёжность. Типы данных защищают от трёх видов ошибок
Стандартизация. Благодаря соглашениям о

Структуры данных Надёжность. Типы данных защищают от трёх видов ошибок Стандартизация. Благодаря
типах, поддерживаемых большинством систем программирования, сложилась ситуация, когда программисты могут быстро менять свои рабочие инструменты, а программы не требуют больших переделок при переносе исходных текстов в другую среду.
Документация. Использование того или другого типа данных объясняет намерения программиста

Преимущества от использования типов данных

Слайд 39

Структуры данных

Можно приводить различные классификации типов данных, например, простые и составные типы,

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

Слайд 40

Структуры данных

Встроенные типы данных, т.е. типы, предопределенные в языке программирования или языке

Структуры данных Встроенные типы данных, т.е. типы, предопределенные в языке программирования или
баз данных.
«Уточняемый тип данных" - возможность определения типа на основе встроенного типа данных, значения которого упорядочены.
Перечисляемые типы данных - явно определяемые целые типы с конечным числом именованных значений.

Слайд 41

Структуры данных

Конструируемые типы (иногда их называют составными) обладают той особенностью, что в

Структуры данных Конструируемые типы (иногда их называют составными) обладают той особенностью, что
языке предопределены средства спецификации таких типов и некоторый набор операций, дающих возможность доступа к компонентам составных значений
Указательные типы дают возможность работы с типизированными множествами абстрактных адресов переменных, содержащих значения некоторого типа.
Типы, определяемыми пользователями

Слайд 42

Структуры данных

Перечислите особенности алгоритма?
Дайте определение структуры данных?
Какие существуют классификации структур данных?

Контрольные вопросы

Структуры данных Перечислите особенности алгоритма? Дайте определение структуры данных? Какие существуют классификации структур данных? Контрольные вопросы
Имя файла: Общие-характеристики,-классификация-и-особенности-применения-типов-и-структур-данных.pptx
Количество просмотров: 64
Количество скачиваний: 1