Запись – неупорядоченный набор величин разных типов, называемых полями.
Поле – именованная величина, являющаяся частью записи.
Описание записи в разделе описания переменных (Var) на языке Pascal имеет вид:
Zap : record
SP1 : T1;
…
SPN : TN
end;
где record – запись, end – конец описания записи, Zap – имя записи, SP1 – список полей 1-й, SPN – список полей N-й, T1 – тип полей в 1-м списке, TN – тип полей в N-м списке.
Это означает, что переменная Zap является записью, включающей поля в списке SP1 типа T1 , … поля в списке SPN типа TN.
Пример.
Var
computer : record
nazv : string[10];
god : integer;
bystr : real;
end;
Это означает, что переменная computer – запись, включающая поля nazv строкового типа, god целочисленного типа, bystr вещественного типа.
Доступ к полю записи имеет вид:
Zap . Pole
где Zap – имя записи, Pole – имя поля.
Это означает доступ к полю Pole записи Zap.
Пример.
computer.nazv
Это означает поле nazv записи computer.
Оператор присоединения имеет вид:
with Zap do Op
где with – с, do – делать, Zap – имя записи, Op – оператор.
Это означает, что с полями записи Zap надо выполнять оператор Op.
Пример 1. Ввести поля записи computer без использования оператора присоединения.
Пример 2. Ввести поля записи computer с использованием оператора присоединения.
with computer do readln(nazv,god,bystr);
Задача 5.
Условие задачи. Задана запись студента с полями: фамилия, год рождения, средний балл за сессию. Начислить студенту стипендию, если известно, что за все отличные оценки начисляется стипендия в 1000 рублей, а за остальные оценки стипендия не начисляется.
Программа.
Program z5;
Var
student : record
fam: string[10];
god: integer;
ball: real;
end;
stip: real;
Begin
with student do
readln(fam,god,ball);
if student.ball=5 then stip:=1000 else stip:=0;
writeln('Стипендия – ',stip:7:2,' рублей');
End.
Контрольный пример.
Исходные данные:
Фамилия – Иванов
Год рождения – 1989
Средний балл – 5.
Результаты:
Стипендия – 1000 рублей.
Задача 6.
Условие задачи. Дан массив студентов из полей записи: фамилия, год рождения, средний балл за сессию. Найти студента с максимальным средним баллом.
Программа.
Program z6;
Type
student = record
fam: string;
god: integer;
ball: real;
end;
Var
A: array [1..50] of student;
i,imax,n: integer;
max: real;
Begin
readln(n);
for i:=1 to n do
with A[i] do
readln(fam,god,ball);
max:=A[1].ball;
imax:=1;
for i:=1 to n do
if A[i].ball>max then
begin
max:=A[i].ball;
imax:=i;
end;
writeln('Фамилия -',A[imax].fam,' с баллом ',A[imax].ball);