На этом шаге мы рассмотрим способы доступа к полям записи.
Рассмотрим возможные способы доступа к полям записи.
1. Указывается имя переменной типа запись и имя интересующего поля, разделённых точкой (рис.1):
Рис.1. Способ доступа к полям записи
Ввод фамилий и оценок учащихся, то есть элементов массива Klass, можно записать
так:
For i:=1 To 25 Do
Begin
Readln(Klass[i].Name);
For j:=1 To 5 Do
Readln(Klass[i].Ocenki[j]);
End;
2. С использованием оператора присоединения. Имеется возможность
осуществлять доступ к полям записи таким образом, как если бы они были простыми
переменными. Для этого используется оператор присоединения, общий вид которого
следующий:
With <переменная типа запись> Do <оператор>;
Внутри оператора присоединения к компонентам записи можно обращаться, используя
только имя поля:
For i:=1 To 25 Do
With Klass[i] Do {Элемент массива записей.}
Begin
Readln(Name); {Имя поля.}
For j:=1 To 5 Do
Readln(Ocenki[j]); {Имя поля.}
End;
Приведем текст программы, реализующей сформулированную в начале предыдущего шага задачу, с использованием рассмотренных операторов.
Program Zapisi; Type Zap=Record Name: String[30]; {Фамилия} Ocenki: Array[1..5] of 2..5; {Массив оценок} Sr_Ball:Real; {Средний балл} End; Var Klass:Array[1..25] Of Zap; {Массив записей} i,j:Integer; {Счетчики циклов} Sr_Ball_max:Real; {Максимальный средний балл} Begin For i:=1 To 25 Do {Ввод данных} With Klass[i] Do Begin Writeln('Введите фамилию и пять оценок'); Readln(Name); For j:=1 To 5 Do Readln(Ocenki [j]); End; For i:=1 To 25 Do {Вычисление среднего балла} With Klass[i] Do Begin Sr_Ball:=0; For j:=1 To 5 Do Sr_Ball:= Sr_Ball + Ocenki[j]; Sr_Ball:= Sr_Ball/5; End; {Вычисление максимального среднего балла} Sr_Ball_max:=0; For i:=1 To 25 Do If Klass[i].Sr_Ball>=Sr_Ball_max Then Sr_Ball_max:=Klass[i].Sr_Ball; Writeln('Ученики, имеющие максимальный средний балл (его значение - ',Sr_Ball_max,'): '); For i:=1 To 25 Do {Печать результатов} If Klass[i].Sr_Ball = Sr_Ball_max Then Writeln(Klass[i].Name); Readln; End.
Следующий шаг будет содержать решение задачи с использованием записей.