Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
bilety.docx
Скачиваний:
10
Добавлен:
31.03.2015
Размер:
57.45 Кб
Скачать

1)Запись как объединение неоднородных данных.

До сих пор мы имели дело только со структурными типами, объединяющими в одно целое однотипные данные (массивы или множества). Однако во многих задачах управления и в других областях часто необходимо структурировать неоднородные (разнотипные) данные. Например, анкета служащего содержит такие данные, как фамилия, имя, отчество (строковый тип), год рождения (целый тип), разряд (целый тип) и многие другие данные. Объединение таких данных общий структурный тип-анкета затруднительно сделать в рамках массива или множества.

Естественным средством структурирования в этом и подобных случаях является структурный тип - Запись. Этот структурный тип специально введен для объединения любого конечного числа неоднородных данных. Объединяемые данные составляют поля записи.

Однако, объединяя неоднородные данные, мы уже не можем рассчитывать иметь эффективный доступ к полям посредством их индексации (т.е. вычислимых имён), как это было в случае массивов: это может привести к несоответствию типов в выражениях. Доступ к полям записи осуществляется посредством составных имён (имён с точкой), имеющим, как и простые имена переменных, статическую природу .

Запись является одной из наиболее общих форм композиции неоднородных данных. Она распространяется не только на объединение полей-типов данных, но и на объединение полей-типов данных с процедурами и функциями, приводя к понятию объекта, как новой категории программных структур. Рассмотрим структурный тип Запись применительно к объединению полей-типов данных.

Описание типа Запись и доступ к полям записи

Тип Запись описывается в следующей форме:

type < имя типа-запись> = record < список полей > end;

где: < список полей > - последовательность разделов, разделяемых точкой с запятой; каждый раздел имеет структуру < список имен полей > : < тип поля >. Типом поля может быть любой тип, кроме типа файл. Если тип поля также является записью, мы имеем дело с иерархической структурой записей. Например:

type stud = record numb:byte;name:string[16]; aver:real end;{запись о студенте}

gr = record title:string; studs: array[1..15] of stud; end; {данные о группе }

Для работы с записями необходимо описать переменные типа-запись.

Например:

var stud1:stud; {данные о студенте styd1} grA1:gr; {группа А1}

Допустимы также типизированные константы типа-запись, устанавливающие значения полям записи в виде списка констант-полей, перечисляемых через точку с запятой.

Например:

const st00:stud = (numb:0; name:''; aver:0.0);

Доступ к элементам записи осуществляется посредством составного имени, в котором указывается имя переменной-записи и имя поля записи, разделяемые точкой. Так, например, доступ к полю среднего балла студента stud1 имеет вид: stud1.aver. Если запись описывает иерархическую структуру с несколькими уровнями, то составное имя содержит кроме имени записи также имена всех промежуточных полей-уровней, разделяемые точками. Например, для доступа к полю среднего балла 8 студента группы следует использовать составное имя: grA1.studs[8].aver.

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