
- •Часть 1
- •Предмет и задачи информатики
- •История эвм
- •Состав вычислительной системы
- •Аппаратное обеспечение
- •Программное обеспечение
- •Операционная система
- •Кодирование Двоичный код
- •Кодирование чисел
- •Кодирование текстовых данных
- •Кодирование графических данных
- •Представление цвета в машинной графике
- •Кодирование звуковой информации
- •Прикладное программное обеспечение Системы обработки текстов
- •Интегрированный пакет Microsoft Office
- •Текстовый процессорWord
- •Создание в документе листа Microsoft Excel
- •О рисунках и других графических объектах
- •Закрепление областей листа
- •Скрытие и отображение столбцов и строк
- •Выделение фрагментов документа
- •Ввод данных с клавиатуры
- •Ввод текста
- •Ввод чисел
- •Ввод формул с клавиатуры
- •Установка границ ячеек
- •Работа с диаграммами
- •Работа с базами данных Основные понятия
- •Объекты базы данных
- •Запросы
- •Страницы
- •Макросы и модули
- •Безопасность баз данных
- •Технологии программирования
- •Алгоритм, программа
- •Интегрированная среда разработки приложений в Delphi
- •Стандарт и диалекты языка
- •Основы Паскаля
- •Основные понятия языка Алфавит
- •Имена и идентификаторы
- •Программные элементы
- •Описания
- •Раздел констант
- •Типизированные константы
- •Переменные
- •Функции и процедуры
- •Правила записи текста программы
- •Концепция данных
- •Основные типы данных Целые типы
- •Битовые операции
- •Вещественные типы
- •Тип дата-время
- •Символьные типы
- •Логические типы
- •Выражения
- •Оператор присваивания
- •Составной оператор
- •Раздел меток
- •Оператор перехода
- •Пустой оператор
- •Раздел типов
- •Условный оператор
- •Перечислимые типы (перечни)
- •Оператор варианта
- •Ограниченные типы
- •Операторы цикла
- •Операторы цикла с параметром
- •Оператор цикла с постусловием
- •Оператор цикла с предусловием
- •Регулярные типы (массивы)
- •Многомерные массивы
- •Комбинированные типы (записи)
- •Оператор присоединения
- •Подпрограммы
- •Подпрограммы-процедуры
- •Подпрограммы-функции
- •Формальные и фактические параметры
- •Параметры-значения
- •Параметры-переменные
- •Параметры-константы
- •ПроцедураExit
- •Процедурные типы
- •Множественные типы
- •Оглавление
- •Часть 1
Комбинированные типы (записи)
Один из наиболее гибких и удобных механизмов построения структур данных произвольной природы заложен в комбинированном типе. Это производный тип, значения которого, как и значения регулярного типа, в общем случае, представляют нетривиальную структуру данных. Значение комбинированного типа состоит из нескольких компонент, но в отличии от массива эти компоненты могут быть разных типов и доступ к ним осуществляется не по индексам, а по именам. Значение комбинированного типа называют записью.
Любой комбинированный тип задает некоторый шаблон (скелет) структуры значений данного типа. Каждый элемент этого шаблона может иметь собственную, иногда довольно сложную, структуру, но на концах этой структуры фигурируют значения только простых типов.
Значения комбинированного типа предназначены, главным образом, для представления объектов, имеющих неоднородное строение и, чаще всего используются при создании информационных систем. Например, информационно-кадровая система должна содержать сведения об анкетных данных сотрудников (ф.и.о., дата рождения, адрес, телефон, образование и т.п.), должность, время поступления на работу, размер зарплаты и др. Таким образом, в одном структурном объекте должны быть представлены компоненты с различными типами значений.
Значение комбинированного типа является структурой данных, содержащей фиксированное (для данного типа записей) число компонент, называемых полями.Каждому полю записи дается имя и задается тип значения.Тип поля записи может быть любым кроме файлового. Компонентом записи может быть запись. Таким образом, значение комбинированного типа может иметь ярко выраженную иерархическую структуру. Областью действия имени каждого поля является внутренняя часть записи, в которой оно определено. Имена полей одной записи, находящиеся на одном уровне, должны быть различны.
Если же одно имя определено внутри области действия другого имени или эти имена определены в областях действия различных полей одной записи, то такие имена могут быть одинаковыми. Разные записи могут содержать поля с одинаковыми именами. Путаницы при этом не происходит, так как для ссылки на эти одноименные поля обязательно используется имя самой записи.
Простейшая структура данных, задаваемая комбинированным типом, имеет только один уровень иерархии.
<задание комбинированного типа>::=record<список полей>end
<список полей>::=<секция записи>{;<секция записи>}
< секция записи>::=<имя поля>{,<имя поля>}:<тип>
Синтаксис задания комбинированного типа следующий
Type <имя типа>=Record
<список полей>: < тип >;
<список полей>: < тип >;
. . . . . . . . . . . . .
end;
Пример.
Type
Complex= Record
re,im: real;
end;
varx:Complex;
При наличии такого описания x – полная переменная записи типа Complex, а x.re и x.im – компоненты структуры, или частичные переменные. Таким образом, вид частичной переменной
<имя полной переменной>.<имя поля>
Поскольку обращение к каждому полю записи осуществляется по его имени, то при задании комбинированного типа порядок указания ее полей не играет роли и может быть произвольным.
Имя поля всегда указывается явно и, в отличие от индекса в регулярном типе, его нельзя вычислить. Поля, как самостоятельные программные объекты, вне записи не существуют, поэтому указывать в программе имена полей без указания имени записи нельзя.
Для присвоения переменной комбинированного типа конкретного значения, надо задать значения всех ее полей, например, с помощью операторов присваивания. Для полных переменных одного комбинированного типа в Паскале существует только операция присваивание.
Если А – переменная комбинированного типа, то значением переменной-имени А является вся запись. Если В – имя поля этой записи, то значение этого поля есть значение переменной-поля А.В (A – селектор записи, B – поле). Если поле В в записи А является в свою очередь записью и содержит поле С, то по отношению к этому полю А.В – полная переменная, а для ссылки на него используется имя А.В.С. Возможны различные сочетания регулярных и комбинированных типов.
Объем памяти, выделяемой под запись, может быть различным в зависимости от директивы {$A}(выравнивание). Если установлено{$A+}, то поля выравниваются по четным адресам (при этом уменьшается время доступа к переменной в памяти). По умолчанию установлено{$A-}. Перед ключевым словомrecordможно добавить словоpacked. В этом случае под запись выделяется минимальное количество байт, причем директива{$A}игнорируется.