Записи.

Необходимость описания атрибутов какого-либо объекта требует использования такого комбинированного типа, как запись. Например, для описания объекта «Студент» могут понадобится следующие характеристики: номер по списку (тип byte или word), Ф.И.О.(тип string), баллы (массив из 5-6 элементов, каждый из которых типа byte), средний балл (тип real ). Отдельные компоненты записи, которые называются полями, не могут рассматриваться с индексами как в массивах, поскольку имеют различный тип.

Когда задается тип «запись», используется слово RECORD, после которого перечисляются поля. После каждого поля через двоеточие указывается тип. В конце описания записи ставится слово END. Количество полей принципиально не ограниченно.

Const ColDsp = 7;

Type StrVed=record

nomer: byte;

f.i.o.: string[30];

ball: array[1..ColDsp] of byte;

srBall: real;

end;

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

Var

OneStroka: strVed;

.............................

OneStroka.nomer:=5;

...............................

Для того, чтобы при обращении к полям переменной типа «запись» каждый раз не записывать имя переменной, можно использовать оператор над записями. Его конструкция: WITH < имя переменной> DO < оператор>;

Например: Составить программу формирования ведомости успеваемости студентов. Каждая строка ведомости включает номер по списку, Ф. И. О., баллы полученные на экзаменах по отдельным дисциплинам, средний бал студента по результатам сессии.

Program VedST;

Const ColStud=25;

ColDisp=5;

Type strVed =record

nomer: byte;

f.i.o.: string [30];

ball: array [1..ColDisp] of byte;

Srball: real;

Var

Pz00:array [1..ColStud] of strVed;

i, j: byte;

s: real;

BEGIN

for j:=1 to ColStud do

BEGIN

with pz00[i] do

BEGIN

nomer:=i;

Writeln(‘ Введите Ф. И. О. ’,i,’ -го студента‘);

Readln(f.i.o);

s:=0;

for i:= to ColDisp do

begin

Writeln(‘ Введите оценки студента ’,f.i.o.,’ по ’,j,’-ой дисциплине‘);

Readln(ball[j]);

s:=s+ball[j];

end;

Srball:= s / ColDisp;

end;

end:

end.

 

 








Дата добавления: 2015-01-13; просмотров: 792;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.004 сек.