Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
39
Добавлен:
23.03.2015
Размер:
1.05 Mб
Скачать

2

Понятие о данных

Лекции по

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

(Те что я нашел)

Нарисовал

ст.гр. ПЗ-ХХХ

Толстый (Н431)

‡aLe†™k©@Hg®‡

г. Дніпр

2006-01-03

Информация и данные.

Понятие об информации. Измерение информации

Информацию нужно накапливать, хранить, извлекать.

Передатчик канал связи Приемник

Технические характеристики канала связи определяются объемом информации в секунду.

Байт - наименьшая адресуемая единица емкости памяти.

[ log 2 N ] + 1 - объем памяти, в которую можно записать данное число, где N - количество вариантов исхода

16-UNICODE - можно закодировать любые символы любых алфавитов

Количество информации - мера снижения неопределенности.

Энтропия - мера неопределенности сообщения:

H ( C ) = P1 log2 P1 + P2 log2 P2 + ... + PN log2 PN

Pi < 1, то все логарифмы отрицательны и тогда энтропия всегда отрицательна.

P1 - вероятность события С1

P2 - вероятность события С2

C = { C1, C2, ..., CN }

Способы кодирования информации

Кодирование информации - это запись информации определенным способом.

Источник Кодиро-

информации сообщение на входе вание сигналы на входе

Передатчик Приемник

канал связи сигнал на входе

Декодиро- Потребитель осмысление

вание сообщение на выходе информации на выходе

Теорема

Количество информации будет максимальным в том случае, если все исходы будут равновероятны.

Понятие о данных

Данные - это изображение информации. Информация активна, данные пассивны. С каждым языком данных связан язык интерпретации данных, позволяющий извлекать из данных информацию.

Язык интерпретации имеет алфавит: m

Информация поступает в виде сообщения: S = S1 S2 ...Sn, где Sii

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

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

Элемент данных - это наименьшая неделимая конструкция данных.

Атрибут - наименьший неделимый элемент информации.

Физический уровень представления данных - это изображение данных в виде устойчивого состояния конкретной среды ( носителя ).

1. объект 2. атрибут 3. 4.

оологическая физическая

о о о о запись запись

о о о о

Материальный Информационная Область Область

мир модель предмет- логических физических

ной области данных данных

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

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

  1. Каждый объект представляется экземпляром модели . Каждое свойство преобразуется в атрибут информационной модели - неделимый элемент информации. Определяется связь атрибутов друг с другом и представляется она, как правило, в виде записи на языке математики.

3. Определяется представление атрибутов:

экземпляр модели логическая запись

атрибут элемент логических данных

логические записи логические файлы

4. Логическая запись физическая запись

логический набор данных физический набор данных

данные база данных

С точки зрения воздействия внешней среды все объекты делятся на виды:

  • входные атрибуты X : с их помощью среда воздействует на объект и он выдает выходные атрибуты;

  • выходные атрибуты Y;

  • внутренние атрибуты C .

Ключевой атрибут - атрибут однозначно идентифицирующий объект в совокупности.

Операции информационной модели :

  1. объединение;

  2. разность;

  3. вхождение.

Элементы множества могут вступать друг с другом в отношения.

А1 А2 А3 ... Аn - определяет множество всевозможных атрибутов

Понятие о структурах данных

Отношение B - некоторое подмножество декартового произведения

C = A1 A2 ... An, выделяемое некоторыми оператором, условием, функцией.

B = F ( A1, A2, ..., An )

Отношения бывают унарные, бинарные, тернарные, …, n-арные.

Свойства бинарных отношений:

  1. рефлексивность;

  2. симметричность;

  3. транзитивность.

Операции: объединение; пересечение; вхождение; поиск; добавление; исключение.

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

Метод доступа к элементам совокупности определяет порядок обработки элементов совокупности. Есть прямой (элемент совокупности обрабатывается независимо от другого) и последовательный (у каждого элемента есть последующий и предыдущий) методы доступа.

Способ адресации элементов совокупности определяет стратегию взаимного расположения элементов в памяти или называется организация совокупности.

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

Операции над структурами данных:

  1. создание, формирование образа структуры данных в памяти;

  2. определение значения элемента данных (селекция);

  3. корректировка, добавление, замена, исключение;

  4. обработка структуры данных, выборка элементов структуры в некотором заданном порядке и выполнение над ними нужного алгоритма;

  5. уничтожение, освобождение памяти и разрыв связей

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

Критерии поиска:

а) поиск по совпадению { i / ki = ko };

б) поиск ближайшего { i / /ki - ko/ - min }

если ki = - - поиск наименьшего

в) интервальный поиск { i / k1< ki < k2 }

г) поиск по условию { i / f (ko, ki) = 0 }

Результатом поиска является информация о месте нахождения искомого элемента.

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

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

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

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

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

а) внешнее описание, т.е. описание свойств структуры и описание набора операций;

б) внутреннее представление, т.е. реализацию операций, описание стратегии взаиморасположения.

Важно, чтобы внутреннее представление соответствовало внешнему описанию.

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

  1. последовательная структура данных, при этом адресация и доступ последовательны

а) длины элементов одинаковы;

б) длины элементов различны: используется метод разделителей

  1. вычисляемый доступ;

  2. вычисляемый доступ с вынесенным дискриптором: все длины собирают отдельно от самих элементов;

  3. базированный метод доступа: хранятся не просто длины, а наполненные длины;

  4. координатный прямой доступ: в качестве элементов в дискрипторе хранятся абсолютные адреса.

Понятие о данных.

Данные – это изображение информации.

Информация – это активная, а данные – это пассивная. С каждым языком представления данных связан язык интерпретации, преобразование из данных в информацию.

Язык представления интерпретации данных имеет алфавит 1,2...n.

Информация поступает в виде сообщения, где символ языка есть символ из этого алфавита S=S1S2...Sn, где Sn=.

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

Si хранилось в виде кода i т.е. в виде одного из устойчивых состояний. Физический уровень представления данных – это изображение данных в виде устойчивого состояния определенной среды или носителя.

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

Обзор основных структур данных.

Каждая СД характеризуется:

  • набором операций (поведением);

  • стратегия размещения элементов СД в памяти (представлением);

СД имеет:

  • внешнее описание; т.е. описание свойств структуры и описание набора операций;

  • внутренние представление; т.е. реализацию операций, описание стратегии взаиморасположения;

Классификация СД:

  1. Последовательные СД (адресация последовательная, доступ последовательный ).

а) длины элементов одинаковы;

Aдрес ai=A+(i-1)*l;

б) длины элементов различны;

в) вычисляемый доступ;

Адрес ai=A+ lj

г) вычисляемый доступ с вынесенным дескриптором;

l1,l2,...ln; a1,a2,...an;

д) базированный метод доступа;

0, l1, l1+l2,  bj ...

е) координатный прямой доступ;

  1. Массив (адресация последовательная, доступ вычисления по индексам).

а)одномерный массив(вектор);

ai=A+(i-1)*l

б)двумерный массив (матрица);

а11 ... а1n

А= ............... (n*m)

An1 ... ann

1) Расположение в памяти по строкам;

A: an,...,a1m,a21,...,an1,an,...,amn

Aij=A+(i-1)m*l+(j-1)l=A+((i-1)m+(j-1))*l=A+(k-1)l

K=(i-1)m+j – приведенный индекс – это порядковый номер элемента относительно

начала массива.

2)Расположение по столбцам(Фортран);

K=(j-1)n+i – приведенный индекс;

в)трехмерный массив;

aijk

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

Реализация массивов в ЯВУ(язык высокого уровня) различны:

  1. Статические массивы(Паскаль, Фортран); размерность определяется во время

компиляции и не может быть изменена при выполнении;

  1. Массивы с регулируемой размерностью(Алгол-60); размерность можно вычислить,

но это возможно только во внутреннем блоке;

  1. Массивы с подвижными границами(CLU, Алгол-68); размерность измеряется

динамически с помощью операций: add, addl – удлинить; remh, reml - укоротить.

3)Списки – структура с последовательной обработкой и произвольным размещением.

(адресация произвольная, доступ -последовательный);

Списки бывают:

  • однонаправленные;

  • двунаправленные;

  • кольцевые(одно- и двух- направленные);

  • многоуровневые;

4)Таблицы(адресация произвольная, доступ –по ключу.

A=F(k); k-ключ; функция хемирования(расстановки, рантолизации );

а)открытая адресация(линейное апробирование);

двойное хемирование:

f1(k) u f2(k)

f(k), f(k)+1, ... n, 0, 1, ... f(k);

б)метод цепочек:

1)f(k)=k mod m;

2)метод усечения;

Свойства функции хемирования;

  • быстрое вычисление;

  • минимизированное число композиций;

5)Дерево(доступ на основе выбора функции пути, адресация произвольная ).

У дерева есть корень и листья.

корень

листья

6)Сеть – это любой произвольный граф. (доступ на основе выбора функции пути, адресация произвольная).

Понятие о данных.

Данные – это изображение информации.

Информация – это активная, а данные – это пассивная. С каждым языком представления данных связан язык интерпретации, преобразование из данных в информацию.

Язык представления интерпретации данных имеет алфавит 1,2...n.

Информация поступает в виде сообщения, где символ языка есть символ из этого алфавита S=S1S2...Sn, гдеSn=.

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

Siхранилось в виде кодаiт.е. в виде одного из устойчивых состояний. Физический уровень представления данных – это изображение данных в виде устойчивого состояния определенной среды или носителя.

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

Обзор основных структур данных.

Каждая СД характеризуется:

  • набором операций(поведения);

  • стратегия размещения элементов СД в памяти(представления);

СД имеет:

  • внешнее описание; т.е. описание свойств структуры и описание набора операций;

  • внутренние представление; т.е. реализацию операций, описание стратегии взаиморасположения;

Классификация СД:

  1. Последовательные СД(адресация последовательная, доступ последовательный ).

а)длины элементов одинаковы;

Aдресai=A+(i-1)*l;

б)длины элементов различны;

в)вычисляемый доступ;

Адрес ai=A+lj

г)вычисляемый доступ с вынесенным дескриптором;

l1,l2,...ln;a1,a2,...an;

д)базированный метод доступа;

0, l1,l1+l2,bj ...

е)координатный прямой доступ;

  1. Массив(адресация последовательная, доступ вычисления по индексам).

а)одномерный массив(вектор);

ai=A+(i-1)*l

б)двумерный массив (матрица);

а11... а1n

А= ............... (n*m)

An1 ...ann

1) Расположение в памяти по строкам;

A: an,...,a1m,a21,...,an1,an,...,amn

Aij=A+(i-1)m*l+(j-1)l=A+((i-1)m+(j-1))*l=A+(k-1)l

K=(i-1)m+j– приведенный индекс – это порядковый номер элемента относительно

начала массива.

2)Расположение по столбцам(Фортран);

K=(j-1)n+i– приведенный индекс;

в)трехмерный массив;

aijk

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

Реализация массивов в ЯВУ(язык высокого уровня) различны:

  1. Статические массивы(Паскаль, Фортран); размерность определяется во время

компиляции и не может быть изменена при выполнении;

  1. Массивы с регулируемой размерностью(Алгол-60); размерность можно вычислить,

но это возможно только во внутреннем блоке;

  1. Массивы с подвижными границами(CLU, Алгол-68); размерность измеряется

динамически с помощью операций: add,addl– удлинить;remh,reml- укоротить.

3)Списки –структура с последовательной обработкой и произвольным размещением.

(адресация произвольная, доступ -последовательный);

Списки бывают:

  • однонаправленные;

  • двунаправленные;

  • кольцевые(одно- и двух- направленные);

  • многоуровневые;

4)Таблицы(адресация произвольная, доступ –по ключу.

A=F(k);k-ключ; функция хемирования(расстановки, рантолизации );

а)открытая адресация(линейное апробирование);

двойное хемирование:

f1(k)uf2(k)

f(k),f(k)+1, ...n, 0, 1, ...f(k);

б)метод цепочек:

1)f(k)=kmodm;

2)метод усечения;

Свойства функции хемирования;

  • быстрое вычисление;

  • минимизированное число композиций;

5)Дерево(доступ на основе выбора функции пути, адресация произвольная ).

У дерева есть корень и листья.

корень

листья

6)Сеть– это любой произвольный граф. (доступ на основе выбора функции пути, адресация произвольная).

Понятие о типе данных.

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

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

Контроль типов должен обеспечит надежность программ.

Тип данных определяется по существу двумя свойствами:

  • поведением объекта, рассматриваемого типа;

  • структурным описанием, определяет представление объектов этого типа;

  • (не обязательно) множество объектов рассматриваемого типа;

Под типом объекта понимается:

  • само множество объектов;

  • существенные свойства, т.е. представление объектов этого множества;

  • набор операций обеспечивающий доступ к объектам и позволяющий использовать их свойства;

Тип – это не объект, а атрибут; или может быть объектом, существующим в период компиляции. Такой подход дает нам преимущества:

  • напоминает, что представление типов данных (в период компиляции) извлеченное из спецификации этого типа имеет решающее значение для эффективности (в период компиляции) контроля типов;

  • дает основу для классификации механизмов типов данных в ЯВУ.

Концепция типов данных в языке Паскаль.

Тип определяется тройкой:

  • множество допустимых значений;

  • набор операций;

  • внутреннее представление;

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

  • описание переменных;

  • взятие значений и присваивание;

  • сравнение значений;

  • обозначение констант;

  • выбор компонент(для структурированных типов):

Организация данных в Паскале основана на теории структурной организации данных Хоара:

  1. Тип определяется как класс значений, могут принимать переменные или выражения;

  2. Каждое значение принадлежит только одному типу;

  3. Тип значения, константы, переменной, выражения можно ввести либо из контекста, либо из вида самого операнда;

  4. Каждой операции соответствует некоторый фиксированный тип ее операндов и результат;

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

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

Классы операций воспринимаемых в Паскале:

  • неявные приведения;

  • приведение типа выражения;

  • приведение типа переменных;

Классификация средств определения данных в ЯВУ.

1)Средства структурирования данных;

(Алгол-60, Фортран);

а)существует набор встроенных типов данных:

  • integer;

  • real;

  • boolean;

  • characted;

б)средства структурирования:

  • array;

  • record;

  • union;

  • pointer;

2)Средства определения типов(Паскаль, Алгол-68); можно связать со структурой данных некоторое имя.

Type

Int Array = array[1..100] of integer;

Var

A,B:integer;

Два объекта считаются эквивалентными в языке Паскаль:

  • если описаны в одном операторе var;

  • если описаны одним идентификатором типа;

3)Абстрактные типы данных(АТД).

АТД – это, по существу, определение нового понятия в виде класса (одного или более) объектов с некоторыми свойствами и операциями. АТД предусматривает инкапсуляцию.

4)Средства ООП.

Симула 67 – язык программирования.

ООП – это методология программирования, основана на представлении программы в виде совокупности объектов, каждый из которых является реализацией некоторого класса, а классы образуют иерархию на принципах наследуемости.

Структурные единицы:

  • объекты;

  • каждый объект является реализацией некоторого класса;

  • классы организованы иерархически;

Поколение языков программирования.

Первое поколение ЯП: массивы, записи – не имели средств определения новых типов данных (Алгол-60, Фортран);

Второе поколение ЯП: появились средства определения новых типов данных, но не было средств связанных абстрактных типов (Алгол-68, Пасколь);

Третье поколение ЯП: связано с появлением АТД (Симула-67, ConcurrentPascal,CLU,Hephard,Modula);

Четвертое поколение ЯП: появились ООП языки (С++, ObjectPascal).

Абстракция и декомпозиция.

Процесс разделения сложного на части, которые более простые, наз. декомпозицией.

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

Декомпозиция задачи предполагает разбиение задачи на подзадачи, причем:

  • каждая задача имеет один и тот же уровень рассмотрения;

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

  • полученные решения могут быть объединены вместе и позволят решить исходную задачу.

Абстракция представляет собой эффективный метод декомпозиции, осуществляемый посредством изменения списка декомпозиции.

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

Абстрактные типы данных (АТД).

Абстрактные данные=<объекты, операции>

Новая языковая конструкция:

  • класс(Симула 67);

  • кластер(CLU);

  • форма(Alphard);

  • модуль(Modulo);

  • пакет(Ada);

В памяти АТД в наиболее развитой форме входят следующие 4 части (Alphard):

  • внешность определяемого типа (имя, операции, функции и т.д.);

  • абстрактное описание операций и объектов, с которыми работает определенный тип на языке спецификации;

  • конкретное описание тех же объектов и операций средствами языка второго поколения;

  • описание связей между 2 и 3;

Инкапсуляция – это упрятывание.

Тип данных называется инкапсулированным, если предусмотрена защита; тип данных наз. абстрактным, если предусмотрено абстрактное описание; тип данных наз. пакетированным, если предусмотрено средство определения объектов и операций в одной языковой конструкции.

В языке CLU:

<Имя определяемого типа>=Clusteris<Список операций>

rep

<конкретное описание представления объектов определяемого типа>

<<конкретное описание операций определяемого типа>>

end;

Cluster– это средство абстракции т.к.:

  • новое понятие вводится через набор операций;

  • внешнюю по отношению к Clusterпрограмму можно считать абстрактной программой, оперирующей с абстрактными объектами, с помощью операций кластеров;

  • абстрактная программа не зависит от представления;

  • защита представления класса;

Свойства CLU:

  • группировка операций в тип поведения;

  • фиксация уровней абстракции;

  • независимость от представления;

  • защита

Логические спецификации

(или введение в верификацию программ)

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

Соседние файлы в папке POSIBNIK