Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
AlgStr / Библиотека / ЛЕКЦИИ / POSIBNIK / СТРУКТУРИ ТА ОРГАНИЗАЦИЯ ДАНИХ В ЕОМ.doc
Скачиваний:
45
Добавлен:
23.03.2015
Размер:
222.72 Кб
Скачать

Информация и данные. Понятие о структурах данных. Информационная модель объекта

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

Элементами информационной модели являются атрибуты, описываю­щие соответствующие свойства объекта. Каждому атрибуту соответст­вует множество допустимых значений. Конкретному, выделенному экземпляру объекта соответствует экземпляр модели, где каждому ат­рибуту присвоено определенное значение.

Атрибутом является логически неделимый элемент информации об объекте, который может быть связан с другими элементами, связи между атрибутами задаются связями между свойствами объекта.

Большинство атрибутов изменяется с течением времени, т.е. как правило, необходимо учитывать динамический характер моделей. По отношению к внешней среде объекта атрибуты можно разделить на входные, внутренние и выходные. Вектор (X) входных атрибутов включает те атрибуты, через которые внешняя среда влияет на объект. Вектор (С) внутренних, собственных атрибутов определяет конфигура­цию объекта в текущей момент времени. Вектор (У) выходных атрибу­тов определяет те атрибуты, через которые объект воздействует на внешнюю среду. Алгоритмом решения задачи является некоторый опера­тор А, преобразующий входные и внутренние атрибуты в выходные.

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

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

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

Данными называется изображение информации, т.е. описание сос­тояния носителя. Для превращения информации в данные и наоборот необходим язык преобразования сообщения в состояние носителя и наоборот. Алфавит такого языка состоит из набора знаков (литер), которые могут быть отображены на состояние носителя (при этом для различных носителей система, отображений может быть различной). Ин­формационное сообщение изображается в виде последовательности (стро­ки) символов на логическом уровне, а изображение информации с описа­нием состояний носителя осуществляется ни физической уровне данных. И на логическом и на физическом уровне мы оперируем абстрактными понятиями данных. На логическом уровне нас не интересует метод пре­образования символов на физическую память, а на физическом уровне нас не интересует реализация битов , управление устройством и многие другие вопросы. Знак обычно не связывается со смыслом, т.е. он представляет собой конструкцию данных, а не информации. Исключением являются знаки-цифры, несущие определенную информацию при своем появлении. Единице информации (атрибуту) соответствуем не­которое "слово" ( подстрока символов), называемое обычно элементом данных. Таким образом, информационная модель отображается на совокупность взаимосвязанных элементов данных, объединенных в ло­гическую запись. При этом каждой логической записи соответству­ет свой экземпляр объекта, набору объектов соответствует файл.

Рассмотрим случай дискретного носителя, т.е. когда носитель состоит из конечного множества элементов, способных находиться в одном из ( к ) устойчивых состояний. Будем считать, что каждое состояние обеспечивается стандартным физическим устройством. По­следовательность из ( n ) таких элементов представляет собой среду, способную находиться в устойчивых состояний. Хо­тя с ростом ( к ) растет диапазон представляемых кодов, но растет и сложность системы.

Количество стандартных устройств определяет­ся по формуле Q(k)=k[lnN/lnK].

Функция Q(k) воз­растает при к≥3 . Надежность системы P(k)=(1-q)Q где:

q- вероятность сбоя в одном устройстве, будет максимальной при минимальном Q .

Считая стоимость системы равной S=a*Q(k) мы находим, что надежная система будет при этих предположениях и системой с минимальной стоимостью. Легко проверить, что Q(k) будет наименьшим при к=3 , однако сложность реализации троич­ных элементов привела к использованию двоичных элементов. При этом основным элементом, среды является двоичный разряд (бит). Последовательность разрядов объединяется в группу изображения (ко­дирования) знака (символа). Последовательность групп разрядов объединяется в поле для записи элемента данных, т.е. поле является элементарной, основной конструкцией - понятием данных на физи­ческом уровне. Поля объединяются в физические записи, содержащие данные логических записей. При отображении логической единицы на физическую появляется понятие проекции или отображения символов языка данных на группу двоичных разрядов. Наиболее распространен­ным случаем является использование групп одинаковой длины незави­симо от изображенного символа. Длина такой группы зависит от ко­личества символов в алфавите. Примеры систем:

М2- в которой для каждого символа отводится 6 разрядов ;

ГОСТ 13052-67 - для каждого символа используется 7 бит;

ДКОИ - для каждого символа используется 8 бит.

Таким образом, при решении задачи приходится рассматривать три области - область реального мира, область информации и область данных. В первой области основным элементом является объект с вы­деленным множеством взаимосвязанных свойств. Объект является ло­гическим понятием, с которым связаны понятия «экземпляр объекта» и «набор экземпляров объектов».

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

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

Отношение 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).

28