Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Полностью про Pascal.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
333.82 Кб
Скачать

3. Записи

Запись, как и массив, - это сложная переменная с несколькими компонентами, т.е. тоже структурированного типа. Однако в отличие от массивов, компоненты записи могут иметь разные типы. Кроме того, доступ к элементам массива осуществляется по индексу, а к компонентам записи - по имени.

Записи удобно использовать для хранения и обработки разнородной информации о каких-либо объектах. Например, в школе часто требуется обрабатывать на ЭВМ сведения об успеваемости учащихся. Они обязательно включают фамилии учащихся и полученные ими отметки. Фамилия конкретного учащегося будет представлена строковой константой, а его отметки - арифметическими константами целого типа.

Как средство, позволяющее обрабатывать подобные данные, используется запись. Запись - это конструкция, состоящая из фиксированного числа элементов, называемых полями. Тип записи специфицируется ключевым словом RECORD. Определение типа записи осуществляется в разделе определения типов и задается следующей конструкцией:

TYPE <идентификатор типа> = RECORD <список полей> END;

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

TYPE DATA = RECORD DAY:1..31;

MONTH:(JAN, FEBR, MARCH, APRIL,MAY, JUNE,

JULY, AUG, SEPT, OCT, NOV, DEC);

YEAR: INTEGER;

END;

Переменные типа “запись” описываются в разделе описания переменных обычным образом. Например, дата поступления в школу может быть описана следующим образом:

VAR SCHOLL: DATA;

Доступ к отдельным компонентам записи (к отдельным полям) осуществляется по составным именам. Составное имя состоит из имени переменной типа “запись” и имени поля, разделенных точкой. Например:

SCHOOL.DATA - день поступления в школу

В качестве примера использования записи рассмотрим программу для обработки результатов сдачи выпускных экзаменов учащимися 11-го класса. В классе 30 учащихся (kc), экзамены сдают по 7 дисциплинам (kd). Для упрощения записи каждый учащийся представлен своим порядковым номером hc. Требуется ввести результаты сдачи экзаменов по каждой дисциплине, определить средний балл полученных отметок по одной дисциплине (номер hd) и средний балл каждого учащегося.

program ekzamens;

Const kc=30; kd=7;

Type pupils=record hc:1..kc;

ball:array[1..kd] of 1..5;

sr:real;

end;

Var gr:array [1..kc] of pupils;

i:1..kc; hd:1..kd; cm:real;

Begin

writeln(‘Введите оценки по всем дисциплинам’);

for hd := 1 to kd do

for i := 1 to kc do

read(gr[i].ball[hd]);

writeln(‘Введите номер предмета’);

readln(hd); cm := 0;

for i := 1 to kc do

cm := cm + gr[i].ball[hd];

writeln(‘Средний балл по предмету=‘, cm/kc:7:2);

writeln(‘Средние баллы учащихся ’:56);

for i := 1 to kc do begin

gr[i].sr := 0;

for hd := 1 to kd do

gr[i].sr := gr[i].sr + gr[i].ball[hd];

writeln(gr[i].sr/kd:8:2);

End.