Данные и их структуры.
Как было показано, данные представляют собой зарегистрированные дискретные информационные сообщения и являются составной частью информации. При этом физический метод регистрации может быть любым: механическим, электромагнитным, оптическим и т.д.
В соответствии с методом регистрации данные могут фиксироваться и храниться на носителях различных типов: бумаге, бумажной ленте, магнитной ленте, магнитном диске, оптическом диске и др.
При работе с большим количеством данных возникает проблема их упорядочивания, т.е. образования из них определенных структур. При этом приходится решать проблемы разделения данных между собой и их адресации. Исходя из этого, существует три основных типа структур данных:
- линейные;
- табличные;
- иерархические.
Линейные структуры – это хорошо знакомые списки данных, например, список фамилий работников какого-то учреждения:
1. Иванов А.В.
2. Сидоров В.П.
3. Петров А.П.
Каждая фамилия - это элемент списка, и ее можно разыскать по номеру строки. Этот список можно также представить в виде непрерывной строки:
Иванов А.В., Сидоров В.П., Петров А.П.
Здесь каждый элемент отделен друг от друга разделителем (запятой) и он может быть разыскан по своему порядковому номеру. Еще проще искать отдельные элементы списка, если каждый из них будет иметь одинаковую длину. В этом случае разделители между отдельными элементами списка вообще не нужны. Такой упорядоченный список данных, состоящий из элементов одинаковой длины, называется вектором данных.
Табличные структуры отличаются от линейных тем, что элементы данных определяются в них адресом ячейки, где они расположены. Например, в таблице умножения адрес ячейки, в которой располагается искомое число, определяется номером строки и номером столбца.
При хранении табличных данных количество разделителей может быть больше, чем данных (таблица 1.2.1).
Таблица 1.2.1
№ п/п | Ф.и.о. | Должность | Табельный номер | Оклад (руб.) |
Иванов А.В. | Ст. инженер | |||
Сидоров В.П. | Инженер | |||
Петров А.П. | Техник |
Здесь разделителями являются линии горизонтальной и вертикальной разметки.
Если нужно сохранить таблицу в виде одной длинной символьной строки, используются два символа-разделителя: один – для разделения элементов одной строки, а другой – для разделения строк между собой. Например, таблицу 1.2.1 можно представить следующим образом:
№ п/п * Ф.и.о. * Должность * * Табельный номер * Оклад ** 1* Иванов А.В. * Ст. инженер * 0001 * 5500 ** и т.д.
Еще проще выглядит табличная структура, если все элементы будут иметь равную длину. Такие табличные структуры называются матрицами. В матрицах разделители не нужны.
Линейные и табличные структуры данных являются простыми, и ими легко пользоваться, поскольку адрес каждого элемента задается одним числом (для списка) или двумя числами (для двухмерной таблицы). Они также легко упорядочиваются. Основным методом упорядочивания в них является сортировка, причем данные можно сортировать по любому избранному признаку: по алфавиту, по возрастанию порядкового номера или по возрастанию табельного номера и т.д. Однако у простых структур есть один очень серьезный недостаток – их трудно обновлять. Если, например, в списке сотрудников предприятия необходимо исключить одного сотрудника, то это будет связано с изменением порядковых номеров других сотрудников и т.д. Таким образом, при исключении или добавлении произвольного элемента в упорядоченную линейную или табличную структуру, может происходить изменение адресных данных у других элементов.
Иерархические структуры данных – это структуры, которые трудно представить в виде списка или таблицы. Классическим примером иерархической структуры является система почтовых адресов: код города, город, почтовое отделение, улица, дом, квартира (рис. 1.2.2).