- •Лекции по
- •(Те что я нашел)
- •Информация и данные.
- •Анализ программ, не содержащих ветвлений
- •Если p{ а }q и q{ b }r, то выполняется p{ a;b }r.
- •Проектирование цикла с помощью инварианта Задача 1. Найти сумму величин 1/iот 1 до тех пор, пока она не станет больше некоторого наперед заданного числаa.
- •Будем искать решение нашей задачи в виде цикла, имеющего следующий вид:
- •Линейные структуры данных.
- •Операции над линейной структурой данных
- •Виды линейных структур данных.
- •4)Стек на базе массива
- •Тема: Анализ создаваемых абстракций
- •Полнота
- •Аназиз типов данных
- •Операции egual, similar и copy
- •Функция абстракции
- •Функция абстракции есть
Лекции по
„Структурам данных”
(Те что я нашел)
Нарисовал
ст.гр. ПЗ-ХХХ
Толстый (Н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, где Sii
Сообщение разбивается на слова, при этом каждое слово изображает атрибут информации или является наименьшим неделимым элементом информации.
Строку S называют логическим уровнем представления данных.
Элемент данных - это наименьшая неделимая конструкция данных.
Атрибут - наименьший неделимый элемент информации.
Физический уровень представления данных - это изображение данных в виде устойчивого состояния конкретной среды ( носителя ).
1. объект 2. атрибут 3. 4.
оологическая физическая
о о о о запись запись
о о о о
Материальный Информационная Область Область
мир модель предмет- логических физических
ной области данных данных
Объекты обладают свойствами (бесконечными). Нас могут интересовать конкретные свойства. По свойствам объекта прогнозируется его дальнейшее поведение.
Предметная область группа объектов с набором определенных свойств, при этом определены законы их взаимодействия с точки зрения решения какой-либо задачи.
Каждый объект представляется экземпляром модели . Каждое свойство преобразуется в атрибут информационной модели - неделимый элемент информации. Определяется связь атрибутов друг с другом и представляется она, как правило, в виде записи на языке математики.
3. Определяется представление атрибутов:
экземпляр модели логическая запись
атрибут элемент логических данных
логические записи логические файлы
4. Логическая запись физическая запись
логический набор данных физический набор данных
данные база данных
С точки зрения воздействия внешней среды все объекты делятся на виды:
входные атрибуты X : с их помощью среда воздействует на объект и он выдает выходные атрибуты;
выходные атрибуты Y;
внутренние атрибуты C .
Ключевой атрибут - атрибут однозначно идентифицирующий объект в совокупности.
Операции информационной модели :
объединение;
разность;
вхождение.
Элементы множества могут вступать друг с другом в отношения.
А1 А2 А3 ... Аn - определяет множество всевозможных атрибутов
Понятие о структурах данных
Отношение B - некоторое подмножество декартового произведения
C = A1 A2 ... An, выделяемое некоторыми оператором, условием, функцией.
B = F ( A1, A2, ..., An )
Отношения бывают унарные, бинарные, тернарные, …, n-арные.
Свойства бинарных отношений:
рефлексивность;
симметричность;
транзитивность.
Операции: объединение; пересечение; вхождение; поиск; добавление; исключение.
Ключ - особая характеристика записи, позволяющая однозначно идентифицировать всю запись. Ключи бывают простые и составные. Если ключ состоит из одного элемента, то это простой. Ключи вводят на множестве записей определенного отношения.
Метод доступа к элементам совокупности определяет порядок обработки элементов совокупности. Есть прямой (элемент совокупности обрабатывается независимо от другого) и последовательный (у каждого элемента есть последующий и предыдущий) методы доступа.
Способ адресации элементов совокупности определяет стратегию взаимного расположения элементов в памяти или называется организация совокупности.
Структура данных - это организованная совокупность данных, решающая задачи адресации и доступа к элементам данных. Структуры данных бывают статические (меняются только значения элементов данных) и динамические (меняются связи, данные, расположенные в памяти).
Операции над структурами данных:
создание, формирование образа структуры данных в памяти;
определение значения элемента данных (селекция);
корректировка, добавление, замена, исключение;
обработка структуры данных, выборка элементов структуры в некотором заданном порядке и выполнение над ними нужного алгоритма;
уничтожение, освобождение памяти и разрыв связей
Задача поиска: по заданному поисковому значению Ко требуется определить подмножество элемента структуры, для которого значение элемента данных удовлетворяет критерию поиска.
Критерии поиска:
а) поиск по совпадению { i / ki = ko };
б) поиск ближайшего { i / /ki - ko/ - min }
если ki = - - поиск наименьшего
в) интервальный поиск { i / k1< ki < k2 }
г) поиск по условию { i / f (ko, ki) = 0 }
Результатом поиска является информация о месте нахождения искомого элемента.
Процесс перехода от предметной области к информа-ционной модели называется изучением предметной области. Итог процесса изучения - это постановка задачи.
Переход от модели к области логических данных называется проектированием. Итог проектирования - проект структуры.
Алгоритмический язык описывает структуру данных и алгоритмы их обработки.
Язык программирования описывает представление данных и программы их обработки. Этот процесс охватывает проект и реализацию. Итог - готовая программа с документа-цией, описывающей реализацию.
Каждая структура данных ( СД) характеризуется набором операций, которые с ней можно выполнять (поведение СД) и стратегией размещения элементов структуры в памяти (представление СД). Поэтому каждая структура данных имеет:
а) внешнее описание, т.е. описание свойств структуры и описание набора операций;
б) внутреннее представление, т.е. реализацию операций, описание стратегии взаиморасположения.
Важно, чтобы внутреннее представление соответствовало внешнему описанию.
Классификация структуры данных:
последовательная структура данных, при этом адресация и доступ последовательны
а) длины элементов одинаковы;
б) длины элементов различны: используется метод разделителей
вычисляемый доступ;
вычисляемый доступ с вынесенным дискриптором: все длины собирают отдельно от самих элементов;
базированный метод доступа: хранятся не просто длины, а наполненные длины;
координатный прямой доступ: в качестве элементов в дискрипторе хранятся абсолютные адреса.
Понятие о данных.
Данные – это изображение информации.
Информация – это активная, а данные – это пассивная. С каждым языком представления данных связан язык интерпретации, преобразование из данных в информацию.
Язык представления интерпретации данных имеет алфавит 1,2...n.
Информация поступает в виде сообщения, где символ языка есть символ из этого алфавита S=S1S2...Sn, где Sn=.
Сообщение состоит из слов, и говорят, что каждое слово изображает атрибут информации и является наименьшим неопределенным атрибутом информации. Строку S наз. логическим уровнем представления данных.
Si хранилось в виде кода i т.е. в виде одного из устойчивых состояний. Физический уровень представления данных – это изображение данных в виде устойчивого состояния определенной среды или носителя.
Предметная область – это группа объектов с определенными свойствами, законами их взаимодействия, но только те которые существенны с точки зрения решаемой задачи. Язык информации модели, как правило, это язык математики.
Обзор основных структур данных.
Каждая СД характеризуется:
набором операций (поведением);
стратегия размещения элементов СД в памяти (представлением);
СД имеет:
внешнее описание; т.е. описание свойств структуры и описание набора операций;
внутренние представление; т.е. реализацию операций, описание стратегии взаиморасположения;
Классификация СД:
Последовательные СД (адресация последовательная, доступ последовательный ).
а) длины элементов одинаковы;
Aдрес ai=A+(i-1)*l;
б) длины элементов различны;
в) вычисляемый доступ;
Адрес ai=A+ lj
г) вычисляемый доступ с вынесенным дескриптором;
l1,l2,...ln; a1,a2,...an;
д) базированный метод доступа;
0, l1, l1+l2, bj ...
е) координатный прямой доступ;
Массив (адресация последовательная, доступ вычисления по индексам).
а)одномерный массив(вектор);
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
Определение: массив это набор однотипных элементов, занимающих непрерывный участок памяти и доступ к элементам которого осуществляется вычисляемой по индексам.
Реализация массивов в ЯВУ(язык высокого уровня) различны:
Статические массивы(Паскаль, Фортран); размерность определяется во время
компиляции и не может быть изменена при выполнении;
Массивы с регулируемой размерностью(Алгол-60); размерность можно вычислить,
но это возможно только во внутреннем блоке;
Массивы с подвижными границами(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т.е. в виде одного из устойчивых состояний. Физический уровень представления данных – это изображение данных в виде устойчивого состояния определенной среды или носителя.
Предметная область – это группа объектов с определенными свойствами, законами их взаимодействия, но только те которые существенны с точки зрения решаемой задачи. Язык информации модели, как правило, это язык математики.
Обзор основных структур данных.
Каждая СД характеризуется:
набором операций(поведения);
стратегия размещения элементов СД в памяти(представления);
СД имеет:
внешнее описание; т.е. описание свойств структуры и описание набора операций;
внутренние представление; т.е. реализацию операций, описание стратегии взаиморасположения;
Классификация СД:
Последовательные СД(адресация последовательная, доступ последовательный ).
а)длины элементов одинаковы;
Aдресai=A+(i-1)*l;
б)длины элементов различны;
в)вычисляемый доступ;
Адрес ai=A+lj
г)вычисляемый доступ с вынесенным дескриптором;
l1,l2,...ln;a1,a2,...an;
д)базированный метод доступа;
0, l1,l1+l2,bj ...
е)координатный прямой доступ;
Массив(адресация последовательная, доступ вычисления по индексам).
а)одномерный массив(вектор);
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
Определение:массив это набор однотипных элементов, занимающих непрерывный участок памяти и доступ к элементам которого осуществляется вычисляемой по индексам.
Реализация массивов в ЯВУ(язык высокого уровня) различны:
Статические массивы(Паскаль, Фортран); размерность определяется во время
компиляции и не может быть изменена при выполнении;
Массивы с регулируемой размерностью(Алгол-60); размерность можно вычислить,
но это возможно только во внутреннем блоке;
Массивы с подвижными границами(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)Средства структурирования данных;
(Алгол-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:
группировка операций в тип поведения;
фиксация уровней абстракции;
независимость от представления;
защита
Логические спецификации
(или введение в верификацию программ)
Верификация программы предполагает анализ ее текста. Это отличает верификацию от тестирования, при котором всегда производятся наблюдения за вычислениями. В процессе верификации мы анализируем текст программы и делаем выводы по поводу описываемого набора вычислений (но никогда не создаем этот набор или его часть, хотя часто ссылаемся на этот набор для подтверждения правильности наших рассуждений).