var Team1, Team2 : Team; { две переменных типа «команда» }

Может показаться, что между ключевыми словами RECORD и END объявлены переменные Aces и Name. Так ли это? И да, и нет. Нет, – потому, что в секции TYPE переменные не объявляют. Да, – потому, что внутри переменных Team1 и Team2 (объявленных чуть ниже в секции VAR) действительно «живут» переменные с именами Aces и Name. Только называются они теперь полями переменных Team1 и Team2.

Как получить доступ к этим полям, спрятанным внутри переменных? Надо к имени переменной добавить так называемый квалификатор поля, или проще – имя этого поля. Вот так присваивают значения полям переменной Team1.

      Team1.Aces := 25;

      Team2.Name := ’Dinamo’;

Как видите, квалификатор поля отделяют от имени переменной точкой. Поля – это «кусочки» более сложных переменных (в данном случае переменных Team1 и Team2). Во всем остальном, кроме способа доступа, поля записей ничем не отличаются от обычных переменных.

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

      Team2 := Team1; { перенос всех полей из Team1 в Team2 }

Это существенно упрощает программы, в чем вы скоро убедитесь. А в сочетании с особыми типами данных – указателями – записи превращаются в «волшебные кирпичи», пригодные для возведения сложнейших структур, отражающих реальности нашего мира.

Второй тайм

Слышен свисток к началу второго тайма, вернемся на футбольное поле, точнее к программе «P_41_3», сортирующей команды в порядке занятых ими мест. Сотворим новую версию этой программы «P_50_1», заменив два массива (набранных очков и названий команд) одним. План игры на второй тайм таков. Объявим два типа данных: запись и массив записей. Первый из них – запись – будет содержать сведения об отдельной команде.

type TTeam = record

      mAces : integer; { набранные очки }

      mName : string; { названия команд }

      end;

Напомню, что для улучшения читаемости программ мы условились начинать названия типов данных с буквы «T». По этой причине тип данных «команда» (Team) стал называться TTeam. Подобное соглашение примем и для полей записей. Чтобы отличить их от прочих переменных, будем начинать имена полей с буквы «m» (от Member – «элемент», «участник»). Поэтому поля названы здесь как mAces и mName.

Второй из объявляемых типов данных – TChamp (Champ – «чемпионат») – представляет собой массив футбольных команд.

      TChamp = array [1..CSize] of TTeam; { тип для массива команд }

Стало быть, каждый элемент этого типа содержит внутри себя два поля: число mAces и строку mName. Теперь можно объявить и переменную типа TChamp, то есть, массив команд.

var Champ : TChamp; { массив команд }

Доступ к элементам массива Champ осуществляется так:

Champ[i]       – i–й элемент массива, то есть i–я команда (тип TTeam)

Champ[i].mAces – количество набранных очков i–й командой

Champ[i].mName – название i–й команды

Вы читаете Песни о Паскале
Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

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

Отметить Добавить цитату