Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Определение
Запись – это структурированный тип данных, состоящий из конечного числа компонент, называемых полями.
Компоненты записи могут разного типа. Компонента (поле) – переменная некоторого типа.
Описание
а) через предварительное описание типа-записи:
TYPE
<имя типа> = record
поле1: тип поля1;
поле2: тип поля2;
...
поле n: тип поляN
end;
VAR
a: <имя типа>;
б) непосредственное описание переменной типа записи:
VAR
a: record
поле1: тип поля1;
поле2: тип поля2;
...
поле n: тип поляN
end;
в) допускается поля одного типа объединять в одно описание:
Поле1, поле2: тип полей 1 и 2;
Пример 1:
TYPE
TPoint = record
x: real;
y: real;
End;
VAR
Point: TPoint;
Пример 1:
TYPE
TPoint = record
x, y: real;
End;
VAR
Point: record
x, y: real;
End;
Инициализация записей
При введении исходных данных в виде типизированных констант используется явное указание на идентификатор поля. Например, для ввода координат точки можно воспользоваться типом точки TPoint:
TYPE
TPoint = record
x,y: real;
End;
CONST
Point: TPoint = (x: 2.0; y: -1.5);
Доступ к полю записи
Формат доступа:
<имя переменной записи>.<имя поля>,
например, Point.х.
Имя поля данной записи неизменно во всей программе. Вне записи этот же идентификатор может обозначать совершенно другую величину.
Например,
VAR
Point: record
x,y: real;
End;
x: string;
…
BEGIN
Point.x:=1.5;
x:=’some’;
…
Здесь строковая переменная х, описанная в программе, и Point.х – разные переменные.
Составные записи, поля-массивы, массивы записей
Поле записи может быть записью или массивом.
Массив может состоять из записей.
В качестве примера рассмотрим массив многоугольников (polygons).
PROGRAM Polygons;
CONST
MaxNumVert = 125;
MaxNumPol=125;
TYPE
TPoint = record {точка}
x,y: real;
End;
TPolygon = record {многоугольник}
Num_vert: 1.. MaxNumVert; {количество вершин}
Vertex: array [1.. MaxNumVert] of TPoint; {вершины многоугольника}
End;
VAR
Polygon: array [1.. MaxNumPol] of Tpolygon; {набор многоугольников}
X: real;
…
Polygon[4].Vertex[2].x:= x + Polygon[4].Vertex[2].x;
Polygon[4].Vertex[2].y:= 2+ Polygon[4].Vertex[2].y;
…
В приведенной программе x и Polygon[4].Vertex[2].x – различные числа, хранящиеся в различных областях памяти.
Оператор присоединения: with
with <имя записи> do <оператор>
Если в какой-то части программы осуществляют операции с конкретной записью, то можно упростить действия, применив оператор WITH.
Начиная с момента введения оператора WITH, имена полей указанной записи можно употреблять без указания имени текущей записи. Например,
with Polygon[4] do
begin
Vertex[2].x:= x + Vertex[2].x;
Vertex[2].y:= 2+ Vertex[2].y;
End;
или
with Polygon[4] do
with Vertex[2] do
begin
x:= Polygons.x + x; // Polygons – имя программы
y:= 2+ y;
еnd;
или так:
with Polygon[4].Vertex[2] do
begin
x:= Polygons.x + x; // Polygons – имя программы
y:= 2+ y;
end;
При использовании оператора With могут происходить казусы, если некоторый Ваш идентификатор совпадает по имени с именем поля. Этого следует избегать путем изменения имени внешнего идентификатора (так как имя поля в описании жестко зафиксировано) или употребления имени программы в качестве расширения, как это сделано в последних примерах.
Дата публикования: 2014-12-08; Прочитано: 134 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!