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

Курс лекций информатика

.pdf
Скачиваний:
68
Добавлен:
22.02.2015
Размер:
3.14 Mб
Скачать

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

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

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

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

142

Единицами информации в структурах хранения данных являются логические или физические записи в зависимости от того, в каком типе запоминающих устройств организуется хранение данных. На этом уровне учитывается тип ЭВМ и запоминающего устройства. Поддержание и виды допустимых структур хранения осуществляется программными средствами.

5.2.Структуры хранения данных в оперативной памяти

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

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

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

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

143

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

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

В то же время отношения между объектами часто носят нелинейный характер. Это могут быть отношения, определяемые логическими условиями, и отношения типа "один ко многим" или "многие ко многим". К нелинейным структурам принадлежат деревья, графы и списковые структуры.

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

Древовидная структура

Рис. 29

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

144

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

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

Структура графов

Рис. 30

Для отображения древовидных структур в памяти ЭВМ используются связные списки. Каждый элемент списка состоит из поля и одного или нескольких указателей. При этом поле описывает один из узлов дерева, а указатели описывают связи данного узла.

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

Пример списковой структуры

Рис. 31

где Di - данные. Чтобы получить доступ к данным, достаточно хранить в памяти адрес начала этого списка nach.

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

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

145

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

Двоичное дерево и его представление с помощью списочных структур памяти

Рис. 32

Где: а – двоичное дерево; б – представление дерева с помощью многосвязанного списка.

Пример группировки элементов данных

Шифр продукции Цена

Шифр продукции Наименование продукции

Шифр продукции

 

Наименование продукции

 

Цена

 

 

 

 

 

Рис. 33

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

5.3.Хранение данных на внешних носителях

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

146

запись, представляющая участок носителя, на котором размещается одна или несколько логических записей. Поименованная целостная совокупность однородной информации, записанная на внешнем носителе, называется файлом. Файл является единицей хранения информации на ВЗУ и той единицей информации, с которой производятся операции преобразования (например: добавление информации, корректировка и т.д.).

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

последовательные файлы;

прямые файлы;

индексно-последовательные файлы;

библиотечные файлы.

Для всех типов файлов возможны следующие варианты доступа:

последовательный;

произвольный.

При последовательном доступе (режиме обработки) записи файла передаются из ВЗУ в оперативную память в той последовательности, в которой они размещены на носителе.

Впроизвольном режиме записи передаются в ОП и в том порядке, в котором этого требует прикладная программа.

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

Примером последовательного файла являются текстовые файлы (ASCII-файлы). Они состоят из строк символов, причем каждая строка оканчивается двумя специальными символами "возврат каретки" (CR) и

147

"перевод строки" (LF). При редактировании и просмотре текстовых файлов эти специальные символы, как правило, не видны.

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

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

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

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

148

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

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

1.Какие уровни представления данных выделяют при описании предметной области?

2.Дайте определение логической записи и поля записи.

3.Раскройте особенности представления данных в ОЗУ и ВЗУ.

4.Приведите примеры линейных и нелинейных структур хранения данных.

5.Опишите типы файловых структур и особенности их организации.

149

Глава 6. Алгоритмизация и программирование

6.1.Алгоритмизация вычислительных процессов

6.1.1.Понятие алгоритма

Одним из важнейших понятий, на которых базируется применение ЭВМ для решения различного рода задач, является понятие алгоритма.

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

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

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

Название "алгоритм" произошло от латинской формы имени величайшего среднеазиатского математика Мухаммеда ибн Муса аль Хорезми (Alhorithmi), жившего в 783—850 гг. В своей книге "Об индийском счете" он изложил правила записи натуральных чисел с помощью арабских цифр и правила действий над ними "столбиком", знакомые теперь каждому школьнику. В XII веке эта книга была переведена на латынь и получила широкое распространение в Европе.

150

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

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

6.1.2. Свойства алгоритмов

Основные свойства алгоритмов следующие:

1.Понятность для исполнителя — исполнитель алгоритма должен понимать, как его выполнять. Иными словами, имея алгоритм и произвольный вариант исходных данных, исполнитель должен знать, как надо действовать для выполнения этого алгоритма.

2.Дискретность (прерывность, раздельность) — алгоритм должен представлять процесс решения задачи как последовательное выполнение простых (или ранее определенных) шагов (этапов).

3.Определенность — каждое правило алгоритма должно быть четким, однозначным и не оставлять места для произвола. Благодаря этому свойству выполнение алгоритма носит механический характер и не требует никаких дополнительных указаний или сведений о решаемой задаче.

4.Результативность (или конечность) состоит в том, что за конечное число шагов алгоритм либо должен приводить к решению задачи, либо после конечного числа шагов останавливаться из-за

невозможности получить решение с выдачей соответствующего

151