Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Массивы записей

End.

Begin

Операции над записями

With s.data_rogd do begin

End

Begin

With R do

Доступ к компонентам записи

Type

Type

<имя типа> = record

<имя типа 1>:<тип>;

<имя типа 2>:<тип>;

<имя типа 3>:<тип>;

<имя типа n>:<тип>;

end;

Записи находят широкое применение при обработке табличной информации.

В качестве примера рассмотрим представление таблице в виде записи на языке Паскаль.

Фамилия Имя Дата рождения
День Месяц Год
Строка из 15-ти символов Строка из 15-ти символов 1..31 1..12 Целое

 

data=record { вложенная запись дата }

day:1..31;

month:1..12;

year:integer;

end;

person=record { запись о персоне }

family:string[15];

name:string[15];

data_rogd:data;

end;

var s: person; { s – хранит одну строку (запись) таблицы! }

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

s.family:= ’Иванов’

Точку в составном имени иногда называют оператором доступа.

Поле с именем data_rogd – это тоже запись, состоящая из трёх полей. Поэтому доступ к полям внутри поля data_rogd осуществляется добавлением еще одной точки в составном имени.

s.data_rogd.day:=15;

s.data_rogd.month:=4;

s.data_rogd.year:=1978;

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

< опертаоры >

Где R – переменная типа.

day:15;

month:=4;

year:1978;

end;

В общем случае оператор присоединения выглядит так:

With R1, R2,…,Rn do < оператор >

Что полностью эквивалентно

With R1 with R2,R3…,Rn do < оператор >

Если две переменные из списка комбинированных переменных оператора присоединения имеют поля, обозначаемые одним и тем же идентификатором, то внутри оператора присоединения этот идентификатор обозначает поле той переменной, которая указана в списке позже.

var r1:record

a,b,c:integer

end;

r2:record

a,d:integer

end;

with r1,r2 do begin a:=1; b:=1; c:=3; end;

Эквивалентно: begin

r2.a:=1;

r1.b:=2;

r1.c:=3

end;

1. Над компонентами записи можно выполнять любые операции, которые допустимы для типов, к которым относятся эти компоненты.

2. Для записи в виде целостного объекта определена единственная операция – присваивание, т.е. переменной типа запись можно присвоить значение другой переменной.

Пример:

var s1,s2:person;

s1:=s2;

В практических задачах часто используются как составные части других типов: массивов, списков, деревьев.

Рассмотрим массив tabl, элементами которого являются записи person

Var tabl:array[1..30] of person; { tabl – хранит 30 записей!}

При обращении к полям записей, которые являются элементами массива, применяются две операции: индексирования массива (<>) и доступа к элементу(.). Порядок следования указанных операций следующий

<имя массива записей>[<индекс элемента массива>].<имя поля>

Например

Tabl[1].family:’Иванов’

Если операция индексирования будет применятся к массиву, которые является компонентом самой записи то получим конструкцию.

<имя переменной типа запись>.<имя поля>[<индекс элемента массива>]

Например: s.family[4]:=’m’;

Требуется написать программу, которая подсчитывает средний балл для каждого студента группы И-11.

Program average;

const n=30;

type vedomost = record { экзаменац. ведомость }

fio:string[15];

p1,p2,p3,p4: 1..5; { оценки по 4-м предметам }

sb:real

end;

var i:integer;

gruppa_i11:array[1..n] of vedomost;

<== предыдущая лекция | следующая лекция ==>
Записи (комбинированные типы) и их объявления | Множественный тип
Поделиться с друзьями:


Дата добавления: 2014-01-07; Просмотров: 353; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.015 сек.