Записи. Ознакомление с правилами оформления записи в программе (Лабораторная работа № 9)

Страницы работы

Содержание работы

Лабораторная работа № 9

ЗАПИСИ

Цель работы – ознакомление с правилами оформления записи в программе;  исследование порядка доступа к полям записи; овладение навыками написания приложений с использованием записей.

Постановка задачи

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

2.  Выполнить заданные действия, каждое из которых оформить в виде подпрограммы.

3.  Результаты вывести в текстовый файл. Вывод результатов должен производиться специально созданной для этого процедурой.

4.  Весь обмен данными между подпрограммами и основной программой осуществлять через параметры.

Теоретические сведения

Определение

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

Компоненты записи могут разного типа. Компонента (поле) – переменная некоторого типа.

Описание

а) через предварительное описание типа-записи:

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 могут происходить казусы, если некоторый Ваш идентификатор совпадает по имени с именем поля. Этого следует избегать путем изменения имени внешнего идентификатора (так как имя поля в описании жестко зафиксировано) или употребления имени программы в качестве расширения, как это сделано в последних примерах.

Справочная информация

Динамический массив – это массив, память которого выделяется в ходе выполнения программы.

Таблица некоторых стандартных подпрограмм Delphi:

Похожие материалы

Информация о работе

Тип:
Методические указания и пособия
Размер файла:
216 Kb
Скачали:
0