trains_hr.gif
 


В ПОМОЩЬ СТУДЕНТУ И ШКОЛЬНИКУ

 


Горбачев Л.И. Основы программирования в среде Turbo Pascal.

[НАЗАД]    [ДАЛЕЕ]

1.Определение и описание записей.

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

   Каждую таблицу, рассмотренную в предыдущем пункте, можно рассматривать как массив, в котором каждый элемент - запись.

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

   Общий вид описания записи следующий:

var имя_записи: record
список_элементов_1: тип_1; {Поле 1}
список_элементов_2: тип_2; {Поле 2}
список_элементов_3: тип_3; {Поле 3}
....................................
список_элементов_n: тип_n; {Поле n}
end;

Другой способ: type имя_типа = record
список_элементов_1: тип_1; {Поле 1}
список_элементов_2: тип_2; {Поле 2}
список_элементов_3: тип_3; {Поле 3}
....................................
список_элементов_n: тип_n; {Поле n}
end;
var имя_записи: имя_типа;

   Здесь список_элементов - перечень имен элементов через запятую; тип_1, тип_2,..., тип_n - типы полей.

Пример: Описание записи "владелец автомобиля".
type Auto = record
{ Номер автомобиля }
Nomer: integer;
{ Марка автомобиля }
Marka: string[20];
{ Фамилия, имя, отчество владельца }
FIO: string[40];
{ Адрес владельца }
Adress: string[60];
end;
var M, V: Auto;

   В данном примере запись Auto содержит четыре поля: Nomer, Marka, FIO и Adress. Доступ к полям записи осуществляется через переменную типа запись. В нашем случае это переменные M и V типа Auto.

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

   Обращение к значению поля осуществляется с помощью идентификатора, в котором указывается имя записи и имя поля, разделенных точкой. Такая комбинация называется составным именем. Например, чтобы получить доступ к полям записи типа Auto (переменная M), надо записать: M.Nomer, M.Marka, M.FIO, M.Adress.

   Составное имя можно использовать везде, где допустимо применение типа поля. Для присваивания полям значений используется оператор присваивания.

Пример: M.Nomer := 2013;
M.Marka := 'ВАЗ-21099';
V.FIO := 'Орлов Н.С.';
V.Adress := 'ул. Садовая 12 - 21';

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

Пример:
........
write('Укажите номер автомобиля: '); read(M.Nomer);
write('Укажите марку автомобиля: '); read(M.Marka);
........
write(M.Nomer:4, M.Marka:10, M.FIO:12, M.Adress:25);

   Допускается применение оператора присваивания и к записям в целом, если они имеют один и тот же тип. Например, V := M. После выполнения этого оператора значения полей записи V станут равны значениям соответствующих полей записи M. В ряде задач удобно пользоваться массивами из записей. Их можно описать следующим образом:
type Person = record
FIO : string[20];
Age : 1 .. 90;
Prof : string[30];
end;
var List : array[1 .. 50] of Person;
i : integer;

   Для заполнения данных удобно использовать оператор цикла. Для вышеописанного примера это может выглядеть так:
for i := 1 to 50 do
begin
Write('Введите инициалы клиента: '); ReadLn(List[i].FIO);
Write('Введите возраст клиента: '); ReadLn(List[i].Age);
Write('Введите профессию клиента: '); ReadLn(List[i].Prof);
end;

   Элемент записи используется в программе так же, как и обычная переменная, т.е. элемент записи можно указывать как в левой части оператора присваивания, так и в правой части (в выражениях). Над элементом записи можно выполнять любые действия, допустимые для данных его типа.

   Сходство и различие между массивами и записями:

  1. записи и массивы используют для описания упорядоченной последовательности величин;
  2. все элементы массива должны быть одного и того же типа. Записи могут содержать элементы различных типов;
  3. к элементам массива и записи имеется прямой доступ (по имени элемента массива и составному имени элемента записи).
Пример: Пусть задана таблица следующего вида:

Детали
Детали №1 Детали №2
Количество Наименование Количество Наименование
18
50
Скоба
Станина
145.35
20.3
Стержень
Шток

   Тогда каждую строку этой таблицы можно описать как запись одним из следующих способов:

1) var Det : record
Det1 : record
Cnt1 : integer;
NDet1 : string[11];
end;
Det2 : record
Cnt2 : integer;
NDet2 : string[11];
end;
end;

2) Type Det1 = record
Cnt1 : integer;
NDet1 : string[11];
end;
Det2 = record
Cnt2 : integer;
NDet2 : string[11];
end;
Det = record
D1 : Det1;
D2 : Det2;
end;
Var Tablo : Det;

Пример: Составьте программу заполнения и распечатки данных в представленной выше таблице.
[v01-001.pas]

[НАЗАД]    [ДАЛЕЕ]


Главная
Новости
TurboPascal
Учебное пособие
Лекции
Исходники
Математика
Книги
Лекции
Шпоры
ЦТ и ЕГЭ
Физика

Книги

Шпоры
ЦТ и ЕГЭ

Литература

Сочинения

Краткие содержания

Другое
Мой родной край
Фотогалерея
Форум
Ссылки

Гостевая






 

                                        © Copyright(c) 2004 Amro Group. All rights reserved

 

Hosted by uCoz