Rambler's Top100

Билет 24. Вопрос 1.

Запись как структурированный тип данных в языке Pascal. Способы описания записей.

 

Тип-запись включает ряд компонент, называемых полями, которые могут быть разных типов. При задании типа-записи после зарезервированного слова record следует перечислить все поля типа-записи с указанием через двоеточие их типов и завершить задание типа словом end . Поля отделяются друг от друга точкой с запятой. Количество полей записи может быть любым.

 

Пример .

 

Type

Complex = record

Re : real;

Im : real

end;

Data = record

Year : integer;

Month : 1 . . 12;

Day : 1 . . 31

end;

Person = record

Name : string [20];

Sex : (Male, Female);

Age : Integer;

Married : boolean

end ;

 

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

 

Type

Complex = record

Re, Im : Real

end ;

 

После введения типа-записи можно затем задать переменные или типизированные константы этого типа-записи.

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

Так для введённых выше типов можно задать, например, следующие переменные и константы:

 

var

X, Y, Z: Complex;

Dat : Data;

const

Birthday : Data = (Year : 1971; Month : 12; Day : 19);

Ivanov: Person = (Name : ‘ Иванов '; Sex : Male; Age : 40; Married : True);

 

Примечание. Тип-запись можно вводить и непосредственно при определении переменных или типизированных констант.

Например, фрагмент

 

var

X , Y , Z : record

Re , Im : real

end ;

 

определяет те же комплексные переменные, что и предыдущем примере.

Доступ к полям записи осуществляется указанием имени переменной (константы) и имени поля, записываемого через точку, например:

 

Ivanov . Age,

X . Im,

Dat . Day и т. д.

 

Пример. Использование полей записей.

 

X . Re := 1.5;

X . Im := 1.7;

Y . Re := - X . Re;

Ivanov . Married := False ;

 

Для того, чтобы не выписывать каждый раз имя записи при обращении к ее полям, можно использовать оператор над записями WITH . Его структура выглядит следующим образом:

with <имя записи> do <опратор>;

 

В этом случае внутри оператора можно указывать только поле записи. Например , фрагмент :

 

with X do

begin

Re := 1.5;

Im := 1.7;

Y . Re := -Re;

end;

with Ivanov do

Married := False;

 

эквивалентен фрагменту из предыдущего примера.

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

 

Например :

 

type

Figure = (Square, Triangle, Circle);

Param = record

X, Y : real;

case Fig : Figure of

Square : (Side : real);

Triangle : (Side1, Side2, Angle : real);

Circle : (Radius : Real)

end;

var

MySquare, MyCircle : Param;

 

Вариантная часть начинается словом case , за которой следует переменная выбора варианта (в примере Fig ) с указанием типа. Далее указываются константы, значения которых может принимать переменная выбора варианта (в примере – Square , Triangle , Circle ). За каждой константой через двоеточие в круглых скобках записываются поля данного варианта записи с указанием их типов. Круглые скобки необходимы, даже если для данного варианта вариантная часть отсутствует. Следует отметить, что вариантная часть не завершается своей операторной скобкой end , как у обычной конструкции case , т. к. Далее идет завершающая операторная скобка всего типа.

В стандарте языка Pascal перед тем, как использовать один из вариантов записи, переменной выбора варианта необходимо присвоить соответствующее значение:

 

Fig := Square;

MySquare.Side := 5.2;

Fig := Circle;

MyCircle . Radius := 7.5;

 

В Turbo Pascal эту операцию делать необязательно, хотя, если переменная выбора задана, ее затем можно в програме посмотреть, чтобы определить, какой задан вариант. Более того, значения переменной выбора ни на что не оказывают влияния =, и следующий фрагмент эквивалентен рассмотренному выше:

 

Fig := Square;

MyCircle.Radius := 7.5;

Fig := Circle;

MySquare . Side := 5.2;

 

В тип-запись допустимо не вводить переменную выбора вариантов, а перечислить лишь разные варианты, например:

 

Transf = record

case Integer of

1 : (W : Word);

2 : (TS : array [1. . 2]of char)

end;

Вверх

Белорусский рейтинг MyMinsk.com Сайты беларуси Регистр "ЗУБР" Каталог на TIGA.BY, а также  новости, работа, объявления, фото и многое другое Рейтинг@Mail.ru Rambler's Top100 Белорусский каталог программ Faststart - рейтинг сайтов, каталог интернет ресурсов, счетчик посещаемос­ти Яндекс.Метрика
Hosted by uCoz