- •5.1. Организация данных и управление ими.
- •5.1.1 Данные и их обработка
- •5.1.2. Простые (неструктурированные) типы данных
- •5.1.3. Структурированные типы данных
- •5.1.3.1. Массивы
- •5.1.3.2. Записи
- •5.1.3.3. Множества
- •5.1.3.4. Очередь
- •5.1.3.5. Стек
- •5.1.3.6. Иерархическая организация данных
- •5.2. Понятие «файл» и «файловая система».
- •5.2.1. Определения
- •5.2.2. Структура файла
- •5.3. Структура файловой системы. Файловое дерево.
- •5.3.1. Состав файловой системы
- •5.3.2. Задачи файловой системы
- •5.3.3. Классификация файловых систем
- •5.3.4. Файловое дерево.
- •5.3.5. Файловая система fat
- •5.3.6. Файловая система ntfs
- •5.3.7. Сравнение fat и ntfs
- •5.4. Создание файлов, типизация файлов. Управление версиями файлов. Защита файлов.
- •5.4.1. Атрибуты файлов
- •5.4.2. Операции над файлами
- •5.4.3. Защита файлов
- •5.4.4. Типы файлов – имена и расширения
- •5.5. Сжатие информации.
- •5.5.1 Определения
- •5.5.2. Объекты сжатия
- •5.5.3. Обратимость сжатия
- •5.5.4. Алгоритмы сжатия данных без потери информации
- •5.5.4.1. Алгоритм rle
- •5.5.4.2. Алгоритм kwe
- •5.5.4.3. Алгоритм Хаффмана
- •5.5.4.4. Алгоритм Лемпеля-Зива (lz77, lzw, lzh)
- •5.5.4.5. Алгори́тм Ле́мпеля — Зи́ва — Ве́лча (lzw)
- •5.5.4.6. Свойства алгоритмов сжатия
- •5.5.4.7. Синтетические алгоритмы
- •5.5.5. Алгоритмы сжатия данных с потерей информации
- •5.5.5.1. Сжатие изображений
- •5.5.5.2. Формат gif
- •5.5.5.3. Формат jpeg
- •5.5.5.4. Другие методы сжатия
- •5.5.5.5. Сжатие звука
5.1.3.1. Массивы
Самым традиционным и широко известным из структурированных типов данных является массив (иначе называемый регулярным типом) - однородная упорядоченная статическая структура прямого доступа.
Массивом называют однородный набор величин одного и того же типа, называемых компонентами массива, объединенных одним общим именем (идентификатором) и идентифицируемых (адресуемых) вычисляемым индексом. Это определение подчеркивает, что все однотипные компоненты массива имеют одно и то же имя, но различаются по индексам, которые могут иметь характер целых чисел из некоторого диапазона, литер, перечисленных констант. Индексы позволяют адресовать компоненты массива, т.е. получить доступ в произвольный момент времени к любой из них как к одиночной переменной. Обычный прием работы с массивом - выборочное изменение отдельных его компонент.
Рисунок 1. Одномерный массив - набор элементов (компонентов)
[15 cлайд]
Вычисляемые индексы позволяют использовать единое обозначение элементов массива для описания массовых однотипных операций в циклических конструкциях программ. Важной особенностью массива является его статичность. Массив должен быть описан в программе (т.е. определены тип и число компонент) и его характеристики не могут быть изменены в ходе выполнения программы.
Компонентами массива могут быть не только простейшие данные, но и структурные, в том числе массивы. В этом случае мы получаем массив массивов - многомерный массив. Для индексации элементарных компонент в этом случае может потребоваться два, три и более индексов.
В некоторых системах программирования существуют специальные виды массивов. Например, массив литер (символов) определяется как строка.
Данные, хранящиеся в массивах, находятся в оперативной памяти компьютера. Это, с одной стороны, ускоряет доступ к ним в ходе решения задачи, а с другой -налагает ограничения на объем возможной информации, организованной в виде массивов. Не следует поэтому, без крайней необходимости, создавать новые массивы для перемещения данных из уже существующих массивов.
[16 cлайд]
Двумерный массив визуально представляется плоской таблицей. При наличии одного имени (идентификатора) для всех компонентов каждый из них фиксируется значениями двух индексов, указывающих номер строки и номер столбца, на пересечении которых находится эта компонента.
Таблица 2. Графический образ двумерного массива
i j |
1 |
2 |
3 |
4 |
… |
1 |
a11 |
a12 |
a13 |
a14 |
… |
2 |
a21 |
a22 |
a23 |
a24 |
… |
3 |
a31 |
a32 |
a33 |
a34 |
… |
4 |
a41 |
a42 |
a43 |
a44 |
… |
… |
… |
… |
… |
... |
… |
[17 cлайд]
5.1.3.2. Записи
Обобщением массива является комбинированный тип данных - запись, являющаяся неоднородной упорядоченной статической структурой прямого доступа. Запись есть набор именованных компонент - полей (часто разного типа), объединенных одним общим именем и идентифицируемых (адресуемых) с помощью как имени записи, так и имен полей.
Рисунок 2. Иллюстрация «записи».
Запись В состоит из трех полей, имеющих последовательно типы «текст», «целое число», «вещественное число»: 1-е поле - название детали, 2-е - условный номер по каталогу, 3-е - длина. При работе с одной единственной записью (что бывает нечасто), имя поля можно использовать как обычную переменную, т.е. можно изменять значение поля с помощью операции присваивания или любых других операций, доступных над величинами данного типа. Если же данная запись - лишь часть набора данных, то имя поля состоит из двух частей и называется составным именем поля (на рисунке 2 составные имена В. name, В. number, В. length). Для облегчения работы с полями в различных языках программирования существуют средства, облегчающие их адресацию.
[18 cлайд]
И записи, и массивы обладают одним общим свойством - произвольным доступом к компонентам. Записи более универсальны в том смысле, что для них не требуется идентичности типов их компонент. Массивы обеспечивают большую гибкость -индексы их компонент можно вычислять в отличие от имен полей записей.
[19 cлайд]