Записи и базы данных
В массиве могут содержаться данные только одного и того же типа, например, все целые числа. Однако иногда существует необходимость держать в переменной несколько данных разного типа. Например, в переменной «человек» держать фамилию, имя, рост, возраст, фотографию и т.д… Но даже если все данные одного типа, они могут иметь разный смысл, по-разному обрабатываться. Например, рост, возраст, количество детей, зарплата… Хранение их в одном массиве под разными номерами не даёт преимуществ перед хранением в отдельных переменных. Приходится помнить, какой номер какому данному соответствует.
Для хранения таких разнородных данных об одном объекте существует специальный вид переменных – запись. Части записи называются полями. Каждое поле имеет имя и содержимое. Например, поле с именем Name имеет содержимое ’Иван’. Имя всей записи от имени отдельного поля отделяется точкой. Например, Man.Name:=’Иван’;.
В разделе var запись можно объявить так:
Однако, это не единственный (и не лучший) способ. Если таких записей в программе несколько, более удобен следующий способ. В разделе type (раньше раздела var) создаётся шаблон (образец) для нужной записи. Затем в разделе var этот шаблон используется как новый тип для объявления переменных:
В предпоследней строчке примера показано объявление массива записей. Такую структуру данных принято называть базой данных (БД). (Но надо помнить, что понятие современной БД гораздо шире, чем просто массив из записей). Можно представить такой массив как таблицу, каждая строка которой – одна запись, а каждый столбец – одно поле:
N | Name | Vozrast | Rost | Ves |
Александров А.Б. | ||||
Борисов В. Г. | ||||
Васильев Д. Е. | ||||
Григорьев Ж. З. |
Для использования одного данного из БД применяются и квадратные скобки (для указания конкретной записи в массиве) и точка (для указания имени поля). Например:
kl8a[1].name:=’Александров’;
Иногда приходится выполнять подряд множество действий с одной и той же записью. Чтобы не указывать каждый раз имя записи и имя поля, можно воспользоваться оператором принадлежности к записи with:
Запись может иметь вариантную часть. Это означает, что одно и то же поле можно объявить одновременно несколькими способами, а непосредственный выбор будет определяться специальным ("сигнальным") значением (селектором) с помощью оператора case. Различают два вида селекторов:
1. безымянный селектор. В качестве селектора указывают его тип, например, integer. Может быть использован любой перечислимый тип (boolean, byte, char, …) лишь бы количество его значений было не меньше, чем количество вариантов поля. В качестве примера записи с безымянным селектором рассмотрим запись, содержащую название устройства и его числовую характеристику мощность. При этом мощность будет рассматриваться либо как дробное число, либо как два целых, одно из которых хранит целую часть мощности, а другое – дробную:
2. селектор-поле. В качестве селектора используется одно из полей записи (перечислимого типа). Оно является полноценным полем, в нём можно хранить информацию. Но, в то же время, оно определяет, какой из случаев вариантной части будет использоваться. Сам программист тоже может анализировать поле-селектор, чтобы определить, как именно в данном случае нужно использовать вариантное поле.
При работе с БД удобно накопленную информацию сохранять в файле. Если использовать текстовый файл, каждое поле нужно будет сохранять отдельно. Более оправдано применение типового файла, так как это позволяет сохранять всю запись как одно целое. Посмотрим, как это делается, на примере:
Написать программу «Справочник рыболова». Она использует базу данных «рыбы» и может дополнять её и искать нужную рыбу. По окончании работы вся накопленная информация сохраняется в файле «рыбы.db» в текущем каталоге. При запуске программы файл базы данных (если он уже создан) загружается в массив, и введённую в прошлом сеансе информацию можно использовать.
Дата добавления: 2014-12-18; просмотров: 935;