Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
AlgStr / Библиотека / ЛЕКЦИИ / Понятие о данных.DOC
Скачиваний:
32
Добавлен:
23.03.2015
Размер:
88.58 Кб
Скачать

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

Отношение 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) u f2(k)

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

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

1)f(k)=k mod m;

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, Concurrent Pascal, CLU, Hephard, Modula);

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • форма(Alphard);

  • модуль(Modulo);

  • пакет(Ada);

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

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

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

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

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

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

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

В языке CLU:

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

rep

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

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

end;

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

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

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

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

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

Свойства CLU:

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

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

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

  • защита.