Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция 10а.doc
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
78.85 Кб
Скачать

Записи Объявление типа записи

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

код

автор

название

издательство

год

Запись имеет свое имя, например, Karta. Для обращения к отдельным компонентам записи ее полям также присваиваются имена. Структура объявления типа записи:

< имя типа > = record < список полей > end

Тип записи Karta можно объявить следующим образом:

type     Karta = record         Kod,God: integer;         Avtor, Nazvanie, Izdat: string;     end; var      Kart1, Kart2: Karta;     {Kart1, Kart2 - переменные типа Karta}

Тип записи может быть использован непосредственно при объявлении переменных, например:

var Uravn : record A,B,C: real end;

Переменная Uravn является записью и состоит из трех полей A, B, C вещественного типа. Обращение к полю записи осуществляется по составному имени, которое содержит имя переменной типа Record, точку и имя поля, например:

Kart1.Kod := 681; Kart1.Avtor := 'Фаронов'; Kart1.Nazvanie := 'Программирование'; Kart1.Izdat := 'МВТУ'; Kart1.God := 1991;

Необходимо отметить, что переменные типа записи можно использовать только в операторах присваивания, например:

Kart2 := Kart1;

Вложенные записи

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

Объявим соответствующую структуру данных:

type     Kod1 = record         Bukva: char;         Nomer: integer;     end;     KartaR = record         Kod: Kod1;         Avtor: record             Fio: record                 Fam, Im, Ot: string;             end;             GodR: integer;         end;     end; var     Kr1 : KartaR;

Переменная Kr1 является вложенной записью, т.к. в типе записи KartaR объявлен тип Avtor, являющийся типом записи. Как видно из примера, можно заранее объявить ти п записи (Kod1), а потом использовать его в объявлении поля или указать тип записи непосредс твенно при описании поля (Fio). Теперь можно обратиться к отдельным полям записи Kr1, задавая их полные имена:

Kr1.Avtor.Fio.Fam := 'Зуев'; Kr1.Avtor.GodR := 1950; Kr1.Kod.Bukva := 'П';

Для упрощения доступа к отдельным полям записи используется оператор With <список имен> do <оператор>. Если объявлена переменная

var Uravn: record A,B,C: real end;,

то вместо операторов присваивания вида Uravn.A := -2.5; Uravn.B := 37.2; Uravn.C := 0.7; можно написать, используя оператор With:

with Uravn do begin     A := -2.5; B := 37.2; C := 0.7; end;

Оператор With присоединяет префикс Uravn к именам полей A, B, C. Для вложенной записи Kr1;

with Kr1,Avtor,Fio do begin     Fam := 'Иванов';     Im := 'Виктор';     Ot := 'Иванович'; end;

Следует отметить, что кроме удобства записи оператор With позволяет компилятору оптимизировать время доступа к полям, указанным в области действия оператора.

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