Комбинированный тип данных

(записи)

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

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

В данном случае фамилия может быть представлена символьной строкой, оценки - это целые числа, а средний балл должен быть представлен вещественным числом. В Паскале для описания объектов, содержащих данные разных типов, используются записи.

Запись - это структурированный тип, описывающий набор данных разных типов. Составляющие запись объекты называются ее полями. Каждое поле имеет уникальное (в пределах записи) имя. Чтобы описать запись, необходимо указать ее имя, имена объектов, составляющих запись, и их типы.

Общий вид описания записи :

Type <имя записи> = Record

<поле 1> : <тип 1>;

<поле 2> : <тип 2>

<поле n> : <тип n>

End;

Применительно к рассматриваемой задаче запись можно описать так :

Type

pupil = Record

fam : string[15]; {поле фамилии}

b1,b2,b3,b4,b5 : 2..5; {поля баллов}

sb : Real {средний бал}

End;

 

Чтобы хранить в памяти ЭВМ информацию обо всех 25 учениках класса, необходимо ввести массив klass - массив записей.

Varklass : array[1..25] Of pupil;

 

Доступ к полям записи можно осуществить двумя способами:

1. С указанием имени переменной и имени поля. Например, klass[2].fam, klass[3].sb, klass[1].b4

Ввод фамилий и оценок учащихся, т.е. элементов массива klass, можно записать так:

for i:=1 to 25 do

Begin

readln(klass[i].fam);

readln(klass[i].b1);

readln(klass[i].b2);

readln(klass[i].b3);

readln(klass[i].b4);

readln(klass[i].b5);

End;

2. С использованием оператора присоединения.

Имеется возможность осуществлять доступ к полям записи таким образом, как если бы они были простыми переменными. Общий вид оператора присоединения:

With <имя записи>Do <оператор>;

 

Внутри оператора присоединения к компонентам записи можно обращаться только с помощью имени соответствующего поля.

Пример

for i:=1 to 25 do

With klass[i] do

Begin

readln(fam);

readln(b1,b2,b3,b4,b5);

End;

Программа для решения рассматриваемой задачи может быть записана следующим образом:








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


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

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

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

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