Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Pascal_lectures_small.doc
Скачиваний:
13
Добавлен:
23.03.2015
Размер:
339.46 Кб
Скачать
  1. Сложные типы данных и их использование

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

    1. Квалификаторы

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

<доступ к элементу>::= <имя> [<квалификатор>].

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

<квалификатор>::=("["<список индексов>"]" | "."<имя поля> | "^"){<квалификатор>}.

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

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

    1. Записи

Запись – это переменная, состоящая из нескольких элементов (полей) данных разного типа.

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

      1. Конструкция записи, тип записи и переменная типа запись

Синтаксис конструкции записи:

<конструкция записи>::="Record" <описание полей>";"<описание полей> "End".

<описание полей>::=<имя>{","имя} ":" (<имя типа>|<конструкция типа>).

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

Тип записи и переменные типа запись описываются так же, как любые другие типы и переменные, соответственно (см. Описание переменных и типов данных). Целесообразно вначале сконструировать тип записи и присвоить ему имя в разделе Type, а затем объявлять переменные соответствующего типа в разделе Var.

Пример. Разделы описаний типов и переменных:

Type Ch=Array [1..16] of Char;

Person=Record {данные о человеке}

Surname, {Два поля одного типа –}

Name:Ch; {фамилия и имя}

Gender:(Male, Female); {пол – муж./жен.}

Age:Integer {Возраст, лет}

End;

StudentR=Record {данные о студенте}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]